亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? psfdemux_parsing.c

?? SigmDesign SMP8634 media decode chip development SDK
?? C
?? 第 1 頁 / 共 4 頁
字號:
/* * * Copyright (c) Sigma Designs, Inc. 2006. All rights reserved. * *//* * *********************************************************** * This is UGLY, #including this file isnt the way to go, but * it's a fast way of cleaning play_psfdemux.c * The best approach will be to convert this into a library * which might be re-used by RMVDEMUX lib. * *********************************************************** *//**   @file psfdemux_parsing.c   @brief PMT, PAT, etc parsing functionality for play_psfdemux	   @author Aurelia Popa-Radu   @ingroup dccsamplecode*/#include "../samples/sample_os.h"#define ALLOW_OS_CODE 1#include "../dcc/include/dcc.h"#include "../samples/common.h"#include "../rmscc/include/rmscc.h"#include "mp4descriptors.h"#include "mp4scene.h"#include "psfdemux_common.h"#include "../samples/rmttx.h"#if 0#define CALLDBG ENABLE#else#define CALLDBG DISABLE#endif/* pid and output tables for app_type = pid_filter_section */struct PidEntry_type gPidTable[] = {	/*   pid,    input_type,   flags, enable,     output_mask[1],    cipher,           pid type,  index */	/*                                           (where to send)  mask, index[1], (what to send)        */#ifndef USE_HW_FIXED_PID_ENTRY /* defined in psfdemux_common.h only for EM8622 chip; undefined for EM863x */	/* enable PAT, CAT in PidTable and disable the fixed PAT pid from hardware */	{ 0x0000, EMhwlibPid_Ts, TS_FLAGS,  TRUE,   {PAT_OUTPUT_MASK},  0,  {0},   PAT_PID_ENTRY, },	{ 0x0001, EMhwlibPid_Ts, TS_FLAGS,  TRUE,   {CAT_OUTPUT_MASK},  0,  {0},   CAT_PID_ENTRY, },#endif	{ 0x1fff, EMhwlibPid_Ts, TS_FLAGS, FALSE, {VIDEO_OUTPUT_MASK},  0,  {0}, VIDEO_PID_ENTRY, },	{ 0x1fff, EMhwlibPid_Ts, TS_FLAGS, FALSE, {AUDIO_OUTPUT_MASK},  0,  {0}, AUDIO_PID_ENTRY, },	{ 0x1fff, EMhwlibPid_Ts, TS_FLAGS, FALSE,   {PCR_OUTPUT_MASK},  0,  {0},   PCR_PID_ENTRY, },	{ 0x1fff, EMhwlibPid_Ts, TS_FLAGS, FALSE,   {PMT_OUTPUT_MASK},  0,  {0},   PMT_PID_ENTRY, },	{ 0x1fff, EMhwlibPid_Ts, TS_FLAGS, FALSE,  {ECM0_OUTPUT_MASK},	0,  {0},  ECM0_PID_ENTRY, },/* hardcoded for dvb encrypted files */	{ 0x1fff, EMhwlibPid_Ts, TS_FLAGS, FALSE,  {ECM1_OUTPUT_MASK},	0,  {0},  ECM1_PID_ENTRY, },/* hardcoded for dvb encrypted files */	// reserve two pid for mp4 bifs and od		{ 0x1fff, EMhwlibPid_Ts, TS_FLAGS, FALSE,  {BIFS_OUTPUT_MASK},	0,  {0},  BIFS_PID_ENTRY, },/* mp4 bifs stream */	{ 0x1fff, EMhwlibPid_Ts, TS_FLAGS, FALSE,    {OD_OUTPUT_MASK},	0,  {0},    OD_PID_ENTRY, },/* mp4 od stream */	{ 0x1fff, EMhwlibPid_Ts, TS_FLAGS,  TRUE,   {TTX_OUTPUT_MASK},  0,  {0},   TTX_PID_ENTRY, },/* teletext stream */	#ifdef MULTI2_EIGHT_KEYS	{ 0x1fff, EMhwlibPid_Ts, TS_FLAGS, FALSE,   {1<<(DATA_OUT+0)},  0,  {0},    DATA_ENTRY+0, }, // data out13	{ 0x1fff, EMhwlibPid_Ts, TS_FLAGS, FALSE,   {1<<(DATA_OUT+1)},  0,  {0},    DATA_ENTRY+1, },	{ 0x1fff, EMhwlibPid_Ts, TS_FLAGS, FALSE,   {1<<(DATA_OUT+2)},  0,  {0},    DATA_ENTRY+2, },	{ 0x1fff, EMhwlibPid_Ts, TS_FLAGS, FALSE,   {1<<(DATA_OUT+3)},  0,  {0},    DATA_ENTRY+3, },	{ 0x1fff, EMhwlibPid_Ts, TS_FLAGS, FALSE,   {1<<(DATA_OUT+4)},  0,  {0},    DATA_ENTRY+4, },	{ 0x1fff, EMhwlibPid_Ts, TS_FLAGS, FALSE,   {1<<(DATA_OUT+5)},  0,  {0},    DATA_ENTRY+5, },		{ 0x1fff, EMhwlibPid_Ts, TS_FLAGS, FALSE,   {1<<(DATA_OUT+6 )}, 0,  {0},    DATA_ENTRY+6, }, // ecm out19	{ 0x1fff, EMhwlibPid_Ts, TS_FLAGS, FALSE,   {1<<(DATA_OUT+7 )}, 0,  {0},    DATA_ENTRY+7, },	{ 0x1fff, EMhwlibPid_Ts, TS_FLAGS, FALSE,   {1<<(DATA_OUT+8 )}, 0,  {0},    DATA_ENTRY+8, },	{ 0x1fff, EMhwlibPid_Ts, TS_FLAGS, FALSE,   {1<<(DATA_OUT+9 )}, 0,  {0},    DATA_ENTRY+9, },	{ 0x1fff, EMhwlibPid_Ts, TS_FLAGS, FALSE,   {1<<(DATA_OUT+10)}, 0,  {0},    DATA_ENTRY+10,},	{ 0x1fff, EMhwlibPid_Ts, TS_FLAGS, FALSE,   {1<<(DATA_OUT+11)}, 0,  {0},    DATA_ENTRY+11,},#endif //#ifdef MULTI2_EIGHT_KEYS};struct Output_type gOutputTable[] = {	/*      data_type,      section_mask,   buffer    partial thrshld, pts,ibc,     consumer,    callback,       file,       output   receive_data */        /*                                     count, size,  read,                                             name,handle,size, module_id, mode       */	{ EMhwlibData_PSI,  PAT_SECTION_MASK,  4,  LOG2_4k,  TRUE,      0,   0,  0,            0, PATCallback, "0.out", NULL, 0, 0, receive_data_dma_no_delay, },	{ EMhwlibData_PSI,  PMT_SECTION_MASK,  4,  LOG2_4k,  TRUE,      0,   0,  0,            0, PMTCallback, "1.out", NULL, 0, 0, receive_data_dma_no_delay, },	{ EMhwlibData_Vpayload_pts,        0, 16, LOG2_32k, FALSE, 0x8000, 128, 64, VideoDecoder,        NULL, "2.out", NULL, 0, 0, receive_data_dma_backward_compatible, },	{ EMhwlibData_ASpayload_pts,       0, 16, LOG2_32k, FALSE, 0x8000, 128, 64, AudioDecoder,        NULL, "3.out", NULL, 0, 0, receive_data_dma_backward_compatible, },	{ EMhwlibData_PCR,                 0,  0,        0, FALSE,      0,   0,  0,            0,        NULL,      "", NULL, 0, 0, receive_data_dma_backward_compatible, },	{ EMhwlibData_PSI,  CAT_SECTION_MASK,  4,  LOG2_4k,  TRUE,      0,   0,  0,            0, CATCallback, "5.out", NULL, 0, 0, receive_data_dma_no_delay, },	{ EMhwlibData_PSI, ECM0_SECTION_MASK,  4,  LOG2_4k,  TRUE,      0,   0,  0,            0, ECMCallback, "6.out", NULL, 0, 0, receive_data_dma_no_delay, },	{ EMhwlibData_PSI, ECM1_SECTION_MASK,  4,  LOG2_4k,  TRUE,      0,   0,  0,            0, ECMCallback, "7.out", NULL, 0, 0, receive_data_dma_no_delay, },	// output used for recording TS - used when RECORD_AV_TS or WITH_TIME_SHIFT is defined in psfdemux_common.h#ifdef RECORD_AV_TS	{ EMhwlibData_TS,             0, REC_CNT, LOG2_32k, FALSE, 0x8000,   0, 64,            0,        NULL, "8.out", NULL, 0, 0, receive_data_dma_full_buffer, },#else	{ EMhwlibData_TS,             0,       0,        0, FALSE, 0x8000,   0,  0,            0,        NULL, "8.out", NULL, 0, 0, receive_data_dma_backward_compatible, },#endif	{ EMhwlibData_ASpayload_pts,  0,      16, LOG2_32k, FALSE, 0x8000, 128, 64, AudioDecoder,        NULL, "9.out", NULL, 0, 0, receive_data_dma_backward_compatible, },	{ EMhwlibData_PSI, BIFS_SECTION_MASK,  4,  LOG2_4k,  TRUE,      0,   0,  0,            0,        NULL,"10.out", NULL, 0, 0, receive_data_dma_no_delay, },	{ EMhwlibData_DMB_OD, OD_SECTION_MASK, 4,  LOG2_4k,  TRUE,      0,   0,  0,            0,        NULL,"11.out", NULL, 0, 0, receive_data_dma_no_delay, },	{ EMhwlibData_APES,           0,       4, LOG2_32k,  TRUE,      0,   0,  0,            0, TTXCallback,"12.out", NULL, 0, 0, receive_data_dma_no_delay, },		{ EMhwlibData_TS,             0,      16, LOG2_32k, FALSE, 0x8000,   0,  0,            0,        NULL,"13.out", NULL, 0, 0, receive_data_dma_full_buffer, },	#ifdef MULTI2_EIGHT_KEYS	{ EMhwlibData_ASpayload_pts,  0,       4,  LOG2_4k, FALSE,      0,   0,  0,            0,        NULL,"13.out", NULL, 0, 0, receive_data_dma_backward_compatible, },  // data//	{ EMhwlibData_DSM_CC,(1<<(DATA_SEC+1)),4,  LOG2_4k, FALSE,      0,   0,  0,            0,        NULL,"13.out", NULL, 0, 0, receive_data_dma_backward_compatible, },	{ EMhwlibData_DSM_CC,(1<<(DATA_SEC+2)),4,  LOG2_4k, FALSE,      0,   0,  0,            0,        NULL,"14.out", NULL, 0, 0, receive_data_dma_backward_compatible, },	{ EMhwlibData_DSM_CC,(1<<(DATA_SEC+3)),4,  LOG2_4k, FALSE,      0,   0,  0,            0,        NULL,"15.out", NULL, 0, 0, receive_data_dma_backward_compatible, },	{ EMhwlibData_DSM_CC,(1<<(DATA_SEC+4)),4,  LOG2_4k, FALSE,      0,   0,  0,            0,        NULL,"16.out", NULL, 0, 0, receive_data_dma_backward_compatible, },	{ EMhwlibData_DSM_CC,(1<<(DATA_SEC+5)),4,  LOG2_4k, FALSE,      0,   0,  0,            0,        NULL,"17.out", NULL, 0, 0, receive_data_dma_backward_compatible, },	{ EMhwlibData_DSM_CC,(1<<(DATA_SEC+6)),4,  LOG2_4k, FALSE,      0,   0,  0,            0,        NULL,"18.out", NULL, 0, 0, receive_data_dma_backward_compatible, },	{ EMhwlibData_PSI, (1<<(DATA_SEC+7 )), 4,  LOG2_4k,  TRUE,      0,   0,  0,            0, ECMCallback,"19.out", NULL, 0, 0, receive_data_dma_backward_compatible, },  // data	{ EMhwlibData_PSI, (1<<(DATA_SEC+8 )), 4,  LOG2_4k,  TRUE,      0,   0,  0,            0, ECMCallback,"20.out", NULL, 0, 0, receive_data_dma_backward_compatible, },	{ EMhwlibData_PSI, (1<<(DATA_SEC+9 )), 4,  LOG2_4k,  TRUE,      0,   0,  0,            0, ECMCallback,"21.out", NULL, 0, 0, receive_data_dma_backward_compatible, },	{ EMhwlibData_PSI, (1<<(DATA_SEC+10)), 4,  LOG2_4k,  TRUE,      0,   0,  0,            0, ECMCallback,"22.out", NULL, 0, 0, receive_data_dma_backward_compatible, },	{ EMhwlibData_PSI, (1<<(DATA_SEC+11)), 4,  LOG2_4k,  TRUE,      0,   0,  0,            0, ECMCallback,"23.out", NULL, 0, 0, receive_data_dma_backward_compatible, },	{ EMhwlibData_PSI, (1<<(DATA_SEC+12)), 4,  LOG2_4k,  TRUE,      0,   0,  0,            0, ECMCallback,"24.out", NULL, 0, 0, receive_data_dma_backward_compatible, },#endif //#ifdef MULTI2_EIGHT_KEYS};/* pid and output table for app_type = program_stream_parsing */struct PesEntry_type gPesTable[] = {	/* sid, ssid,      input_type, enable, output_mask[1], cipher_mask, cipher_index[1] */	{ 0xE0, 0,    EMhwlibPes_packet, TRUE,    {1<<0},            0,          {0}, }, // video	{ 0xBD, 0x80, EMhwlibPes_packet, TRUE,    {(1<<1) | (1<<3)}, 0,          {0}, }, // two audio outputs	{ 0xBD, 0x20, EMhwlibPes_packet, TRUE,    {1<<2},            0,          {0}, }, // subpicture};struct Output_type gPesOutputTable[] = {	/*      data_type,      section_mask,   buffer    partial thrshld, pts,ibc,     consumer,    callback,       file,       output   receive_data */        /*                                     count, size,  read,                                             name,handle,size, module_id, mode       */	{ EMhwlibData_Vpayload_pts,    0,    64, LOG2_32k, FALSE, 0x8000, 128, 64, VideoDecoder,         NULL, "0.out", NULL, 0, 0, receive_data_dma_backward_compatible, },	{ EMhwlibData_ASpayload_pts,   0,    16, LOG2_32k, FALSE, 0x8000, 128, 64, AudioDecoder,         NULL, "1.out", NULL, 0, 0, receive_data_dma_backward_compatible, },	{ EMhwlibData_ASpayload_pts,   0,    16,  LOG2_4k, FALSE, 0x1000, 128, 64,   SpuDecoder,         NULL, "2.out", NULL, 0, 0, receive_data_dma_backward_compatible, },	{ EMhwlibData_ASpayload_pts,   0,    16, LOG2_32k, FALSE, 0x8000, 128, 64, AudioDecoder,         NULL, "3.out", NULL, 0, 0, receive_data_dma_backward_compatible, },};/* generic section filter - including PAT, PMT, DSM_CC */struct MatchSectionEntry_type gmatchSectionTable[] = {	{{ 0xff, 0xff,	   {0xFF, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},  // 0 mask	   {0xFF, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},  // mode=positive match	   {0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}}}, // PAT 	{{ 0xff, 0xff,	   {0xFF, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},  // 1 mask	   {0xFF, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},  // mode=positive match	   {0x02, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}}},  // PMT	{{ 0xff, 0xff,	   {0xFF, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},  // 2 mask 	   {0xFF, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},  // mode=positive match	   {0x3E, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}}}, // DSM_CC	{{ 0xff, 0xff,	   {0xFF, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},  // 3 mask 	   {0xFF, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},  // mode=positive match	   {0x01, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}}}, // CAT	{{ 0xff, 0xff,	   {0xFC, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},  // 4 mask 	   {0xFF, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},  // mode=positive match	   {0x80, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}}}, // ECM 0x80,0x81,0x82	{{ 0xff, 0xff,	   {0xFC, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},  // 5 mask 	   {0xFF, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},  // mode=positive match	   {0x80, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}}}, // ECM 0x80,0x81,0x82	   	{{ 0xff, 0xff,	   {0xFF, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},  // 6 mask 	   {0xFF, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},  // mode=positive match	   {0x04, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}}}, // bifs streams	{{ 0xff, 0xff,	   {0xFF, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},  // 7 mask 	   {0xFF, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},  // mode=positive match	   {0x05, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}}}, // od streams	   	{{ 0xff, 0xff,	   {0xFF, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},  // 8 not used	   {0xFF, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},  //	   {0x05, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}}}, //#ifdef MULTI2_EIGHT_KEYS	// section for data outputs	{{ 0xff, 0xff,	   {0xFF, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},  // 9  reserved for out 13	   {0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},  // 	   {0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}}}, //	{{ 0xff, 0xff,	   {0xFF, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},  // 10 	   {0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},  // 	   {0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}}}, //	{{ 0xff, 0xff,	   {0xFF, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},  // 11 	   {0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},  // 	   {0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}}}, //	{{ 0xff, 0xff,	   {0xFF, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},  // 12	   {0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},  // 	   {0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}}}, //	{{ 0xff, 0xff,	   {0xFF, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},  // 13	   {0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},  // 	   {0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}}}, //	{{ 0xff, 0xff,	   {0xFF, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},  // 14 	   {0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},  // 	   {0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}}}, //		// section for ecm outputs	{{ 0xff, 0xff,	   {0xFC, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},  // 15 mask 	   {0xFF, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},  // mode=positive match	   {0x80, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}}}, // ECM 0x80,0x81,0x82	{{ 0xff, 0xff,	   {0xFC, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},  // 16 mask 	   {0xFF, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},  // mode=positive match	   {0x80, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}}}, // ECM 0x80,0x81,0x82	{{ 0xff, 0xff,	   {0xFC, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},  // 17 mask 	   {0xFF, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},  // mode=positive match	   {0x80, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}}}, // ECM 0x80,0x81,0x82	{{ 0xff, 0xff,	   {0xFC, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},  // 18 mask 	   {0xFF, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},  // mode=positive match	   {0x80, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}}}, // ECM 0x80,0x81,0x82	{{ 0xff, 0xff,	   {0xFC, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},  // 19 mask 	   {0xFF, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},  // mode=positive match	   {0x80, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}}}, // ECM 0x80,0x81,0x82	{{ 0xff, 0xff,	   {0xFC, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},  // 20 mask 	   {0xFF, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},  // mode=positive match	   {0x80, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}}}, // ECM 0x80,0x81,0x82#endif //#ifdef MULTI2_EIGHT_KEYS};RMstatus ParsePAT(RMuint8 *pBuffer1, RMuint32 size1, RMuint8 *pBuffer2, RMuint32 size2, struct PATInfo_type *out){	/* function assumes to be called on correct PAT boundaries */#define PAT_TABLE_ID			1#define PAT_LENGTH_HI			2#define PAT_LENGTH_LO			3#define PAT_TRANSPORT_STREAM_ID_HI	4#define PAT_TRANSPORT_STREAM_ID_LO	5#define PAT_VERSION_NUMBER		6#define PAT_SECTION_NUMBER		7#define PAT_LAST_SECTION_NUMBER		8#define PAT_PROGRAM_NUMBER_HI		9#define PAT_PROGRAM_NUMBER_LO		10#define PAT_PROGRAM_MAP_PID_HI		11#define PAT_PROGRAM_MAP_PID_LO		12#define PAT_CRC_3			13#define PAT_CRC_2			14#define PAT_CRC_1			15#define PAT_CRC_0			16	RMuint32 PatState = PAT_TABLE_ID;	RMuint16 length = 0, transport_stream_id = 0, program_number = 0, program_map_pid = 0;	RMuint8 section_number, last_section_number;	RMuint32 size = size1 + size2;	RMuint16 len = 0;	RMuint8 *p = NULL;		RMDBGLOG((CALLDBG, "parsePAT\n"));	if (out == NULL)		return RM_ERROR;			out->count = 0;		if (pBuffer1 && size1) {		p = pBuffer1;	}	while (size) {		switch (PatState)		{		case PAT_TABLE_ID:			if (*p != 0x00) {				fprintf(stderr, "ParsePAT table_id=%02x instead of 0x00 !\n", *p);				return RM_ERROR;			}			PatState++;			break;		case PAT_LENGTH_HI:	/* section_syntax_indicator and length_hi*/			if ((*p & 0xc0) != 0x80) {				fprintf(stderr, "ParsePAT section_syntax_indicator 0 !\n");//				return RM_ERROR;			}			length = *p & 0x0f;			length <<= 8;			PatState++;			break;		case PAT_LENGTH_LO:			length |= *p;			len = length;			PatState++;			break;		case PAT_TRANSPORT_STREAM_ID_HI:			transport_stream_id = *p;			transport_stream_id <<= 8;			PatState++;			len--;			break;		case PAT_TRANSPORT_STREAM_ID_LO:			transport_stream_id |= *p;			PatState++;			len--;			break;		case PAT_VERSION_NUMBER:			 /* version_number on bit 5..1, current_next_indicator on bit 0 */			out->version_number_current_next_indicator = *p & 0x3f;			RMDBGLOG((DISABLE, "ParsePAT version number = %x current_next_indicator = %x\n",				out->version_number_current_next_indicator>>1,				out->version_number_current_next_indicator & 1));			PatState++;			len--;			break;		case PAT_SECTION_NUMBER:			if (*p != 0x00) {				fprintf(stderr, "ParsePAT no multiple sections in PAT supported yet !\n");				return RM_ERROR;			}			section_number = *p;			PatState++;			len--;			break;		case PAT_LAST_SECTION_NUMBER:			last_section_number = *p;			PatState++;			len--;			break;		case PAT_PROGRAM_NUMBER_HI:			if (len < 8) {				fprintf(stderr, "ParsePAT not enough data for program and crc !\n");				return RM_ERROR;			}			program_number = *p;			program_number <<= 8;			PatState++;			len--;			break;		case PAT_PROGRAM_NUMBER_LO:			program_number |= *p;			PatState++;			len--;			out->program_number[out->count] = program_number;			break;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久亚洲私人国产精品va媚药| 欧美日韩亚洲综合| 国产拍欧美日韩视频二区| 精品一区二区三区蜜桃| 欧美精品一区二区三区一线天视频 | 日本欧美加勒比视频| 91精品综合久久久久久| 狠狠色狠狠色合久久伊人| 亚洲一二三四区| 欧美一区中文字幕| 国产伦精品一区二区三区视频青涩| 国产视频一区在线播放| 91香蕉视频mp4| 热久久免费视频| 欧美激情综合五月色丁香小说| 91蝌蚪porny| 日本美女视频一区二区| 国产精品私人影院| 欧美性受xxxx黑人xyx性爽| 久久精品国产久精国产爱| 国产精品欧美综合在线| 欧美日韩中文字幕一区| 国产毛片精品国产一区二区三区| 日韩一区欧美小说| 91精品国产综合久久福利 | 久久精品夜夜夜夜久久| 91亚洲国产成人精品一区二区三| 天堂精品中文字幕在线| 久久精品一区二区| 8v天堂国产在线一区二区| 国产精品亚洲专一区二区三区| 亚洲欧美偷拍三级| 精品福利av导航| 欧美性xxxxxxxx| 国产成人高清在线| 亚洲成av人片| 亚洲欧美另类图片小说| 精品久久久久久久久久久久久久久| 色综合久久中文字幕| 国产一区二区三区国产| 亚洲国产精品久久久久婷婷884| 亚洲精品一区二区三区精华液 | xnxx国产精品| 欧美揉bbbbb揉bbbbb| 国产成人一级电影| 捆绑调教美女网站视频一区| 亚洲欧美偷拍卡通变态| 日本一区二区三区电影| 欧美成人一区二区三区片免费| 在线观看精品一区| 丁香六月综合激情| 久久超碰97中文字幕| 亚洲成人午夜影院| 一区二区三区中文字幕在线观看| 久久精品人人做人人综合| 日韩一区二区在线观看视频| 日本精品裸体写真集在线观看| 国产成都精品91一区二区三| 久久激五月天综合精品| 成人美女视频在线观看18| 精品一区中文字幕| 久久国产精品露脸对白| 日本va欧美va欧美va精品| 一级女性全黄久久生活片免费| 国产精品国产三级国产aⅴ中文 | 成人午夜视频免费看| 另类中文字幕网| 麻豆精品一区二区| 青青草精品视频| 看国产成人h片视频| 三级欧美韩日大片在线看| 亚洲在线视频免费观看| 一区二区三区精品久久久| 亚洲色图都市小说| 亚洲另类在线一区| 亚洲一区免费在线观看| 亚洲综合精品自拍| 亚洲无人区一区| 天堂av在线一区| 免费亚洲电影在线| 久久99精品久久只有精品| 久久99久久99小草精品免视看| 国内外成人在线| 国产精品一区二区久久不卡 | 精品国产一区二区三区av性色 | 国产网站一区二区三区| 国产蜜臀av在线一区二区三区| 国产精品三级视频| 综合激情成人伊人| 一区二区三区久久久| 首页欧美精品中文字幕| 久久超碰97中文字幕| 成人午夜av影视| 色综合久久久久网| 制服丝袜国产精品| 2020国产精品自拍| **网站欧美大片在线观看| 一区二区不卡在线视频 午夜欧美不卡在| 亚洲综合一二三区| 蜜臀av一区二区| 高清久久久久久| 欧美色偷偷大香| 日韩精品一区二区三区视频播放 | 欧美视频你懂的| 国产丝袜欧美中文另类| 在线观看三级视频欧美| 欧美区在线观看| 精品国产乱码久久久久久老虎| 国产欧美综合在线观看第十页| 日韩精品五月天| 国产精品一区专区| 在线观看日韩高清av| 精品国一区二区三区| 国产精品久久久久影院亚瑟 | 亚洲天堂2016| 久久精品国产在热久久| 成人美女视频在线看| 欧美日韩亚洲丝袜制服| 久久精品视频一区二区三区| 亚洲综合视频网| 国产91在线看| 欧美一区2区视频在线观看| 中文字幕av一区二区三区| 亚洲gay无套男同| 国产经典欧美精品| 91精品欧美久久久久久动漫| ●精品国产综合乱码久久久久| 美女视频黄a大片欧美| 日本国产一区二区| 国产午夜精品理论片a级大结局| 亚洲国产综合91精品麻豆| 国产成人av电影免费在线观看| 欧美精品v国产精品v日韩精品| 欧美激情在线观看视频免费| 蜜桃视频第一区免费观看| 色偷偷久久一区二区三区| 久久久精品天堂| 日本不卡123| 欧美撒尿777hd撒尿| 亚洲视频综合在线| 丁香啪啪综合成人亚洲小说| 亚洲精品一区二区三区影院| 日韩福利电影在线观看| 色av一区二区| 亚洲欧美在线视频| 国产成人精品影院| 精品理论电影在线| 日韩成人免费在线| 欧美美女黄视频| 亚洲最大成人综合| 91天堂素人约啪| 亚洲欧洲av在线| 不卡的av中国片| 国产农村妇女精品| 国产成人免费在线观看不卡| 日韩片之四级片| 奇米亚洲午夜久久精品| 欧美精品久久一区二区三区| 亚洲一区二区三区四区在线观看| 99热精品一区二区| 国产精品传媒在线| aa级大片欧美| 亚洲同性同志一二三专区| 成年人网站91| 亚洲日本欧美天堂| 色综合欧美在线视频区| 亚洲精品老司机| 欧美三电影在线| 亚洲不卡在线观看| 日韩一级大片在线观看| 美腿丝袜亚洲色图| 精品国产电影一区二区| 国产一区二区免费在线| 国产色婷婷亚洲99精品小说| 成人动漫av在线| 国产精一品亚洲二区在线视频| 精品国产污污免费网站入口| 国产高清视频一区| 国产精品家庭影院| 欧美午夜理伦三级在线观看| 香蕉久久夜色精品国产使用方法| 欧美日韩亚洲综合在线| 男女男精品网站| 国产欧美日韩在线视频| 91碰在线视频| 日韩avvvv在线播放| 2017欧美狠狠色| 一本色道久久综合精品竹菊| 亚洲va欧美va天堂v国产综合| 日韩亚洲欧美在线| 国产精品123| 亚洲日本欧美天堂| 欧美高清www午色夜在线视频| 久久精品国产免费| 亚洲欧美自拍偷拍色图| 69堂国产成人免费视频| 国产永久精品大片wwwapp| 亚洲色图丝袜美腿| 日韩亚洲欧美在线| 99这里只有久久精品视频|