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

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

?? psfdemux_drm.c

?? SigmDesign SMP8634 media decode chip development SDK
?? C
?? 第 1 頁 / 共 5 頁
字號:
/* * * 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 * and merge it with RMDRM lib. * *********************************************************** *//**   @file psfdemux_drm.c   @brief drm 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 "psfdemux_common.h"#if (ALLOW_LIBRMARIB)#include <dlfcn.h>#endif#if 0#define LOCALDBG ENABLE#else#define LOCALDBG DISABLE#endif#if 0#define CALLDBG ENABLE#else#define CALLDBG DISABLE#endif#if 0#define KEYDBG ENABLE#else#define KEYDBG DISABLE#endif/**************************** application types *******************************/RMstatus DvbKeyInband(struct context_per_task *context, RMuint8 ecm_entry, enum EMhwlibScramblingBits scrambling, RMuint8 *pkey, RMuint32 key_size){	RMuint32 size;	RMuint32 offset = (ecm_entry == ECM0_SECTION_ENTRY) ? 0 : 1;	struct DemuxTask_InbandKeyChange_type ibc;		RUAGetProperty(context->pRUA, context->demux_task, RMDemuxTaskPropertyID_InbandFifoWritableSize, &size, sizeof(size));	if (size == 0) {		RMDBGLOG((LOCALDBG, "********************** insufficient InbandFifoWritableSize\n"));		return RM_INSUFFICIENT_SIZE;	}		/* set the key using inband command */	if (scrambling == EMhwlibScramblingBits_10) {		ibc.key_index = context->key_index[(offset << 1) + 0];		RMDBGLOG((ENABLE, "********************** DvbKeyInband Even *********************************\n"));	}	else if (scrambling == EMhwlibScramblingBits_11) {		ibc.key_index = context->key_index[(offset << 1) + 1];		RMDBGLOG((ENABLE, "********************** DvbKeyInband Odd *********************************\n"));	}	else if (scrambling == EMhwlibScramblingBits_10_11) {		ibc.key_index = context->key_index[(offset << 1) + 0];		RMDBGLOG((ENABLE, "********************** DvbKeyInband Even+Odd *********************************\n"));	}	{		struct DemuxTask_DVBCSAKey_type dvb_key;		dvb_key.key_index = ibc.key_index;		RMMemcpy(dvb_key.key, pkey, key_size);		/* do DVBCSA conformance mechanism */		dvb_key.key[0] = (dvb_key.key[1] + dvb_key.key[2] + dvb_key.key[3])%256;		dvb_key.key[4] = (dvb_key.key[5] + dvb_key.key[6] + dvb_key.key[7])%256;		RUASetProperty(context->pRUA, context->demux_task, RMDemuxTaskPropertyID_DVBCSAKey, &dvb_key, sizeof(dvb_key), 0);	}	//fprintf(stderr, "DvbKeyInband key_index=%ld, cipher_index=%ld\n", ibc.key_index, context->cipher_index[offset]);		/* set key for entry 0 in CipherTable */	ibc.cipher_index = context->cipher_index[offset];	ibc.scrambling = scrambling;	ibc.offset_control = EMhwlibInbandOffset_Ignore;	ibc.offset_value = 0;	return RUASetProperty(context->pRUA, context->demux_task, RMDemuxTaskPropertyID_InbandKeyChange, &ibc, sizeof(ibc), 0);}RMstatus DvbKeyOutband(struct context_per_task *context, RMuint8 ecm_entry, enum EMhwlibScramblingBits scrambling, RMuint8 *pkey, RMuint32 key_size){	RMuint32 offset = (ecm_entry == ECM0_SECTION_ENTRY) ? 0 : 1;	struct DemuxTask_DVBCSAKey_type dvb_key;	struct DemuxTask_OutbandKeyChange_type outband;		/* set the key using outband command */	if (scrambling == EMhwlibScramblingBits_10) {		outband.key_index = context->key_index[(offset << 1) + 0];		RMDBGLOG((ENABLE, "********************** DvbKeyOutband Even *********************************\n"));	}	else if (scrambling == EMhwlibScramblingBits_11) {		outband.key_index = context->key_index[(offset << 1) + 1];		RMDBGLOG((ENABLE, "********************** DvbKeyOutband Odd *********************************\n"));	}	else if (scrambling == EMhwlibScramblingBits_10_11) {		outband.key_index = context->key_index[(offset << 1) + 0];		RMDBGLOG((ENABLE, "********************** DvbKeyOutband Even+Odd *********************************\n"));	}	dvb_key.key_index = outband.key_index;	RMMemcpy(dvb_key.key, pkey, key_size);	/* do DVBCSA conformance mechanism */	dvb_key.key[0] = (dvb_key.key[1] + dvb_key.key[2] + dvb_key.key[3])%256;	dvb_key.key[4] = (dvb_key.key[5] + dvb_key.key[6] + dvb_key.key[7])%256;	RUASetProperty(context->pRUA, context->demux_task, RMDemuxTaskPropertyID_DVBCSAKey, &dvb_key, sizeof(dvb_key), 0);		/* set key index for entry 0 in CipherTable */	outband.cipher_index = context->cipher_index[offset];	outband.cipher_type = EMhwlibCipher_DVBCSA;	outband.scrambling = scrambling;	return RUASetProperty(context->pRUA, context->demux_task, RMDemuxTaskPropertyID_OutbandKeyChange, &outband, sizeof(outband), 0);}RMstatus AESKeyInband(struct context_per_task *context, RMuint8 ecm_entry, enum EMhwlibScramblingBits scrambling, RMuint8 *pkey, RMuint8 *piv, RMuint32 key_size){	RMuint32 size;	struct DemuxTask_InbandKeyChange_type ibc;	RMuint32 offset = (ecm_entry == ECM0_SECTION_ENTRY) ? 0 : 1;	struct DemuxTask_AESKey_type aes_key;		RUAGetProperty(context->pRUA, context->demux_task, RMDemuxTaskPropertyID_InbandFifoWritableSize, &size, sizeof(size));	if (size == 0) {		RMDBGLOG((LOCALDBG, "********************** insufficient InbandFifoWritableSize\n"));		return RM_INSUFFICIENT_SIZE;	}		/* set the key using inband command */	// assuming the first two keys are associated with cipher 0	ibc.cipher_index = 0;	if (scrambling == EMhwlibScramblingBits_10) {		ibc.key_index = context->key_index[(offset << 1) + 0];		RMDBGLOG((KEYDBG, "AESKeyInband Even cipher_index %d key_index %d\n", ibc.cipher_index, ibc.key_index));	}	else if (scrambling == EMhwlibScramblingBits_11) {		ibc.key_index = context->key_index[(offset << 1) + 1];		RMDBGLOG((KEYDBG, "AESKeyInband Odd cipher_index %d key_index %d\n", ibc.cipher_index, ibc.key_index));	}	else if (scrambling == EMhwlibScramblingBits_10_11) {		ibc.key_index = context->key_index[(offset << 1) + 0];		RMDBGLOG((KEYDBG, "AESKeyInband Even+Odd cipher_index %d key_index %d\n", ibc.cipher_index, ibc.key_index));	}	aes_key.key_index = ibc.key_index;	aes_key.key_size = key_size; // 16 bytes	RMMemcpy(aes_key.key, pkey, key_size);	RMMemcpy(aes_key.iv, piv, key_size);	RMDBGLOG((KEYDBG, "AESKey key_index %d key_size %d\n", aes_key.key_index, aes_key.key_size));	RUASetProperty(context->pRUA, context->demux_task, RMDemuxTaskPropertyID_AESKey, &aes_key, sizeof(aes_key), 0);		/* set key for entry 0 in CipherTable */	ibc.cipher_index = context->cipher_index[offset];	ibc.scrambling = scrambling;	ibc.offset_control = EMhwlibInbandOffset_Ignore;	ibc.offset_value = 0;	RMDBGLOG((KEYDBG, "Key change cipher_index %d key_index %d scrambling bits %d  inband no offset\n\n", ibc.cipher_index, ibc.key_index, ibc.scrambling));	return RUASetProperty(context->pRUA, context->demux_task, RMDemuxTaskPropertyID_InbandKeyChange, &ibc, sizeof(ibc), 0);}RMstatus AESKeyOutband(struct context_per_task *context, RMuint8 ecm_entry, enum EMhwlibScramblingBits scrambling, RMuint8 *pkey, RMuint8 *piv, RMuint32 key_size){	RMuint32 offset = (ecm_entry == ECM0_SECTION_ENTRY) ? 0 : 1;	struct DemuxTask_AESKey_type aes_key;	struct DemuxTask_OutbandKeyChange_type outband;		/* set the key using outband command */	if (scrambling == EMhwlibScramblingBits_10) {		outband.key_index = context->key_index[(offset << 1) + 0];		RMDBGLOG((KEYDBG, "********************** AesKeyOutband Even *********************************\n"));	}	else if (scrambling == EMhwlibScramblingBits_11) {		outband.key_index = context->key_index[(offset << 1) + 1];		RMDBGLOG((KEYDBG, "********************** AesKeyOutband Odd *********************************\n"));	}	else if (scrambling == EMhwlibScramblingBits_10_11) {		outband.key_index = context->key_index[(offset << 1) + 0];		RMDBGLOG((KEYDBG, "********************** AesKeyOutband Even+Odd *********************************\n"));	}	aes_key.key_index = outband.key_index;	aes_key.key_size = key_size; // 16 bytes	RMMemcpy(aes_key.key, pkey, key_size);	RMMemcpy(aes_key.iv, piv, key_size);	RUASetProperty(context->pRUA, context->demux_task, RMDemuxTaskPropertyID_AESKey, &aes_key, sizeof(aes_key), 0);		/* set key index for entry 0 in CipherTable */	outband.cipher_index = context->cipher_index[offset];	outband.cipher_type = EMhwlibCipher_AES;	outband.scrambling = scrambling;	return RUASetProperty(context->pRUA, context->demux_task, RMDemuxTaskPropertyID_OutbandKeyChange, &outband, sizeof(outband), 0);}/* ############## AES_CBC_PRECIPHER CODE BEGIN ############## */RMstatus AESKeyPrecipherInband(struct RUA *Context_RUA,RMuint32 Context_demux_task,enum EMhwlibScramblingBits scrambling, RMuint8 *pkey, RMuint8 *piv, RMuint32 key_size,RMuint32 inband_state){	RMstatus err;	RMuint32 size = 0;	struct DemuxTask_InbandKeyChange_type ibc;	struct DemuxTask_AESKey_type aes_key;	struct DemuxTask_PreprocessCipher_type ppc;	/*********** write AES Key *************************/	aes_key.key_index = (inband_state&1)?1:0;	aes_key.key_size = key_size;	RMMemcpy(aes_key.key,pkey, key_size);	RMMemcpy(aes_key.iv ,piv , key_size);                                                                                                                             	err=RUASetProperty(Context_RUA, Context_demux_task, RMDemuxTaskPropertyID_AESKey, &aes_key, sizeof(aes_key), 0);	if (RMFAILED(err)){		RMDBGLOG((ENABLE, "AESKeyPrecipherInband :error AESKey\n"));		return RM_ERROR;	}	/*********** Set PreprocessCipher *******************/	if (inband_state == 0) {		ppc.enable = TRUE;		ppc.cipher_index = 0;		err = RUASetProperty(Context_RUA, Context_demux_task, RMDemuxTaskPropertyID_PreprocessCipher, &ppc, sizeof(ppc), 0);		if (RMFAILED(err)) {			RMDBGLOG((ENABLE, "AESKeyPrecipherInband:error PreprocessCipher\n"));			return RM_ERROR;		}	}	/********** InbandFifoWritableSize *****************/	err = RUAGetProperty(Context_RUA, Context_demux_task, RMDemuxTaskPropertyID_InbandFifoWritableSize, &size, sizeof(size));	if (size == 0 || RMFAILED(err)) {		RMDBGLOG((ENABLE, "********************** insufficient InbandFifoWritableSize\n"));		return RM_ERROR;	}		/*** Inband Key Change: set key_index 0 or 1 for cipher entry 0 in CipherTable ***/	ibc.key_index = (inband_state & 1);	ibc.cipher_index = 0;	ibc.scrambling = scrambling;	ibc.offset_control = EMhwlibInbandOffset_Ignore;	ibc.offset_value = 0;	err = RUASetProperty(Context_RUA, Context_demux_task, RMDemuxTaskPropertyID_InbandKeyChange, &ibc, sizeof(ibc), 0);		if (RMFAILED(err)) {		RMDBGLOG((ENABLE, "AESKeyPrecipherInband :error InbandKeyChange"));		return RM_ERROR;	}		return RM_OK;}/* ############## AES_CBC_PRECIPHER CODE END ############### *//************************************************************************ * Use Inband command through demuxhw writing multi2 key into table ************************************************************************/RMstatus Multi2KeyInband(struct context_per_task *context, RMuint32 index, enum key_type key_type){	RMuint32	size;	RMstatus	err = RM_OK;	struct		DemuxTask_InbandKeyChange_type ibc;	struct		arib_key_band *ecm_key;		RUAGetProperty(context->pRUA, context->demux_task, RMDemuxTaskPropertyID_InbandFifoWritableSize, &size, sizeof(size));	if (size == 0) {		RMDBGLOG((LOCALDBG, "********************** insufficient InbandFifoWritableSize\n"));		return RM_INSUFFICIENT_SIZE;	}		ecm_key = &(context->arib_key_table[index]);	/*	 * Reuse the already allocated entry in the Multi2Table	 */	ibc.key_index = ecm_key->multi2_key.key_index;	/*	 * Setup Multi2Table for demux task	 */	err = RUASetProperty(context->pRUA, context->demux_task, RMDemuxTaskPropertyID_Multi2Key, &(ecm_key->multi2_key), sizeof(struct DemuxTask_Multi2Key_type), 0);	if (RMFAILED(err)) {		RMDBGLOG((ENABLE, "Error RMDemuxTaskPropertyID_Multi2Key\n"));		return(err);	}		/*	 * Already setup ciphertable index?	 */	if (!ecm_key->ciphertable_done) {		/*		 * scrambling = ? offset_control = ? offset_value = ?		 */		if (key_type == EVEN_KEY) {			ecm_key->scrambling = EMhwlibScramblingBits_10;		}		else {			ecm_key->scrambling = EMhwlibScramblingBits_11;		}		ecm_key->offset_control = EMhwlibInbandOffset_Absolute;		ecm_key->offset_value = context->file_byte_counter;		/*		 * Set key for entry #emc_key->index_cipher_table in CipherTable		 */		ibc.cipher_index = ecm_key->index_cipher_table;		ibc.scrambling = ecm_key->scrambling;		ibc.offset_control = ecm_key->offset_control;		ibc.offset_value = ecm_key->offset_value;		err = RUASetProperty(context->pRUA, context->demux_task, RMDemuxTaskPropertyID_InbandKeyChange, &ibc, sizeof(ibc), 0);		if (RMFAILED(err)) {			RMDBGLOG((ENABLE, "Error RMDemuxTaskPropertyID_InbandKeyChange\n"));			return(err);		}		ecm_key->ciphertable_done = TRUE;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩av成人高清| 亚洲午夜国产一区99re久久| 91视频在线观看| 亚洲日本欧美天堂| 在线播放视频一区| 国产精品1024| 日本不卡的三区四区五区| 久久久久九九视频| 91麻豆精品国产91久久久更新时间| 久久精品72免费观看| 亚洲桃色在线一区| 久久嫩草精品久久久精品一| 色av成人天堂桃色av| 高清不卡在线观看av| 日韩黄色小视频| 久久久天堂av| 日韩精品中文字幕一区| 一本色道久久综合狠狠躁的推荐 | 看片的网站亚洲| 亚洲色图.com| 精品久久久久久久久久久久久久久| 成人白浆超碰人人人人| 久久成人免费电影| 一区二区三区在线免费| 久久噜噜亚洲综合| 91精品久久久久久久99蜜桃| 在线观看免费一区| 成人免费高清在线| 精品一区二区免费| 久久成人精品无人区| 亚洲成av人**亚洲成av**| 一区二区三区在线视频观看58| 国产日产亚洲精品系列| 久久久亚洲欧洲日产国码αv| 欧美三级日本三级少妇99| 成人视屏免费看| 国产综合一区二区| 亚洲精品成a人| 一区二区三区免费观看| 亚洲天堂成人网| 国产精品国产自产拍高清av| 精品欧美一区二区在线观看| 日韩欧美国产不卡| 欧美日韩不卡一区| 91精品久久久久久久99蜜桃| 欧美日本高清视频在线观看| 成人影视亚洲图片在线| 成人精品一区二区三区四区| 国产揄拍国内精品对白| 国产电影精品久久禁18| 日韩中文字幕av电影| 蜜桃传媒麻豆第一区在线观看| 日韩在线一二三区| 亚洲国产一区视频| 日本亚洲欧美天堂免费| 亚洲成人tv网| 免费一级片91| 精品一区二区三区久久| 国产成人综合在线| 大桥未久av一区二区三区中文| 波多野结衣的一区二区三区| 大陆成人av片| 成人中文字幕电影| 99国产精品视频免费观看| 99久久国产综合精品女不卡| 欧美综合色免费| 欧美日韩国产三级| 精品久久久久香蕉网| 久久无码av三级| 久久伊99综合婷婷久久伊| 久久久久国产精品麻豆ai换脸| 亚洲精品一区二区三区在线观看| 国产欧美一区二区三区沐欲 | 一级做a爱片久久| 一二三区精品视频| 免费人成黄页网站在线一区二区| 美女一区二区在线观看| 国产乱码精品1区2区3区| 色噜噜偷拍精品综合在线| 91国在线观看| 久久综合久久久久88| 久久精品亚洲麻豆av一区二区| 一区二区久久久久| 蜜臀久久99精品久久久久宅男| 国产精品羞羞答答xxdd| 99久久精品免费精品国产| 欧美日韩中文一区| 国产欧美一区二区精品秋霞影院| 最新日韩av在线| 免费成人av在线播放| 国产成人8x视频一区二区 | 欧美一级视频精品观看| 国产精品无人区| 亚洲一区二区三区精品在线| 亚洲一区在线播放| 国产成人av在线影院| 在线观看av不卡| 欧美韩日一区二区三区四区| 亚洲午夜国产一区99re久久| 成人黄色一级视频| 欧美日韩和欧美的一区二区| 国产精品区一区二区三| 五月婷婷激情综合网| av中文字幕一区| 精品国产自在久精品国产| 中文av一区二区| 九九九精品视频| 日本高清无吗v一区| 欧美国产禁国产网站cc| 午夜激情综合网| 日本黄色一区二区| 国产网站一区二区三区| 精品无码三级在线观看视频| 91久久精品国产91性色tv| 中文字幕乱码日本亚洲一区二区| 日韩国产一二三区| 欧美视频日韩视频| 国产精品久久久久天堂| 亚洲成人中文在线| 97精品视频在线观看自产线路二| 欧美人妖巨大在线| 亚洲国产综合91精品麻豆 | 制服丝袜亚洲色图| 国产精品少妇自拍| 国产电影一区在线| 欧美刺激午夜性久久久久久久 | 国产精品久久久久影视| 丝袜美腿一区二区三区| 色94色欧美sute亚洲线路二| 国产免费成人在线视频| 免费成人深夜小野草| 欧美午夜宅男影院| 亚洲色图在线播放| 丁香亚洲综合激情啪啪综合| 精品电影一区二区三区| 亚洲精品欧美二区三区中文字幕| 国内成人免费视频| 日韩午夜av一区| 日本免费在线视频不卡一不卡二| 欧美日韩中文国产| 亚洲电影一区二区三区| 9人人澡人人爽人人精品| 中文字幕一区二区三区四区不卡| 热久久国产精品| 欧美日韩黄色一区二区| 日韩激情在线观看| 717成人午夜免费福利电影| 亚洲成人av一区二区| 欧美剧在线免费观看网站| 日韩精品电影一区亚洲| 欧美日韩精品一区二区天天拍小说 | 白白色亚洲国产精品| 久久久久久久久久久黄色| 国产电影一区二区三区| 国产欧美视频一区二区| 国产高清不卡一区| 国产精品网站在线| 91丨九色porny丨蝌蚪| 亚洲天天做日日做天天谢日日欢| 国产精品你懂的在线欣赏| 91一区二区在线| 亚洲一区二区免费视频| 日韩午夜在线观看| 精品制服美女久久| 国产精品三级久久久久三级| av高清久久久| 天天综合网 天天综合色| 91精品国产综合久久福利| 国产剧情av麻豆香蕉精品| 国产日韩影视精品| 欧美伊人久久久久久久久影院| 亚洲午夜日本在线观看| 精品处破学生在线二十三| 国产精品一区二区三区乱码| 亚洲美女免费视频| 欧美日韩综合在线免费观看| 韩国av一区二区三区四区| 欧美极品少妇xxxxⅹ高跟鞋 | 在线观看日韩高清av| 一区二区日韩av| 久久夜色精品国产噜噜av| 免费观看日韩av| 国产精品国产精品国产专区不蜜| 99精品久久只有精品| 视频一区二区中文字幕| 欧美不卡一区二区| 在线观看日产精品| 美腿丝袜亚洲一区| 亚洲一区自拍偷拍| 日韩欧美亚洲一区二区| 色综合久久综合| 国产精品538一区二区在线| 亚洲综合丝袜美腿| 国产三级一区二区三区| 93久久精品日日躁夜夜躁欧美| 亚洲一卡二卡三卡四卡无卡久久| ww亚洲ww在线观看国产| 欧洲精品一区二区三区在线观看| 美女免费视频一区二区| 国产精品国产a|