1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
|
#pragma once
#include "cutscene/ffmpeg/internal.h"
#include "cutscene/ffmpeg/FFMPEGDecoder.h"
namespace cutscene {
namespace ffmpeg {
class AudioDecoder: public FFMPEGStreamDecoder<AudioFrame> {
private:
SwrContext* m_resampleCtx;
uint8_t** m_outData;
int m_outLinesize;
int m_maxOutNumSamples;
int m_outNumSamples;
SCP_vector<short> m_audioBuffer;
void handleDecodedFrame(AVFrame* frame);
void flushAudioBuffer();
public:
explicit AudioDecoder(DecoderStatus* status);
~AudioDecoder() override;
void decodePacket(AVPacket* packet) override;
void finishDecoding() override;
void flushBuffers() override;
};
}
}
|