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

📄 tva_rnt_descriptor.c

📁 dvbsnoop is a DVB/MPEG stream analyzer program. The program can be used to sniff, monitor, debug, d
💻 C
字号:
/*$Id: tva_rnt_descriptor.c,v 1.4 2004/11/03 21:00:58 rasc Exp $  DVBSNOOP a dvb sniffer  and mpeg2 stream analyzer tool http://dvbsnoop.sourceforge.net/ (c) 2001-2004   Rainer.Scherg@gmx.de  (rasc) -- Private TAG Space  TS 102 323  TV-Anytime  -- RNT Descriptors$Log: tva_rnt_descriptor.c,v $Revision 1.4  2004/11/03 21:00:58  rasc - New: "premiere.de" private tables and descriptors (tnx to Peter.Pavlov, Premiere) - New: cmd option "-privateprovider <provider name>" - New: Private provider sections and descriptors decoding - Changed: complete restructuring of private descriptors and sectionsRevision 1.3  2004/09/01 20:20:34  rascnew cmdline option: -buffersize KB  (set demux buffersize in KBytes)Revision 1.2  2004/08/27 23:25:52  rasc - Update: changes due to  EN 300 468 v1.6.1 - Bugfix: Multilingual component descriptor  (tnx to Karsten Siebert)Revision 1.1  2004/08/06 22:21:38  rascNew: TV-Anytime (TS 102 323) RNT descriptors 0x40 - 0x42*/#include "dvbsnoop.h"#include "descriptor.h"#include "tva_rnt_descriptor.h"#include "dvb_descriptor.h"#include "private/userdefs.h"#include "strings/dvb_str.h"#include "strings/tva_str.h"#include "misc/hexprint.h"#include "misc/output.h"#include "misc/helper.h"#include "misc/pkt_time.h"/*  determine descriptor type and print it...  !!! TVA RNT descriptors seems to have  a private tag space !!!  !!! (descriptor tag collission with DVB descriptors)*/int  descriptorTVA  (u_char *b){ int len; int id;  id  =  (int) b[0];  len = ((int) b[1]) + 2;  out_NL (4);  out_S2B_NL (4,"TVA-DescriptorTag: ",id,		  tvaStrTVA_DescriptorTAG(id));  out_SB_NL  (5,"Descriptor_length: ",b[1]);  // empty ??  len = ((int)b[1]) + 2;  if (b[1] == 0)	 return len;  // print hex buf of descriptor  printhex_buf (9, b,len);  switch (b[0]) {     case 0x41:  descriptorTVA_RAR_over_DVB_stream (b); break;     case 0x42:  descriptorTVA_RAR_over_IP_stream (b); break;     case 0x43:  descriptorTVA_RNT_scan (b); break;     default: 	if (b[0] < 0x80) {	    out_nl (0,"  ----> ERROR: unimplemented descriptor (TVA context), Report!");	}	// descriptor_any (b);	descriptor_PRIVATE (b, TVA_RNT);	break;  }   return len;   // (descriptor total length)}/* * TS 102 323  TV-ANYTIME * RNT descriptors */static int _valid_dates_block (u_char *b);/*  0x41 - RAR_over_DVB_stream*/void descriptorTVA_RAR_over_DVB_stream (u_char *b){ int        sf; int	    x; u_long     date_MJD, date_UTC;  // descriptor_tag	= b[0];  // len		= b[1];  _valid_dates_block (b+2);    outBit_Sx_NL    (4,"weighting: ",		b,  96, 6);  x = outBit_Sx   (4,"complete_flag: ",		b, 102, 1);    	if (x == 1) out_nl (4,"  [= referenced CRI data is complete]");	else out_NL (4);  sf = outBit_S2x_NL (4,"scheduled_flag: ",	b, 103, 1,			(char *(*)(u_long)) tvastr_CRI_DATA_scheduled_flag);  // $$$ TODO this part is re-usable  outBit_S2x_NL (4,"network_id: ",		b, 104, 16,			(char *(*)(u_long)) dvbstrNetworkIdent_ID);  outBit_S2x_NL (4,"original_network_id: ",	b, 120, 16,			(char *(*)(u_long)) dvbstrOriginalNetwork_ID);  outBit_Sx_NL  (4,"transport_stream_ID: ",	b, 132, 16);  outBit_S2Tx_NL(4,"service_ID: ",		b, 148, 16,			" --> refers to PMT program_number");   outBit_Sx_NL  (4,"component_tag: ",		b, 164,  8);  //  ---  if (sf) {  	date_MJD		= getBits (b, 0, 172, 16);  	date_UTC		= getBits (b, 0, 188, 24);	out (4,"download_start_time: ");	print_time40 (4, date_MJD,date_UTC);	out_NL (4);  	x = outBit_Sx  (4,"download_period_duration: ",	b, 212,  8); 		out_nl (4," [= %d minutes]",x*6);   	outBit_S2Tx_NL (4,"download_cycle_time: ",	b, 220,  8, "minutes");  }}/*  0x42 - RAR_over_IP_stream*/void descriptorTVA_RAR_over_IP_stream (u_char *b){ int	    x;  // descriptor_tag	= b[0];  // len		= b[1];  _valid_dates_block (b+2);    outBit_Sx_NL    (4,"weighting: ",		b,  96, 6);  x = outBit_Sx   (4,"complete_flag: ",		b, 102, 1);    	if (x == 1) out_nl (4,"  [= referenced CRI data is complete]");	else out_NL (4);  outBit_Sx_NL    (6,"reserved: ",		b, 103, 1);  x = outBit_Sx_NL(4,"URL_length: ",		b, 104, 8);  print_text_UTF8 (4,"URL: ", b+14, x);}/* * valid_date_weighting_complete_flag - Block * subroutine for identical stuctures reusage * return: len in bytes = 10; */static int _valid_dates_block (u_char *b){  u_long     date_MJD, date_UTC;  date_MJD		= getBits (b, 0,  0, 16);  date_UTC		= getBits (b, 0, 16, 24);  out (4,"first_valid_date: ");  print_time40 (4, date_MJD,date_UTC);  out_NL (4);  date_MJD		= getBits (b, 0, 40, 16);  date_UTC		= getBits (b, 0, 56, 24);  out (4,"last_valid_date: ");  print_time40 (4, date_MJD,date_UTC);  out_NL (4);  return 10;}/*  0x43 - RNT_scan*/void descriptorTVA_RNT_scan (u_char *b){ int        len;  // descriptor_tag	= b[0];  len			= b[1];  while (len > 0) {	outBit_S2x_NL (4,"network_id: ",		b,   0, 16,			(char *(*)(u_long)) dvbstrNetworkIdent_ID);	outBit_S2x_NL (4,"original_network_id: ",	b,  16, 16,			(char *(*)(u_long)) dvbstrOriginalNetwork_ID);	outBit_Sx_NL    (4,"scan_weighting: ",		b,  32, 8);	b   += 5;	len -= 5;	out_NL (4);  }  }

⌨️ 快捷键说明

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