本文整理汇总了C++中BS_Begin函数的典型用法代码示例。如果您正苦于以下问题:C++ BS_Begin函数的具体用法?C++ BS_Begin怎么用?C++ BS_Begin使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了BS_Begin函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: Element_Name
//---------------------------------------------------------------------------
// Packet "B0"
void File_AvsV::video_sequence_start()
{
Element_Name("video_sequence_start");
//Parsing
int32u bit_rate_upper, bit_rate_lower;
Get_B1 ( profile_id, "profile_id");
Get_B1 ( level_id, "level_id");
BS_Begin();
Get_SB ( progressive_sequence, "progressive_sequence");
Get_S2 (14, horizontal_size, "horizontal_size");
Get_S2 (14, vertical_size, "vertical_size");
Get_S1 ( 2, chroma_format, "chroma_format");
Skip_S1( 3, "sample_precision");
Get_S1 ( 4, aspect_ratio, "aspect_ratio"); Param_Info(AvsV_aspect_ratio[aspect_ratio]);
Get_S1 ( 4, frame_rate_code, "frame_rate_code"); Param_Info(AvsV_frame_rate[frame_rate_code]);
Get_S3 (18, bit_rate_lower, "bit_rate_lower");
Mark_1 ();
Get_S3 (12, bit_rate_upper, "bit_rate_upper");
bit_rate=(bit_rate_upper<<18)+bit_rate_lower; Param_Info(bit_rate*8, " bps");
Get_SB ( low_delay, "low_delay");
Mark_1 ();
Skip_S3(18, "bbv_buffer_size");
Skip_SB( "reserved");
Skip_SB( "reserved");
Skip_SB( "reserved");
BS_End();
//Not sure, but the 3 first official files have this
if (Element_Size-Element_Offset)
{
BS_Begin();
Mark_1();
BS_End();
}
FILLING_BEGIN();
//NextCode
NextCode_Clear();
NextCode_Add(0xB2); //user_data_start
NextCode_Add(0xB3); //picture_start (I)
NextCode_Add(0xB5); //extension_start
//Autorisation of other streams
Streams[0xB1].Searching_Payload=true, //video_sequence_end
Streams[0xB2].Searching_Payload=true; //user_data_start
Streams[0xB3].Searching_Payload=true, //picture_start (I)
Streams[0xB4].Searching_Payload=true, //reserved
Streams[0xB5].Searching_Payload=true; //extension_start
Streams[0xB6].Searching_Payload=true, //picture_start (P or B)
Streams[0xB7].Searching_Payload=true; //video_edit
Streams[0xB8].Searching_Payload=true, //reserved
video_sequence_start_IsParsed=true;
FILLING_END();
}
示例2: Element_Begin1
//---------------------------------------------------------------------------
void File_Cdp::ccsvcinfo_section()
{
//Parsing
int8u svc_count;
Element_Begin1("ccsvcinfo_section");
Skip_B1( "ccsvcinfo_id");
BS_Begin();
Skip_SB( "reserved");
Skip_SB( "svc_info_start");
Skip_SB( "svc_info_change");
Skip_SB( "svc_info_complete");
Get_S1 (4, svc_count, "svc_count");
BS_End();
for (int8u Pos=0; Pos<svc_count; Pos++)
{
Element_Begin1("svc");
bool csn_size;
BS_Begin();
Skip_SB( "reserved");
Get_SB ( csn_size, "csn_size");
if (csn_size)
{
Skip_SB( "reserved");
Skip_S1(5, "caption_service_number");
}
else
Skip_S1(6, "caption_service_number");
BS_End();
//svc_data_byte - caption_service_descriptor
Element_Begin1("service");
Ztring language;
bool digital_cc;
Get_Local(3, language, "language");
BS_Begin();
Get_SB (digital_cc, "digital_cc");
Skip_SB( "reserved");
if (digital_cc) //line21
{
Skip_S1(5, "reserved");
Skip_SB( "line21_field");
}
else
Skip_S1(6, "caption_service_number");
Skip_SB( "easy_reader");
Skip_SB( "wide_aspect_ratio");
Skip_S2(14, "reserved");
BS_End();
Element_End0();
Element_End0();
}
Element_End0();
}
示例3: Get_B1
//---------------------------------------------------------------------------
void File_Jpeg::COD()
{
//Parsing
int16u Levels;
int8u Style, Style2, MultipleComponentTransform;
bool PrecinctUsed;
Get_B1 (Style, "Scod - Style");
Get_Flags (Style, 0, PrecinctUsed, "Precinct used");
Skip_Flags(Style, 1, "Use SOP (start of packet)");
Skip_Flags(Style, 2, "Use EPH (end of packet header)");
Skip_B1( "Number of decomposition levels");
Skip_B1( "Progression order");
Get_B2 (Levels, "Number of layers");
Info_B1(DimX, "Code-blocks dimensions X (2^(n+2))"); Param_Info2(1<<(DimX+2), " pixels");
Info_B1(DimY, "Code-blocks dimensions Y (2^(n+2))"); Param_Info2(1<<(DimY+2), " pixels");
Get_B1 (Style2, "Style of the code-block coding passes");
Skip_Flags(Style, 0, "Selective arithmetic coding bypass");
Skip_Flags(Style, 1, "MQ states for all contexts");
Skip_Flags(Style, 2, "Regular termination");
Skip_Flags(Style, 3, "Vertically stripe-causal context formation");
Skip_Flags(Style, 4, "Error resilience info is embedded on MQ termination");
Skip_Flags(Style, 5, "Segmentation marker is to be inserted at the end of each normalization coding pass");
Skip_B1( "Transform");
Get_B1(MultipleComponentTransform, "Multiple component transform");
if (PrecinctUsed)
{
BS_Begin();
Skip_S1(4, "LL sub-band width");
Skip_S1(4, "LL sub-band height");
BS_End();
for (int16u Pos=0; Pos<Levels; Pos++)
{
Element_Begin1("Decomposition level");
BS_Begin();
Skip_S1(4, "decomposition level width");
Skip_S1(4, "decomposition level height");
BS_End();
Element_End0();
}
}
FILLING_BEGIN();
if (Frame_Count==0 && Field_Count==0)
{
switch (MultipleComponentTransform)
{
case 0x01 : Fill(StreamKind_Last, 0, "Compression_Mode", "Lossless"); break;
case 0x02 : Fill(StreamKind_Last, 0, "Compression_Mode", "Lossy"); break;
default : ;
}
}
FILLING_END();
}
示例4: Skip_B2
//---------------------------------------------------------------------------
void File_Sdp::Header_Parse()
{
//Parsing
int8u Length, FormatCode;
Skip_B2( "Identifier");
Get_B1 (Length, "Length");
Get_B1 (FormatCode, "Format Code");
for (int8u Pos=0; Pos<5; Pos++)
{
FieldLines[Pos]=0;
#if MEDIAINFO_TRACE
Element_Begin1("Field/Line");
BS_Begin();
Info_SB( Field, "Field Number");
Info_S1(2, Reserved, "Reserved");
Info_S1(5, Line, "Line Number");
BS_End();
FieldLines[Pos]=((Field?1:0)<<7) |(Reserved<<5) | Line; //Removing field information ((Field?1:0)<<7) |
if (FieldLines[Pos])
{
Element_Info1(Field?2:1);
Element_Info1(Line);
}
else
Element_Info1("None");
Element_End0();
#else //MEDIAINFO_TRACE
Get_B1(FieldLines[Pos], "Field/Line");
FieldLines[Pos]&=0x7F; //Removing field information
#endif //MEDIAINFO_TRACE
}
Header_Fill_Size(3+Length);
}
示例5: Element_Info
//---------------------------------------------------------------------------
void File_Flac::STREAMINFO()
{
Element_Info("STREAMINFO");
//Parsing
int64u Samples;
int32u FrameSize_Min, FrameSize_Max, SampleRate;
int8u Channels, BitPerSample;
Skip_B2( "BlockSize_Min"); //The minimum block size (in samples) used in the stream.
Skip_B2( "BlockSize_Max"); //The maximum block size (in samples) used in the stream. (Minimum blocksize == maximum blocksize) implies a fixed-blocksize stream.
Get_B3 ( FrameSize_Min, "FrameSize_Min"); //The minimum frame size (in bytes) used in the stream. May be 0 to imply the value is not known.
Get_B3 ( FrameSize_Max, "FrameSize_Max"); //The maximum frame size (in bytes) used in the stream. May be 0 to imply the value is not known.
BS_Begin();
Get_S3 (20, SampleRate, "SampleRate"); //Sample rate in Hz. Though 20 bits are available, the maximum sample rate is limited by the structure of frame headers to 1048570Hz. Also, a value of 0 is invalid.
Get_S1 ( 3, Channels, "Channels"); Param_Info(Channels+1, " channels"); //(number of channels)-1. FLAC supports from 1 to 8 channels
Get_S1 ( 5, BitPerSample, "BitPerSample"); Param_Info(BitPerSample+1, " bits"); //(bits per sample)-1. FLAC supports from 4 to 32 bits per sample. Currently the reference encoder and decoders only support up to 24 bits per sample.
Get_S5 (36, Samples, "Samples");
BS_End();
Skip_B16( "MD5 signature of the unencoded audio data");
//Filling
if (SampleRate==0)
return;
Stream_Prepare(Stream_Audio);
Fill(Stream_Audio, 0, Audio_Format, "FLAC");
Fill(Stream_Audio, 0, Audio_Codec, "FLAC");
if (FrameSize_Min==FrameSize_Max && FrameSize_Min!=0 ) // 0 means it is unknown
Fill(Stream_Audio, 0, Audio_BitRate_Mode, "CBR");
else
Fill(Stream_Audio, 0, Audio_BitRate_Mode, "VBR");
Fill(Stream_Audio, 0, Audio_SamplingRate, SampleRate);
Fill(Stream_Audio, 0, Audio_Channel_s_, Channels+1);
Fill(Stream_Audio, 0, Audio_Resolution, BitPerSample+1);
Fill(Stream_Audio, 0, Audio_Duration, Samples*1000/SampleRate);
}
示例6: Get_B2
//---------------------------------------------------------------------------
void File_Mpeg4_Descriptors::Descriptor_03()
{
//Parsing
bool streamDependenceFlag, URL_Flag, OCRstreamFlag;
Get_B2 (ES_ID, "ES_ID");
BS_Begin();
Get_SB ( streamDependenceFlag, "streamDependenceFlag");
Get_SB ( URL_Flag, "URL_Flag");
Get_SB ( OCRstreamFlag, "OCRstreamFlag");
Skip_S1(5, "streamPriority");
BS_End();
if (streamDependenceFlag)
Skip_B2( "dependsOn_ES_ID");
if (URL_Flag)
{
int8u URLlength;
Get_B1 (URLlength, "URLlength");
Skip_UTF8(URLlength, "URLstring");
}
if (OCRstreamFlag)
Skip_B2( "OCR_ES_Id");
FILLING_BEGIN();
Element_ThisIsAList();
FILLING_END();
}
示例7: Element_Begin
//---------------------------------------------------------------------------
void File_Vc3::CodingControlA()
{
//Parsing
Element_Begin("Coding Control A", 3);
BS_Begin();
Mark_0();
Mark_0();
Mark_0();
Mark_0();
Mark_0();
Mark_0();
Info_S1(2, FFC, "Field/Frame Count"); Param_Info(Vc3_FFC[FFC]);
Mark_1();
Mark_0();
Mark_0();
Get_SB ( CRCF, "CRC flag");
Mark_0();
Mark_0();
Mark_0();
Mark_0();
Mark_1();
Mark_0();
Mark_1();
Mark_0();
Mark_0();
Mark_0();
Mark_0();
Mark_0();
BS_End();
Element_End();
}
示例8: Skip_B4
//---------------------------------------------------------------------------
void File_MpcSv8::SH()
{
//Parsing
int64u SampleCount;
int8u Version, SampleFrequency, ChannelCount;
bool MidSideStereo;
Skip_B4( "CRC32");
Get_B1 (Version, "Version");
Get_VS (SampleCount, "Sample count");
Skip_VS( "Beginning silence");
BS_Begin();
Get_S1 (3, SampleFrequency, "Sample frequency"); Param_Info(Mpc_SampleFreq[SampleFrequency]);
Skip_S1(5, "Max used bands");
Get_S1 (4, ChannelCount, "Channel count");
Get_SB ( MidSideStereo, "Mid side stereo used");
Skip_S1(3, "Audio block frames");
BS_End();
//Filling
FILLING_BEGIN();
Fill(Stream_Audio, 0, Audio_SamplingRate, Mpc_SampleFreq[SampleFrequency]);
if (SampleCount)
{
Fill(Stream_Audio, 0, Audio_SamplingCount, SampleCount);
Fill(Stream_Audio, 0, Audio_Duration, SampleCount*1000/Mpc_SampleFreq[SampleFrequency]);
Fill(Stream_Audio, 0, Audio_BitRate, File_Size*8*Mpc_SampleFreq[SampleFrequency]/SampleCount); //Should be more precise...
}
Fill(Stream_Audio, 0, Audio_Resolution, 16); //MPC support only 16 bits
FILLING_END();
}
示例9: Get_B2
//---------------------------------------------------------------------------
void File_Pcm_M2ts::Read_Buffer_Continue()
{
if (Buffer_Size==0)
return;
//Parsing
int16u audio_data_payload_size;
Get_B2 ( audio_data_payload_size, "audio_data_payload_size");
BS_Begin();
Get_S1 (4, channel_assignment, "channel_assignment"); Param_Info2(Pcm_M2TS_channel_assignment[channel_assignment], " channel(s)");
Get_S1 (4, sampling_frequency, "sampling_frequency"); Param_Info2(Pcm_M2TS_sampling_frequency[sampling_frequency], " Hz");
Get_S1 (2, bits_per_sample, "bits_per_sample"); Param_Info2(Pcm_M2TS_bits_per_sample[bits_per_sample], " bits");
Skip_SB( "start_flag");
Skip_S1(5, "reserved");
BS_End();
Skip_XX(audio_data_payload_size, "audio_data_payload");
FILLING_BEGIN_PRECISE();
if (!Status[IsAccepted])
{
Accept();
Finish();
}
FILLING_END();
}
示例10: BS_Begin
//---------------------------------------------------------------------------
void File_Mpeg4_Descriptors::Descriptor_02()
{
//Parsing
bool URL_Flag;
BS_Begin();
Skip_S2(10, "ObjectDescriptorID");
Get_SB ( URL_Flag, "URL_Flag");
Skip_SB( "includeInlineProfileLevelFlag");
Skip_S1( 4, "reserved");
BS_End();
if (URL_Flag)
{
int8u URLlength;
Get_B1 (URLlength, "URLlength");
Skip_UTF8(URLlength, "URLstring");
}
Info_B1(ODProfileLevel, "ODProfileLevelIndication"); Param_Info(Mpeg4_Descriptors_ODProfileLevelIndication(ODProfileLevel));
Info_B1(SceneProfileLevel, "sceneProfileLevelIndication"); Param_Info(Mpeg4_Descriptors_SceneProfileLevelIndication(SceneProfileLevel));
Info_B1(AudioProfileLevel, "audioProfileLevelIndication"); Param_Info(Mpeg4_Descriptors_AudioProfileLevelIndication(AudioProfileLevel));
Info_B1(VisualProfileLevel, "visualProfileLevelIndication"); Param_Info(Mpeg4_Descriptors_VisualProfileLevelIndication(VisualProfileLevel));
Info_B1(GraphicsProfileLevel, "graphicsProfileLevelIndication"); Param_Info(Mpeg4_Descriptors_GraphicsProfileLevelIndication(GraphicsProfileLevel));
FILLING_BEGIN();
Element_ThisIsAList();
FILLING_END();
}
示例11: Element_Begin1
//---------------------------------------------------------------------------
void File_Vc3::TimeCode()
{
//Parsing
Element_Begin1("Time Code");
bool TCP;
BS_Begin();
Get_SB ( TCP, "TCP: Time Code Present");
Mark_0();
Mark_0();
Mark_0();
Mark_0();
Mark_0();
Mark_0();
Mark_0();
BS_End();
if (TCP)
{
Skip_B8( "Time Code");
}
else
Skip_B8( "Junk");
Element_End0();
}
示例12: Skip_XX
//---------------------------------------------------------------------------
void File_Aac::Read_Buffer_Continue_raw_data_block()
{
if (Frame_Count>Frame_Count_Valid)
{
Skip_XX(Element_Size, "Data");
return; //Parsing completely only the 1st frame
}
BS_Begin();
raw_data_block();
BS_End();
if (FrameIsAlwaysComplete && Element_Offset<Element_Size)
Skip_XX(Element_Size-Element_Offset, "Unknown");
FILLING_BEGIN();
//Counting
Frame_Count++;
if (Frame_Count_NotParsedIncluded!=(int64u)-1)
Frame_Count_NotParsedIncluded++;
Element_Info1(Ztring::ToZtring(Frame_Count));
//Filling
if (!Status[IsAccepted])
File__Analyze::Accept();
if (Frame_Count>=Frame_Count_Valid)
{
//No more need data
if (Mode==Mode_LATM)
File__Analyze::Accept();
File__Analyze::Finish();
}
FILLING_END();
}
示例13: Element_Name
//---------------------------------------------------------------------------
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();
}
}
示例14: Get_L1
//---------------------------------------------------------------------------
void File_Tak::ENCODERINFO()
{
//Parsing
int8u Revision, Minor, Major, Preset_hi, Preset_lo;
Get_L1 (Revision, "Revision");
Get_L1 (Minor, "Minor");
Get_L1 (Major, "Major");
BS_Begin();
Get_S1 (4, Preset_hi, "Preset (hi)");
Get_S1 (4, Preset_lo, "Preset (lo)");
BS_End();
FILLING_BEGIN();
Ztring Version=Ztring::ToZtring(Major)+__T('.')+Ztring::ToZtring(Minor)+__T('.')+Ztring::ToZtring(Revision);
Ztring Preset=__T("-p")+Ztring::ToZtring(Preset_lo);
switch (Preset_hi)
{
case 0x00 : break;
case 0x01 : Preset+=__T('e'); break;
case 0x02 : Preset+=__T('m'); break;
default : Preset+=__T('-')+Ztring::ToZtring(Preset_hi, 16); //Unknown
}
Fill(Stream_Audio, 0, Audio_Encoded_Library, "TAK");
Fill(Stream_Audio, 0, Audio_Encoded_Library_String, __T("TAK ")+Version);
Fill(Stream_Audio, 0, Audio_Encoded_Library_Name, "TAK");
Fill(Stream_Audio, 0, Audio_Encoded_Library_Version, Version);
Fill(Stream_Audio, 0, Audio_Encoded_Library_Settings, Preset);
FILLING_END();
}
示例15: Skip_C4
//---------------------------------------------------------------------------
void File_Als::FileHeader_Parse()
{
//Parsing
int32u SampleRate, Samples;
int16u Channels;
int8u BitsPerSample, FileType;
Skip_C4( "signature");
Get_B4 (SampleRate, "sample rate");
Get_B4 (Samples, "samples");
Get_B2 (Channels, "channels-1"); Param_Info2(Channels+1, " channel(s)");
BS_Begin();
Get_S1 (3, FileType, "file type"); // WAV, RIFF, AIFF
Get_S1 (3, BitsPerSample, "bits per sample"); Param_Info2((BitsPerSample+1)*8, " bits");
Skip_SB( "floating point");
Skip_SB( "samples are big-endian");
BS_End();
FILLING_BEGIN();
if (!CalcDurationUncompressedSize(Samples, SampleRate, (BitsPerSample+1)*8, Channels))
return;
File__Tags_Helper::Accept("ALS");
File__Tags_Helper::Stream_Prepare(Stream_Audio);
Fill(Stream_Audio, 0, Audio_Format, "ALS");
Fill(Stream_Audio, 0, Audio_Codec, "ALS");
Fill(Stream_Audio, 0, Audio_BitDepth, (BitsPerSample+1)*8);
Fill(Stream_Audio, StreamPos_Last, Audio_Channel_s_, Channels+1);
Fill(Stream_Audio, StreamPos_Last, Audio_SamplingRate, SampleRate);
Fill(Stream_Audio, 0, Audio_Duration, Duration);
//No more need data
File__Tags_Helper::Finish("ALS");
FILLING_END();
}