videoeditorengine/mp3aacManipLib/inc/mp3def.h
changeset 0 951a5db380a0
--- /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_ */