//--------------------------------------------------------------------------- void File_Nut::Data_Parse() { #define ELEMENT_CASE(_NAME) \ case Elements::_NAME : _NAME(); break; //Parsing if (Element_Size < 4) { Skip_XX(Element_Size, "Unknown"); return; } Element_Size-=4; #ifndef __BORLANDC__ switch (Element_Code) #else //__BORLANDC__ switch (Element_Code&0xFFFFFFFF) //Borland does not like int64u for const? #endif //__BORLANDC__ { ELEMENT_CASE(main); ELEMENT_CASE(stream); ELEMENT_CASE(syncpoint); ELEMENT_CASE(index); ELEMENT_CASE(info); default : Skip_XX(Element_Size, "Data"); } Element_Size+=4; if (Element_Offset+4!=Element_Size) Skip_XX(Element_Size - 4 - Element_Offset, "Unknown"); Skip_B4( "cheksum"); }
//--------------------------------------------------------------------------- void File_Caf::Data_Parse() { if (Element_Code!=Elements::data && !Element_IsComplete_Get()) { Element_WaitForMoreData(); return; } #define ELEMENT_CASE(_NAME, _DETAIL) \ case Elements::_NAME : Element_Name(_DETAIL); _NAME(); break; //Parsing switch (Element_Code) { ELEMENT_CASE(data, "Audio Data"); ELEMENT_CASE(desc, "Audio Description"); ELEMENT_CASE(free, "Free"); ELEMENT_CASE(info, "Information"); ELEMENT_CASE(kuki, "Magic Cookie"); ELEMENT_CASE(pakt, "Packet Table"); ELEMENT_CASE(uuid, "User-Defined Chunk"); default : Skip_XX(Element_Size, "Data"); } }
//--------------------------------------------------------------------------- void File_Lyrics3v2::Data_Parse() { #define ELEMENT_CASE(_NAME) \ case Lyrics3v2::_NAME : _NAME(); break; //Parsing switch (Element_Code) { ELEMENT_CASE(AUT); ELEMENT_CASE(CRC); ELEMENT_CASE(EAL); ELEMENT_CASE(EAR); ELEMENT_CASE(ETT); ELEMENT_CASE(IMG); ELEMENT_CASE(IND); ELEMENT_CASE(INF); ELEMENT_CASE(LYR); case 0xFFFFFFFF : Footer(); break; default : Skip_XX(Element_Size, "Data"); } }
//--------------------------------------------------------------------------- void File_TwinVQ::Data_Parse() { #define ELEMENT_CASE(_NAME, _DETAIL) \ case Elements::_NAME : Element_Info1(_DETAIL); _NAME(); break; //Parsing switch (Element_Code) { ELEMENT_CASE(_c__, "Copyright"); ELEMENT_CASE(AUTH, "Author"); ELEMENT_CASE(COMM, "Mandatory information"); ELEMENT_CASE(COMT, "Comment"); ELEMENT_CASE(DATA, "Data"); ELEMENT_CASE(DSIZ, "Data size"); ELEMENT_CASE(FILE, "Filename"); ELEMENT_CASE(NAME, "Song title"); default : Skip_XX(Element_Size, "Unknown"); } }
//--------------------------------------------------------------------------- void File_Flac::Data_Parse() { #define ELEMENT_CASE(_NAME) \ case Flac::_NAME : _NAME(); break; //Parsing switch (Element_Code) { ELEMENT_CASE(STREAMINFO); ELEMENT_CASE(PADDING); ELEMENT_CASE(APPLICATION); ELEMENT_CASE(SEEKTABLE); ELEMENT_CASE(VORBIS_COMMENT); ELEMENT_CASE(CUESHEET); ELEMENT_CASE(PICTURE); default : Skip_XX(Element_Size, "Data"); } if (Last_metadata_block) { Fill(Stream_Audio, 0, Audio_StreamSize, File_Size-(File_Offset+Buffer_Offset+Element_Size)); File__Tags_Helper::Data_GoTo(File_Size, "Flac"); } }
//--------------------------------------------------------------------------- void File_Mpeg4_Descriptors::Data_Parse() { //Preparing if (Count_Get(KindOfStream)==0) Stream_Prepare(KindOfStream); #define ELEMENT_CASE(_NAME, _DETAIL) \ case 0x##_NAME : Element_Name(_DETAIL); Descriptor_##_NAME(); break; //Parsing switch (Element_Code) { ELEMENT_CASE(00, "Forbidden"); ELEMENT_CASE(01, "ObjectDescrTag"); ELEMENT_CASE(02, "InitialObjectDescrTag"); ELEMENT_CASE(03, "ES_DescrTag"); ELEMENT_CASE(04, "DecoderConfigDescrTag"); ELEMENT_CASE(05, "DecSpecificInfoTag"); ELEMENT_CASE(06, "SLConfigDescrTag"); ELEMENT_CASE(07, "ContentIdentDescrTag"); ELEMENT_CASE(08, "SupplContentIdentDescrTag"); ELEMENT_CASE(09, "IPI_DescrPointerTag"); ELEMENT_CASE(0A, "IPMP_DescrPointerTag"); ELEMENT_CASE(0B, "IPMP_DescrTag"); ELEMENT_CASE(0C, "QoS_DescrTag"); ELEMENT_CASE(0D, "RegistrationDescrTag"); ELEMENT_CASE(0E, "ES_ID_IncTag"); ELEMENT_CASE(0F, "ES_ID_RefTag"); ELEMENT_CASE(10, "MP4_IOD_Tag"); ELEMENT_CASE(11, "MP4_OD_Tag"); ELEMENT_CASE(12, "IPL_DescrPointerRefTag"); ELEMENT_CASE(13, "ExtendedProfileLevelDescrTag"); ELEMENT_CASE(14, "profileLevelIndicationIndexDescrTag"); ELEMENT_CASE(40, "ContentClassificationDescrTag"); ELEMENT_CASE(41, "KeyWordDescrTag"); ELEMENT_CASE(42, "RatingDescrTag"); ELEMENT_CASE(43, "LanguageDescrTag"); ELEMENT_CASE(44, "ShortTextualDescrTag"); ELEMENT_CASE(45, "ExpandedTextualDescrTag"); ELEMENT_CASE(46, "ContentCreatorNameDescrTag"); ELEMENT_CASE(47, "ContentCreationDateDescrTag"); ELEMENT_CASE(48, "OCICreatorNameDescrTag"); ELEMENT_CASE(49, "OCICreationDateDescrTag"); ELEMENT_CASE(4A, "SmpteCameraPositionDescrTag"); ELEMENT_CASE(4B, "SegmentDescrTag"); ELEMENT_CASE(4C, "MediaTimeDescrTag"); ELEMENT_CASE(60, "IPMP_ToolsListDescrTag"); ELEMENT_CASE(61, "IPMP_ToolTag"); ELEMENT_CASE(62, "FLEXmuxTimingDescrTag"); ELEMENT_CASE(63, "FLEXmuxCodeTableDescrTag"); ELEMENT_CASE(64, "ExtSLConfigDescrTag"); ELEMENT_CASE(65, "FLEXmuxBufferSizeDescrTag"); ELEMENT_CASE(66, "FLEXmuxIdentDescrTag"); ELEMENT_CASE(67, "DependencyPointerTag"); ELEMENT_CASE(68, "DependencyMarkerTag"); ELEMENT_CASE(69, "FLEXmuxChannelDescrTag"); default: if (Element_Code>=0xC0) Element_Info("user private"); else Element_Info("unknown"); Skip_XX(Element_Size, "Data"); break; } IsAccepted=true; }
//--------------------------------------------------------------------------- // Element parse // void File_Jpeg::Data_Parse() { #define ELEMENT_CASE(_NAME, _DETAIL) \ case Elements::_NAME : Element_Info(_DETAIL); _NAME(); break; //Parsing switch (Element_Code) { ELEMENT_CASE(TEM , "TEM"); ELEMENT_CASE(S0F0, "Baseline DCT (Huffman)"); ELEMENT_CASE(S0F1, "Extended sequential DCT (Huffman)"); ELEMENT_CASE(S0F2, "Progressive DCT (Huffman)"); ELEMENT_CASE(S0F3, "Lossless (sequential) (Huffman)"); ELEMENT_CASE(DHT , "Define Huffman Tables"); ELEMENT_CASE(S0F5, "Differential sequential DCT (Huffman)"); ELEMENT_CASE(S0F6, "Differential progressive DCT (Huffman)"); ELEMENT_CASE(S0F7, "Differential lossless (sequential) (Huffman)"); ELEMENT_CASE(JPG , "Reserved for JPEG extensions"); ELEMENT_CASE(S0F9, "Extended sequential DCT (Arithmetic)"); ELEMENT_CASE(S0FA, "Progressive DCT (Arithmetic)"); ELEMENT_CASE(S0FB, "Lossless (sequential) (Arithmetic)"); ELEMENT_CASE(DAC , "Define Arithmetic Coding"); ELEMENT_CASE(S0FD, "Differential sequential DCT (Arithmetic)"); ELEMENT_CASE(S0FE, "Differential progressive DCT (Arithmetic)"); ELEMENT_CASE(S0FF, "Differential lossless (sequential) (Arithmetic)"); ELEMENT_CASE(RST0, "Restart Interval Termination 0"); ELEMENT_CASE(RST1, "Restart Interval Termination 1"); ELEMENT_CASE(RST2, "Restart Interval Termination 2"); ELEMENT_CASE(RST3, "Restart Interval Termination 3"); ELEMENT_CASE(RST4, "Restart Interval Termination 4"); ELEMENT_CASE(RST5, "Restart Interval Termination 5"); ELEMENT_CASE(RST6, "Restart Interval Termination 6"); ELEMENT_CASE(RST7, "Restart Interval Termination 7"); ELEMENT_CASE(SOI , "Start Of Image"); ELEMENT_CASE(EOI , "End Of Image"); ELEMENT_CASE(SOS , "Start Of Scan"); ELEMENT_CASE(DQT , "Define Quantization Tables"); ELEMENT_CASE(DNL , "Define Number of Lines"); ELEMENT_CASE(DRI , "Define Restart Interval"); ELEMENT_CASE(DHP , "Define Hierarchical Progression"); ELEMENT_CASE(EXP , "Expand Reference Components"); ELEMENT_CASE(APP0, "Application-specific marker 0"); ELEMENT_CASE(APP1, "Application-specific marker 1"); ELEMENT_CASE(APP2, "Application-specific marker 2"); ELEMENT_CASE(APP3, "Application-specific marker 3"); ELEMENT_CASE(APP4, "Application-specific marker 4"); ELEMENT_CASE(APP5, "Application-specific marker 5"); ELEMENT_CASE(APP6, "Application-specific marker 6"); ELEMENT_CASE(APP7, "Application-specific marker 7"); ELEMENT_CASE(APP8, "Application-specific marker 8"); ELEMENT_CASE(APP9, "Application-specific marker 9"); ELEMENT_CASE(APPA, "Application-specific marker 10"); ELEMENT_CASE(APPB, "Application-specific marker 11"); ELEMENT_CASE(APPC, "Application-specific marker 12"); ELEMENT_CASE(APPD, "Application-specific marker 13"); ELEMENT_CASE(APPE, "Application-specific marker 14"); ELEMENT_CASE(APPF, "Application-specific marker 15"); ELEMENT_CASE(JPG0, "JPG"); ELEMENT_CASE(JPG1, "JPG"); ELEMENT_CASE(JPG2, "JPG"); ELEMENT_CASE(JPG3, "JPG"); ELEMENT_CASE(JPG4, "JPG"); ELEMENT_CASE(JPG5, "JPG"); ELEMENT_CASE(JPG6, "JPG"); ELEMENT_CASE(JPG7, "JPG"); ELEMENT_CASE(JPG8, "JPG"); ELEMENT_CASE(JPG9, "JPG"); ELEMENT_CASE(JPGA, "JPG"); ELEMENT_CASE(JPGB, "JPG"); ELEMENT_CASE(JPGC, "JPG"); ELEMENT_CASE(JPGD, "JPG"); ELEMENT_CASE(COM , "Comment"); default : Element_Info("Reserved"); Skip_XX(Element_Size, "Data"); } }