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

📄 play_psfswpvr.c

📁 Sample code for use on smp 863x processor.
💻 C
📖 第 1 页 / 共 5 页
字号:
/* * * Copyright (c) Sigma Designs, Inc. 2002. All rights reserved. * *//**   @file play_psfdemux.c   @brief sample application for hardware demux of EM86xx	   @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 "command_ids.h"#include "play_psfdemux_helper.h"#include "psfdemux_common.h"#include <pthread.h>#include "play_vdemux.h"//#define IDENTIFY_CODECS_FIRST /* enable the detection of the codecs from the stream_type *//* to enable or disable the debug messages of this source file, put 1 or 0 below */#if 0#define LOCALDBG ENABLE#else#define LOCALDBG DISABLE#endif#if 0#define CALLDBG ENABLE#else#define CALLDBG DISABLE#endif#define FORCE_MONITOR		0#define	FORCE_DECRYPTION	1#define RM_DEVICES_ALL (RM_DEVICES_STC | RM_DEVICES_VIDEO | RM_DEVICES_AUDIO | RM_DEVICES_PSFDEMUX)#define KEYFLAGS (SET_KEY_DISPLAY | SET_KEY_PLAYBACK | SET_KEY_AUDIO | SET_KEY_DEBUG | SET_KEY_SPI)#define DMA_BUFFER_SIZE_LOG2	15	// 32k buffer#define DMA_BUFFER_COUNT	16	// 32*32k = 0x100000 = 1M #define DEMUX_FIFO_SIZE		(1<<DMA_BUFFER_SIZE_LOG2) * DMA_BUFFER_COUNT	// match the dma pool for standalone#define DEMUX_XFER_FIFO_COUNT	DMA_BUFFER_COUNT	// same as dma pool buffers - this application sends complete buffer every time. #define VIDEO_FIFO_SIZE		( 1792*1024) /* "-vfifo 1792", default same value as in play_demux and play_hwdemux */#define AUDIO_FIFO_SIZE		(  128*1024)#define SPU_FIFO_SIZE		(  104*1024)#define VIDEO_XFER_FIFO_COUNT   (128) #define VIDEO_PTS_FIFO_COUNT    (512) /* ~8 sec fifo for 60 frames/sec */#define VIDEO_INBAND_FIFO_COUNT (128)#define MAX_EVENT_COUNT_PER_TASK     5 /* 4 events (demux, video, display, audio) for file playback and 1 receive event per task */#define CPU_ERROR_EVENT_MASK        (1<<0)#define DEMUX_RECEIVE_EVENT_MASK(i) (1<<(1+0+i*MAX_EVENT_COUNT_PER_TASK))#define DEMUX_SEND_EVENT_MASK(i)    (1<<(1+1+i*MAX_EVENT_COUNT_PER_TASK))#define DEMUX_EOS_EVENT_MASK(i)     (1<<(1+1+i*MAX_EVENT_COUNT_PER_TASK))#define VIDEO_EOS_EVENT_MASK(i)     (1<<(1+2+i*MAX_EVENT_COUNT_PER_TASK))#define DISPLAY_EOS_EVENT_MASK(i)   (1<<(1+3+i*MAX_EVENT_COUNT_PER_TASK))#define AUDIO_EOS_EVENT_MASK(i)     (1<<(1+4+i*MAX_EVENT_COUNT_PER_TASK))#define VIDEO_PID_FROM_CMDLINE		(1 << 0)#define PCR_PID_FROM_CMDLINE		(1 << 1)#define AUDIO_PID_FROM_CMDLINE		(1 << 2)#define AV_PIDS_ENABLE_FIRST_TIME	(1 << 3)#define	ECM0_PID_FROM_CMDLINE		(1 << 4)#define	ECM1_PID_FROM_CMDLINE		(1 << 5)//#define TEST_APID_SWITCH_WITHOUT_DEMUX_STOP /* keep it FALSE until completely tested */struct dvb_csa_key arte_dvb_key_table[] = {	{ TRUE, 0, EMhwlibScramblingBits_10, { 0xfc, 0x32, 0x54, 0x76, 0x94, 0xba, 0xdc, 0xfe },	 { 0x0F, 0x0E, 0x0D, 0x0C, 0x0B, 0x0A, 0x09, 0x08, 0x07, 0x06, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00 },	  ECM0_SECTION_ENTRY }, /* arte key starts from LSB (byte 0) */};/* STREAM-4.ts */struct dvb_csa_key stream_dvb_key_table[] = {	{ FALSE, 0xffffffff, EMhwlibScramblingBits_None, { 0x99, 0x33, 0x33, 0x33, 0x99, 0x33, 0x33, 0x33 },	 { 0x20, 0xEA, 0x10, 0x0B, 0x31, 0x37, 0xE3, 0xA2, 0xCB, 0x47, 0x81, 0x72, 0x6A, 0x8D, 0x7C, 0x62 }, },	{ FALSE, 0xffffffff, EMhwlibScramblingBits_None, { 0xff, 0x55, 0x55, 0x55, 0xff, 0x55, 0x55, 0x55 },	 { 0x20, 0xEA, 0x10, 0xD2, 0xC1, 0x50, 0x97, 0x5F, 0x29, 0xCD, 0x2A, 0x43, 0xF8, 0x38, 0x81, 0x05 }, },	{ FALSE, 0xffffffff, EMhwlibScramblingBits_None, { 0x33, 0x11, 0x11, 0x11, 0x33, 0x11, 0x11, 0x11 },	 { 0x20, 0xEA, 0x10, 0x0B, 0x31, 0x37, 0xE3, 0xA2, 0xCB, 0x47, 0x81, 0x5A, 0x90, 0x63, 0x06, 0x7E }, },	{ FALSE, 0xffffffff, EMhwlibScramblingBits_None, { 0x66, 0x22, 0x22, 0x22, 0x66, 0x22, 0x22, 0x22 },	 { 0x20, 0xEA, 0x10, 0xB0, 0xB6, 0xA0, 0x39, 0xCD, 0xFD, 0x4F, 0x7F, 0x5A, 0x6A, 0xC4, 0x7A, 0x56 }, },};struct dvb_csa_key cweven_dvb_key_table[] = {	{ FALSE, 0xffffffff, EMhwlibScramblingBits_None, { 0x34, 0x18, 0x3c, 0xe0, 0x41, 0xc2, 0x03, 0x7c },	 { 0x00, 0x00, 0x00, 0x00, 0x91, 0x01, 0x02, 0x05, 0xFF, 0x02, 0x00, 0x17, 0x14, 0x00, 0x6E, 0x26 }, },};struct dvb_csa_key cwodd_dvb_key_table[] = {	{ FALSE, 0xffffffff, EMhwlibScramblingBits_None, { 0x7e, 0x7e, 0x00, 0x00, 0xc8, 0x03, 0xc6, 0xff },	 { 0x00, 0x00, 0x00, 0x00, 0x91, 0x01, 0x02, 0x05, 0xFF, 0x02, 0x00, 0x17, 0x15, 0x00, 0x8F, 0x26 }, },};	struct dvb_csa_key ecm1_dvb_key_table[] = {	{ TRUE, 0, EMhwlibScramblingBits_11, { 0x8b, 0xbe, 0xba, 0x13, 0x69, 0xb2, 0xfb, 0xbc },	 { 0x0F, 0x0E, 0x0D, 0x0C, 0x0B, 0x0A, 0x09, 0x08, 0x07, 0x06, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00 },	  ECM0_SECTION_ENTRY }, /* 1ECM key starts from LSB (byte 0) */};	struct dvb_csa_key ecm4_dvb_key_table[] = {	/* to prove that ECM parsing is Ok invalidate key_byte_counter and scrambling settings */	{  FALSE, 0xffffffff, EMhwlibScramblingBits_None, /*0x00000000, EMhwlibScramblingBits_10,*/ { 0x5e, 0x2d, 0x29, 0x08, 0xbd, 0x2d, 0x61, 0x2f },	 { 0x00, 0x02, 0x2D, 0x5E, 0xE4, 0x00, 0x49, 0x15, 0x09, 0x04, 0x00, 0x00, 0x01, 0x4D, 0x04, 0x4E }, },	{  FALSE, 0xffffffff, EMhwlibScramblingBits_None, /*0x00E3F3F0, EMhwlibScramblingBits_11,*/ { 0x5c, 0x2c, 0x28, 0x08, 0xba, 0x2c, 0x60, 0x2e },	 { 0x00, 0x02, 0x2C, 0x5C, 0xE4, 0x00, 0x45, 0x15, 0x09, 0x04, 0x00, 0x00, 0x01, 0x4D, 0x04, 0x4E }, },	{  FALSE, 0xffffffff, EMhwlibScramblingBits_None, /*0x01E61c00, EMhwlibScramblingBits_10,*/ { 0x62, 0x2f, 0x2b, 0x08, 0xbf, 0x2f, 0x63, 0x2d },	 { 0x00, 0x02, 0x2F, 0x62, 0xE4, 0x00, 0x51, 0x15, 0x09, 0x04, 0x00, 0x00, 0x01, 0x4D, 0x04, 0x4E }, },	{  FALSE, 0xffffffff, EMhwlibScramblingBits_None, /*0x02e56880, EMhwlibScramblingBits_11,*/ { 0x60, 0x2e, 0x2a, 0x08, 0xbc, 0x2e, 0x62, 0x2c },	 { 0x00, 0x02, 0x2E, 0x60, 0xE4, 0x00, 0x4D, 0x15, 0x09, 0x04, 0x00, 0x00, 0x01, 0x4D, 0x04, 0x4E }, },};/* CWtest.trp */struct dvb_csa_key cwtest_dvb_key_table[] = {	{ TRUE, 0, EMhwlibScramblingBits_10, { 0x15, 0x83, 0xfa, 0x98, 0xbf, 0x8e, 0xca, 0x67 },	 { 0x0F, 0x0E, 0x0D, 0x0C, 0x0B, 0x0A, 0x09, 0x08, 0x07, 0x06, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00 },	  ECM0_SECTION_ENTRY }, /* CWtest even key starts from LSB (byte 0) */	{ TRUE, 0, EMhwlibScramblingBits_11, { 0x34, 0x23, 0x48, 0xc9, 0xb3, 0x42, 0xfd, 0x74 },	 { 0x0F, 0x0E, 0x0D, 0x0C, 0x0B, 0x0A, 0x09, 0x08, 0x07, 0x06, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00 },	  ECM0_SECTION_ENTRY }, /* CWtest odd key starts from LSB (byte 0) */};/* vgs3.mpg */struct dvb_csa_key vgs3_dvb_key_table[] = {	/* to prove that ECM parsing is Ok invalidate key_byte_counter and scrambling settings */	{  FALSE, 0xffffffff, EMhwlibScramblingBits_None, { 0x7A, 0x03, 0xFF, 0x78, 0x74, 0x80, 0x01, 0xF3 },	 { 0x00, 0x00, 0x00, 0x00, 0x91, 0x01, 0x02, 0x05, 0xFF, 0x02, 0x00, 0x17, 0x64, 0x00, 0xBA, 0x26 }, },	{  FALSE, 0xffffffff, EMhwlibScramblingBits_None, { 0x8B, 0x3F, 0x0E, 0x3E, 0x7E, 0x00, 0x78, 0x06 },	 { 0x00, 0x00, 0x00, 0x00, 0x91, 0x01, 0x02, 0x05, 0xFF, 0x02, 0x00, 0x17, 0x65, 0x00, 0xC0, 0x26 }, },	{  FALSE, 0xffffffff, EMhwlibScramblingBits_None, { 0x20, 0x60, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00 },	 { 0x00, 0x00, 0x00, 0x00, 0x91, 0x01, 0x02, 0x05, 0xFF, 0x02, 0x00, 0x17, 0x66, 0x00, 0xC6, 0x26 }, },	{  FALSE, 0xffffffff, EMhwlibScramblingBits_None, { 0xAF, 0x00, 0xE0, 0xCF, 0xF8, 0x00, 0x00, 0xF8 },	 { 0x00, 0x00, 0x00, 0x00, 0x91, 0x01, 0x02, 0x05, 0xFF, 0x02, 0x00, 0x17, 0x67, 0x00, 0xCC, 0x26 }, },};/* suitei05_KDDI_DRM.m2t */struct aes_key skf_aes_key_table[] = {	{ TRUE, 0, EMhwlibScramblingBits_10_11, { 0xEA, 0x0C, 0xC2, 0xAA, 0xFE, 0x98, 0x46, 0xB8, 0x9A, 0xA0, 0xC2, 0xA0, 0xBC, 0x24, 0x1A, 0xB2 },	 { 0xA8, 0xF6, 0x7F, 0xD7, 0x53, 0x67, 0x64, 0x79, 0xBD, 0xCA, 0x94, 0x13, 0xB7, 0xB1, 0xB6, 0xBE },	 { 0x0F, 0x0E, 0x0D, 0x0C, 0x0B, 0x0A, 0x09, 0x08, 0x07, 0x06, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00 },	  ECM0_SECTION_ENTRY }, /* KDDI_DRM even/odd key starts from LSB (byte 0) */};/* dsodd.ts */struct aes_key dsodd_aes_key_table[] = {	{ TRUE, 0, EMhwlibScramblingBits_11, { 0xBA, 0x8C, 0x51, 0xC2, 0x84, 0x5D, 0x40, 0xB3, 0xBA, 0x8C, 0x51, 0xC2, 0x84, 0x5D, 0x40, 0xB3 },	 { 0, },	 { 0x0F, 0x0E, 0x0D, 0x0C, 0x0B, 0x0A, 0x09, 0x08, 0x07, 0x06, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00 },	  ECM0_SECTION_ENTRY }, /* KDDI_DRM even/odd key starts from LSB (byte 0) */};/* scrambled.ts */struct aes_key scrambled_aes_key_table[] = {	{ FALSE, 0xffffffff, EMhwlibScramblingBits_10, { 0xaa, 0xc0, 0xb9, 0xf4, 0x26, 0xdf, 0x3f, 0xc9, 0xaa, 0xc0, 0xb9, 0xf4, 0x26, 0xdf, 0x3f, 0xc9 },	 {0,},	 { 0x75, 0x21, 0x00, 0x00, 0x3A, 0x95, 0x81, 0xAF, 0x00 }, ECM0_SECTION_ENTRY },};/* dscps.ts */struct aes_key dscps_aes_key_table[] = {	/* 0x81 in bitstream */	{ FALSE, 0xffffffff, EMhwlibScramblingBits_11, { 0x32, 0xB3, 0x7C, 0x41, 0xF2, 0xFE, 0xE9, 0x30, 0x32, 0xB3, 0x7C, 0x41, 0xF2, 0xFE, 0xE9, 0x30 },	 {0,},	 { 0x7F, 0x77, 0x00, 0x00, 0x42, 0xD6, 0x24, 0x99, 0x00 }, ECM0_SECTION_ENTRY },		/* 0x80 in bitstream */	{ FALSE, 0xffffffff, EMhwlibScramblingBits_10, { 0xA5, 0x2D, 0xA5, 0xF5, 0x45, 0xF3, 0xE4, 0xA7, 0xA5, 0x2D, 0xA5, 0xF5, 0x45, 0xF3, 0xE4, 0xA7 },	 {0,},	 { 0x7F, 0x77, 0x00, 0x00, 0x42, 0xD6, 0x25, 0xB7, 0x00 }, ECM0_SECTION_ENTRY },		/* 0x81 in bitstream */	{ FALSE, 0xffffffff, EMhwlibScramblingBits_11, { 0x5F, 0xDB, 0xFF, 0x19, 0x71, 0x4F, 0x37, 0xBE, 0x5F, 0xDB, 0xFF, 0x19, 0x71, 0x4F, 0x37, 0xBE },	 {0,},	 { 0x7F, 0x77, 0x00, 0x00, 0x42, 0xD6, 0x26, 0xD5, 0x00 }, ECM0_SECTION_ENTRY },};/* ############## AES_CBC_PRECIPHER TEST CODE BEGIN ############## *//* hardcoded keys for pre-encrypted test files (ex: mummy.2keys.800000.aes.m2t) */struct aes_2keys_test precipher_aes_key_table[] = {	{	 0x800000,EMhwlibScramblingBits_PreCipher,	{0x49,0x03,0x29,0xba,0x3d,0x90,0x46,0xbc,0x74,0x89,0x59,0xc5,0x38,0x7a,0xe4,0x56},	{0xd9,0xb7,0x51,0xdb,0xd7,0x9e,0x69,0x44,0x3c,0xda,0xa0,0xbe,0xef,0x2e,0xe8,0x8c},	{0xb2,0xea,0x87,0x02,0x53,0x17,0xe8,0x07,0x46,0x44,0x41,0x5e,0xe7,0x59,0xf4,0x72},	{0xe8,0x8d,0x6f,0xd8,0x7e,0x4d,0xe5,0xe7,0x71,0xe0,0xcd,0x3e,0x2c,0x2c,0x0c,0xa8},	},};/* ############## AES_CBC_PRECIPHER TEST CODE END ############### */struct dvb_arib_key arib_key_table[] = {	{ { 0xE2, 0x49, 0xA7, 0x1D, 0xA6, 0x48, 0xBA, 0xBE, 0xF4, 0x29, 0x58, 0x2B, 0x2C, 0x68, 0xC1, 0x81, },	  { 0x98, 0x7D, 0x2E, 0x0D, 0x84, 0x40, 0x4E, 0xB7, 0xB7, 0x4B, 0x9D, 0x68, 0x21, 0x39, 0x99, 0xEC,	    0x1B, 0x6C, 0xC3, 0xC4, 0xF5, 0x9C, 0xDF, 0x32, 0x5C, 0xEA, 0x17, 0x4B, 0x66, 0x04, 0x31, 0x36, },	  { 0x11, 0x09, 0x69, 0x19, 0x99, 0x19, 0x27, 0xFE, },	  { 0xD0, 0xAF, 0x11, 0xA6, 0xFA, 0x13, 0x1D, 0x34, 0x4E, 0xA0, 0xFA, 0xC4, 0xC2, 0x0C, 0x70, 0x1B, },	  { 0x63eae700, 0xa1accee6, 0xf71707a4, 0x08f8ace8, 0xf366cfbd, 0x64cfc850, 0x27ff6a62, 0x04126080,	    0x55fd1194, 0x6e78f387, 0xde6e4a3f, 0x4987d49c, 0x445f67e5, 0xfca95599, 0x2c08bd3e, 0x1447c586,	    0x7f0a3136, 0x9079cc96, 0x805cbde7, 0x405f4583, 0x4448c1cc, 0xbb59bd71, 0xbbbcf7a6, 0xc6744312,	    0x6d4ed7ef, 0xb4466128, 0xd529efc9, 0x6f902f5a, 0xf94841f5, 0x44181d60, 0x03842c52, 0x3c4963f5,	    0xba74a409, 0x605ef98d, 0x845bdf08, 0x06fa2d42, 0x29f56633, 0xa6a8945c, 0x3fd4ff76, 0xa99c247a,	    0xbdda5524, 0x12a65b7b, 0x88b3bf26, 0x6a78efd1, 0x59a260ba, 0x6fe71a0c, 0x1ac7ff46, 0xcce4ba1b,	    0x622fd9ce, 0x243142c3, 0x4a039d1e, 0xdc06ddc4, 0xd68789c9, 0xce36a6ff, 0x0c7c5aea, 0x6e59663d,	    0x8b736213, 0x9b8d35f0, 0x93e7c015, 0x9ac106d5, 0x23f7ee91, 0x23c6fffd, 0x44b99318, 0x00a9e949, }, },	{ { 0xB4, 0x3E, 0x38, 0xEB, 0xA0, 0x73, 0x62, 0x61, 0xEC, 0x01, 0x7B, 0x88, 0xE2, 0xE9, 0x7F, 0xD5, },	  { 0x98, 0x7D, 0x2E, 0x0D, 0x84, 0x40, 0x4E, 0xB7, 0xB7, 0x4B, 0x9D, 0x68, 0x21, 0x39, 0x99, 0xEC,	    0x1B, 0x6C, 0xC3, 0xC4, 0xF5, 0x9C, 0xDF, 0x32, 0x5C, 0xEA, 0x17, 0x4B, 0x66, 0x04, 0x31, 0x36, },	  { 0x11, 0x09, 0x69, 0x19, 0x99, 0x19, 0x27, 0xFE, },	  { 0x2A, 0xBC, 0x37, 0x52, 0x30, 0xB5, 0xC9, 0x49, 0x4E, 0xA0, 0xFA, 0xC4, 0xC2, 0x0C, 0x70, 0x1B, },	  { 0x65eb57ba, 0x19efe18e, 0x9fc5ce64, 0x8d286cbb, 0x79214dc1, 0x1aa382d5, 0x91605333, 0xd80aba03,	    0x7911579f, 0x21a1408a, 0x0136fa74, 0xdbab6838, 0xaa60e766, 0x0e9f1b3e, 0xc2c03780, 0x4b4b52da,	    0x98725ee6, 0x80fbd90c, 0x1f258b51, 0x47676ee8, 0xd5ac63ab, 0x75c6f590, 0xae953af9, 0x7976f4c8,	    0x0dc37560, 0xb155cb06, 0xcf35f63a, 0x42469935, 0xee529072, 0x97e371f2, 0xb479538d, 0x3c89b5aa,	    0xba74a409, 0x605ef98d, 0x845bdf08, 0x06fa2d42, 0x29f56633, 0xa6a8945c, 0x3fd4ff76, 0xa99c247a,	    0xbdda5524, 0x12a65b7b, 0x88b3bf26, 0x6a78efd1, 0x59a260ba, 0x6fe71a0c, 0x1ac7ff46, 0xcce4ba1b,	    0x622fd9ce, 0x243142c3, 0x4a039d1e, 0xdc06ddc4, 0xd68789c9, 0xce36a6ff, 0x0c7c5aea, 0x6e59663d,	    0x8b736213, 0x9b8d35f0, 0x93e7c015, 0x9ac106d5, 0x23f7ee91, 0x23c6fffd, 0x44b99318, 0x00a9e949, }, },	{ { 0x6D, 0xB8, 0x47, 0x1E, 0x99, 0xB2, 0xF9, 0xED, 0x7C, 0x91, 0x24, 0x3C, 0x23, 0x3D, 0x2E, 0xEC, },	  { 0x98, 0x7D, 0x2E, 0x0D, 0x84, 0x40, 0x4E, 0xB7, 0xB7, 0x4B, 0x9D, 0x68, 0x21, 0x39, 0x99, 0xEC,	    0x1B, 0x6C, 0xC3, 0xC4, 0xF5, 0x9C, 0xDF, 0x32, 0x5C, 0xEA, 0x17, 0x4B, 0x66, 0x04, 0x31, 0x36, },	  { 0x11, 0x09, 0x69, 0x19, 0x99, 0x19, 0x27, 0xFE, },	  { 0xA3, 0x4F, 0x87, 0xF8, 0x27, 0x70, 0x3E, 0x3B, 0x44, 0x43, 0x39, 0x8F, 0x9D, 0x30, 0x33, 0x91, },	  { 0x288d43df, 0x316ed164, 0xc1ede267, 0x0fb8b188, 0x4ad1b17a, 0x8c30d4ab, 0x47c637b1, 0x185055c3,	    0xa1d2f97b, 0x2efd2e7d, 0x9f2d0f5d, 0x6992fe9a, 0xfb2aad74, 0x133a7135, 0x6f4708fb, 0x1d9a6245,	    0x3912bb08, 0x5e5621e2, 0x3abf3bba, 0x2d484f41, 0x5f9de0df, 0x8e94cc9c, 0xf3bc4f0c, 0xbd710599,	    0x6bfdf0f8, 0xed9bce5e, 0x9ac4dcb8, 0xebc22c22, 0xd5962918, 0xb14b3eac, 0x3fe8755b, 0x5a7a9c03,	    0x2ad75835, 0x4318e00c, 0x9193b6f8, 0x37280cc6, 0x24553178, 0x4dcab08f, 0x1f4e6bdc, 0x5892b3f9,	    0x1ea42a32, 0xf330848f, 0x7d03226e, 0xc8849a75, 0x556ab275, 0x370a40b7, 0xdda99d69, 0x98eb7590,	    0x8b9083a2, 0x82a2cab8, 0x272eeac2, 0x39f505f8, 0xaea6bcb1, 0xe8c9d493, 0xcc20afaf, 0x61e9656c,	    0x7c67c13b, 0x5b5de451, 0x449d1663, 0x28c4d381, 0x76b4a094, 0x542b1b28, 0x193bb0ce, 0x3a586d66, }, },	{ { 0x6D, 0xB8, 0x47, 0x1E, 0x99, 0xB2, 0xF9, 0xED, 0x82, 0x02, 0x56, 0x11, 0xD0, 0x66, 0x69, 0xF0, },	  { 0x98, 0x7D, 0x2E, 0x0D, 0x84, 0x40, 0x4E, 0xB7, 0xB7, 0x4B, 0x9D, 0x68, 0x21, 0x39, 0x99, 0xEC,	    0x1B, 0x6C, 0xC3, 0xC4, 0xF5, 0x9C, 0xDF, 0x32, 0x5C, 0xEA, 0x17, 0x4B, 0x66, 0x04, 0x31, 0x36, },	  { 0x11, 0x09, 0x69, 0x19, 0x99, 0x19, 0x27, 0xFE, },	  { 0xA3, 0x4F, 0x87, 0xF8, 0x27, 0x70, 0x3E, 0x3B, 0x23, 0x8D, 0xDD, 0x2A, 0x3D, 0x5F, 0xBF, 0x91, },	  { 0x288d43df, 0x316ed164, 0xc1ede267, 0x0fb8b188, 0x4ad1b17a, 0x8c30d4ab, 0x47c637b1, 0x185055c3,	    0xa1d2f97b, 0x2efd2e7d, 0x9f2d0f5d, 0x6992fe9a, 0xfb2aad74, 0x133a7135, 0x6f4708fb, 0x1d9a6245,	    0x3912bb08, 0x5e5621e2, 0x3abf3bba, 0x2d484f41, 0x5f9de0df, 0x8e94cc9c, 0xf3bc4f0c, 0xbd710599,	    0x6bfdf0f8, 0xed9bce5e, 0x9ac4dcb8, 0xebc22c22, 0xd5962918, 0xb14b3eac, 0x3fe8755b, 0x5a7a9c03,	    0x37a9811c, 0x9312c441, 0x21f80679, 0x91a822ce, 0xbe028206, 0xf17e1cde, 0x485be9a8, 0x795f4407,	    0xf35156ab, 0x49c9bbb1, 0x38690703, 0xde9e18a4, 0xf1bc541c, 0x09d0528f, 0xe5dda66f, 0x0e42d829,	    0x46bc56d4, 0x423a403f, 0xbd144876, 0xb51f15d0, 0x61f7ec01, 0x214b0079, 0x2ec7a612, 0x6332c283,	    0x9afa5e02, 0xab5775f6, 0x4779c462, 0x861b61ed, 0x9f84e814, 0xc2f9c1ec, 0x7c7c68e1, 0x082f75f8, }, },	};static RMstatus HwPlay(struct context_per_task *context);static RMstatus HwStop(struct context_per_task *context);static RMstatus OpenVideoDecoder(struct context_per_task *context);static void printTimeOfDay(struct timeval now){	RMuint64 secondsPerMinute = 60;	RMuint64 secondsPerHour = 60 * secondsPerMinute;	RMuint64 secondsPerDay = 24 * secondsPerHour;	RMuint64 today, h, m;	today = (now.tv_sec - ((now.tv_sec / secondsPerDay) * secondsPerDay));	h = today / secondsPerHour;	today -= h * secondsPerHour;	m = today / secondsPerMinute;	today -= m * secondsPerMinute;		fprintf(stderr, "time is %02llu:%02llu:%02llu.%llu\n", h, m, today, (RMuint64)now.tv_usec);}#define GET_DATA_FIFO_INFO(pRUA, ModuleId, checkStarvation)		\	{								\		struct DataFIFOInfo DataFIFOInfo;			\		RMreal fullness;					\		RUAGetProperty(pRUA, ModuleId, RMGenericPropertyID_DataFIFOInfo, &DataFIFOInfo, sizeof(DataFIFOInfo)); \		fullness = (RMreal)((100./DataFIFOInfo.Size)*DataFIFOInfo.Readable); \		fprintf(stderr, "Data %lx: st=%08lx sz=%ld wr=%ld rd=%ld --> f : %.02f\n", ModuleId, DataFIFOInfo.StartAddress,	\			DataFIFOInfo.Size, DataFIFOInfo.Writable,  DataFIFOInfo.Readable, fullness); \		if ((fullness < 2) && checkStarvation) {		\			struct timeval now;				\									\			gettimeofday(&now, NULL);			\			RMDBGLOG((ENABLE, "close to starvation at\n")); \			printTimeOfDay(now);				\		}							\	}								\#define GET_XFER_FIFO_INFO(pRUA, ModuleId, checkStarvation)		\	{								\		struct XferFIFOInfo_type XferFIFOInfo;			\		RMreal fullness;					\		RMstatus err;						\		err = RUAGetProperty(pRUA, ModuleId, RMGenericPropertyID_XferFIFOInfo, &XferFIFOInfo, sizeof(XferFIFOInfo)); \

⌨️ 快捷键说明

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