MP3.h
上传用户:super_houu
上传日期:2008-09-21
资源大小:4099k
文件大小:5k
源码类别:

DVD

开发平台:

Others

  1. /****************************************************************************************
  2.  *  Copyright (c) 2000 ZORAN Corporation, All Rights Reserved
  3.  *  THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE OF ZORAN CORPORATION
  4.  *
  5.  *  File: $Workfile: MP3.h $             
  6.  *
  7.  * Description:
  8.  * ============
  9.  * Management of MP3 Clips
  10.  *
  11.  * Log:
  12.  * ====
  13.  ****************************************************************************************
  14.  * Updates:
  15.  ****************************************************************************************
  16.  * $Log: /SourceCode/I64_Common/I64_Reference/Playcore/Nav_Clips/MP3.h $
  17.  * 
  18.  * 8     8/19/03 4:11p Leonh
  19.  * 
  20.  * 8     8/19/03 4:10p Leonh
  21.  * Support getting mp3 VBR total time
  22.  * 
  23.  * 7     8/18/03 4:41p Leonh
  24.  * implement fuction to get accurate time with MP3 VBR 
  25.  * 
  26.  * 6     03-05-28 22:40 Leonh
  27.  * support mepg 1 layer 2
  28.  * 
  29.  * 5     03-04-11 14:05 Janeg
  30.  * JerryC : Add MP3_Time_To_Address() prototype.
  31.  * 
  32.  * 4     03-01-10 12:21 Leslie
  33.  * Add wide-character strings support
  34.  * 
  35.  * 3     10/30/02 17:49 Rond
  36.  * 
  37.  * 3     11/09/02 15:48 Atai
  38.  * Vaddis 5e production update
  39.  * 
  40.  * 4     15/08/02 0:20 Nirm
  41.  * - Documentation.
  42.  * 
  43.  * 3     30/07/02 20:35 Nirm
  44.  * - Integrated Multi-Standard support for Clips.
  45.  * 
  46.  * 2     23/04/02 9:32 Nirm
  47.  * - Added dependency in "Config.h".
  48.  * 
  49.  * 1     18/02/02 11:31 Nirm
  50.  * Added MP3-ID3v1 support.
  51.  * 
  52.  * 6     15/04/01 20:02 Nirm
  53.  * Added Sampling-Rate information into ClipInfo;
  54.  * Updated the prototypre for MP3_getMPEGInfo().
  55.  * 
  56.  * 5     11/04/01 12:24 Nirm
  57.  * Added support for MPEG-info extraction.
  58.  * 
  59.  * 4     9/04/01 11:51 Nirm
  60.  * Removed enumeration (unused).
  61.  * 
  62.  * 3     4/04/01 17:36 Nirm
  63.  * Wotk in progress.
  64.  * 
  65.  * 2     2/04/01 16:05 Nirm
  66.  * work in progress.
  67.  * 
  68.  * 1     1/04/01 20:05 Nirm
  69.  * Initial Version, unoperational.
  70.  ****************************************************************************************/
  71. #include "Config.h" // Global Configuration - do not remove!
  72. #ifndef __MP3_H_
  73. #define __MP3_H_
  74. #include "IncludeSysDefs.h"
  75. #include "PlaycoreFileSysFileSystem.h"
  76. /////////////////////////////////////////////////////////////////////////////
  77. // General MP3
  78. /////////////////////////////////////////////////////////////////////////////
  79. /////////////////////////////////////////////////////////////////////////////
  80. // Constants and Enumerations
  81. #define ID3V1_SIZE 128
  82. #define ID3V1_TEXT_LENGTH 30
  83. #define IS_LAYER_II 2
  84. typedef enum { eStereo=0, eJointStereo, eDualChannel, eSingleChannel } enStereoMode;
  85. /////////////////////////////////////////////////////////////////////////////
  86. // Common Structures
  87. // The Header found in any MPEG Audio stream
  88. struct MPEG_Header {
  89. UINT sSyncword : 12;
  90. UINT uMPEGVersion : 1;
  91. UINT uLayer : 2;
  92. UINT bCRCPresent : 1;
  93. UINT uBitrateInd : 4;
  94. UINT uSamplingFreq: 2;
  95. UINT bPadding : 1;
  96. UINT bPrivate : 1;
  97. UINT uMode : 2;
  98. UINT uModeExt : 2;
  99. UINT bCopyright : 1;
  100. UINT bOriginal : 1;
  101. UINT uEmphasis : 2;
  102. };
  103. // MP3-ID3 Tag Information
  104. typedef struct MP3_ID3v1Tag_TAG {
  105. WCHAR szSongName[ID3V1_TEXT_LENGTH+1];
  106. WCHAR szArtist[ID3V1_TEXT_LENGTH+1];
  107. WCHAR szAlbum[ID3V1_TEXT_LENGTH+1];
  108. WCHAR szYear[5];
  109. WCHAR szComment[ID3V1_TEXT_LENGTH+1];
  110. UINT8 uTrackNum;
  111. LPCWSTR pszGenre;
  112. } MP3_ID3v1Tag;
  113. //<<<LeonH_0818_2003_A :For Get mp3 VBR total time
  114. typedef struct 
  115. {
  116. int h_id;       // from MPEG header, 0=MPEG2, 1=MPEG1
  117. int flags;      // from Xing header data
  118. int frames;     // total bit stream frames from Xing header data
  119. int bytes;      // total bit stream bytes from Xing header data
  120. }   XHEADDATA;
  121. // MPEG Information
  122. typedef struct MPEGInfo_TAG {
  123. UINT8 uLayer;
  124. BOOL isXingHeaderOn;
  125. } MPEGInfo;
  126. //>>>LeonH_0818_2003_A
  127. /////////////////////////////////////////////////////////////////////////////
  128. // Public Services
  129. void MP3_setPresentationTime(UINT8 uPresentationTime);
  130. BOOL MP3_getMPEGInfo(DWORD dwClipStartAddr, DWORD cbClipSize, 
  131.  MPEGInfo *o_pMPEGInfo);
  132. BOOL MP3_getID3v1Tag(DWORD dwClipStartAddr, DWORD cbClipSize, 
  133.  WORD i_pExtInfo_sc_handle);
  134. /////////////////////////////////////////////////////////////////////////////
  135. // MP3 Clip
  136. /////////////////////////////////////////////////////////////////////////////
  137. /////////////////////////////////////////////////////////////////////////////
  138. // Public Services
  139. BOOL MP3Clip_isKindOf(LPCWSTR i_pszFilename);
  140. void MP3Clip_construct(struct Clip_TAG *o_pThis, const FindData *i_pFileInfo);
  141. DWORD MP3_Time_To_Address(WORD uTime);
  142. #endif //__MP3_H_