33 AudioEncoder(RecordingEngine &recordingEngine,
const QAudioFormat &sourceFormat,
34 const QMediaEncoderSettings &settings);
36 void addBuffer(
const QAudioBuffer &buffer);
42 QAudioBuffer takeBuffer();
43 void retrievePackets();
44 bool updateResampler(
const QAudioFormat &sourceFormat);
51 void handleAudioData(
const uchar *data,
int &samplesOffset,
int samplesCount);
53 void ensurePendingFrame(
int availableSamplesCount);
55 void writeDataToPendingFrame(
const uchar *data,
int &samplesOffset,
int samplesCount);
57 void sendPendingFrameToAVCodec();
60 std::queue<QAudioBuffer> m_audioBufferQueue;
65 std::chrono::microseconds m_queueDuration{ 0 };
67 AVStream *m_stream =
nullptr;
68 AVCodecContextUPtr m_codecContext;
69 QAudioFormat m_sourceFormat;
71 SwrContextUPtr m_resampler;
72 qint64 m_samplesWritten = 0;
73 QMediaEncoderSettings m_settings;
75 AVFrameUPtr m_avFrame;
76 int m_avFrameSamplesOffset = 0;
77 std::vector<uint8_t *> m_avFramePlanesData;