📄 dvb_descriptor.c
字号:
d.descriptor_tag = b[0]; d.descriptor_length = b[1]; len = d.descriptor_length; b += 2; indent (+1); while (len > 0) { strncpy (d2.country_code, b, 3); d2.country_region_id = getBits (b, 0, 24, 6); d2.reserved_1 = getBits (b, 0, 30, 1); d2.local_time_offset_polarity = getBits (b, 0, 31, 1); d2.local_time_offset = getBits (b, 0, 32, 16); d2.time_of_change_MJD = getBits (b, 0, 48, 16); d2.time_of_change_UTC = getBits (b, 0, 64, 24); d2.next_time_offset = getBits (b, 0, 88, 16); len -= 13; b += 13; out_nl (4,"Country_code: %3.3s", d2.country_code); out_SB_NL (4,"Country_region_ID: ",d2.country_region_id); out_SB_NL (6,"reserved_1: ",d2.reserved_1); out_nl (4,"local_time_offset_polarity: %u (= %s to UTC)", d2.local_time_offset_polarity, (d2.local_time_offset_polarity) ? "minus" : "plus"); out_nl (4,"Local_time_offset: %02x:%02x", d2.local_time_offset >> 8, d2.local_time_offset & 0xFF); out (4,"Time_of_change: "); print_time40 (4, d2.time_of_change_MJD,d2.time_of_change_UTC); out_NL (4); out_nl (4,"Next_time_offset: %02x:%02x ", d2.next_time_offset >> 8, d2.next_time_offset & 0xFF); out_NL(4); } indent (-1);}/* 0x59 Subtitling descriptor ETSI EN 300 468 6.2.xx*/void descriptorDVB_Subtitling (u_char *b){ typedef struct _descSubTitling { u_int descriptor_tag; u_int descriptor_length; } descSubTitling; typedef struct _descSubTitling2 { u_char ISO_639_language_code[4]; u_int subtitling_type; u_int composition_page_id; u_int ancillary_page_id; } descSubTitling2; descSubTitling d; descSubTitling2 d2; int len; 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)*/void descriptorDVB_TerrestDelivSys (u_char *b){ /* ETSI 300 468 6.2.xx */ typedef struct _descCDS { u_int descriptor_tag; u_int descriptor_length; u_long centre_frequency; u_int bandwidth; u_int reserved_1; u_int constellation; u_long hierarchy_information; u_int code_rate_HP_stream; u_int code_rate_LP_stream; u_int guard_interval; u_int transmission_mode; u_int other_frequency_flag; u_int reserved_2; } descTDS; descTDS d; //int i; d.descriptor_tag = b[0]; d.descriptor_length = b[1]; d.centre_frequency = getBits (b, 0, 16, 32); d.bandwidth = getBits (b, 0, 48, 3); d.reserved_1 = getBits (b, 0, 51, 5); d.constellation = getBits (b, 0, 56, 2); d.hierarchy_information = getBits (b, 0, 58, 3); d.code_rate_HP_stream = getBits (b, 0, 61, 3); d.code_rate_LP_stream = getBits (b, 0, 64, 3); d.guard_interval = getBits (b, 0, 67, 2); d.transmission_mode = getBits (b, 0, 69, 2); d.other_frequency_flag = getBits (b, 0, 71, 1); d.reserved_2 = getBits (b, 0, 72, 32); // frequency is in 10 Hz steps == * 10 out_nl (4,"Center frequency: 0x%08x (= %lu.%03lu kHz)",d.centre_frequency, d.centre_frequency / 100, d.centre_frequency % 100 ); out_S2B_NL (4,"Bandwidth: ",d.bandwidth, dvbstrTerrBandwidth_SCHEME (d.bandwidth)); out_SB_NL (6,"reserved_1: ",d.reserved_1); out_S2B_NL (4,"Constellation: ",d.constellation, dvbstrTerrConstellation_FLAG(d.constellation)); out_S2B_NL (4,"Hierarchy information: ",d.hierarchy_information, dvbstrTerrHierarchy_FLAG(d.hierarchy_information)); out_S2B_NL (4,"Code_rate_HP_stream: ",d.code_rate_HP_stream, dvbstrTerrCodeRate_FLAG(d.code_rate_HP_stream)); out_S2B_NL (4,"Code_rate_LP_stream: ",d.code_rate_LP_stream, dvbstrTerrCodeRate_FLAG(d.code_rate_LP_stream)); out_S2B_NL (4,"Guard_interval: ",d.guard_interval, dvbstrTerrGuardInterval_FLAG(d.guard_interval)); out_S2B_NL (4,"Transmission_mode: ",d.transmission_mode, dvbstrTerrTransmissionMode_FLAG(d.transmission_mode)); out_SB_NL (4,"Other_frequency_flag: ",d.other_frequency_flag); out_SL_NL (6,"reserved_2: ",d.reserved_2);}/* 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*/void descriptorDVB_MultilingServiceName (u_char *b){ typedef struct _descMultiServiceName { u_int descriptor_tag; u_int descriptor_length; // N .. List2 } descMultiServiceName; typedef struct _descMultiServiceName2 { u_char ISO639_2_language_code[4]; u_int service_provider_name_length; // N2 .. char u_int service_name_length; // N3 .. char } descMultiServiceName2; descMultiServiceName d; descMultiServiceName2 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.service_provider_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,"Service_provider_name_length: ",d2.service_provider_name_length); print_text_468A (4, "Service_provider_name: ", b+4,d2.service_provider_name_length); len1 -= (4 + d2.service_provider_name_length); b += 4 + d2.service_provider_name_length; d2.service_name_length = getBits (b, 0, 24, 8); out_SB_NL (5,"Service_name_length: ",d2.service_name_length); print_text_468A (4, "Service_name: ", b+4,d2.service_name_length); len1 -= (4 + d2.service_name_length); b += 4 + d2.service_name_length; 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;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -