📄 mpeg_descriptor.c
字号:
d.module_version = getBits (b, 0, 0, 8); d.module_id = getBits (b, 0, 8, 16); d.block_size = getBits (b, 0, 24, 16); d.module_size = getBits (b, 0, 40, 32); d.CompressionMethod = getBits (b, 0, 72, 8); d.original_size = getBits (b, 0, 80, 32); d.timeout = getBits (b, 0,112, 8); d.object_key_length = getBits (b, 0,120, 8); b += 16; len -= 16; out_SB_NL (4,"Module_version: ",d.module_version); /* $$$$ Tables? */ out_SW_NL (4,"Module_id: ",d.module_version); out_SW_NL (4,"Block_size: ",d.block_size); out_SL_NL (4,"Module_size: ",d.module_size); out_SB_NL (4,"Compression_method: ",d.CompressionMethod); out_SL_NL (4,"Original_size: ",d.original_size); out_SB_NL (4,"Timeout: ",d.timeout); out_SB_NL (4,"Object_key_length: ",d.object_key_length); print_databytes (4,"Object_key_data:", b, d.object_key_length); b += d.object_key_length; len -= d.object_key_length; } indent (-1); print_private_data (4, b, len);}/* 0x14 association tag descriptor ISO 13818-6 / TR 102 006*/void descriptorMPEG_Association_tag (u_char *b){ typedef struct _descAssociationTag { u_int descriptor_tag; u_int descriptor_length; u_int association_tag; u_int use; u_int selector_length; // -- optional // selector_length; u_long transaction_id; u_long timeout; // -- optional // selector_length; // -- optional // selector_length; // selector_bytes; } descAssociationTag; descAssociationTag d; int len; d.descriptor_tag = b[0]; d.descriptor_length = b[1]; d.association_tag = getBits (b, 0, 16, 16); d.use = getBits (b, 0, 32, 16); d.selector_length = getBits (b, 0, 40, 8); /* normally in the opt branches... */ b += 7; len = d.descriptor_length - 5; out_SW_NL (4,"Association_tag: ",d.association_tag); /* $$$$ Tables? */ out_SW_NL (4,"Use: ",d.use); out_SB_NL (4,"Selector_length: ",d.selector_length); if (d.use == 0x0000) { d.transaction_id = getBits (b, 0, 0, 32); d.timeout = getBits (b, 0, 32, 32); b += 8; len -= 8; out_SL_NL (4,"Transaction_ID: ",d.transaction_id); out_SL_NL (4,"Timeout: ",d.timeout); } else if (d.use == 0x0001) { /* selector length == 0x00; */ } else { print_databytes (4,"Selector bytes:", b, d.selector_length); } print_private_data (4, b, len);}/* 0x15 deferred association tag descriptor ISO 13818-6 / TR 102 006*/void descriptorMPEG_Deferred_Association_tags (u_char *b){ typedef struct _descDefAssocTags { u_int descriptor_tag; u_int descriptor_length; u_int association_tags_loop_length; // association tag loop u_int association_tag; u_int transport_stream_id; u_int program_number; u_int org_network_id; // private bytes } descDefAssocTags; descDefAssocTags d; int len,i; d.descriptor_tag = b[0]; d.descriptor_length = b[1]; d.association_tags_loop_length = getBits (b, 0, 16, 8); b += 3; len = d.descriptor_length - 1; out_SW_NL (4,"Association_tags_loop_length: ",d.association_tags_loop_length); /* -- association tags */ out_nl (4,"Association tag loop:"); indent (+1); for (i=0; i < d.association_tags_loop_length; ) { d.association_tag = getBits (b, 0, i, 16); out_SW_NL (4,"Association_tag: ",d.association_tag); i += 2; } indent (-1); b += d.association_tags_loop_length; len -= d.association_tags_loop_length; d.transport_stream_id = getBits (b, 0, 0, 16); d.program_number = getBits (b, 0, 16, 16); d.org_network_id = getBits (b, 0, 32, 16); b += 6; len -= 6; out_SW_NL (4,"Transport_stream_ID: ",d.transport_stream_id); out_SW_NL (4,"Program_number: ",d.program_number); out_S2W_NL (4,"Original_network_ID: ",d.org_network_id, dvbstrOriginalNetwork_ID(d.org_network_id)); print_private_data (4, b, len);}/* * ------------------------------------------------------------ * * -- DSM-CC STREAM Descriptors ISO 13818-6 * *//* 0x17 DSMCC NPT-reference descriptor ISO 13818-6 */void descriptorMPEG_NPT_reference (u_char *b){ // descriptor_tag = b[0]; // descriptor_length = b[1]; outBit_S2x_NL(4,"postDiscontinuityIndicator: ", b,16, 1, (char *(*)(u_long)) dsmccStr_postDiscontinuityIndicator); outBit_Sx_NL (4,"contentId: ", b,17, 7); outBit_Sx_NL (6,"reserved: ", b,24, 7); outBit64_Sx (4,"STC_Reference: ", b,31,33); out_nl (4," [= ref/300 * 90 kHz]"); outBit_Sx_NL (6,"reserved: ", b,64,31); outBit64_Sx_NL (4,"NPT_Reference: ", b,75,33); outBit_Sx_NL (4,"scaleNumerator: ", b,108,16); outBit_Sx_NL (4,"scaleDenominator: ", b,124,16);}/* 0x18 DSMCC NPT-endpoint descriptor ISO 13818-6 */void descriptorMPEG_NPT_endpoint (u_char *b){ unsigned long long t; // descriptor_tag = b[0]; // descriptor_length = b[1]; outBit_Sx_NL (6,"reserved: ", b,16,15); t = outBit64_Sx (4,"startNPT: ", b,31,33); out_nl_calc_NPT (4,t); outBit_Sx_NL (6,"reserved: ", b,64,15); t = outBit64_Sx (4,"stopNPT: ", b,79,33); out_nl_calc_NPT (4,t); }/* 0x19 DSMCC stream_mode descriptor ISO 13818-6 */void descriptorMPEG_stream_mode (u_char *b){ // descriptor_tag = b[0]; // descriptor_length = b[1]; outBit_S2x_NL(4,"streamMode: ", b,16, 8, (char *(*)(u_long)) dsmccStr_streamMode); outBit_Sx_NL (6,"reserved: ", b,24, 8); }/* 0x1A DSMCC stream_event descriptor ISO 13818-6 */void descriptorMPEG_stream_event (u_char *b){ unsigned long long t; int len; // descriptor_tag = b[0]; len = b[1]; outBit_Sx_NL (4,"eventId: ", b,16,16); outBit_Sx_NL (6,"reserved: ", b,32,31); t = outBit64_Sx (4,"eventNPT: ", b,79,33); out_nl_calc_NPT (4,t); b += 10; len -= 8; print_private_data (4, b, len);}/* * ------------------------------------------------------------ * * -- MPEG4 Descriptors ISO 13818-1 * *//* 0x1B MPEG4 video descriptor ISO 13818-1 */void descriptorMPEG_MPEG4_video (u_char *b){ // d.descriptor_tag = b[0]; // d.descriptor_length = b[1]; outBit_Sx_NL (4,"MPEG4 visual profile and level: ", b,16,8); /* $$$ Table */} /* 0x1C MPEG4 audio descriptor ISO 13818-1 */void descriptorMPEG_MPEG4_audio (u_char *b){ // d.descriptor_tag = b[0]; // d.descriptor_length = b[1]; outBit_Sx_NL (4,"MPEG4 audio profile and level: ", b,16,8); /* $$$ Table */}/* 0x1D IOD - InitialObjectDescriptor ISO 13818-1 */void descriptorMPEG_IOD (u_char *b){ // d.descriptor_tag = b[0]; // d.descriptor_length = b[1]; outBit_Sx_NL (4,"Scope_of_IOD: ", b,16,8); outBit_Sx_NL (4,"IOD_label: ", b,24,8); outBit_Sx_NL (4,"InitialObjectDescriptor: ", b,32,8); // $$$ TODO defined in subclause 8.6.3.1 of ISO/IEC 14496-1}/* 0x1E SL descriptor ISO 13818-1 */void descriptorMPEG_SL (u_char *b){ // d.descriptor_tag = b[0]; // d.descriptor_length = b[1]; outBit_Sx_NL (4,"ES_ID: ", b,16,16);}/* 0x1F FMC descriptor ISO 13818-1 */void descriptorMPEG_FMC (u_char *b){ int descriptor_length; // d.descriptor_tag = b[0]; descriptor_length = b[1]; b += 2; while (descriptor_length > 0 ) { outBit_Sx_NL (4,"ES_ID: ", b, 0,16); outBit_Sx_NL (4,"FlexMuxChannel: ", b,16, 8); b += 3; descriptor_length -= 3; }}/* 0x20 External SL descriptor ISO 13818-1 */void descriptorMPEG_External_ES_ID (u_char *b){ // d.descriptor_tag = b[0]; // d.descriptor_length = b[1]; outBit_Sx_NL (4,"ES_ID: ", b,16,16);}/* 0x21 MuxCode descriptor ISO 13818-1 */void descriptorMPEG_MuxCode (u_char *b){ int descriptor_length; // d.descriptor_tag = b[0]; descriptor_length = b[1]; print_databytes (4,"MuxCodeTableEntry", b+2, descriptor_length-2); // $$$ TODO // $$$ TODO defined in subclause 11.2.4.3 of ISO/IEC 14496-1. // Muxcode_descriptor () { // descriptor_tag 8 uimsbf // descriptor_length 8 uimsbf // for (i = 0; i < N; i++) { // MuxCodeTableEntry () // } // }}/* 0x22 FMX Buffer Size descriptor ISO 13818-1 */void descriptorMPEG_FMXBufferSize (u_char *b){ int descriptor_length; // d.descriptor_tag = b[0]; descriptor_length = b[1]; out_nl (4,"($$$TODO):"); indent (+1); printhex_buf (4, b+2, descriptor_length-2); indent (-1); // $$$ TODO defined in subclause 11.2 of ISO/IEC 14496-1. // FmxBufferSize_descriptor () { // descriptor_tag 8 uimsbf // descriptor_length 8 uimsbf // DefaultFlexMuxBufferDescriptor() // for (i=0; i<descriptor_length; i += 4) { // FlexMuxBufferDescriptor() // } // }}/* 0x23 Multiplex Buffer descriptor ISO 13818-1 */void descriptorMPEG_MultiplexBuffer (u_char *b){ // d.descriptor_tag = b[0]; // d.descriptor_length = b[1]; outBit_S2Tx_NL (4,"MB_buffer_size: ", b,16,24,"bytes"); outBit_S2Tx_NL (4,"TB_leak_rate: ", b,40,24,"(x 400 bit/s)");}/* 0x24 Flex-Mux-Timing descriptor ITU-T H.222.0-I-Cor1 */void descriptorMPEG_FlexMuxTiming (u_char *b){ // d.descriptor_tag = b[0]; // d.descriptor_length = b[1]; outBit_Sx_NL (4,"FCR_ES_ID: ", b,16,16); outBit_S2Tx_NL (4,"FCRResolution: ", b,32,32,"(cycles/s)"); outBit_Sx_NL (4,"FCRLength: ", b,64, 8); outBit_Sx_NL (4,"FCRRateLength: ", b,72, 8);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -