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

📄 mpeg_descriptor.c

📁 DVB MPEG2 system stream 分析, 包含 各個talbe(EIT,PMT,PAT,SDT),以及video,audio. 對於學習數字電視有很大幫助.
💻 C
📖 第 1 页 / 共 3 页
字号:
 d.descriptor_tag		 = b[0]; d.descriptor_length       	 = b[1]; d.horizontal_offset		 = getBits (b, 0, 16, 14); d.vertical_offset		 = getBits (b, 0, 30, 14); d.window_priority		 = getBits (b, 0, 44, 4); out_S2W_NL (4,"horizontal_offset: ",d.horizontal_offset,"pixel"); out_S2W_NL (4,"vertical_offset: ",d.vertical_offset,"pixel"); out_S2B_NL (4,"window_priority: ",d.window_priority,"(15 = highest)");}/*  0x09 CA descriptor  (condition access)*/void descriptorMPEG_CA (u_char *b){ /* IS13818-1  2.6.1 */ typedef struct  _descCA {    u_int      descriptor_tag;    u_int      descriptor_length;		    u_int      CA_system_ID;    u_int      reserved;    u_int      CA_PID;    // private data bytes } descCA; descCA  d; int     len; d.descriptor_tag		 = b[0]; d.descriptor_length       	 = b[1]; d.CA_system_ID			 = getBits (b, 0, 16, 16); d.reserved			 = getBits (b, 0, 32, 3); d.CA_PID			 = getBits (b, 0, 35, 13); store_PidToMem (d.CA_PID); out_S2W_NL (4,"CA_system_ID: ",d.CA_system_ID,     dvbstrCASystem_ID(d.CA_system_ID)); out_SB_NL  (6,"reserved: ",d.reserved); out_SW_NL  (4,"CA_PID: ",d.CA_PID); len = d.descriptor_length-4; if (len > 0) {    print_private_data (4, b+6,len); }}/*  -- 0x0A ISO 639 Language descriptor*/void descriptorMPEG_ISO639_Lang (u_char *b){ /* ISO 13818-1   2.6.19 */ typedef struct  _descISO639 {    u_int      descriptor_tag;    u_int      descriptor_length;		    // N ISO639 desc } descISO639; typedef struct  _descISO639List {    u_char      ISO_639_language_code[4];    u_int      audio_type; } descISO639List; descISO639      d; descISO639List  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.audio_type		= getBits (b,0,24,8);    b += 4;    len -= 4;    out_nl (4,"ISO639_language_code:  %3.3s", d2.ISO_639_language_code);    out_S2B_NL (4,"Audio_type: ", d2.audio_type,	dvbstrAudio_TYPE (d2.audio_type));    out_NL(4); } indent (-1);}/*  0x0B  System Clock  descriptor   ISO 13818-1   2.6.xx*/void descriptorMPEG_SystemClock (u_char *b){ typedef struct  _descSysClock {    u_int      descriptor_tag;    u_int      descriptor_length;		    u_int      external_clock_reference_indicator;    u_int      reserved_1;    u_int      clock_accuracy_integer;    u_int      clock_accuracy_exponent;    u_int      reserved_2; } descSysClock; descSysClock d; d.descriptor_tag		 = b[0]; d.descriptor_length       	 = b[1]; d.external_clock_reference_indicator = getBits (b, 0, 16, 1); d.reserved_1			 = getBits (b, 0, 17, 1); d.clock_accuracy_integer	 = getBits (b, 0, 18, 6); d.clock_accuracy_exponent	 = getBits (b, 0, 24, 3); d.reserved_2			 = getBits (b, 0, 27, 5);  out_SB_NL (4,"external_clock_reference_indicatior: ",	d.external_clock_reference_indicator); out_SB_NL (6,"reserved_1: ",d.reserved_1); out_SB_NL (4,"clock_accuracy_integer: ",d.clock_accuracy_integer); out_SB_NL (4,"clock_accuracy_exponent: ",d.clock_accuracy_exponent); out_nl    (4,"    == : %u * 10^(-%u) ",		d.clock_accuracy_integer,d.clock_accuracy_exponent); out_SB_NL (6,"reserved_2: ",d.reserved_2);}/*  0x0C  Multiplex Buffer Utilization  descriptor   ISO 13818-1   2.6.xx*/void descriptorMPEG_MultiplexBufUtil  (u_char *b){ typedef struct  _descMBU {    u_int      descriptor_tag;    u_int      descriptor_length;		    u_int      bound_valid_flag;    u_int      LTW_offset_lower_bound;    u_int      reserved_1;    u_int      LTW_offset_upper_bound; } descMBU; descMBU  d; d.descriptor_tag		 = b[0]; d.descriptor_length       	 = b[1]; d.bound_valid_flag		 = getBits (b, 0, 16, 1); d.LTW_offset_lower_bound	 = getBits (b, 0, 17, 15); d.reserved_1			 = getBits (b, 0, 32, 1); d.LTW_offset_upper_bound	 = getBits (b, 0, 33, 15);  out_SB_NL (4,"bound_valid_flag: ",d.bound_valid_flag); out_S2W_NL (4,"LTW_offset_lower_bound: ",d.LTW_offset_lower_bound,	"(27 MHz/300 clock periods)"); out_SB_NL (6,"reserved_1: ",d.reserved_1); out_S2W_NL (4,"LTW_offset_upper_bound: ",d.LTW_offset_upper_bound,	"(27 MHz/300 clock periods)");}/*  0x0D  Copyright  descriptor   ISO 13818-1   2.6.xx*/void descriptorMPEG_Copyright  (u_char *b){ typedef struct  _descCopyright {    u_int      descriptor_tag;    u_int      descriptor_length;		    u_long     copyright_identifier;    // add. info } descCopyright; descCopyright d; d.descriptor_tag		 = b[0]; d.descriptor_length       	 = b[1]; d.copyright_identifier		 = getBits (b, 0, 16, 32);  out_S2L_NL (4,"copyright_identifier: ",d.copyright_identifier,"see: SC29"); print_databytes (4,"add. info:", b+6, d.descriptor_length -4);}/*  0x0E  Maximum Bitrate  descriptor   ISO 13818-1   2.6.xx*/void descriptorMPEG_MaxBitrate (u_char *b){ typedef struct  _descMaxBitrate {    u_int      descriptor_tag;    u_int      descriptor_length;		    u_int      reserved_1;    u_long     maximum_bitrate; } descMaxBitrate; descMaxBitrate d; d.descriptor_tag		 = b[0]; d.descriptor_length       	 = b[1]; d.reserved_1			 = getBits (b, 0, 16, 2); d.maximum_bitrate		 = getBits (b, 0, 18, 22);  out_SB_NL (6,"reserved_1: ",d.reserved_1); out_nl    (4,"maximum_bitrate: %lu (0x%08lx)  (= %lu Bytes/sec)",	d.maximum_bitrate, d.maximum_bitrate,	d.maximum_bitrate * 50);}/*  0x0F  Private Data Indicator descriptor   ISO 13818-1   2.6.x*/void descriptorMPEG_PrivateDataIndicator  (u_char *b){   descriptor_any (b);}/*  0x10  Smoothing Buffer  descriptor   ISO 13818-1   2.6.30*/void descriptorMPEG_SmoothingBuf  (u_char *b){ typedef struct  _descSmoothingBuf {    u_int      descriptor_tag;    u_int      descriptor_length;		    u_int      reserved_1;    u_long     sb_leak_rate;    u_int      reserved_2;    u_long     sb_size; } descSmoothingBuf; descSmoothingBuf d; d.descriptor_tag		 = b[0]; d.descriptor_length       	 = b[1]; d.reserved_1			 = getBits (b, 0, 16, 2); d.sb_leak_rate			 = getBits (b, 0, 18, 22); d.reserved_2			 = getBits (b, 0, 40, 2); d.sb_size			 = getBits (b, 0, 42, 22);  out_SB_NL (6,"reserved_1: ",d.reserved_1); out_nl    (4,"sb_leak_rate: %lu  (= %lu bits/sec)",	d.sb_leak_rate,d.sb_leak_rate/400); out_SB_NL (6,"reserved_2: ",d.reserved_2); out_nl    (4,"sb_size: %lu  bytes", d.sb_size);}/*  0x11  STD    descriptor   ISO 13818-1   2.6.32*/void descriptorMPEG_STD (u_char *b){ typedef struct  _descSTD {    u_int      descriptor_tag;    u_int      descriptor_length;		    u_int      reserved_1;    u_int      leak_valid_flag; } descSTD; descSTD d; d.descriptor_tag		 = b[0]; d.descriptor_length       	 = b[1]; d.reserved_1			 = getBits (b, 0, 16, 7); d.leak_valid_flag		 = getBits (b, 0, 23, 1);  out_SB_NL (6,"reserved_1: ",d.reserved_1); out_SB_NL (4,"leak_valid_flag: ",d.leak_valid_flag);}/*  0x12  IBP  descriptor   ISO 13818-1   2.6.34*/void descriptorMPEG_IBP  (u_char *b){ typedef struct  _descIBP {    u_int      descriptor_tag;    u_int      descriptor_length;		    u_int      closed_gop_flag;    u_int      identical_gop_flag;    u_int      max_gop_length; } descIBP; descIBP d; d.descriptor_tag		 = b[0]; d.descriptor_length       	 = b[1]; d.closed_gop_flag		 = getBits (b, 0, 16, 1); d.identical_gop_flag		 = getBits (b, 0, 17, 1); d.max_gop_length		 = getBits (b, 0, 18, 14);  out_SB_NL (4,"Closed_gop_flag: ",d.closed_gop_flag); out_SB_NL (4,"Identical_gop_flag: ",d.identical_gop_flag); out_SW_NL (4,"Max_gop_length: ",d.max_gop_length);}/* * ------------------------------------------------------------ * * -- DSM-CC  Descriptors  ISO 13818-6  TR 102 006 * *//*  0x13  Carousel Identifier  descriptor   ISO 13818-6  / TR 102 006*/void descriptorMPEG_Carousel_Identifier (u_char *b){ typedef struct  _descCarouselIdentifier {    u_int      descriptor_tag;    u_int      descriptor_length;		    u_long     carousel_id;    u_int      format_id;    // -- optional    // FormatSpecifier    u_int      module_version;    u_int      module_id;    u_int      block_size;    u_int      module_size;    u_long     CompressionMethod;    u_int      original_size;    u_long     timeout;    u_int      object_key_length;       // N...    u_int      object_key_data;    // private data } descCarouselIdentifier; descCarouselIdentifier d; int			len; d.descriptor_tag		 = b[0]; d.descriptor_length       	 = b[1]; d.carousel_id			 = getBits (b, 0, 16, 32); d.format_id			 = getBits (b, 0, 48,  8); b  += 7; len = d.descriptor_length - 5; out_SL_NL (4,"Carousel_id: ",d.carousel_id); out_SB_NL (4,"format_id: ",d.format_id);		/* $$$$ ??? */ indent (+1); if (d.format_id == 0x01) {	// -- TR 101 202   4.7.xx	// -- FormatSpecifier

⌨️ 快捷键说明

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