//--------------------------------------------------------------------------- void File_Dts::Data_Parse() { //Counting if (File_Offset+Buffer_Offset+Element_Size==File_Size) Frame_Count_Valid=Frame_Count; //Finalize frames in case of there are less than Frame_Count_Valid frames Frame_Count++; //Name Element_Info(Ztring::ToZtring(Frame_Count)); //Parsing Skip_XX(Element_Size, "Data"); //Filling if (Count_Get(Stream_Audio)==0 && Frame_Count>=Frame_Count_Valid) Data_Parse_Fill(); }
//--------------------------------------------------------------------------- void File_Tiff::Data_Parse() { int32u IFDOffset=0; if (IfdItems.empty()) { //Default values Infos.clear(); Infos[Tiff_Tag::BitsPerSample]=__T("1"); //Parsing new IFD while (Element_Offset+8+4<Element_Size) Read_Directory(); Get_X4 (IFDOffset, "IFDOffset"); } else { //Handling remaining IFD data from a previous IFD GetValueOffsetu(IfdItems.begin()->second); //Parsing the IFD item IfdItems.erase(IfdItems.begin()->first); //Removing IFD item from the list of IFD items to parse } //Some items are not inside the directory, jumping to the offset if (!IfdItems.empty()) GoTo(IfdItems.begin()->first, "TIFF"); else { //This IFD is finished, filling data then going to next IFD Data_Parse_Fill(); if (IFDOffset) GoTo(IFDOffset, "TIFF"); else { Finish(); //No more IFDs GoToFromEnd(0); } } }