diff --git a/Core/HW/SimpleAudioDec.cpp b/Core/HW/SimpleAudioDec.cpp index 74e92b98dc..c833ed4dd0 100644 --- a/Core/HW/SimpleAudioDec.cpp +++ b/Core/HW/SimpleAudioDec.cpp @@ -279,15 +279,7 @@ bool SimpleAudio::Decode(const uint8_t *inbuf, int inbytes, uint8_t *outbuf, int #endif // USE_FFMPEG } -int SimpleAudio::GetOutSamples() { - return outSamples; -} - -int SimpleAudio::GetSourcePos() { - return srcPos; -} - -void AudioClose(SimpleAudio **ctx) { +void AudioClose(AudioDecoder **ctx) { #ifdef USE_FFMPEG delete *ctx; *ctx = 0; diff --git a/Core/HW/SimpleAudioDec.h b/Core/HW/SimpleAudioDec.h index 9f9e93ecfb..fb25a5fb0d 100644 --- a/Core/HW/SimpleAudioDec.h +++ b/Core/HW/SimpleAudioDec.h @@ -48,16 +48,33 @@ enum { PSP_CODEC_AAC = 0x00001003, }; -class SimpleAudio { +class AudioDecoder { +public: + virtual ~AudioDecoder() {} + + virtual bool Decode(const uint8_t* inbuf, int inbytes, uint8_t *outbuf, int *outbytes) = 0; + virtual bool IsOK() const = 0; + + virtual int GetOutSamples() const = 0; + virtual int GetSourcePos() const = 0; +}; + +// FFMPEG-based decoder +class SimpleAudio : public AudioDecoder { public: SimpleAudio(int audioType, int sample_rate = 44100, int channels = 2); ~SimpleAudio(); - bool Decode(const uint8_t* inbuf, int inbytes, uint8_t *outbuf, int *outbytes); - bool IsOK() const; + bool Decode(const uint8_t* inbuf, int inbytes, uint8_t *outbuf, int *outbytes) override; + bool IsOK() const override; + + int GetOutSamples() const override { + return outSamples; + } + int GetSourcePos() const override { + return srcPos; + } - int GetOutSamples(); - int GetSourcePos(); int GetAudioCodecID(int audioType); // Get audioCodecId from audioType // Not save stated, only used by UI. Used for ATRAC3 (non+) files. @@ -94,7 +111,7 @@ private: bool codecOpen_; }; -void AudioClose(SimpleAudio **ctx); +void AudioClose(AudioDecoder **ctx); const char *GetCodecName(int codec); // audioType bool IsValidCodec(int codec); @@ -151,7 +168,7 @@ public: int FrameNum = 0; // Au decoder - SimpleAudio *decoder = nullptr; + AudioDecoder *decoder = nullptr; // Au type int audioType = 0;