1 /* Copyright (c) MediaArea.net SARL. All Rights Reserved. 2 * 3 * Use of this source code is governed by a BSD-style license that can 4 * be found in the License.html file in the root of the source tree. 5 */ 6 7 //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 8 // 9 // Information about ID3v2 tagged files 10 // 11 //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 12 13 //--------------------------------------------------------------------------- 14 #ifndef MediaInfo_File_Id3v2H 15 #define MediaInfo_File_Id3v2H 16 //--------------------------------------------------------------------------- 17 18 //--------------------------------------------------------------------------- 19 #include "MediaInfo/File__Analyze.h" 20 //--------------------------------------------------------------------------- 21 22 namespace MediaInfoLib 23 { 24 25 ///*************************************************************************** 26 // Class File_Id3v2 27 //*************************************************************************** 28 29 class File_Id3v2 : public File__Analyze 30 { 31 public : 32 //Constructor/Destructor 33 File_Id3v2(); 34 35 //Static stuff 36 static bool Static_Synchronize_Tags (const int8u* Buffer, size_t Buffer_Offset, size_t Buffer_Size, bool &Tag_Found); 37 38 private : 39 //Streams management 40 void Streams_Fill(); 41 42 //Buffer - File header 43 void FileHeader_Parse (); 44 45 //Buffer - Per element 46 void Header_Parse(); 47 void Data_Parse(); 48 49 //Elements 50 #ifdef TEXT 51 #undef TEXT 52 #endif 53 void T___(); 54 void T__X(); 55 void W___(); 56 void W__X(); AENC()57 void AENC() {Skip_XX(Element_Size, "Data");} 58 void APIC(); ASPI()59 void ASPI() {Skip_XX(Element_Size, "Data");} 60 void COMM(); COMR()61 void COMR() {Skip_XX(Element_Size, "Data");} ENCR()62 void ENCR() {Skip_XX(Element_Size, "Data");} EQU2()63 void EQU2() {Skip_XX(Element_Size, "Data");} EQUA()64 void EQUA() {Skip_XX(Element_Size, "Data");} ETCO()65 void ETCO() {Skip_XX(Element_Size, "Data");} GEOB()66 void GEOB() {Skip_XX(Element_Size, "Data");} GRID()67 void GRID() {Skip_XX(Element_Size, "Data");} IPLS()68 void IPLS() {Skip_XX(Element_Size, "Data");} LINK()69 void LINK() {Skip_XX(Element_Size, "Data");} MCDI()70 void MCDI() {T___();} MLLT()71 void MLLT() {Skip_XX(Element_Size, "Data");} OWNE()72 void OWNE() {Skip_XX(Element_Size, "Data");} PCNT()73 void PCNT() {Skip_XX(Element_Size, "Data");} POPM()74 void POPM() {Skip_XX(Element_Size, "Data");} POSS()75 void POSS() {Skip_XX(Element_Size, "Data");} 76 void PRIV(); RBUF()77 void RBUF() {Skip_XX(Element_Size, "Data");} 78 void RGAD(); RVA2()79 void RVA2() {Skip_XX(Element_Size, "Data");} RVRB()80 void RVRB() {Skip_XX(Element_Size, "Data");} SEEK()81 void SEEK() {Skip_XX(Element_Size, "Data");} SIGN()82 void SIGN() {Skip_XX(Element_Size, "Data");} 83 void SYLT(); SYTC()84 void SYTC() {Skip_XX(Element_Size, "Data");} TALB()85 void TALB() {T___();} TBPM()86 void TBPM() {T___();} TCAT()87 void TCAT() {T___();} TCMP()88 void TCMP() {T___();} TCOM()89 void TCOM() {T___();} TCON()90 void TCON() {T___();} TCOP()91 void TCOP() {T___();} TDAT()92 void TDAT() {T___();} TDEN()93 void TDEN() {T___();} TDLY()94 void TDLY() {T___();} TDOR()95 void TDOR() {T___();} TDRC()96 void TDRC() {T___();} TDRL()97 void TDRL() {T___();} TDTG()98 void TDTG() {T___();} TENC()99 void TENC() {T___();} TEXT()100 void TEXT() {T___();} TFLT()101 void TFLT() {T___();} TIME()102 void TIME() {T___();} TIPL()103 void TIPL() {T___();} TIT1()104 void TIT1() {T___();} TIT2()105 void TIT2() {T___();} TIT3()106 void TIT3() {T___();} TKEY()107 void TKEY() {T___();} TLAN()108 void TLAN() {T___();} TLEN()109 void TLEN() {T___();} TMCL()110 void TMCL() {T___();} TMED()111 void TMED() {T___();} TMOO()112 void TMOO() {T___();} TOAL()113 void TOAL() {T___();} TOFN()114 void TOFN() {T___();} TOLY()115 void TOLY() {T___();} TOPE()116 void TOPE() {T___();} TORY()117 void TORY() {T___();} TOWN()118 void TOWN() {T___();} TPE1()119 void TPE1() {T___();} TPE2()120 void TPE2() {T___();} TPE3()121 void TPE3() {T___();} TPE4()122 void TPE4() {T___();} TPOS()123 void TPOS() {T___();} TPRO()124 void TPRO() {T___();} TPUB()125 void TPUB() {T___();} TRCK()126 void TRCK() {T___();} TRDA()127 void TRDA() {T___();} TRSN()128 void TRSN() {T___();} TRSO()129 void TRSO() {T___();} TSIZ()130 void TSIZ() {T___();} TSO2()131 void TSO2() {T___();} TSOA()132 void TSOA() {T___();} TSOC()133 void TSOC() {T___();} TSOP()134 void TSOP() {T___();} TSOT()135 void TSOT() {T___();} TSRC()136 void TSRC() {T___();} TSSE()137 void TSSE() {T___();} TSST()138 void TSST() {T___();} 139 void TXXX(); TYER()140 void TYER() {T___();} UFID()141 void UFID() {Skip_XX(Element_Size, "Data");} USER()142 void USER() {Skip_XX(Element_Size, "Data");} 143 void USLT(); WCOM()144 void WCOM() {W___();} WCOP()145 void WCOP() {W___();} WOAF()146 void WOAF() {W___();} WOAR()147 void WOAR() {W___();} WOAS()148 void WOAS() {W___();} WORS()149 void WORS() {W___();} WPAY()150 void WPAY() {W___();} WPUB()151 void WPUB() {W___();} 152 void WXXX(); BUF()153 void BUF() {Skip_XX(Element_Size, "Data");} CNT()154 void CNT() {Skip_XX(Element_Size, "Data");} COM()155 void COM() {COMM();} CRA()156 void CRA() {Skip_XX(Element_Size, "Data");} CRM()157 void CRM() {Skip_XX(Element_Size, "Data");} EQU()158 void EQU() {Skip_XX(Element_Size, "Data");} ETC()159 void ETC() {Skip_XX(Element_Size, "Data");} GEO()160 void GEO() {Skip_XX(Element_Size, "Data");} IPL()161 void IPL() {Skip_XX(Element_Size, "Data");} LNK()162 void LNK() {Skip_XX(Element_Size, "Data");} MCI()163 void MCI() {Skip_XX(Element_Size, "Data");} MLL()164 void MLL() {Skip_XX(Element_Size, "Data");} PIC_()165 void PIC_() {APIC();} POP()166 void POP() {Skip_XX(Element_Size, "Data");} REV()167 void REV() {Skip_XX(Element_Size, "Data");} RVA()168 void RVA() {Skip_XX(Element_Size, "Data");} SLT()169 void SLT() {Skip_XX(Element_Size, "Data");} STC()170 void STC() {Skip_XX(Element_Size, "Data");} TAL()171 void TAL() {T___();} TBP()172 void TBP() {T___();} TCM()173 void TCM() {T___();} TCO()174 void TCO() {T___();} TCP()175 void TCP() {Skip_XX(Element_Size, "Data");} TCR()176 void TCR() {T___();} TDA()177 void TDA() {T___();} TDY()178 void TDY() {T___();} TEN()179 void TEN() {T___();} TFT()180 void TFT() {T___();} TIM()181 void TIM() {T___();} TKE()182 void TKE() {T___();} TLA()183 void TLA() {T___();} TLE()184 void TLE() {T___();} TMT()185 void TMT() {T___();} TOA()186 void TOA() {T___();} TOF()187 void TOF() {T___();} TOL()188 void TOL() {T___();} TOR()189 void TOR() {T___();} TOT()190 void TOT() {T___();} TP1()191 void TP1() {T___();} TP2()192 void TP2() {T___();} TP3()193 void TP3() {T___();} TP4()194 void TP4() {T___();} TPA()195 void TPA() {T___();} TPB()196 void TPB() {T___();} TRC()197 void TRC() {T___();} TRD()198 void TRD() {T___();} TRK()199 void TRK() {T___();} TSI()200 void TSI() {T___();} TSS()201 void TSS() {T___();} TT1()202 void TT1() {T___();} TT2()203 void TT2() {T___();} TT3()204 void TT3() {T___();} TXT()205 void TXT() {T___();} TXX()206 void TXX() {TXXX();} TYE()207 void TYE() {T___();} UFI()208 void UFI() {Skip_XX(Element_Size, "Data");} ULT()209 void ULT() {USLT();} WAF()210 void WAF() {W___();} WAR()211 void WAR() {W___();} WAS()212 void WAS() {W___();} WCM()213 void WCM() {W___();} WCP()214 void WCP() {W___();} WPB()215 void WPB() {W___();} WXX()216 void WXX() {WXXX();} XRVA()217 void XRVA() {RVA2();} 218 219 //Temp 220 ZtringList Element_Values; 221 Ztring Element_Value; 222 Ztring Year, Month, Day, Hour, Minute; 223 stream_t StreamKind; 224 int64u Id3v2_Size; 225 int8u Id3v2_Version; 226 bool Unsynchronisation_Global; 227 bool Unsynchronisation_Frame; 228 bool DataLengthIndicator; 229 230 //Helpers 231 void Fill_Name(); 232 void Normalize_Date (Ztring& Date); 233 }; 234 235 236 } //NameSpace 237 238 #endif 239