diff -r 000000000000 -r 951a5db380a0 videoeditorengine/mp3aacManipLib/inc/mp3def.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/videoeditorengine/mp3aacManipLib/inc/mp3def.h Fri Jan 29 14:08:33 2010 +0200 @@ -0,0 +1,181 @@ +/* +* 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 MP3_DEF_H_ +#define MP3_DEF_H_ + +/*- Project Headers. --*/ +#include "defines.h" + +/************************************************************************** + External Objects Provided + *************************************************************************/ + +/*-- General MPx Definitions. --*/ +#ifndef PI +#define PI (3.14159265358979) +#endif +#define MPEG_AUDIO_ID (1) +#define MPEG_PHASE2_LSF (0) +#define SBLIMIT (32) +#define SSLIMIT (18) +#define MAX_MONO_SAMPLES (SBLIMIT * SSLIMIT) +#define HAN_SIZE (512) +#define NUM_SUBWIN (16) +#define SCALE (32768L) +#define SYNC_WORD ((long) 0x7ff) +#define SYNC_WORD_LENGTH (11) +#define HEADER_BITS (20) +#define MAX_LONG_SFB_BANDS (22) +#define MAX_SHORT_SFB_BANDS (13) +#define MIN_MP3FRAMELEN (1440) +#define MAX_BITRESER_SIZE (512) +#define CRC_MAX_PAYLOAD (34) + +/*-- MPEG Header Definitions - Mode Values --*/ +#define MPG_MD_STEREO (0) +#define MPG_MD_JOINT_STEREO (1) +#define MPG_MD_DUAL_CHANNEL (2) +#define MPG_MD_MONO (3) + +/*-- Some Useful Macros. --*/ +#ifdef MIN +#undef MIN +#endif +#define MIN(A, B) ((A) < (B) ? (A) : (B)) + +#ifdef MAX +#undef MAX +#endif +#define MAX(A, B) ((A) > (B) ? (A) : (B)) + +/*-- Channel definitions. --*/ +#define MONO_CHAN (0) +//#define MAX_CHANNELS (2) +#define LEFT_CHANNEL (MONO_CHAN) +#define RIGHT_CHANNEL (MONO_CHAN + 1) + +/* + Purpose: Masks those bit fields from the header to zero that + do not remain fixed from frame to frame. + Explanation: Following fields are assumed to be fixed : + * 12th bit from the sync word + * version + * layer description + * sampling rate + * channel mode (layer 3 only) + * copyright bit + * original bit + * de-emphasis + + Following fields can vary from frame to frame : + * protection bit + * bit rate + * padding bit + * private bit + * channel mode extension + */ +#define HEADER_MASK(header) ((uint32)header & 0x001E0CCF) + +/* + Purpose: Macro to extract layer description. + Explanation: This is the bit value, use MP_Header::layer_number method + to interpret this value. */ +#define LAYER_MASK(header) (((uint32)header >> 17) & 3) + +/* + Purpose: Layer III flags. + Explanation: - */ +typedef enum LayerIIIFlags +{ + WINDOW_SWITCHING_FLAG = 4, + MIXED_BLOCK_FLAG = 8, + PRE_FLAG = 16, + SCALEFAC_SCALE = 32, + COUNT_1_TABLE_SELECT = 64 + +} Layer_III_Flags; + +/* + Purpose: Stereo modes for layer III. + Explanation: - */ +typedef enum StereoMode +{ + ONLY_MONO, + ONLY_STEREO, + MS_STEREO, + IS_STEREO, + LSF_IS_STEREO + +} StereoMode; + +/* + Purpose: Block types for layer III. + Explanation: The first four describe the actual block type for each subband, + the rest of the declarations describe the block type for the + whole frame. */ + +typedef enum MP3_WINDOW_TYPE +{ + ONLY_LONG_WINDOW, + LONG_SHORT_WINDOW, + ONLY_SHORT_WINDOW, + SHORT_LONG_WINDOW, + MIXED_BLOCK_MODE, + SHORT_BLOCK_MODE, + LONG_BLOCK_MODE + +} MP3_WINDOW_TYPE, MP3WindowType; + +/* + Purpose: Structure to hold scalefactor band parameters. + Explanation: - */ +typedef struct SFBAND_DATA_STR +{ + int16 l[23]; /* long block. */ + int16 s[14]; /* short block. */ + +} SFBAND_DATA; + +/* + Purpose: Number of bits reserved for decoding each group + of scalefactors. + Explanation: - */ +typedef struct SFBITS_DATA_STR +{ + int16 l[5]; + int16 s[3]; + +} SFBITS_DATA; + +/* + Purpose: Sync seek code. + Explanation: - */ +typedef enum MIX_SYNC_STATUS +{ + LAYER1_STREAM_MIX, + LAYER2_STREAM_MIX, + LAYER3_STREAM_MIX, + FIRST_FRAME_WITH_LAYER1, + FIRST_FRAME_WITH_LAYER2, + FIRST_FRAME_WITH_LAYER3 + +} MIX_SYNC_STATUS; + +#endif /* MP3_DEF_H_ */