//--------------------------------------------------------------------------- void File_Nut::Header_Parse() { //Parsing int8u N; Peek_B1(N); if (N==0x4E) //'N' { //Header int64u startcode, forward_ptr; Get_B8(startcode, "startcode"); Get_VS(forward_ptr, "forward_ptr"); if (forward_ptr>4096) Skip_B4( "header_checksum"); Header_Fill_Code(startcode, Ztring().From_Number(startcode, 16)); //Quick filling for CC8 with text Header_Fill_Size(Element_Offset+forward_ptr); //4 for cheksum } else { //Frame Header_Fill_Code(0, "Frame"); Header_Fill_Size(0); Finish(); } }
//--------------------------------------------------------------------------- int64u File_Ibi::UInteger_Get() { switch (Element_Size) { case 1 : { int8u Data; Get_B1 (Data, "Data"); Element_Info(Data); return Data; } case 2 : { int16u Data; Get_B2 (Data, "Data"); Element_Info(Data); return Data; } case 3 : { int32u Data; Get_B3 (Data, "Data"); Element_Info(Data); return Data; } case 4 : { int32u Data; Get_B4 (Data, "Data"); Element_Info(Data); return Data; } case 5 : { int64u Data; Get_B5 (Data, "Data"); Element_Info(Data); return Data; } case 6 : { int64u Data; Get_B6 (Data, "Data"); Element_Info(Data); return Data; } case 7 : { int64u Data; Get_B7 (Data, "Data"); Element_Info(Data); return Data; } case 8 : { int64u Data; Get_B8 (Data, "Data"); Element_Info(Data); return Data; } default : Skip_XX(Element_Size, "Data"); return 0; } }
//--------------------------------------------------------------------------- void File_Caf::pakt() { //Parsing int64u NumberPackets, NumberValidFrames; int32u PrimingFrames, RemainderFrames; Get_B8 (NumberPackets, "NumberPackets"); Get_B8 (NumberValidFrames, "NumberValidFrames"); Get_B4 (PrimingFrames, "PrimingFrames"); Get_B4 (RemainderFrames, "RemainderFrames"); Skip_XX(Element_Size-Element_Offset, "Packet sizes"); FILLING_BEGIN(); float64 SampleRate=Retrieve(Stream_Audio, 0, Audio_SamplingRate).To_float64(); Fill(Stream_Audio, 0, Audio_FrameCount, NumberPackets); Fill(Stream_Audio, 0, Audio_Duration, NumberValidFrames/SampleRate*1000, 0); if (PrimingFrames && RemainderFrames) Fill(Stream_Audio, 0, Audio_Source_Duration, (PrimingFrames+NumberValidFrames+RemainderFrames)/SampleRate*1000, 0); Fill(Stream_Audio, 0, Audio_Delay, PrimingFrames/SampleRate*1000, 0); FILLING_END(); }
//--------------------------------------------------------------------------- void File_Caf::Header_Parse() { //Parsing int64u ChunkSize; int32u ChunkType; Get_B4 (ChunkType, "ChunkType"); Get_B8(ChunkSize, "ChunkSize"); //Filling Header_Fill_Code2(ChunkType, Ztring().From_CC4(ChunkType)); Header_Fill_Size(12+ChunkSize); }