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

📄 engine.c

📁 TI workshop 培训资料。 是关于如何创建DAVINCI平台下codec engine
💻 C
字号:
/* Standard Linux headers */#include <stdio.h>	//  Always include this header#include <stdlib.h>	//  Always include this header#include <string.h>     //  definition of strcmp/* Codec Engine headers */#include <xdc/std.h>			// xdc base definitions. Must come 1st#include <ti/sdo/ce/Engine.h>		// required for any CE application/* Application header files */#include "engine.h"#include "debug.h"/* Location of Engine Description Table */#define ENGINE_TABLE Engine_config.engineTabvoid print_engine_info(FILE *stream, char *preamble){	Engine_Desc *engineTablePtr = ENGINE_TABLE;    	Engine_AlgDesc *algTablePtr;        if( *((int *)engineTablePtr) == (int) NULL)	    fprintf(stream,"%s( none )\n", preamble);	while(*((int *)engineTablePtr) != (int) NULL){            fprintf(stream,"%sEngine Name:  %s\n", preamble, 						engineTablePtr->name);            fprintf(stream,"%s\tServer Name:  %s\n", preamble, 						engineTablePtr->remoteName);            fprintf(stream,"%s\tAvailable Codecs:\n", preamble);            algTablePtr = engineTablePtr->algTab;            if( *((int *)algTablePtr) == (int) NULL)                fprintf(stream,"%s\t\t( none )\n", preamble);            while( *((int *)algTablePtr) != (int) NULL ){	        fprintf(stream,"%s\t\t%s ( %s )\n", preamble, 		    algTablePtr->name, algTablePtr->isLocal?"Local":"Remote");	        algTablePtr++;            }	    engineTablePtr++;	}}void print_engine_error(FILE *stream, char *preamble, Engine_Error ec){    fprintf(stream, "%sEngine",preamble);    switch( ec )    {	case Engine_EEXIST : 	    fprintf(stream,"_EEXIST: engine name does not exist\n");	    break;	case Engine_ENOMEM :	    fprintf(stream,"_ENOMEM: can't allocate memory\n");	    break;	case Engine_EDSPLOAD :	    fprintf(stream,"_EDSPLOAD: can't load the DSP\n");	    break;	case Engine_ENOCOMM :	    fprintf(stream,"_ENOCOMM: can't create a comm connection"				" to DSP\n");	    break;	case Engine_ENOSERVER :	    fprintf(stream,"_ENOSERVER: can't locate the server on"				" the DSP\n");	    break;	case Engine_ECOMALLOC :	    fprintf(stream,"_ECOMALLOC: can't allocate communication"				" buffer\n");	    break;	case Engine_ERUNTIME :	    fprintf(stream,"_ERUNTIME: internal engine runtime failure\n");	    break;	case Engine_ECODECCREATE :	    fprintf(stream,"_ECODECCREATE: creation of codec failed\n");	    break;	case Engine_ECODECSTART :	    fprintf(stream,"_ECODECSTART: codec failed to start\n");	    break;	case Engine_EINVAL :	    fprintf(stream,"_EINVAL: bad parameter passed to method\n");	    break;	case Engine_EBADSERVER :	    fprintf(stream,"_BADSERVER: incompatible server specified\n");	    break;	case Engine_ENOTAVAIL :	    fprintf(stream,"_ENOTAVAIL: service not available\n");	    break;	default:	    fprintf(stream,"_????: unrecognized error code\n");    }}int engine_setup(Engine_Handle *engineHandleByRef, String engineName, 		 Engine_Attrs *attrs){    Engine_Handle engineHandle;    Engine_Error ec;    engineHandle = Engine_open( engineName, attrs, &ec );#ifdef __DEBUG    DBG("The following engines were located:\n");    print_engine_info(stderr, "Debug:\t");#endif    if( strcmp( ENGINE_TABLE->name , engineName ) != 0 )	ERR("WARNING: requested engine, %s\n"	    "         does not match available engine, %s\n\n",	     engineName, ENGINE_TABLE->name );    if( engineHandle == NULL ) {	engineHandleByRef = NULL;	ERR("Failed to open engine %s with error code:\n", engineName);	print_engine_error(stderr, "Error:\t", ec);	return ENGINE_FAILURE;    }    DBG("Opened engine %s (handle %p)\n", engineName, engineHandle);    /* return engine handle by reference and ENGINE_SUCCESS code */    *engineHandleByRef = engineHandle;     return ENGINE_SUCCESS;}int engine_cleanup(Engine_Handle engineHandle){    Engine_Error ec;    ec = Engine_getLastError( engineHandle );    Engine_close( engineHandle );    if( ec == Engine_EOK ) {	DBG("Codec engine (handle %p) closed with no reported errors\n", 							engineHandle);	return ENGINE_SUCCESS;    }    else {	ERR("Codec engine closed with one or more runtime errors.\n   \	     \tError mask:\n");	print_engine_error(stderr, "Error:\t",ec);	return ENGINE_FAILURE;    }    return ENGINE_SUCCESS;}

⌨️ 快捷键说明

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