//--------------------------------------------------------------------------- void File_Vc3::Header_Parse() { int32u CompressionID=BigEndian2int32u(Buffer+Buffer_Offset+0x28); Header_Fill_Code(0, "Frame"); Header_Fill_Size(Vc3_CompressedFrameSize(CompressionID)); }
//--------------------------------------------------------------------------- void File_Vc3::Streams_Fill() { //Filling Stream_Prepare(Stream_Video); Fill(Stream_Video, 0, Video_Format, "VC-3"); Fill(Stream_Video, 0, Video_BitRate_Mode, "CBR"); if (FrameRate) Fill(Stream_Video, 0, Video_BitRate, Vc3_CompressedFrameSize(CID)*8*FrameRate, 0); if (Vc3_FromCID_IsSupported(CID)) { Fill(Stream_Video, 0, Video_Width, Vc3_SPL_FromCID(CID)); Fill(Stream_Video, 0, Video_Height, Vc3_ALPF_PerFrame_FromCID(CID)); Fill(Stream_Video, 0, Video_BitDepth, Vc3_SBD_FromCID(CID)); Fill(Stream_Video, 0, Video_ScanType, Vc3_SST_FromCID(CID)); Fill(Stream_Video, 0, Video_ColorSpace, "YUV"); Fill(Stream_Video, 0, Video_ChromaSubsampling, "4:2:2"); } else { Fill(Stream_Video, 0, Video_Width, SPL); Fill(Stream_Video, 0, Video_Height, ALPF*(SST?2:1)); Fill(Stream_Video, 0, Video_BitDepth, Vc3_SBD(SBD)); Fill(Stream_Video, 0, Video_ScanType, Vc3_SST[SST]); } if (FFC_FirstFrame!=(int8u)-1) Fill(Stream_Video, 0, Video_ScanOrder, Vc3_FFC_ScanOrder[FFC_FirstFrame]); }
//--------------------------------------------------------------------------- void File_Vc3::CompressionID() { //Parsing Element_Begin("Compression ID", 4); int32u Data; Get_B4 (Data, "Compression ID"); Element_End(); FILLING_BEGIN(); CID=Data; Data_ToParse=Vc3_CompressedFrameSize(Data); if (Data_ToParse==0) Reject("VC-3"); FILLING_END(); }
//--------------------------------------------------------------------------- void File_Vc3::Streams_Fill() { //Filling Stream_Prepare(Stream_Video); Fill(Stream_Video, 0, Video_Format, "VC-3"); Fill(Stream_Video, 0, Video_BitRate_Mode, "CBR"); if (FrameRate) Fill(Stream_Video, 0, Video_BitRate, Vc3_CompressedFrameSize(CID)*8*FrameRate, 0); Fill(Stream_Video, 0, Video_Width, SPL); Fill(Stream_Video, 0, Video_Height, ALPF); Fill(Stream_Video, 0, Video_BitDepth, Vc3_SBD(SBD)); Fill(Stream_Video, 0, Video_ColorSpace, "YUV"); Fill(Stream_Video, 0, Video_ChromaSubsampling, "4:2:2"); Fill(Stream_Video, 0, Video_ScanType, Vc3_SST[SST]); }
bool File_Vc3::Demux_UnpacketizeContainer_Test() { if (Buffer_Offset+0x2C>Buffer_Size) return false; int32u CompressionID=BigEndian2int32u(Buffer+Buffer_Offset+0x28); int32u Size=Vc3_CompressedFrameSize(CompressionID); Demux_Offset=Buffer_Offset+Size; if (Demux_Offset>Buffer_Size && File_Offset+Buffer_Size!=File_Size) return false; //No complete frame Demux_UnpacketizeContainer_Demux(); return true; }