MpegAudioStream.hxx
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef __MpegAudioStream__
00023 #define __MpegAudioStream__
00024
00025
00026 #include "AudioCodecs_Stream.hxx"
00027 #include "MpegBitstream.hxx"
00028 #include <deque>
00029 #include <string>
00030
00031 namespace CLAM
00032 {
00033
00034 namespace AudioCodecs
00035 {
00036 class MpegAudioStream : public Stream
00037 {
00038 public:
00039 MpegAudioStream( const AudioFile& file );
00040 ~MpegAudioStream();
00041
00042 void PrepareReading();
00043 void PrepareWriting();
00044 void Dispose();
00045 void SeekTo(unsigned long framePosition);
00046
00047 protected:
00048 void DiskToMemoryTransfer();
00049 void MemoryToDiskTransfer();
00050
00051 private:
00052 void ConsumeDecodedSamples();
00053
00054 private:
00055 std::string mName;
00056 FILE* mpHandle;
00057 MpegBitstream mBitstream;
00058 int mEncodedSampleRate;
00059 unsigned _mp3Frame;
00060
00061 static const TSize mMaxDecodedBlockSize;
00062 std::vector<std::deque<mad_fixed_t> > mDecodeBuffer;
00063 TSize mSamplesDecoded;
00064 std::vector<unsigned long> _seekCache;
00065 };
00066 }
00067
00068 }
00069
00070
00071 #endif // MpegAudioStream.hxx
00072