aboutsummaryrefslogtreecommitdiff
path: root/Src/mp3-mpg123/mp3_in_mp4.h
diff options
context:
space:
mode:
Diffstat (limited to 'Src/mp3-mpg123/mp3_in_mp4.h')
-rw-r--r--Src/mp3-mpg123/mp3_in_mp4.h43
1 files changed, 43 insertions, 0 deletions
diff --git a/Src/mp3-mpg123/mp3_in_mp4.h b/Src/mp3-mpg123/mp3_in_mp4.h
new file mode 100644
index 00000000..cdef0e84
--- /dev/null
+++ b/Src/mp3-mpg123/mp3_in_mp4.h
@@ -0,0 +1,43 @@
+#ifndef NULLSOFT_MP3_MPEG4_H
+#define NULLSOFT_MP3_MPEG4_H
+
+// used to decode an MPEG-1 audio object in an MPEG-4 ISO Media file
+
+#include "../Plugins/Input/in_mp4/mpeg4audio.h"
+#include <mpg123.h>
+
+class MPEG4_MP3 : public MP4AudioDecoder
+{
+public:
+ MPEG4_MP3();
+ ~MPEG4_MP3();
+ int Open();
+ int OpenEx(size_t bits, size_t maxChannels, bool useFloat);
+ //int AudioSpecificConfiguration(void *buffer, size_t buffer_size); // reads ASC block from mp4 file
+ int GetCurrentBitrate(unsigned int *bitrate);
+ int OutputFrameSize(size_t *frameSize);
+ int GetOutputProperties(unsigned int *sampleRate, unsigned int *channels, unsigned int *bitsPerSample);
+ int GetOutputPropertiesEx(unsigned int *sampleRate, unsigned int *channels, unsigned int *bitsPerSample, bool *isFloat);
+ int DecodeSample(void *inputBuffer, size_t inputBufferBytes, void *outputBuffer, size_t *outputBufferBytes);
+ void Flush();
+ void Close();
+ const char *GetCodecInfoString();
+ int CanHandleCodec(const char *codecName);
+ int CanHandleType(unsigned __int8 type);
+ int CanHandleMPEG4Type(unsigned __int8 type);
+ int SetGain(float gain);
+
+private:
+ bool _UpdateProperties();
+ mpg123_handle *decoder;
+
+ int bits;
+ int channels;
+ bool floatingPoint;
+ int sample_rate;
+ RECVS_DISPATCH;
+ float gain;
+ int pregap;
+};
+
+#endif