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

📄 dvb_descriptor.c

📁 dvbsnoop is a DVB/MPEG stream analyzer program. The program can be used to sniff, monitor, debug, d
💻 C
📖 第 1 页 / 共 5 页
字号:
 d.descriptor_tag		 = b[0]; d.descriptor_length       	 = b[1]; len = d.descriptor_length; b  += 2; indent (+1); while ( len > 0) {    getISO639_3 (d2.ISO_639_language_code, b);	    d2.subtitling_type		= getBits (b,0,24, 8);    d2.composition_page_id	= getBits (b,0,32,16);    d2.ancillary_page_id	= getBits (b,0,48,16);    b   += 8;    len -= 8;    out_nl  (4,"  ISO639_language_code:  %3.3s", d2.ISO_639_language_code);    out_S2B_NL (4,"Subtitling_type: ", d2.subtitling_type,	dvbstrStreamContent_Component_TYPE (	    (0x03 << 8) | d2.subtitling_type));    out_SW_NL (4,"Composition_page_id: ",d2.composition_page_id);    out_SW_NL (4,"Ancillary_page_id: ",d2.ancillary_page_id);    out_NL (4); } indent (-1);}/*  0x5A TerrestDelivSys  descriptor  (Terrestrial delivery system descriptor)  ETSI 300 468    6.2.xx   -- 2004-08-28 update auf EN 300 468 1.6.1 (routine rewritten)*/void descriptorDVB_TerrestDelivSys (u_char *b){  u_long  cfreq;  // tag	 = b[0];  // len       	 = b[1];  cfreq				 = getBits (b, 0, 16, 32);  // frequency is in 10 Hz steps == * 10  out_nl (4,"Center frequency: 0x%08x (= %lu.%03lu kHz)",cfreq,		 cfreq / 100, cfreq % 100 );  outBit_S2x_NL  (4,"Bandwidth: ",  		b, 48,  3,		 	(char *(*)(u_long)) dvbstrTerrBandwidth_SCHEME );  outBit_S2x_NL (4,"priority: ",  		b, 51,  1,		 	(char *(*)(u_long)) dvbstrTerrPriority );  outBit_S2x_NL (4,"Time_Slicing_indicator: ",	b, 52,  1,		 	(char *(*)(u_long)) dvbstrTerrTimeSlicingIndicator );  outBit_S2x_NL (4,"MPE-FEC_indicator: ",	b, 53,  1,		 	(char *(*)(u_long)) dvbstrTerrMPE_FEC_Indicator );  outBit_Sx_NL  (6,"reserved_1: ",  		b, 54,  2);  outBit_S2x_NL (4,"Constellation: ",  		b, 56,  2,		 	(char *(*)(u_long)) dvbstrTerrConstellation_FLAG );  outBit_S2x_NL (4,"Hierarchy information: ", 	b, 58,  3,		 	(char *(*)(u_long)) dvbstrTerrHierarchy_FLAG );  outBit_S2x_NL (4,"Code_rate_HP_stream: ", 	b, 61,  3,		 	(char *(*)(u_long)) dvbstrTerrCodeRate_FLAG );  outBit_S2x_NL (4,"Code_rate_LP_stream: ", 	b, 64,  3,		 	(char *(*)(u_long)) dvbstrTerrCodeRate_FLAG );  outBit_S2x_NL (4,"Guard_interval: ", 		b, 67,  2,		 	(char *(*)(u_long)) dvbstrTerrGuardInterval_FLAG );  outBit_S2x_NL (4,"Transmission_mode: ", 	b, 69,  2,		 	(char *(*)(u_long)) dvbstrTerrTransmissionMode_FLAG );  outBit_Sx_NL  (4,"Other_frequency_flag: ", 	b, 71,  1);  outBit_Sx_NL  (6,"reserved_2: ", 		b, 72, 32);}/*  0x5B  Multilingual Network Name  descriptor   ETSI EN 300 468     6.2.xx*/void descriptorDVB_MultilingNetworkName (u_char *b){ typedef struct  _descMultiNetName {    u_int      descriptor_tag;    u_int      descriptor_length;		    //  N .. List2 } descMultiNetName; typedef struct  _descMultiNetName2 {    u_char     ISO639_2_language_code[4];    u_int      network_name_length;    //  N2 ..  char } descMultiNetName2; descMultiNetName   d; descMultiNetName2  d2; int                len1; d.descriptor_tag		 = b[0]; d.descriptor_length       	 = b[1]; b += 2; len1 = d.descriptor_length; indent (+1); while (len1 > 0 ) {    getISO639_3 (d2.ISO639_2_language_code, b);    d2.network_name_length	 = getBits (b, 0, 24, 8);    out_nl    (4,"ISO639_2_language_code:  %3.3s", d2.ISO639_2_language_code);    out_SB_NL (5,"Network_name_length: ",d2.network_name_length);    print_text_468A (4, "Network_name: ", b+4,d2.network_name_length);    len1 -= (4 + d2.network_name_length);    b    +=  4 + d2.network_name_length;    out_NL (4); } indent (-1);}/*  0x5C  Multilingual Bouquet Name  descriptor   ETSI EN 300 468     6.2.xx*/void descriptorDVB_MultilingBouquetName (u_char *b){ typedef struct  _descMultiBouqName {    u_int      descriptor_tag;    u_int      descriptor_length;		    //  N .. List2 } descMultiBouqName; typedef struct  _descMultiBouqName2 {    u_char     ISO639_2_language_code[4];    u_int      bouquet_name_length;    //  N2 ..  char } descMultiBouqName2; descMultiBouqName   d; descMultiBouqName2  d2; int                 len1; d.descriptor_tag		 = b[0]; d.descriptor_length       	 = b[1]; b += 2; len1 = d.descriptor_length; indent (+1); while (len1 > 0 ) {    getISO639_3 (d2.ISO639_2_language_code, b);    d2.bouquet_name_length	 = getBits (b, 0, 24, 8);    out_nl    (4,"ISO639_2_language_code:  %3.3s", d2.ISO639_2_language_code);    out_SB_NL (5,"Bouquet_name_length: ",d2.bouquet_name_length);    print_text_468A (4, "Bouquet_name: ", b+4,d2.bouquet_name_length);    len1 -= (4 + d2.bouquet_name_length);    b    +=  4 + d2.bouquet_name_length;    out_NL (4); } indent (-1);}/*  0x5D  Multilingual Service Name  descriptor   ETSI EN 300 468     6.2.xx  -- 2004-08-22 Bugfix, rewrite*/void descriptorDVB_MultilingServiceName (u_char *b){ int   len; // tag		= b[0]; len 		= b[1]; b += 2; indent (+1); while (len > 0 ) {    int len2;    char ISO639_2_language_code[4];    getISO639_3 (ISO639_2_language_code, b);    out_nl    (4,"ISO639_2_language_code:  %3.3s", ISO639_2_language_code);    len2 = outBit_Sx_NL  (5,"Service_provider_name_length: ",	b, 24, 8);    print_text_468A (4, "Service_provider_name: ", b+4,len2);    b   += 4 + len2;    len -= 4 + len2;    len2 = outBit_Sx_NL  (5,"Service_name_length: ",	b, 0, 8);    print_text_468A      (4, "Service_name: ", 		b+1,len2);    b   += 1 + len2;    len -= 1 + len2;    out_NL (4); } indent (-1);}/*  0x5E  Multilingual Component  descriptor   ETSI EN 300 468     6.2.xx*/void descriptorDVB_MultilingComponent (u_char *b){ typedef struct  _descMultiComponent {    u_int      descriptor_tag;    u_int      descriptor_length;		    u_int      component_tag;    //  N .. List2 } descMultiComponent; typedef struct  _descMultiComponent2 {    u_char     ISO639_2_language_code[4];    u_int      text_description_length;    //  N2 ..  char } descMultiComponent2; descMultiComponent   d; descMultiComponent2  d2; int                  len1; d.descriptor_tag		 = b[0]; d.descriptor_length       	 = b[1]; d.component_tag 		 = b[2]; out_SB_NL (4,"Component_tag: ",d.component_tag); b += 3; len1 = d.descriptor_length - 1; indent (+1); while (len1 > 0 ) {    getISO639_3 (d2.ISO639_2_language_code, b);    d2.text_description_length	 = getBits (b, 0, 24, 8);    out_nl    (4,"ISO639_2_language_code:  %3.3s", d2.ISO639_2_language_code);    out_SB_NL (5,"Text_description_length: ",d2.text_description_length);    print_text_468A (4, "Text_description: ", b+4,d2.text_description_length);    len1 -= (4 + d2.text_description_length);    b    +=  4 + d2.text_description_length;    out_NL (4); } indent (-1);}/*  0x5F  Private Data Specifier  descriptor   ETSI EN 300 468     6.2.xx*/void descriptorDVB_PrivateDataSpecifier (u_char *b){ typedef struct  _descPrivDataSpec {    u_int      descriptor_tag;    u_int      descriptor_length;		    u_long     private_data_specifier; } descPrivDataSpec; descPrivDataSpec d; d.descriptor_tag		 = b[0]; d.descriptor_length       	 = b[1]; d.private_data_specifier	 = getBits (b, 0, 16, 32); out_S2L_NL (4,"PrivateDataSpecifier: ",d.private_data_specifier,	dvbstrPrivateDataSpecifier_ID( d.private_data_specifier) );}/*  0x60  Service Move  descriptor   ETSI EN 300 468     6.2.xx*/void descriptorDVB_ServiceMove  (u_char *b){ typedef struct  _descServMove {    u_int      descriptor_tag;    u_int      descriptor_length;		    u_int      new_original_network_id;    u_int      new_transport_stream_id;    u_int      new_service_id; } descServMove; descServMove    d; d.descriptor_tag		 = b[0]; d.descriptor_length       	 = b[1]; d.new_original_network_id	 = getBits (b, 0, 16, 16); d.new_transport_stream_id	 = getBits (b, 0, 32, 16); d.new_service_id		 = getBits (b, 0, 48, 16);  out_S2W_NL (4,"New_original_network_ID: ",d.new_original_network_id,	dvbstrOriginalNetwork_ID(d.new_original_network_id));  out_SW_NL  (4,"New_transport_stream_ID: ",d.new_transport_stream_id);  out_SW_NL (4,"Service_ID: ",d.new_service_id);}/*  0x61  Short Smoothing Buffer  descriptor   ETSI EN 300 468     6.2.xx*/void descriptorDVB_ShortSmoothingBuffer  (u_char *b){ typedef struct  _descSSBuf {    u_int      descriptor_tag;    u_int      descriptor_length;		    u_int      sb_size;    u_int      sb_leak_rate; } descSSBuf; descSSBuf  d; d.descriptor_tag		 = b[0]; d.descriptor_length       	 = b[1]; d.sb_size			 = getBits (b, 0, 16, 2); d.sb_leak_rate			 = getBits (b, 0, 16, 6);  out_S2B_NL (4,"sb_size: ", d.sb_size,	dvbstrShortSmoothingBufSize_TYPE (d.sb_size) ); out_S2B_NL (4,"sb_leak_rate: ", d.sb_leak_rate,	dvbstrShortSmoothingBufLeakRate_TYPE (d.sb_leak_rate) ); print_databytes (6,"reserved:", b+3,d.descriptor_length-1);}/*  0x62  Frequency List descriptor   ETSI EN 300 468     6.2.xx*/void descriptorDVB_FrequencyList  (u_char *b){ typedef struct  _descFreqList {    u_int      descriptor_tag;    u_int      descriptor_length;		    u_int      reserved_1;    u_int      coding_type; } descFreqList; typedef struct  _descFreqList2 {    u_long     centre_frequency; } descFreqList2; descFreqList   d; descFreqList2  d2; int            len; d.descriptor_tag		 = b[0]; d.descriptor_length       	 = b[1]; d.reserved_1			 = getBits (b, 0, 16, 6); d.coding_type			 = getBits (b, 0, 22, 2);  out_SB_NL (6,"reserved_1: ",d.reserved_1); out_S2B_NL (4,"coding_type: ",d.coding_type,	dvbstrDelivSysCoding_TYPE(d.coding_type)); b += 3; len = d.descriptor_length - 1; indent (+1); while (len > 0) {    d2.centre_frequency		 = getBits (b, 0, 0, 32);    out (4,"Centre_frequency: %08lx  ",d2.centre_frequency);    switch (d.coding_type) {	case 0x01: 	  out_nl (4,"(= %3lx.%05lx GHz)",	    d2.centre_frequency >> 20, d2.centre_frequency & 0x000FFFFF );	  break;	case 0x02: 	  out_nl (4,"(= %3lx.%04lx MHz)",	    d2.centre_frequency >> 16, d2.centre_frequency & 0x0000FFFF );	  break;	case 0x03: 	  // frequency is in 10 Hz steps == * 10	  out_nl (4,"(= %lu.%03lu kHz)",			  d2.centre_frequency / 100, d2.centre_frequency % 100 );	  break;    }    len -= 4;    b   += 4; } indent (-1);}/*  0x63  Partial Transport Stream Descriptor  ETSI EN 300 468     6.2.xx*/void descriptorDVB_PartialTransportStream  (u_char *b){ typedef struct  _descPartTranspStream {    u_int      descriptor_tag;    u_int      descriptor_length;		    u_int      reserved_1;    u_long     peak_rate;    u_int      reserved_2;    u_long     minimum_overall_smoothing_rate;    u_int      reserved_3;    u_int      maximum_overall_smoothing_buffer; } descPartTranspStream; descPartTranspStream   d; d.descriptor_tag		 = b[0]; d.descriptor_length       	 = b[1]; d.reserved_1			 = getBits (b, 0, 16, 2); d.peak_rate			 = getBits (b, 0, 18, 22); d.reserved_2			 = getBits (b, 0, 40, 2); d.minimum_overall_smoothing_rate= getBits (b, 0, 42, 22); d.reserved_3			 = getBits (b, 0, 64, 2); d.maximum_overall_smoothing_buffer= getBits (b, 0, 66, 14);  out_SB_NL (6,"reserved_1: ",d.reserved_1); out_nl    (4,"peak_rate: 0x%06lx  (= %lu bits/sec)",	d.peak_rate,d.peak_rate/400); out_SB_NL (6,"reserved_2: ",d.reserved_2); out_nl    (4,"minimum_overall_smoothing_rate: 0x%06lx  (= %lu bits/sec)",	d.minimum_overall_smoothing_rate,	d.minimum_overall_smoothing_rate/400); out_SB_NL (6,"reserved_3: ",d.reserved_3); out_nl    (4,"maximum_overall_smoothing_buffer: 0x%04x  (= %lu bits/sec)",	d.maximum_overall_smoothing_buffer,	d.maximum_overall_smoothing_buffer/400);}/*  0x64  DataBroadcast  descriptor   ETSI EN 300 468    6.2.xx*/void descriptorDVB_DataBroadcast (u_char *b)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -