3#ifndef QFFMPEGAUDIORENDERER_P_H
4#define QFFMPEGAUDIORENDERER_P_H
17#include <QtFFmpegMediaPluginImpl/private/qffmpegrenderer_p.h>
24class QAudioBufferOutput;
41 void setOutput(QAudioBufferOutput *bufferOutput);
77 bool isValid()
const {
return buffer.isValid(); }
79 const char *
data()
const {
return buffer.constData<
char>() + offset; }
113 QPointer<QAudioOutput> m_output;
114 QPointer<QAudioBufferOutput> m_bufferOutput;
115 std::unique_ptr<QAudioSink> m_sink;
118 std::unique_ptr<QFFmpegResampler> m_bufferOutputResampler;
119 QAudioFormat m_sinkFormat;
122 QPointer<QIODevice> m_ioDevice;
124 bool m_lastFramePushDone =
true;
126 bool m_deviceChanged =
false;
127 bool m_bufferOutputChanged =
false;
128 bool m_drained =
false;
129 bool m_firstFrameToSink =
true;
132 bool m_pitchCompensation =
false;
133 std::unique_ptr<AbstractAudioFrameConverter> m_audioFrameConverter;
RenderingResult pushFrameToOutput(const Frame &frame)
Microseconds durationForBytes(qsizetype bytes) const
~AudioRenderer() override
RenderingResult renderInternal(Frame frame) override
void updateOutputs(const Frame &frame)
void setPitchCompensation(bool enabled)
std::chrono::milliseconds timerInterval() const override
void setOutput(QAudioBufferOutput *bufferOutput)
void initAudioFrameConverter(const Frame &frame)
void updateSynchronization(const SynchronizationStamp &stamp, const Frame &frame)
void onAudioSinkStateChanged(QAudio::State state)
void onPlaybackRateChanged() override
void setOutput(QAudioOutput *output)
void pushFrameToBufferOutput(const Frame &frame)
Microseconds bufferLoadingTime(const SynchronizationStamp &syncStamp) const
void onPauseChanged() override
std::conditional_t< QT_FFMPEG_AVIO_WRITE_CONST, const uint8_t *, uint8_t * > AvioWriteBufferType
Microseconds minSoundDelay
Microseconds maxSoundDelay
Microseconds actualBufferDuration
const char * data() const
qsizetype bufferBytesWritten
qsizetype audioSinkBytesFree
QAudio::State audioSinkState