rtoss - Blame information for rev 26

Subversion Repositories:
Rev:
Rev Author Line No. Line
14 roytam 1 #ifndef __MAHELPER_H__
2 #define __MAHELPER_H__
3  
4 extern const int tabbitrate[3][3][16];
5 extern const int tabsamplingrate[3][4];
6 extern const LPTSTR genre_strings[];
7  
8 typedef struct
9 {
10         int                     nVersion;
11         int                     nLayer;
12         int                     nChannels;
13         int                     nSamplingRate;
14         int                     nBitRate;
15         int                     nFrameSize;
16         int                     nSamplesPerFrame;
17 }MPEG_AUDIO_INFO;
18  
19 #pragma pack(1)
20 typedef struct tID3Tagv1 {
21         BYTE    tag[3];
22         BYTE    trackName[30];
23         BYTE    artistName[30];
24         BYTE    albumName[30];
25         BYTE    year[4];
26         BYTE    comment[30];
27         BYTE    genre;
28 }ID3_TAG_V1;
29 #pragma pack()
30  
31 inline BOOL CheckAudioHeader(DWORD dwHeader)
32 {
33         if ( (dwHeader & 0xffe00000) != 0xffe00000) // sync word
34                 return FALSE;
35         if (!((dwHeader >> 17) & 3)) // layer
36                 return FALSE;
37         if ( ((dwHeader >> 12) & 0xf) == 0xf) // bitrate
38                 return FALSE;
39         if ( ((dwHeader >> 10) & 0x3) == 0x3) // samplingrate
40                 return FALSE;
41  
42 #ifdef _WIN32_WCE
43         // free format check
44         if ( ((dwHeader >> 12) & 0xf) == 0x0)
45                 return FALSE;
46 #endif
47  
48         return TRUE;
49 }
50  
51 inline BOOL CheckAudioHeader(LPBYTE pbBuff /* need 4bytes */)
52 {
53         if ( (pbBuff[0] & 0xFF) != 0xFF || (pbBuff[1] & 0xE0) != 0xE0) // sync word
54                 return FALSE;
55         if (!((pbBuff[1])&0x6)) // layer
56                 return FALSE;
57         if ( ((pbBuff[2])&0xF0) == 0xF0) // bitrate
58                 return FALSE;
59         if ( ((pbBuff[2])&0xC) == 0xC) // samplingrate
60                 return FALSE;
61  
62 #ifdef _WIN32_WCE
63         // free format check
64         if ( ((pbBuff[2])&0xF0) == 0x0)
65                 return FALSE;
66 #endif
67  
68  
69         return TRUE;
70 }
71  
72 BOOL IsValidFile(LPCTSTR pszFile);
73 BOOL ParseHeader(DWORD dwHeader, MPEG_AUDIO_INFO* pinfo);
74 BOOL ParseHeader(LPBYTE pbHeader, MPEG_AUDIO_INFO* pinfo);
75 int GetFrameSize(DWORD dwHeader);
76 int GetFrameSize(LPBYTE pbHeader);
77 BOOL GetId3Tag(LPCTSTR pszFile, ID3TAGV1* pTag);
78 BOOL SetId3Tag(LPCTSTR pszFile, ID3TAGV1* pTag);
79 void ConvertFromTagStr(BYTE buff[30], LPTSTR pszBuff, int nLen = 30);
26 roytam 80 BOOL ParseId3TagV2(LPBYTE buf, int buflen, ID3TAGV1* pTag);
14 roytam 81  
26 roytam 82 #define ID3TAG_HEADER_LEN       10
83 #define ID3TAG23_FRAME_LEN      10
84 #define ID3TAG20_FRAME_LEN      6
85  
86  
14 roytam 87 #endif // __MAHELPER_H__