⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mpeg_descriptor.c

📁 DVB MPEG2 system stream 分析, 包含 各個talbe(EIT,PMT,PAT,SDT),以及video,audio. 對於學習數字電視有很大幫助.
💻 C
📖 第 1 页 / 共 3 页
字号:
		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 + -