diff -r 000000000000 -r 951a5db380a0 videoeditorengine/mp3aacManipLib/inc/Mp3API.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/videoeditorengine/mp3aacManipLib/inc/Mp3API.h Fri Jan 29 14:08:33 2010 +0200 @@ -0,0 +1,208 @@ +/* +* Copyright (c) 2010 Ixonos Plc. +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of the "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: +* Ixonos Plc +* +* Description: +* +*/ + + + +#ifndef _MP3API_ +#define _MP3API_ + + +#include "defines.h" +#include "mstream.h" + + + + + +/* + Purpose: Structure interface for MP1/2/3 transport stream. + Explanation: - */ +class TMpTransportHandle +{ +public: + + TMPEG_Header header; + TMPEG_Header headerOld; + + int16 SlotTable[15]; + int16 FreeFormatSlots; /*-- Number of bytes in free format frame. */ + + int16 mainDataSlots; /*-- Payload size. */ + + BOOL ms_stereo; /* MS (Mid/Side) stereo used. */ + BOOL is_stereo; /* Intensity stereo used. */ + BOOL lsf; /* MPEG-2 LSF stream present. */ + BOOL mpeg25; /* MPEG-2.5 stream present. */ + + /*-- Transport stream to be used/in use. --*/ + SYNC_STATUS transportType; + SyncInfo syncInfo; + + /*-- Exec state when seeking next MPx frame. --*/ + int16 offsetBits; + ExecState execState; + + /*-- CRC codeword. --*/ + TCRC_Check crc; + + /*-- Average number of bytes reserved for each frame. --*/ + int32 aveFrameLen; + +}; + + +/** + * Data structure for mp3 frame search. + */ +class TMpFrameState +{ +public: + /** + * Number of read bytes when searching start of frame. + * This value is within the input buffer and also the header + * is read after start of frame has been found. + */ + int16 readBytes; + + /** + * Number of header bytes present for current MP3 frame. + */ + int16 headerBytes; + + /** + * Number of payload bytes for current MP3 frame. The total frame + * size is 'headerBytes' + 'frameBytes'. + */ + int16 frameBytes; + + /** + * Total number of bytes read when searching the start of frame. + */ + int32 totalReadBytes; + +}; + + + + +/* + Purpose: Parameters of core engine. + Explanation: - */ +class CMPAudDec : public CBase +{ +public: + + IMPORT_C static CMPAudDec* NewL(); + IMPORT_C ~CMPAudDec(); + IMPORT_C void Init(TMpTransportHandle *aMpFileFormat); + + /*-- Common to all layers. --*/ + uint8 *bitReserv; + TMPEG_Frame *frame; + + /*-- Layer III specific parameters. --*/ + TBitStream br; + CHuffman *huffman; + CIII_Side_Info *side_info; + + int16 PrevSlots; + //int32 FrameStart; + BOOL SkipBr; + BOOL WasSeeking; + + /*-- Transport handle. --*/ + TMpTransportHandle *mpFileFormat; + + +private: + + CMPAudDec(); + void ConstructL(); + +}; + +class CMp3Edit : public CBase + { + +public: + + IMPORT_C static CMp3Edit* NewL(); + IMPORT_C ~CMp3Edit(); + + IMPORT_C uint32 + FileLengthInMs(TMpTransportHandle *tHandle, int32 fileSize) const; + + IMPORT_C int32 + GetSeekOffset(TMpTransportHandle *tHandle, int32 seekPos) const; + + IMPORT_C int32 + GetFrameTime(TMpTransportHandle *tHandle) const; + + IMPORT_C void + InitTransport(TMpTransportHandle *tHandle) const; + + IMPORT_C int16 + SeekSync(TMpTransportHandle *tHandle, uint8 *syncBuf, + uint32 syncBufLen, int16 *readBytes, + int16 *frameBytes, int16 *headerBytes, + uint8 initMode) const; + + IMPORT_C int16 + FreeMode(TMpTransportHandle *tHandle, uint8 *syncBuf, + uint32 syncBufLen, int16 *readBytes, + int16 *frameBytes, int16 *headerBytes) const; + + IMPORT_C int16 + EstimateBitrate(TMpTransportHandle *tHandle, uint8 isVbr) const; + + + + + /*-- Closes MPEG Layer I/II/III decoder handle. --*/ + IMPORT_C CMPAudDec * + DeleteMPAudDec(CMPAudDec *mpAud); + + /*-- Creates MPEG Layer I/II/III decoder handle. --*/ + IMPORT_C CMPAudDec * + CreateMPAudDec(void); + + /*-- Initializes MPEG Layer I/II/III decoder handle. --*/ + IMPORT_C void + InitMPAudDec(CMPAudDec *mpAud, TMpTransportHandle *mpFileFormat); + + /*-- Resets MPEG Layer I/II/III decoder handle. --*/ + IMPORT_C void + ResetMPAudDec(CMPAudDec *mpAud); + + /*-- Stores global gain values. --*/ + IMPORT_C void + SetMPGlobalGains(TBitStream *bs, uint8 numGains, uint8 *globalGain, uint32 *gainPos); + + /*-- Extracts global gain values. --*/ + IMPORT_C uint8 + GetMPGlobalGains(TBitStream *bs, TMpTransportHandle *tHandle, uint8 *globalGain, uint32 *gainPos); + +private: + + void ConstructL(); + CMp3Edit(); + + }; + + +#endif