//--------------------------------------------------------------------------- void File_Vc3::Read_Buffer_Continue() { if (Data_ToParse) { if (Data_ToParse<=Element_Size) { Element_Begin("Frame - Continuing"); Skip_XX(Data_ToParse, "Data (Continuing)"); Data_ToParse=0; Element_End(); } else { Element_Begin("Frame - Continuing"); Skip_XX(Element_Size, "Data (Continuing)"); Element_End(); Data_ToParse-=Element_Size; return; } } if (Buffer_Offset+(size_t)Element_Offset+640>Buffer_Size) return; //Parsing int64u Pos=Element_Offset; Element_Begin("Frame"); Element_Info(Frame_Count+1); HeaderPrefix(); CodingControlA(); Skip_XX(16, "Reserved"); ImageGeometry(); Skip_XX( 5, "Reserved"); CompressionID(); Skip_XX(640-Element_Offset, "ToDo"); Skip_XX(Element_Size-Element_Offset, "Data"); Element_End(); FILLING_BEGIN(); Data_ToParse-=Buffer_Size-(size_t)Buffer_Offset; Frame_Count++; if (!Status[IsFinished] && Frame_Count>=Frame_Count_Valid) Finish("VC-3"); FILLING_END(); }
//--------------------------------------------------------------------------- void File_Vc3::Data_Parse() { //Parsing if (Status[IsFilled]) { Skip_XX(Element_Size, "Data"); } else { Element_Info1(Frame_Count+1); HeaderPrefix(); CodingControlA(); Skip_XX(16, "Reserved"); ImageGeometry(); Skip_XX( 5, "Reserved"); CompressionID(); CodingControlB(); Skip_XX( 3, "Reserved"); TimeCode(); Skip_XX(640-Element_Offset, "ToDo"); Skip_XX(Element_Size-Element_Offset, "Data"); } FILLING_BEGIN(); Data_ToParse-=Buffer_Size-(size_t)Buffer_Offset; Frame_Count++; if (Frame_Count_NotParsedIncluded!=(int64u)-1) Frame_Count_NotParsedIncluded++; if (FrameRate) { FrameInfo.PTS=FrameInfo.DTS+=float64_int64s(1000000000/FrameRate); FrameInfo.DUR=float64_int64s(1000000000/FrameRate); } else { FrameInfo.PTS=FrameInfo.DTS=FrameInfo.DUR=(int64u)-1; } if (!Status[IsFilled] && Frame_Count>=Frame_Count_Valid) { Fill("VC-3"); if (!IsSub && Config->ParseSpeed<1) Finish("VC-1"); } FILLING_END(); }
//--------------------------------------------------------------------------- void File_Vc3::Data_Parse() { //Parsing Element_Info(Frame_Count+1); HeaderPrefix(); CodingControlA(); Skip_XX(16, "Reserved"); ImageGeometry(); Skip_XX( 5, "Reserved"); CompressionID(); Skip_XX(640-Element_Offset, "ToDo"); Skip_XX(Element_Size-Element_Offset, "Data"); FILLING_BEGIN(); Data_ToParse-=Buffer_Size-(size_t)Buffer_Offset; Frame_Count++; if (!Status[IsFinished] && Frame_Count>=Frame_Count_Valid) Finish("VC-3"); FILLING_END(); }