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

📄 zte_ca.h

📁 中兴提供的跨平台解码库的解码器的介绍源码和文档
💻 H
字号:
#ifndef _ZTE_CA_H#define _ZTE_CA_H#ifndef _WIN32#define EXPRORT_API extern "C"#else#define EXPRORT_API __declspec(dllexport)#endif#ifdef __cplusplusextern "C" {#endif/********************** 常数定义 **********************/#define CMMB_TITLE_SIZE 64/********************** 参数说明 **********************/#define IN#define OUT#define INOUTtypedef unsigned char byte;/********************** Structures **********************/typedef enum {	CA_OK,						// No Error	CA_OOM,						// Out of Memory	CA_HW_FAILURE,				// Hardware Failure	CA_TIMEOUT,					// Operation Timeout	CA_INVALID_PARAMETER,		// Invalid Operation	CA_PURCHASE_REQUIRED,		// Purchase operation required	CA_UNKNOWN_ERROR,			// Unknown Error} CA_RETURN;typedef struct {	void	*internal;			// Internal Data Structure for CA module} CA_DATA;typedef struct {	int 	id;					// Internal Use	int 	version[3];	char 	name[CMMB_TITLE_SIZE];	char 	vendor[CMMB_TITLE_SIZE];} CA_MODULE_INFO;typedef struct {	byte	uuid[8];			// Unique ID for the machine	byte	seriesid[8];		// Unique ID for the machine type	byte	manuid[8];			// Unique ID for the manufacturer	byte 	reserved[8];		// } CA_TERMINAL_INFO;typedef struct {	unsigned short	service_id;	// service id of scrambled sub-frame} CONDITIONAL_ACCESS;typedef enum {	CA_STATUS_IDLE,				// 没有被初始化前或者被卸载后的状态,在init后将到CA_MODULE_INITIALIZED	CA_STATUS_INITIALIZED,		// 已经初始化,shutdown后到CA_MODULE_IDLE	CA_STATUS_ERROR,			// 无法恢复的错误,需要shutdown} CA_MODULE_STATUS;/*********************** Function Definition *******************/typedef struct {	/*	* 检查CA硬件是否存在	*/	CA_RETURN (*ca_detect_module)(void);	/*	* 获取本CA的相关信息	* 	* Parameter:	*	module_info:		CA Module information as return	*/	CA_RETURN (*ca_get_module_information)(OUT CA_MODULE_INFO *module_info);	/*	* 初始化本CA,并选择本CA作为解扰CA	*	* Parameter:	*	ca_data			: 用于存放CA内部数据结构,在进行其他操作时作为参数传入	*	terminal_info	: 终端信息	*/	CA_RETURN (*ca_init_module)(OUT CA_DATA *ca_data, IN const CA_TERMINAL_INFO* terminal_info);	/*	* 卸载本CA	*	* Parameter:	*	ca_data			: CA内部数据结构	*/	CA_RETURN (*ca_shutdown_module)(IN CA_DATA *ca_data);	/*	* 传入EADT(加密授权描述表)	*	* Parameter:	*	ca_data			: CA内部数据结构	*	buffer			: EADT	*	size			: buffer长度	*/	CA_RETURN (*ca_send_EADT)(IN CA_DATA *ca_data, IN byte *buffer, IN int size);	/*	* 传入ESGBDT(ESG基本描述表)	*	* Parameter:	*	ca_data			: CA内部数据结构	*	buffer			: ESGBDT	*	size			: buffer长度	*/	CA_RETURN (*ca_send_ESGBDT)(IN CA_DATA *ca_data, IN byte *buffer, IN int size);	/*	* 传入ESG,如果ESG包括在有已加扰音视频的子帧中,则通过ca_descramble接口进行传输	*	* Parameter:	*	ca_data			: CA内部数据结构	*	buffer			: ESG	*	size			: buffer长度	*/	CA_RETURN (*ca_send_ESG)(IN CA_DATA *ca_data, IN byte *buffer, IN int size);	/*	* 传入EMM(授权管理信息)	*	* Parameter:	*	ca_data			: CA内部数据结构	*	buffer			: EMM复用子帧	*	size			: buffer长度	*/	CA_RETURN (*ca_send_EMM)(IN CA_DATA *ca_data, IN byte *buffer, IN int size);	/*	* 传入ECM(授权控制信息),如果ECM包含在有已加扰音视频的子帧中,则通过ca_descramble接口进行传输	*	* Parameter:	*	ca_data			: CA内部数据结构	*	buffer			: ECM	*	size			: buffer长度	*/	CA_RETURN (*ca_send_ECM)(IN CA_DATA *ca_data, IN byte *buffer, IN int size);	/*	* 解扰子帧,会改变单元长度和单元内容及对应crc,如果子帧数据段包括ECM/ESG等数据,则不改变原有数据段,只从中获取需要的信息	* 	* Parameter:	*	ca_data			: CA内部数据结构	*	ca				: 解扰子帧相关数据	*	ibuffer			: 加扰的子帧	*	isize			: ibuffer长度	*	obuffer			: 解扰后子帧buffer,长度为2*isize	*	osize			: 解扰后子帧实际长度	*/	CA_RETURN (*ca_descramble)(IN CA_DATA *ca_data, IN CONDITIONAL_ACCESS *ca, IN byte *ibuffer, IN int isize, OUT byte *obuffer, OUT int *osize);	/*	* 获取CA状态	*	* Parameter:	*	status			: CA当前状态,可以在其他调用后使用,来查询CA状态	*/	CA_RETURN (*ca_get_status)(OUT CA_MODULE_STATUS *status);} CA_MODULE_OPERATIONS;/** 获取CA_MODULE_OPERATIONS** Parameter:*	CA_MODULE_OPERATIONS	: CA操作列表,如果某个函数指针为NULL,则表示不支持该操作*/EXPRORT_API void ca_module(OUT CA_MODULE_OPERATIONS *module);#ifdef __cplusplus}#endif#endif // _ZTE_CA_H

⌨️ 快捷键说明

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