diff options
Diffstat (limited to 'src/plugins/multimedia/ffmpeg/qffmpegresampler.cpp')
-rw-r--r-- | src/plugins/multimedia/ffmpeg/qffmpegresampler.cpp | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/src/plugins/multimedia/ffmpeg/qffmpegresampler.cpp b/src/plugins/multimedia/ffmpeg/qffmpegresampler.cpp index 9d5882504..ecb650f9d 100644 --- a/src/plugins/multimedia/ffmpeg/qffmpegresampler.cpp +++ b/src/plugins/multimedia/ffmpeg/qffmpegresampler.cpp @@ -85,11 +85,22 @@ QAudioBuffer Resampler::resample(const AVFrame *frame) m_samplesProcessed += out_samples; qCDebug(qLcResampler) << " new frame" << startTime << "in_samples" << frame->nb_samples << out_samples << outSamples; - QAudioBuffer buffer(samples, m_outputFormat, startTime); - return buffer; + return QAudioBuffer(samples, m_outputFormat, startTime); } +void Resampler::setSampleCompensation(qint32 delta, quint32 distance) +{ + const int res = swr_set_compensation(resampler, delta, static_cast<int>(distance)); + if (res < 0) + qCWarning(qLcResampler) << "swr_set_compensation fail:" << res; + else + m_endCompensationSample = m_samplesProcessed + distance; +} +bool Resampler::isSampleCompensationActive() const +{ + return m_samplesProcessed < m_endCompensationSample; +} } QT_END_NAMESPACE |