19class SteppingAudioRenderer :
public Renderer
25 RenderingResult renderInternal(Frame
frame)
override
31 m_resampler = std::make_unique<Resampler>(
frame.codec(), m_format);
33 emit newAudioBuffer(m_resampler->resample(
frame.avFrame()));
43 std::unique_ptr<Resampler> m_resampler;
46class AudioDecoder :
public PlaybackEngine
55 return RendererPtr{ {}, {} };
57 auto result = createPlaybackEngineObject<SteppingAudioRenderer>(m_format);
58 m_audioRenderer =
result.get();
60 connect(
result.get(), &SteppingAudioRenderer::newAudioBuffer,
this,
61 &AudioDecoder::newAudioBuffer);
69 Q_ASSERT(!m_audioRenderer->isStepForced());
71 m_audioRenderer->doForceStep();
100 m_sourceDevice =
nullptr;
108 return m_sourceDevice;
121 qCDebug(qLcAudioDecoder) <<
"start";
122 auto checkNoError = [
this]() {
134 m_decoder = std::make_unique<AudioDecoder>(m_audioFormat);
137 connect(m_decoder.get(), &AudioDecoder::newAudioBuffer,
this,
140 m_decoder->setMedia(m_url, m_sourceDevice);
148 m_decoder->nextBuffer();
158 qCDebug(qLcAudioDecoder) <<
">>>>> stop";
167 return m_audioFormat;
181 qCDebug(qLcAudioDecoder) <<
"reading buffer" <<
buffer.startTime();
184 m_decoder->nextBuffer();
194 qCDebug(qLcAudioDecoder) <<
"new audio buffer" <<
b.startTime();
204 qCDebug(qLcAudioDecoder) <<
">>>>> DONE!";
232#include "moc_qffmpegaudiodecoder_p.cpp"
234#include "qffmpegaudiodecoder.moc"
IOBluetoothDevice * device
bool isValid() const noexcept
Returns true if this is a valid buffer.
The QAudioDecoder class implements decoding audio.
void setSource(const QUrl &fileName) override
void newAudioBuffer(const QAudioBuffer &b)
QIODevice * sourceDevice() const override
void errorSignal(int err, const QString &errorString)
QAudioFormat audioFormat() const override
void setAudioFormat(const QAudioFormat &format) override
virtual ~QFFmpegAudioDecoder()
QFFmpegAudioDecoder(QAudioDecoder *parent)
QAudioBuffer read() override
void setSourceDevice(QIODevice *device) override
QUrl source() const override
\inmodule QtCore \reentrant
static QMetaObject::Connection connect(const QObject *sender, const char *signal, const QObject *receiver, const char *member, Qt::ConnectionType=Qt::AutoConnection)
\threadsafe
\macro QT_RESTRICTED_CAST_FROM_ASCII
void clear()
Resets the content of the QUrl.
Combined button and popup list for selecting options.
#define Q_LOGGING_CATEGORY(name,...)
#define qCDebug(category,...)
GLboolean GLboolean GLboolean b
GLint GLsizei GLsizei GLenum format
connect(quitButton, &QPushButton::clicked, &app, &QCoreApplication::quit, Qt::QueuedConnection)
IUIAutomationTreeWalker __RPC__deref_out_opt IUIAutomationElement ** parent