summaryrefslogtreecommitdiff
path: root/src/plugins/multimedia/ffmpeg/qffmpegresampler.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/multimedia/ffmpeg/qffmpegresampler.cpp')
-rw-r--r--src/plugins/multimedia/ffmpeg/qffmpegresampler.cpp15
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