?? 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 + -