//--------------------------------------------------------------------------- // Packet "10" void File_Dirac::End_of_Sequence() { Element_Name("End of Sequence"); //Parsing picture_Fill(); }
//--------------------------------------------------------------------------- void File_Sdp::Data_Parse() { Element_Name("Packet"); for (int8u Pos=0; Pos<5; Pos++) { if (FieldLines[Pos]) { Element_Code=FieldLines[Pos]; stream &Stream=Streams[FieldLines[Pos]]; if (Stream.Parser==NULL) { Stream.Parser=new File_Teletext(); Stream.Parser->IsSubtitle=true; Open_Buffer_Init(Stream.Parser); } if (Stream.Parser->PTS_DTS_Needed) Stream.Parser->FrameInfo=FrameInfo; Demux(Buffer+Buffer_Offset+Element_Offset, 45, ContentType_MainStream); Open_Buffer_Continue(Stream.Parser, Buffer+Buffer_Offset+Element_Offset, 45); Element_Offset+=45; } } Element_Begin1("SDP Footer"); Skip_B1( "Footer ID"); Skip_B2( "Footer Sequence number"); Skip_B2( "SDP Cheksum"); Skip_B2( "SMPTE 291 Cheksum"); Element_End0(); }
//--------------------------------------------------------------------------- void File_Celt::Comment() { Element_Name("Comment?"); while (Element_Offset<Element_Size) { Ztring value; int32u size; Get_L4(size, "size"); if (size) Get_Local(size, value, "value"); //Filling if (value.find(__T("CELT "))!=std::string::npos) { Ztring Version=value.SubString(__T("CELT "), __T(" (")); Fill(Stream_Audio, 0, Audio_Encoded_Library, __T("CELT ")+Version); Fill(Stream_Audio, 0, Audio_Encoded_Library_Name, __T("CELT")); Fill(Stream_Audio, 0, Audio_Encoded_Library_Version, Version); } else if (!value.empty()) Fill(Stream_Audio, 0, "Comment", value); } Finish("CELT"); }
//--------------------------------------------------------------------------- void File_Nut::info() { Element_Name("info"); //Parsing Skip_XX(Element_Size, "Data"); }
//--------------------------------------------------------------------------- void File_DvbSubtitle::page_composition_segment() { Element_Name("page composition segment"); //Parsing Skip_B1( "page_time_out"); BS_Begin(); Skip_S1(4, "page_version_number"); Skip_S1(2, "page_state"); Skip_S1(2, "reserved"); BS_End(); while(Element_Offset<Element_Size) { Element_Begin1("Region"); int16u region_horizontal_address, region_vertical_address; int8u region_id; Get_B1 (region_id, "region_id"); Skip_B1( "reserved"); Get_B2 (region_horizontal_address, "region_horizontal_address"); Get_B2 (region_vertical_address, "region_vertical_address"); Element_End0(); FILLING_BEGIN(); subtitle_streams[subtitle_stream_id].pages[page_id].regions[region_id].page_composition_segment=true; subtitle_streams[subtitle_stream_id].pages[page_id].regions[region_id].region_horizontal_address=region_horizontal_address; subtitle_streams[subtitle_stream_id].pages[page_id].regions[region_id].region_vertical_address=region_vertical_address; FILLING_END(); } }
//--------------------------------------------------------------------------- // Packet "20" void File_Dirac::Auxiliary_data() { Element_Name("Auxiliary data"); //Parsing Skip_XX(Element_Size, "Auxiliary data"); }
//--------------------------------------------------------------------------- void File_Tiff::Read_Directory() { /* Each directory consist of 4 fields */ /* Get information for this directory */ Element_Begin0(); ifditem IfdItem; Get_X2 (IfdItem.Tag, "Tag"); Param_Info1(Tiff_Tag_Name(IfdItem.Tag)); Get_X2 (IfdItem.Type, "Type"); Param_Info1(Tiff_Type_Name(IfdItem.Type)); Get_X4 (IfdItem.Count, "Count"); Element_Name(Tiff_Tag_Name(IfdItem.Tag)); if (Tiff_Type_Size(IfdItem.Type)*IfdItem.Count<=4) { GetValueOffsetu(IfdItem); /* Padding up, skip dummy bytes */ if (Tiff_Type_Size(IfdItem.Type)==0) { if (Element_Offset+4<Element_Size) Skip_XX(Element_Size-(Element_Offset+4), "Unknown"); } else if (Tiff_Type_Size(IfdItem.Type)*IfdItem.Count<4) Skip_XX(Tiff_Type_Size(IfdItem.Type)*IfdItem.Count, "Padding"); } else { int32u IFDOffset; Get_X4 (IFDOffset, "IFDOffset"); IfdItems[IFDOffset]=IfdItem; } Element_End0(); }
//--------------------------------------------------------------------------- // Packet "0A" void File_Dirac::Inter_Non_Reference_Picture_2() { Element_Name("Inter Non Reference Picture (2 pictures)"); //Parsing picture(); }
//--------------------------------------------------------------------------- // Packet "CC" void File_Dirac::Reference_Picture_Low() { Element_Name("Reference Picture (low-delay)"); //Parsing picture(); }
//--------------------------------------------------------------------------- void File_Dpx::UserDefinedHeader_Cineon() { Element_Name("User defined header"); //Parsing Skip_XX(Sizes[Pos_UserDefined], "Unknown"); }
//--------------------------------------------------------------------------- // Packet "0D" void File_Dirac::Inter_Reference_Picture_1() { Element_Name("Inter Reference Picture (1 picture)"); //Parsing picture(); }
//--------------------------------------------------------------------------- void File_Ibi::Ebml_MaxSizeLength() { Element_Name("MaxSizeLength"); //Parsing UInteger_Info(); }
void File_Ibi::Stream_FrameNumber() { Element_Name("Frame Number"); //Parsing size_t Pos=0; int64u Offset=0; while (Element_Offset<Element_Size) { int64u Item; Get_EB (Item, "Item"); Offset+=Item; Param_Info(Pos); Param_Info(Ztring::ToZtring(Offset)+_T(" (0x")+Ztring::ToZtring(Offset, 16)+_T(')')); FILLING_BEGIN(); if (Ibi) { //Filling information for ID after data if (Ibi->Streams[ID_Current]==NULL) Ibi->Streams[ID_Current]=new ibi::stream(); if (Pos>=Ibi->Streams[ID_Current]->Infos.size()) { Ibi->Streams[ID_Current]->Infos.push_back(ibi::stream::info()); Ibi->Streams[ID_Current]->Infos[Pos].IsContinuous=true; //default } Ibi->Streams[ID_Current]->Infos[Pos].FrameNumber=Offset; Pos++; } FILLING_END(); } }
//--------------------------------------------------------------------------- void File_Ibi::SourceInfo_SourceSize() { Element_Name("Source Size"); //Parsing Skip_B8( "Data"); }
//--------------------------------------------------------------------------- void File_Ibi::Void() { Element_Name("Void"); //Parsing UInteger_Info(); }
//--------------------------------------------------------------------------- void File_Ibi::SourceInfo_IndexCreationDate() { Element_Name("Index Creation Date"); //Parsing Skip_B8( "Data"); }
//--------------------------------------------------------------------------- void File_Ibi::SourceInfo_SourceModificationDate() { Element_Name("Source Modification Date"); //Parsing Skip_B8( "Data"); }
//--------------------------------------------------------------------------- void File_Ibi::WritingApplication_Version() { Element_Name("Version"); //Parsing Skip_UTF8(Element_Size, "Data"); }
void File_Ibi::Stream_Dts() { Element_Name("DTS"); //Parsing int64u Item; Get_EB (Item, "DtsFrequencyNumerator"); #if MEDIAINFO_IBIUSAGE FILLING_BEGIN(); if (Ibi) Ibi->Streams[ID_Current]->DtsFrequencyNumerator=Item; FILLING_END(); #endif //MEDIAINFO_IBIUSAGE Get_EB (Item, "DtsFrequencyDenominator"); #if MEDIAINFO_IBIUSAGE FILLING_BEGIN(); if (Ibi) { Ibi->Streams[ID_Current]->DtsFrequencyDenominator=Item; //Handling of previous inverted Numerator/Denominator if (Ibi->Streams[ID_Current]->DtsFrequencyNumerator<Ibi->Streams[ID_Current]->DtsFrequencyDenominator) std::swap(Ibi->Streams[ID_Current]->DtsFrequencyNumerator, Ibi->Streams[ID_Current]->DtsFrequencyDenominator); } FILLING_END(); #endif //MEDIAINFO_IBIUSAGE #if MEDIAINFO_IBIUSAGE size_t Pos=0; #endif //MEDIAINFO_IBIUSAGE int64u Offset=0; while (Element_Offset<Element_Size) { int64u Item; Get_EB (Item, "Item"); Offset+=Item; #if MEDIAINFO_IBIUSAGE Param_Info1(Pos); #endif //MEDIAINFO_IBIUSAGE Param_Info1(Ztring::ToZtring(Offset)+__T(" (0x")+Ztring::ToZtring(Offset, 16)+__T(')')); #if MEDIAINFO_IBIUSAGE FILLING_BEGIN(); if (Ibi) { //Filling information for ID after data if (Ibi->Streams[ID_Current]==NULL) Ibi->Streams[ID_Current]=new ibi::stream(); if (Pos>=Ibi->Streams[ID_Current]->Infos.size()) { Ibi->Streams[ID_Current]->Infos.push_back(ibi::stream::info()); Ibi->Streams[ID_Current]->Infos[Pos].IsContinuous=true; //default } Ibi->Streams[ID_Current]->Infos[Pos].Dts=Offset; Pos++; } FILLING_END(); #endif //MEDIAINFO_IBIUSAGE } }
//--------------------------------------------------------------------------- void File_Dpx::Padding() { Element_Name("Padding"); //Parsing Skip_XX(Sizes[Pos_Padding], "Padding"); }
//--------------------------------------------------------------------------- // Packet "C8" void File_Dirac::Intra_Non_Reference_Picture_Low() { Element_Name("Intra Non Reference Picture (low-delay)"); //Parsing picture(); }
//--------------------------------------------------------------------------- void File_Nut::syncpoint() { Element_Name("syncpoint"); //Parsing Skip_XX(Element_Size, "Data"); }
//--------------------------------------------------------------------------- void File_Ibi::CRC32() { Element_Name("CRC32"); //Parsing UInteger_Info(); }
//--------------------------------------------------------------------------- // Packet "30" void File_Dirac::Padding_data() { Element_Name("Padding data"); //Parsing Skip_XX(Element_Size, "Padding data"); }
//--------------------------------------------------------------------------- void File_Ibi::Ebml_Version() { Element_Name("Version"); //Parsing UInteger_Info(); }
//--------------------------------------------------------------------------- // Packet "0C" void File_Dirac::Intra_Reference_Picture() { Element_Name("Intra Reference Picture"); //Parsing picture(); }
//--------------------------------------------------------------------------- void File_Ibi::Ebml_DocTypeReadVersion() { Element_Name("DocTypeReadVersion"); //Parsing UInteger_Info(); }
//--------------------------------------------------------------------------- // Packet "48" void File_Dirac::Intra_Non_Reference_Picture_No() { Element_Name("Intra Non Reference Picture (no arithmetic coding)"); //Parsing picture(); }
//--------------------------------------------------------------------------- void File_DvbSubtitle::region_composition_segment() { Element_Name("region composition segment"); //Parsing int16u region_width, region_height; int8u region_id, region_depth; Get_B1 ( region_id, "region_id"); BS_Begin(); Skip_S1(4, "region_version_number"); Skip_S1(1, "region_fill_flag"); Skip_S1(3, "reserved"); BS_End(); Get_B2 ( region_width, "region_width"); Get_B2 ( region_height, "region_height"); BS_Begin(); Skip_S1(3, "region_level_of_compatibility"); Get_S1 (3, region_depth, "region_depth"); Param_Info2(DvbSubtitle_region_depth[region_depth], " bits"); Skip_S1(2, "reserved"); BS_End(); Skip_B1( "CLUT_id"); Skip_B1( "region_8-bit_pixel_code"); BS_Begin(); Skip_S1(4, "region_4-bit_pixel-code"); Skip_S1(2, "region_2-bit_pixel-code"); Skip_S1(2, "reserved"); BS_End(); while(Element_Offset<Element_Size) { Element_Begin1("Object"); int8u object_type; Skip_B2( "object_id"); BS_Begin(); Get_S1 ( 2, object_type, "object_type"); Skip_S1( 2, "object_provider_flag"); Skip_S1(12, "object_horizontal_position"); Skip_S1( 4, "reserved"); Skip_S1(12, "object_vertical_position"); BS_End(); switch (object_type) { case 0x01 : case 0x02 : Skip_B2( "foreground_pixel_code"); Skip_B2( "background_pixel_code"); break; default : ; } Element_End0(); } FILLING_BEGIN(); region_data& region = subtitle_streams[subtitle_stream_id].pages[page_id].regions[region_id]; region.region_composition_segment=true; region.region_width=region_width; region.region_height=region_height; region.region_depth=region_depth; FILLING_END(); }
//--------------------------------------------------------------------------- // Packet "B4" and "B8" void File_AvsV::reserved() { Element_Name("reserved"); //Parsing if (Element_Size) Skip_XX(Element_Size, "reserved"); }