--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/inc/Mp3Codec.h Tue Feb 02 01:08:46 2010 +0200
@@ -0,0 +1,143 @@
+/*
+ * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+ * All rights reserved.
+ * This component and the accompanying materials are made available
+ * under the terms of "Eclipse Public License v1.0"
+ * which accompanies this distribution, and is available
+ * at the URL "http://www.eclipse.org/legal/epl-v10.html".
+ *
+ * Initial Contributors:
+ * Nokia Corporation - initial contribution.
+ *
+ * Contributors:
+ *
+ * Description: Telephony Multimedia Service
+ *
+ */
+
+
+#ifndef __MP3CODEC_H__
+#define __MP3CODEC_H__
+
+// INCLUDES
+#include <E32Base.h>
+
+// CONSTANTS
+
+// DATA TYPES
+
+// FORWARD DECLARATION
+class CMp3ToPcmDecoderImpl;
+
+// CLASS DEFINITIONS
+/*
+-----------------------------------------------------------------------------
+
+ TMp3DecParams
+
+ MP3 decoding parameters.
+
+ @since 2.1
+
+-----------------------------------------------------------------------------
+*/
+class TMp3DecParams
+ {
+public:
+ inline TMp3DecParams();
+public:
+ TInt iStereoToMono; // stereo to mono switch (TRUE or default FALSE)
+ TInt iLeftRight; // decode left or right channel (1 left, 2 right, 0 default all)
+ TInt iDecimFactor; // decimation factor (2, 4 or default 1)
+ TInt iConcealment; // error concealment level (0 none, default 1)
+ TInt iSampleLength; // resolution of PCM samples (default 16 bits)
+ TInt iSamplingFrequency; //Output sampling frequency
+ };
+
+TMp3DecParams::TMp3DecParams() :
+iStereoToMono(0), iLeftRight(0), iDecimFactor(1), iConcealment(1), iSampleLength(16), iSamplingFrequency(0) {}
+
+
+
+/*
+-----------------------------------------------------------------------------
+
+ TMp3FrameInfo
+
+ MP3 frame info struct.
+
+ @since 2.1
+
+-----------------------------------------------------------------------------
+*/
+class TMp3FrameInfo
+ {
+public:
+ inline TMp3FrameInfo();
+public:
+ IMPORT_C static TInt MinFrameSize();
+ IMPORT_C static TInt MaxFrameSize();
+ IMPORT_C static TInt MaxFrameSamples();
+ IMPORT_C static TInt MaxChannels();
+ IMPORT_C static TInt MaxAncillaryBits();
+ IMPORT_C static TInt FrameHeaderSize();
+ IMPORT_C static TInt FrameSize(const TMp3FrameInfo& aInfo);
+public:
+ TInt iId; // id of algorithm (1 MPEG-1, 0 MPEG-2)
+ TInt iLayer; // layer number (1, 2, 3 or 4)
+ TInt iErrorProtection; // err prot flag (TRUE or FALSE, TRUE if err protected)
+ TInt iBitrate; // bitrate (kbit/s)
+ TInt iSamplingRate; // sampling frequency (Hz)
+ TInt iPadding; // padding flag (TRUE or FALSE, TRUE if p slot exists)
+ TInt iPrivateBit; // bit for private use
+ TInt iMode; // audio mode (0 stereo, 1 jstereo, 2 dual, 3 mono)
+ TInt iChannels; // number of audio channels (1 for mono, otherwise 2)
+ TInt iCopyright; // copyright flag (TRUE or FALSE, TRUE if copyrighted)
+ TInt iOrigCopy; // original flag (TRUE or FALSE, TRUE if original)
+ TInt iFrameSize; // size of encoded frame (bytes)
+ TInt iFrameSamples; // length of decoded frame (samples per channel)
+public:
+ TInt iSamplingRateOut; // sampling frequency after conversion(s) (Hz)
+ TInt iChannelsOut; // number of audio channels after conversion(s) (1 or 2)
+ TInt iFrameSamplesOut; // length of decoded frame after conversion(s) (samples per channel)
+ };
+
+TMp3FrameInfo::TMp3FrameInfo() {}
+
+
+
+/*
+-----------------------------------------------------------------------------
+
+ CMp3ToPcmDecoder
+
+ Low level MP3 decoding API.
+
+ @since 2.1
+
+-----------------------------------------------------------------------------
+*/
+class CMp3ToPcmDecoder : public CBase
+ {
+protected:
+ IMPORT_C CMp3ToPcmDecoder();
+ IMPORT_C void ConstructL();
+
+public:
+ IMPORT_C static CMp3ToPcmDecoder* NewL(const TMp3DecParams& aConf);
+ IMPORT_C virtual ~CMp3ToPcmDecoder();
+ IMPORT_C void Reset();
+ IMPORT_C void Reset(const TMp3DecParams& aConf);
+ IMPORT_C static TInt FrameInfo(const TUint8* aBuf, TInt aBufLen, TMp3FrameInfo& aInfo);
+ IMPORT_C static TInt FrameInfo(const TUint8* aBuf, TInt aBufLen, TMp3FrameInfo& aInfo, const TMp3DecParams& aConf);
+ IMPORT_C static TInt SeekSync(const TUint8* aBuf, TInt aBufLen);
+ IMPORT_C TInt Decode(TUint8* aSrc, TInt& aSrcUsed, TUint8* aDst, TInt& aDstLen, TInt aMuteFlag);
+ IMPORT_C TInt Decode(TUint8* aSrc, TInt& aSrcUsed, TUint8* aDst1, TUint8* aDst2, TUint8* aDst3, TInt& aDstLen1, TInt& aDstLen2, TInt& aDstLen3, TInt aMuteFlag);
+private:
+ CMp3ToPcmDecoderImpl* iState;
+ };
+
+#endif //__MP3CODEC_H__
+//-----------------------------------------------------------------------------
+// End of File
+//-----------------------------------------------------------------------------