diff options
Diffstat (limited to 'hifi/xaf/hifi-dpf/audio/xa-class-base.h')
-rw-r--r-- | hifi/xaf/hifi-dpf/audio/xa-class-base.h | 263 |
1 files changed, 0 insertions, 263 deletions
diff --git a/hifi/xaf/hifi-dpf/audio/xa-class-base.h b/hifi/xaf/hifi-dpf/audio/xa-class-base.h deleted file mode 100644 index 252044d4..00000000 --- a/hifi/xaf/hifi-dpf/audio/xa-class-base.h +++ /dev/null @@ -1,263 +0,0 @@ -/******************************************************************************* -* Copyright (C) 2018 Cadence Design Systems, Inc. -* -* Permission is hereby granted, free of charge, to any person obtaining -* a copy of this software and associated documentation files (the -* "Software"), to use this Software with Cadence processor cores only and -* not with any other processors and platforms, subject to -* the following conditions: -* -* The above copyright notice and this permission notice shall be included -* in all copies or substantial portions of the Software. -* -* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -******************************************************************************/ - -/******************************************************************************* - * xa-class-base.h - * - * Generic Xtensa Audio codecs interfaces - * - ******************************************************************************/ - -#ifndef __XA_CLASS_BASE_H -#define __XA_CLASS_BASE_H - -/******************************************************************************* - * Includes - ******************************************************************************/ - -/* ...audio-specific API */ -#include "audio/xa_type_def.h" -#include "audio/xa_error_standards.h" -#include "audio/xa_apicmd_standards.h" -#include "audio/xa_memory_standards.h" - -/******************************************************************************* - * Generic codec structure - ******************************************************************************/ - -typedef struct XACodecBase XACodecBase; - -/* ...memory buffer initialization */ -typedef XA_ERRORCODE (*xa_codec_memtab_f)(XACodecBase *codec, WORD32 i, WORD32 type, WORD32 size, WORD32 align, u32 core); - -/* ...preprocessing operation */ -typedef XA_ERRORCODE (*xa_codec_preprocess_f)(XACodecBase *); - -/* ...postprocessing operation */ -typedef XA_ERRORCODE (*xa_codec_postprocess_f)(XACodecBase *, int); - -/* ...parameter setting function */ -typedef XA_ERRORCODE (*xa_codec_setparam_f)(XACodecBase *, WORD32, pVOID p); - -/* ...parameter retrival function */ -typedef XA_ERRORCODE (*xa_codec_getparam_f)(XACodecBase *, WORD32, pVOID p); - -/******************************************************************************* - * Codec instance structure - ******************************************************************************/ - -struct XACodecBase -{ - /*************************************************************************** - * Control data - **************************************************************************/ - - /* ...generic component handle */ - xf_component_t component; - - /* ...codec API entry point (function) */ - xa_codec_func_t *process; - - /* ...codec API handle, passed to *process */ - xf_mm_buffer_t api; - - /* ...memory table buffer */ - xf_mm_buffer_t mem_tabs; - - /* ...persistent memory buffer */ - xf_mm_buffer_t persist; - - /* ...scratch memory pointer */ - void *scratch; - - /* ...codec control state */ - u32 state; - - /*************************************************************************** - * Codec-specific methods - **************************************************************************/ - - /* ...memory buffer initialization */ - xa_codec_memtab_f memtab; - - /* ...preprocessing function */ - xa_codec_preprocess_f preprocess; - - /* ...postprocessing function */ - xa_codec_postprocess_f postprocess; - - /* ...configuration parameter setting function */ - xa_codec_setparam_f setparam; - - /* ...configuration parameter retrieval function */ - xa_codec_getparam_f getparam; - - /* ...command-processing table */ - XA_ERRORCODE (* const * command)(XACodecBase *, xf_message_t *); - - /* ...command-processing table size */ - u32 command_num; -}; - -/******************************************************************************* - * Base codec execution flags - ******************************************************************************/ - -/* ...codec static initialization completed */ -#define XA_BASE_FLAG_POSTINIT (1 << 0) - -/* ...codec runtime initialization sequence */ -#define XA_BASE_FLAG_RUNTIME_INIT (1 << 1) - -/* ...codec steady execution state */ -#define XA_BASE_FLAG_EXECUTION (1 << 2) - -/* ...execution stage completed */ -#define XA_BASE_FLAG_COMPLETED (1 << 3) - -/* ...data processing scheduling flag */ -#define XA_BASE_FLAG_SCHEDULE (1 << 4) - -/* ...base codec flags accessor */ -#define __XA_BASE_FLAGS(flags) ((flags) & ((1 << 5) - 1)) - -/* ...custom execution flag */ -#define __XA_BASE_FLAG(f) ((f) << 5) - -/******************************************************************************* - * Local macros definitions - ******************************************************************************/ - -/* ...audio-framework API function execution */ -#define XA_CHK(cond) \ -({ \ - XA_ERRORCODE __e = (cond); \ - if (__e != XA_NO_ERROR) \ - { \ - if (XA_ERROR_SEVERITY(__e)) \ - { \ - TRACE(ERROR, _x("error: %X"), __e); \ - return __e; \ - } \ - TRACE(WARNING, _x("warning: %X"), __e); \ - } \ - __e; \ -}) - -/* ...low-level codec API function execution */ -#define XA_API(codec, cmd, idx, pv) \ -({ \ - XA_ERRORCODE __e; \ - __e = (codec)->process((xa_codec_handle_t)(codec)->api.addr, (cmd), (idx), (pv)); \ - if (__e != XA_NO_ERROR) \ - { \ - if (XA_ERROR_SEVERITY(__e)) \ - { \ - TRACE(ERROR, _x("[%p]:(%d, %d, %p): %X"), (codec), (cmd), (idx), (pv), __e); \ - return __e; \ - } \ - TRACE(WARNING, _x("%X"), __e); \ - } \ - __e; \ -}) - -#define XA_API_NORET(codec, cmd, idx, pv) \ -({ \ - XA_ERRORCODE __e; \ - __e = (codec)->process((xa_codec_handle_t)(codec)->api.addr, (cmd), (idx), (pv)); \ - if (__e != XA_NO_ERROR) \ - { \ - if (XA_ERROR_SEVERITY(__e)) \ - { \ - TRACE(ERROR, _x("[%p]:(%d, %d, %p): %X"), (codec), (cmd), (idx), (pv), __e); \ - } \ - TRACE(WARNING, _x("%X"), __e); \ - } \ - __e; \ -}) - -/* ...codec hook invocation */ -#define CODEC_API(codec, func, ...) \ -({ \ - XA_ERRORCODE __e = (codec)->func((codec), ##__VA_ARGS__); \ - \ - if (__e != XA_NO_ERROR) \ - { \ - if (XA_ERROR_SEVERITY(__e)) \ - { \ - /* ...actual error is reported by the codec */ \ - TRACE(ERROR, _x("[%p]: " #func ": %X"), (codec), __e); \ - return __e; \ - } \ - \ - TRACE(WARNING, _x("warning: %X"), __e); \ - } \ - __e; \ -}) - -/* ...allocate local memory on specific core */ -#define XMALLOC(p, size, align, core) \ -do \ -{ \ - if (xf_mm_alloc_buffer((size), (align), (core), (p)) != 0) \ - { \ - TRACE(ERROR, _x("Failed to allocate %d bytes of memory"), (size)); \ - return XA_API_FATAL_MEM_ALLOC; \ - } \ - \ - if (((u32)((p)->addr) & ((align) - 1)) != 0) \ - { \ - TRACE(ERROR, _x("Invalid %d-algnment: %p"), (align), (p)->addr); \ - return XA_API_FATAL_MEM_ALIGN; \ - } \ -} \ -while (0) - -/******************************************************************************* - * Public API - ******************************************************************************/ - -/* ...SET-PARAM processing */ -extern XA_ERRORCODE xa_base_set_param(XACodecBase *base, xf_message_t *m); - -/* ...GET-PARAM-EXT message processing */ -extern XA_ERRORCODE xa_base_set_param_ext(XACodecBase *base, xf_message_t *m); - -/* ...GET-PARAM message processing */ -extern XA_ERRORCODE xa_base_get_param(XACodecBase *base, xf_message_t *m); - -/* ...GET-PARAM-EXT message processing */ -extern XA_ERRORCODE xa_base_get_param_ext(XACodecBase *base, xf_message_t *m); - -/* ...data processing scheduling */ -extern void xa_base_schedule(XACodecBase *base, u32 dts); - -/* ...cancel internal scheduling message */ -extern void xa_base_cancel(XACodecBase *base); - -/* ...base codec factory */ -extern XACodecBase * xa_base_factory(u32 core, u32 size, xa_codec_func_t process); - -/* ...base codec destructor */ -extern void xa_base_destroy(XACodecBase *base, u32 size, u32 core); - -#endif /* __XA_CLASS_BASE_H */ |