//---------------------------------------------------------------------------
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");
}
Exemple #2
0
//---------------------------------------------------------------------------
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");
    }
}