diff options
Diffstat (limited to 'hifi/xaf/hifi-dpf/plugins/cadence')
-rw-r--r-- | hifi/xaf/hifi-dpf/plugins/cadence/mixer/xa-mixer.c | 669 | ||||
-rw-r--r-- | hifi/xaf/hifi-dpf/plugins/cadence/pcm_proc/xa-pcm-api.h | 145 | ||||
-rw-r--r-- | hifi/xaf/hifi-dpf/plugins/cadence/pcm_proc/xa-pcm.c | 841 | ||||
-rw-r--r-- | hifi/xaf/hifi-dpf/plugins/cadence/vorbis_dec/lib/hifi3/xa_vorbis_dec.a | bin | 124410 -> 0 bytes | |||
-rw-r--r-- | hifi/xaf/hifi-dpf/plugins/cadence/vorbis_dec/xa-vorbis-decoder.c | 84 | ||||
-rw-r--r-- | hifi/xaf/hifi-dpf/plugins/cadence/vorbis_dec/xa_vorbis_dec_api.h | 121 |
6 files changed, 0 insertions, 1860 deletions
diff --git a/hifi/xaf/hifi-dpf/plugins/cadence/mixer/xa-mixer.c b/hifi/xaf/hifi-dpf/plugins/cadence/mixer/xa-mixer.c deleted file mode 100644 index 2191239b..00000000 --- a/hifi/xaf/hifi-dpf/plugins/cadence/mixer/xa-mixer.c +++ /dev/null @@ -1,669 +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-mixer.c - * - * Sample mixer plugin - * - ******************************************************************************/ - -#define MODULE_TAG MIXER - -/******************************************************************************* - * Includes - ******************************************************************************/ - -#include "xf-plugin.h" -#include "audio/xa-mixer-api.h" - -/******************************************************************************* - * Tracing configuration - ******************************************************************************/ - -TRACE_TAG(INIT, 1); -TRACE_TAG(PROCESS, 1); - -/******************************************************************************* - * Internal functions definitions - ******************************************************************************/ - -/* ...API structure */ -typedef struct XAPcmMixer -{ - /* ...mixer state */ - u32 state; - - /* ...number of samples in a frame */ - u32 frame_size; - - /* ...number of channels (channel mask?) */ - u32 channels; - - /* ...PCM sample width */ - u32 pcm_width; - - /* ...sampling rate */ - u32 sample_rate; - - /* ...number of bytes in input/output buffer */ - u32 buffer_size; - - /* ...main volume and individual track volumes*/ - u32 volume[XA_MIXER_MAX_TRACK_NUMBER + 1]; - - /* ...input buffers */ - void *input[XA_MIXER_MAX_TRACK_NUMBER]; - - /* ...number of samples in individual buffers */ - u32 input_length[XA_MIXER_MAX_TRACK_NUMBER]; - - /* ...output buffer */ - void *output; - - /* ...number of produced bytes - do I need that? have buffer-size already - tbd */ - u32 produced; - - /* ...scratch buffer pointer */ - void *scratch; - -} XAPcmMixer; - -/******************************************************************************* - * Mixer state flags - ******************************************************************************/ - -#define XA_MIXER_FLAG_PREINIT_DONE (1 << 0) -#define XA_MIXER_FLAG_POSTINIT_DONE (1 << 1) -#define XA_MIXER_FLAG_RUNNING (1 << 2) -#define XA_MIXER_FLAG_OUTPUT (1 << 3) -#define XA_MIXER_FLAG_COMPLETE (1 << 4) - -/******************************************************************************* - * DSP functions - ******************************************************************************/ - -#define DSP_SATURATE_S16(s32) \ - (s16)((s32) > 0x7fff ? 0x7fff : ((s32) < -0x8000 ? -0x8000 : (s32))) - -/* ...mixer preinitialization (default parameters) */ -static inline void xa_mixer_preinit(XAPcmMixer *d) -{ - u32 i; - - /* ...pre-configuration initialization; reset internal data */ - memset(d, 0, sizeof(*d)); - - /* ...set default parameters */ - d->pcm_width = 16, d->channels = 2, d->frame_size = 512; - - /* ...set default volumes (last index is a main volume)*/ - for (i = 0; i <= XA_MIXER_MAX_TRACK_NUMBER; i++) - { - d->volume[i] = ((1 << 12) << 16) | (1 << 12); - } -} - -/* ...do mixing of stereo PCM-16 streams */ -static XA_ERRORCODE xa_mixer_do_execute_stereo_16bit(XAPcmMixer *d) -{ - s16 *output = d->output; - s16 *b[XA_MIXER_MAX_TRACK_NUMBER]; - u16 v_l[XA_MIXER_MAX_TRACK_NUMBER]; - u16 v_r[XA_MIXER_MAX_TRACK_NUMBER]; - u16 w_l, w_r; - u32 t32; - u32 i, j; - - /* ...retrieve main volume - assume up to 24dB amplifying (4 bits) */ - t32 = d->volume[XA_MIXER_MAX_TRACK_NUMBER]; - w_l = (u16)(t32 & 0xFFFF), w_r = (u16)(t32 >> 16); - - /* ...prepare individual tracks */ - for (j = 0; j < XA_MIXER_MAX_TRACK_NUMBER; j++) - { - u32 n = d->input_length[j]; - - /* ...check if we have input buffer available */ - if (n == 0) - { - /* ...output silence (multiply garbage in the scratch buffer by 0) */ - b[j] = d->scratch; - v_l[j] = v_r[j] = 0; - } - else - { - s32 k = (s32)(d->buffer_size - n); - - /* ...put input buffer */ - XF_CHK_ERR(b[j] = d->input[j], XA_MIXER_EXEC_FATAL_INPUT); - - /* ...if length is not sufficient, pad buffer remainder */ - (k > 0 ? memset((void *)b[j] + n, 0x00, k) : 0); - - /* ...set individual track volume/balance */ - t32 = d->volume[j]; - v_l[j] = (u16)(t32 & 0xFFFF), v_r[j] = (u16)(t32 >> 16); - } - - TRACE(PROCESS, _b("b[%u] = %p%s"), j, b[j], (n == 0 ? " - scratch" : "")); - } - - /* ...process all tracks */ - for (i = 0; i < d->frame_size; i++) - { - s32 l32 = 0, r32 = 0; - - /* ...fill-in every channel in our map (unrolls loop here) */ - for (j = 0; j < XA_MIXER_MAX_TRACK_NUMBER; j++) - { - /* ...left channel processing (no saturation here yet) */ - l32 += *b[j]++ * v_l[j]; - - /* ...right channel processing */ - r32 += *b[j]++ * v_r[j]; - } - - /* ...normalize (truncate towards -inf) and multiply by main volume */ - l32 = ((l32 >> 12) * w_l) >> 12; - r32 = ((r32 >> 12) * w_r) >> 12; - - /* ...saturate and store in buffer */ - *output++ = DSP_SATURATE_S16(l32); - *output++ = DSP_SATURATE_S16(r32); - } - - /* ...save total number of produced bytes */ - d->produced = (u32)((void *)output - d->output); - - /* ...put flag saying we have output buffer */ - d->state |= XA_MIXER_FLAG_OUTPUT; - - TRACE(PROCESS, _b("produced: %u bytes (%u samples)"), d->produced, d->frame_size); - - /* ...reset input buffer length? */ - //memset(d->input_length, 0, sizeof(d->input_length)); - - /* ...return success result code */ - return XA_NO_ERROR; -} - -/* ...runtime reset */ -static XA_ERRORCODE xa_mixer_do_runtime_init(XAPcmMixer *d) -{ - /* ...no special processing is needed here */ - return XA_NO_ERROR; -} - -/******************************************************************************* - * Commands processing - ******************************************************************************/ - -/* ...codec API size query */ -static XA_ERRORCODE xa_mixer_get_api_size(XAPcmMixer *d, WORD32 i_idx, pVOID pv_value) -{ - /* ...check parameters are valid */ - XF_CHK_ERR(pv_value, XA_API_FATAL_INVALID_CMD_TYPE); - - /* ...retrieve API structure size */ - *(WORD32 *)pv_value = sizeof(*d); - - return XA_NO_ERROR; -} - -/* ...standard codec initialization routine */ -static XA_ERRORCODE xa_mixer_init(XAPcmMixer *d, WORD32 i_idx, pVOID pv_value) -{ - /* ...validity check - mixer must be valid */ - XF_CHK_ERR(d, XA_API_FATAL_INVALID_CMD_TYPE); - - /* ...process particular initialization type */ - switch (i_idx) - { - case XA_CMD_TYPE_INIT_API_PRE_CONFIG_PARAMS: - { - /* ...pre-configuration initialization; reset internal data */ - xa_mixer_preinit(d); - - /* ...and mark mixer has been created */ - d->state = XA_MIXER_FLAG_PREINIT_DONE; - - return XA_NO_ERROR; - } - - case XA_CMD_TYPE_INIT_API_POST_CONFIG_PARAMS: - { - /* ...post-configuration initialization (all parameters are set) */ - XF_CHK_ERR(d->state & XA_MIXER_FLAG_PREINIT_DONE, XA_API_FATAL_INVALID_CMD_TYPE); - - /* ...calculate input/output buffer size in bytes */ - d->buffer_size = d->channels * d->frame_size * (d->pcm_width == 16 ? sizeof(s16) : sizeof(s32)); - - /* ...mark post-initialization is complete */ - d->state |= XA_MIXER_FLAG_POSTINIT_DONE; - - return XA_NO_ERROR; - } - - case XA_CMD_TYPE_INIT_PROCESS: - { - /* ...kick run-time initialization process; make sure mixer is setup */ - XF_CHK_ERR(d->state & XA_MIXER_FLAG_POSTINIT_DONE, XA_API_FATAL_INVALID_CMD_TYPE); - - /* ...enter into execution stage */ - d->state |= XA_MIXER_FLAG_RUNNING; - - return XA_NO_ERROR; - } - - case XA_CMD_TYPE_INIT_DONE_QUERY: - { - /* ...check if initialization is done; make sure pointer is valid */ - XF_CHK_ERR(pv_value, XA_API_FATAL_INVALID_CMD_TYPE); - - /* ...put current status */ - *(WORD32 *)pv_value = (d->state & XA_MIXER_FLAG_RUNNING ? 1 : 0); - - return XA_NO_ERROR; - } - - default: - /* ...unrecognized command type */ - TRACE(ERROR, _x("Unrecognized command type: %X"), i_idx); - return XA_API_FATAL_INVALID_CMD_TYPE; - } -} - -/* ...set mixer configuration parameter */ -static XA_ERRORCODE xa_mixer_set_config_param(XAPcmMixer *d, WORD32 i_idx, pVOID pv_value) -{ - u32 i_value; - - /* ...validity check - mixer pointer must be valid */ - XF_CHK_ERR(d && pv_value, XA_API_FATAL_INVALID_CMD_TYPE); - - /* ...pre-initialization must be completed, mixer must be idle */ - XF_CHK_ERR(d->state & XA_MIXER_FLAG_PREINIT_DONE, XA_API_FATAL_INVALID_CMD_TYPE); - - /* ...get parameter value */ - i_value = (u32) *(WORD32 *)pv_value; - - /* ...process individual configuration parameter */ - switch (i_idx) - { - case XA_MIXER_CONFIG_PARAM_PCM_WIDTH: - /* ...check value is permitted (16 bits only) */ - XF_CHK_ERR(i_value == 16, XA_MIXER_CONFIG_NONFATAL_RANGE); - d->pcm_width = (u32)i_value; - return XA_NO_ERROR; - - case XA_MIXER_CONFIG_PARAM_CHANNELS: - /* ...allow stereo only */ - XF_CHK_ERR(i_value == 2, XA_MIXER_CONFIG_NONFATAL_RANGE); - d->channels = (u32)i_value; - return XA_NO_ERROR; - - case XA_MIXER_CONFIG_PARAM_SAMPLE_RATE: - /* ...set mixer sample rate */ - d->sample_rate = (u32)i_value; - return XA_NO_ERROR; - - default: - TRACE(ERROR, _x("Invalid parameter: %X"), i_idx); - return XA_API_FATAL_INVALID_CMD_TYPE; - } -} - -/* ...retrieve configuration parameter */ -static XA_ERRORCODE xa_mixer_get_config_param(XAPcmMixer *d, WORD32 i_idx, pVOID pv_value) -{ - /* ...validity check - mixer must be initialized */ - XF_CHK_ERR(d && pv_value, XA_API_FATAL_INVALID_CMD_TYPE); - - /* ...make sure pre-initialization is completed */ - XF_CHK_ERR(d->state & XA_MIXER_FLAG_PREINIT_DONE, XA_API_FATAL_INVALID_CMD_TYPE); - - /* ...process individual configuration parameter */ - switch (i_idx) - { - case XA_MIXER_CONFIG_PARAM_INPUT_TRACKS: - /* ...return maximal number of input tracks supported */ - *(WORD32 *)pv_value = XA_MIXER_MAX_TRACK_NUMBER; - return XA_NO_ERROR; - - case XA_MIXER_CONFIG_PARAM_SAMPLE_RATE: - /* ...return mixer sample rate */ - *(WORD32 *)pv_value = d->sample_rate; - return XA_NO_ERROR; - - case XA_MIXER_CONFIG_PARAM_PCM_WIDTH: - /* ...return current PCM width */ - *(WORD32 *)pv_value = d->pcm_width; - return XA_NO_ERROR; - - case XA_MIXER_CONFIG_PARAM_CHANNELS: - /* ...return current channel number */ - *(WORD32 *)pv_value = d->channels; - return XA_NO_ERROR; - - case XA_MIXER_CONFIG_PARAM_FRAME_SIZE: - /* ...return current in/out frame length (in samples) */ - *(WORD32 *)pv_value = d->frame_size; - return XA_NO_ERROR; - - case XA_MIXER_CONFIG_PARAM_BUFFER_SIZE: - /* ...return current in/out frame length (in bytes) */ - *(WORD32 *)pv_value = d->buffer_size; - return XA_NO_ERROR; - - default: - TRACE(ERROR, _x("Invalid parameter: %X"), i_idx); - return XA_API_FATAL_INVALID_CMD_TYPE; - } -} - -/* ...execution command */ -static XA_ERRORCODE xa_mixer_execute(XAPcmMixer *d, WORD32 i_idx, pVOID pv_value) -{ - /* ...validity check - mixer must be valid */ - XF_CHK_ERR(d, XA_API_FATAL_INVALID_CMD_TYPE); - - /* ...mixer must be in running state */ - XF_CHK_ERR(d->state & XA_MIXER_FLAG_RUNNING, XA_API_FATAL_INVALID_CMD_TYPE); - - /* ...process individual command type */ - switch (i_idx) - { - case XA_CMD_TYPE_DO_EXECUTE: - /* ...perform mixing of the channels */ - return xa_mixer_do_execute_stereo_16bit(d); - - case XA_CMD_TYPE_DONE_QUERY: - /* ...check if processing is complete */ - XF_CHK_ERR(pv_value, XA_API_FATAL_INVALID_CMD_TYPE); - *(WORD32 *)pv_value = (d->state & XA_MIXER_FLAG_COMPLETE ? 1 : 0); - return XA_NO_ERROR; - - case XA_CMD_TYPE_DO_RUNTIME_INIT: - /* ...reset mixer operation */ - return xa_mixer_do_runtime_init(d); - - default: - /* ...unrecognized command */ - TRACE(ERROR, _x("Invalid index: %X"), i_idx); - return XA_API_FATAL_INVALID_CMD_TYPE; - } -} - -/* ...set number of input bytes */ -static XA_ERRORCODE xa_mixer_set_input_bytes(XAPcmMixer *d, WORD32 i_idx, pVOID pv_value) -{ - u32 size; - - /* ...validity check - check parameters */ - XF_CHK_ERR(d && pv_value, XA_API_FATAL_INVALID_CMD_TYPE); - - /* ...track index must be valid */ - XF_CHK_ERR(i_idx >= 0 && i_idx < XA_MIXER_MAX_TRACK_NUMBER, XA_API_FATAL_INVALID_CMD_TYPE); - - /* ...mixer must be initialized */ - XF_CHK_ERR(d->state & XA_MIXER_FLAG_POSTINIT_DONE, XA_API_FATAL_INVALID_CMD_TYPE); - - /* ...input buffer must exist */ - XF_CHK_ERR(d->input[i_idx], XA_API_FATAL_INVALID_CMD_TYPE); - - /* ...input frame length should not be zero (in bytes) */ - XF_CHK_ERR((size = (u32)*(WORD32 *)pv_value) > 0, XA_MIXER_EXEC_NONFATAL_INPUT); - - /* ...all is correct; set input buffer length in bytes */ - d->input_length[i_idx] = size; - - return XA_NO_ERROR; -} - -/* ...get number of output bytes */ -static XA_ERRORCODE xa_mixer_get_output_bytes(XAPcmMixer *d, WORD32 i_idx, pVOID pv_value) -{ - /* ...validity check - check parameters */ - XF_CHK_ERR(d && pv_value, XA_API_FATAL_INVALID_CMD_TYPE); - - /* ...track index must be zero */ - XF_CHK_ERR(i_idx == XA_MIXER_MAX_TRACK_NUMBER, XA_API_FATAL_INVALID_CMD_TYPE); - - /* ...mixer must be running */ - XF_CHK_ERR(d->state & XA_MIXER_FLAG_RUNNING, XA_API_FATAL_INVALID_CMD_TYPE); - - /* ...output buffer must exist */ - XF_CHK_ERR(d->output, XA_MIXER_EXEC_NONFATAL_OUTPUT); - - /* ...return number of produced bytes */ - *(WORD32 *)pv_value = (d->state & XA_MIXER_FLAG_OUTPUT ? d->buffer_size : 0); - - return XA_NO_ERROR; -} - -/* ...get number of consumed bytes */ -static XA_ERRORCODE xa_mixer_get_curidx_input_buf(XAPcmMixer *d, WORD32 i_idx, pVOID pv_value) -{ - /* ...validity check - check parameters */ - XF_CHK_ERR(d && pv_value, XA_API_FATAL_INVALID_CMD_TYPE); - - /* ...track index must be valid */ - XF_CHK_ERR(i_idx >= 0 && i_idx < XA_MIXER_MAX_TRACK_NUMBER, XA_API_FATAL_INVALID_CMD_TYPE); - - /* ...mixer must be running */ - XF_CHK_ERR(d->state & XA_MIXER_FLAG_RUNNING, XA_MIXER_EXEC_FATAL_STATE); - - /* ...input buffer must exist */ - XF_CHK_ERR(d->input[i_idx], XA_MIXER_EXEC_FATAL_INPUT); - - /* ...return number of bytes consumed (always consume fixed-length chunk) */ - *(WORD32 *)pv_value = d->input_length[i_idx], d->input_length[i_idx] = 0; - - return XA_NO_ERROR; -} - -/******************************************************************************* - * Memory information API - ******************************************************************************/ - -/* ..get total amount of data for memory tables */ -static XA_ERRORCODE xa_mixer_get_memtabs_size(XAPcmMixer *d, WORD32 i_idx, pVOID pv_value) -{ - /* ...basic validity checks */ - XF_CHK_ERR(d && pv_value, XA_API_FATAL_INVALID_CMD_TYPE); - - /* ...check mixer is pre-initialized */ - XF_CHK_ERR(d->state & XA_MIXER_FLAG_PREINIT_DONE, XA_API_FATAL_INVALID_CMD_TYPE); - - /* ...we have all our tables inside API structure - good? tbd */ - *(WORD32 *)pv_value = 0; - - return XA_NO_ERROR; -} - -/* ..set memory tables pointer */ -static XA_ERRORCODE xa_mixer_set_memtabs_ptr(XAPcmMixer *d, WORD32 i_idx, pVOID pv_value) -{ - /* ...basic validity checks */ - XF_CHK_ERR(d && pv_value, XA_API_FATAL_INVALID_CMD_TYPE); - - /* ...check mixer is pre-initialized */ - XF_CHK_ERR(d->state & XA_MIXER_FLAG_PREINIT_DONE, XA_API_FATAL_INVALID_CMD_TYPE); - - /* ...do not do anything; just return success - tbd */ - return XA_NO_ERROR; -} - -/* ...return total amount of memory buffers */ -static XA_ERRORCODE xa_mixer_get_n_memtabs(XAPcmMixer *d, WORD32 i_idx, pVOID pv_value) -{ - /* ...basic validity checks */ - XF_CHK_ERR(d && pv_value, XA_API_FATAL_INVALID_CMD_TYPE); - - /* ...we have N input buffers, 1 output buffer and 1 scratch buffer */ - *(WORD32 *)pv_value = XA_MIXER_MAX_TRACK_NUMBER + 1 + 1; - - return XA_NO_ERROR; -} - -/* ...return memory buffer data */ -static XA_ERRORCODE xa_mixer_get_mem_info_size(XAPcmMixer *d, WORD32 i_idx, pVOID pv_value) -{ - /* ...basic validity check */ - XF_CHK_ERR(d && pv_value, XA_API_FATAL_INVALID_CMD_TYPE); - - /* ...return frame buffer minimal size only after post-initialization is done */ - XF_CHK_ERR(d->state & XA_MIXER_FLAG_POSTINIT_DONE, XA_API_FATAL_INVALID_CMD_TYPE); - - /* ...all buffers are of the same length */ - *(WORD32 *)pv_value = (WORD32) d->buffer_size; - - return XA_NO_ERROR; -} - -/* ...return memory alignment data */ -static XA_ERRORCODE xa_mixer_get_mem_info_alignment(XAPcmMixer *d, WORD32 i_idx, pVOID pv_value) -{ - /* ...basic validity check */ - XF_CHK_ERR(d && pv_value, XA_API_FATAL_INVALID_CMD_TYPE); - - /* ...return frame buffer minimal size only after post-initialization is done */ - XF_CHK_ERR(d->state & XA_MIXER_FLAG_POSTINIT_DONE, XA_API_FATAL_INVALID_CMD_TYPE); - - /* ...all buffers are 4-bytes aligned */ - *(WORD32 *)pv_value = 4; - - return XA_NO_ERROR; -} - -/* ...return memory type data */ -static XA_ERRORCODE xa_mixer_get_mem_info_type(XAPcmMixer *d, WORD32 i_idx, pVOID pv_value) -{ - /* ...basic validity check */ - XF_CHK_ERR(d && pv_value, XA_API_FATAL_INVALID_CMD_TYPE); - - /* ...return frame buffer minimal size only after post-initialization is done */ - XF_CHK_ERR(d->state & XA_MIXER_FLAG_POSTINIT_DONE, XA_API_FATAL_INVALID_CMD_TYPE); - - switch (i_idx) - { - case 0 ... XA_MIXER_MAX_TRACK_NUMBER - 1: - /* ...input buffers */ - *(WORD32 *)pv_value = XA_MEMTYPE_INPUT; - return XA_NO_ERROR; - - case XA_MIXER_MAX_TRACK_NUMBER: - /* ...output buffer */ - *(WORD32 *)pv_value = XA_MEMTYPE_OUTPUT; - return XA_NO_ERROR; - - case XA_MIXER_MAX_TRACK_NUMBER + 1: - /* ...scratch buffer */ - *(WORD32 *)pv_value = XA_MEMTYPE_SCRATCH; - return XA_NO_ERROR; - - default: - /* ...invalid index */ - return XF_CHK_ERR(0, XA_API_FATAL_INVALID_CMD_TYPE); - } -} - -/* ...set memory pointer */ -static XA_ERRORCODE xa_mixer_set_mem_ptr(XAPcmMixer *d, WORD32 i_idx, pVOID pv_value) -{ - /* ...basic validity check */ - XF_CHK_ERR(d && pv_value, XA_API_FATAL_INVALID_CMD_TYPE); - - /* ...codec must be initialized */ - XF_CHK_ERR(d->state & XA_MIXER_FLAG_POSTINIT_DONE, XA_API_FATAL_INVALID_CMD_TYPE); - - /* ...select memory buffer */ - switch (i_idx) - { - case 0 ... XA_MIXER_MAX_TRACK_NUMBER - 1: - /* ...input buffers */ - d->input[i_idx] = pv_value; - return XA_NO_ERROR; - - case XA_MIXER_MAX_TRACK_NUMBER: - /* ...output buffer */ - d->output = pv_value; - return XA_NO_ERROR; - - case XA_MIXER_MAX_TRACK_NUMBER + 1: - /* ...scratch buffer */ - d->scratch = pv_value; - return XA_NO_ERROR; - - default: - /* ...invalid index */ - return XF_CHK_ERR(0, XA_API_FATAL_INVALID_CMD_TYPE); - } -} - -/******************************************************************************* - * API command hooks - ******************************************************************************/ - -static XA_ERRORCODE (* const xa_mixer_api[])(XAPcmMixer *, WORD32, pVOID) = -{ - [XA_API_CMD_GET_API_SIZE] = xa_mixer_get_api_size, - - [XA_API_CMD_INIT] = xa_mixer_init, - [XA_API_CMD_SET_CONFIG_PARAM] = xa_mixer_set_config_param, - [XA_API_CMD_GET_CONFIG_PARAM] = xa_mixer_get_config_param, - - [XA_API_CMD_EXECUTE] = xa_mixer_execute, - [XA_API_CMD_SET_INPUT_BYTES] = xa_mixer_set_input_bytes, - [XA_API_CMD_GET_OUTPUT_BYTES] = xa_mixer_get_output_bytes, - [XA_API_CMD_GET_CURIDX_INPUT_BUF] = xa_mixer_get_curidx_input_buf, - - [XA_API_CMD_GET_MEMTABS_SIZE] = xa_mixer_get_memtabs_size, - [XA_API_CMD_SET_MEMTABS_PTR] = xa_mixer_set_memtabs_ptr, - [XA_API_CMD_GET_N_MEMTABS] = xa_mixer_get_n_memtabs, - [XA_API_CMD_GET_MEM_INFO_SIZE] = xa_mixer_get_mem_info_size, - [XA_API_CMD_GET_MEM_INFO_ALIGNMENT] = xa_mixer_get_mem_info_alignment, - [XA_API_CMD_GET_MEM_INFO_TYPE] = xa_mixer_get_mem_info_type, - [XA_API_CMD_SET_MEM_PTR] = xa_mixer_set_mem_ptr, -}; - -/* ...total numer of commands supported */ -#define XA_MIXER_API_COMMANDS_NUM (sizeof(xa_mixer_api) / sizeof(xa_mixer_api[0])) - -/******************************************************************************* - * API entry point - ******************************************************************************/ - -XA_ERRORCODE xa_mixer(xa_codec_handle_t p_xa_module_obj, WORD32 i_cmd, WORD32 i_idx, pVOID pv_value) -{ - XAPcmMixer *d = (XAPcmMixer *) p_xa_module_obj; - - /* ...check if command index is valid */ - XF_CHK_ERR(i_cmd < XA_MIXER_API_COMMANDS_NUM, XA_API_FATAL_INVALID_CMD); - - /* ...see if command is defined */ - XF_CHK_ERR(xa_mixer_api[i_cmd], XA_API_FATAL_INVALID_CMD); - - /* ...execute requested command */ - return xa_mixer_api[i_cmd](d, i_idx, pv_value); -} diff --git a/hifi/xaf/hifi-dpf/plugins/cadence/pcm_proc/xa-pcm-api.h b/hifi/xaf/hifi-dpf/plugins/cadence/pcm_proc/xa-pcm-api.h deleted file mode 100644 index cb14dad0..00000000 --- a/hifi/xaf/hifi-dpf/plugins/cadence/pcm_proc/xa-pcm-api.h +++ /dev/null @@ -1,145 +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-pcm-api.h - * - * Generic PCM format converter API - * - ******************************************************************************/ - -#ifndef __XA_PCM_API_H__ -#define __XA_PCM_API_H__ - -/******************************************************************************* - * Includes - ******************************************************************************/ - -#include "xa_type_def.h" -#include "xa_error_standards.h" -#include "xa_apicmd_standards.h" -#include "xa_memory_standards.h" - -/******************************************************************************* - * Constants definitions - ******************************************************************************/ - -/* ...codec-specific configuration parameters */ -enum xa_config_param_pcm { - XA_PCM_CONFIG_PARAM_SAMPLE_RATE = 0, - XA_PCM_CONFIG_PARAM_IN_PCM_WIDTH = 1, - XA_PCM_CONFIG_PARAM_IN_CHANNELS = 2, - XA_PCM_CONFIG_PARAM_OUT_PCM_WIDTH = 3, - XA_PCM_CONFIG_PARAM_OUT_CHANNELS = 4, - XA_PCM_CONFIG_PARAM_CHANROUTING = 5, - XA_PCM_CONFIG_PARAM_NUM = 6, -}; - -/* ...component identifier (informative) */ -#define XA_CODEC_PCM 16 - -/******************************************************************************* - * Class 0: API Errors - ******************************************************************************/ - -#define XA_PCM_API_NONFATAL(e) \ - XA_ERROR_CODE(xa_severity_nonfatal, xa_class_api, XA_CODEC_PCM, (e)) - -#define XA_PCM_API_FATAL(e) \ - XA_ERROR_CODE(xa_severity_fatal, xa_class_api, XA_CODEC_PCM, (e)) - -enum xa_error_nonfatal_api_pcm { - XA_PCM_API_NONFATAL_MAX = XA_PCM_API_NONFATAL(0) -}; - -enum xa_error_fatal_api_pcm { - XA_PCM_API_FATAL_MAX = XA_PCM_API_FATAL(0) -}; - -/******************************************************************************* - * Class 1: Configuration Errors - ******************************************************************************/ - -#define XA_PCM_CONFIG_NONFATAL(e) \ - XA_ERROR_CODE(xa_severity_nonfatal, xa_class_config, XA_CODEC_PCM, (e)) - -#define XA_PCM_CONFIG_FATAL(e) \ - XA_ERROR_CODE(xa_severity_fatal, xa_class_config, XA_CODEC_PCM, (e)) - -enum xa_error_nonfatal_config_pcm { - XA_PCM_CONFIG_NONFATAL_RANGE = XA_PCM_CONFIG_NONFATAL(0), - XA_PCM_CONFIG_NONFATAL_STATE = XA_PCM_CONFIG_NONFATAL(1), - XA_PCM_CONFIG_NONFATAL_MAX = XA_PCM_CONFIG_NONFATAL(2) -}; - -enum xa_error_fatal_config_pcm { - XA_PCM_CONFIG_FATAL_RANGE = XA_PCM_CONFIG_FATAL(0), - XA_PCM_CONFIG_FATAL_MAX = XA_PCM_CONFIG_FATAL(1) -}; - -/******************************************************************************* - * Class 2: Execution Class Errors - ******************************************************************************/ - -#define XA_PCM_EXEC_NONFATAL(e) \ - XA_ERROR_CODE(xa_severity_nonfatal, xa_class_execute, XA_CODEC_PCM, (e)) - -#define XA_PCM_EXEC_FATAL(e) \ - XA_ERROR_CODE(xa_severity_fatal, xa_class_execute, XA_CODEC_PCM, (e)) - -enum xa_error_nonfatal_execute_pcm { - XA_PCM_EXEC_NONFATAL_STATE = XA_PCM_EXEC_NONFATAL(0), - XA_PCM_EXEC_NONFATAL_NO_DATA = XA_PCM_EXEC_NONFATAL(1), - XA_PCM_EXEC_NONFATAL_INPUT = XA_PCM_EXEC_NONFATAL(2), - XA_PCM_EXEC_NONFATAL_OUTPUT = XA_PCM_EXEC_NONFATAL(3), - XA_PCM_EXEC_NONFATAL_MAX = XA_PCM_EXEC_NONFATAL(4) -}; - -enum xa_error_fatal_execute_pcm { - XA_PCM_EXEC_FATAL_STATE = XA_PCM_EXEC_FATAL(0), - XA_PCM_EXEC_FATAL_INPUT = XA_PCM_EXEC_FATAL(1), - XA_PCM_EXEC_FATAL_OUTPUT = XA_PCM_EXEC_FATAL(2), - XA_PCM_EXEC_FATAL_MAX = XA_PCM_EXEC_FATAL(3) -}; - -/******************************************************************************* - * API function definition - ******************************************************************************/ - -#if defined(USE_DLL) && defined(_WIN32) -#define DLL_SHARED __declspec(dllimport) -#elif defined (_WINDLL) -#define DLL_SHARED __declspec(dllexport) -#else -#define DLL_SHARED -#endif - -#if defined(__cplusplus) -extern "C" { -#endif /* __cplusplus */ -DLL_SHARED xa_codec_func_t xa_pcm_codec; -#if defined(__cplusplus) -} -#endif /* __cplusplus */ - -#endif /* __XA_PCM_API_H__ */ - diff --git a/hifi/xaf/hifi-dpf/plugins/cadence/pcm_proc/xa-pcm.c b/hifi/xaf/hifi-dpf/plugins/cadence/pcm_proc/xa-pcm.c deleted file mode 100644 index cca97ef9..00000000 --- a/hifi/xaf/hifi-dpf/plugins/cadence/pcm_proc/xa-pcm.c +++ /dev/null @@ -1,841 +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-pcm.c - * - * PCM format converter plugin - * - ******************************************************************************/ - -#define MODULE_TAG PCM - -/******************************************************************************* - * Includes - ******************************************************************************/ - -#include "xf-plugin.h" -#include "xa-audio-decoder-api.h" -#include "xa-pcm-api.h" - -#include <fcntl.h> - -/******************************************************************************* - * Tracing configuration - ******************************************************************************/ - -TRACE_TAG(INIT, 1); -TRACE_TAG(PROCESS, 0); - -/******************************************************************************* - * Local typedefs - ******************************************************************************/ - -/* ...API structure */ -typedef struct XAPcmCodec -{ - /* ...codec state */ - u32 state; - - /* ...sampling rate of input/output signal (informative only) */ - u32 sample_rate; - - /* ...number of input/output channels */ - u8 in_channels, out_channels; - - /* ...PCM sample width of input/output streams */ - u8 in_pcm_width, out_pcm_width; - - /* ...input/output stride size */ - u8 in_stride, out_stride; - - /* ...channel routing map between input and output */ - u32 chan_routing; - - /* ...data processing hook */ - XA_ERRORCODE (*process)(struct XAPcmCodec *); - - /* ...number of samples in input/output buffers */ - u32 insize, outsize; - - /* ...input/output memory indices */ - u32 input_idx, output_idx; - - /* ...input/output buffers passed from/to caller */ - void *input, *output; - - /* ...number of input bytes consumed/produced */ - u32 consumed, produced; - - /* ...debug - file handles */ - int f_input, f_output; - -} XAPcmCodec; - -/******************************************************************************* - * Local execution flags - ******************************************************************************/ - -#define XA_PCM_FLAG_PREINIT_DONE (1 << 0) -#define XA_PCM_FLAG_POSTINIT_DONE (1 << 1) -#define XA_PCM_FLAG_RUNNING (1 << 2) -#define XA_PCM_FLAG_EOS (1 << 3) -#define XA_PCM_FLAG_COMPLETE (1 << 4) - -/******************************************************************************* - * Local constants definitions - ******************************************************************************/ - -/* ...process at most 1024 samples per call */ -#define XA_PCM_MAX_SAMPLES 1024 - -/******************************************************************************* - * Internal processing functions - ******************************************************************************/ - -/* ...identity translation of PCM16/24 */ -static XA_ERRORCODE xa_pcm_do_execute_copy(XAPcmCodec *d) -{ - u32 n = d->insize; - u8 k = d->in_channels; - u32 length = n * k * (d->in_pcm_width == 16 ? 2 : 4); - s16 *input = d->input, *output = d->output; - - TRACE(PROCESS, _b("Copy PCM%d %p to %p (%u samples)"), d->in_pcm_width, input, output, n); - - /* ...check if we have all data setup */ - XF_CHK_ERR(input && n && output, XA_PCM_EXEC_FATAL_STATE); - - /* ...copy the samples without any processing */ - memcpy(output, input, length); - - /* ...set number of consumed/produced bytes */ - d->consumed = length; - d->produced = length; - - /* ...reset input buffer length */ - d->insize = 0; - - /* ...copy input to output */ - return XA_NO_ERROR; -} - -/* ...data processing for PCM16, channel mapping case */ -static XA_ERRORCODE xa_pcm_do_execute_pcm16_chmap(XAPcmCodec *d) -{ - u32 n = d->insize, i; - u8 k = d->in_channels, j; - u32 chmap = d->chan_routing, map; - s16 *input = d->input, *output = d->output; - u32 length = n * k * (d->in_pcm_width == 16 ? 2 : 4); - - TRACE(PROCESS, _b("Map PCM16 %p to %p (%u samples, map: %X)"), input, output, n, chmap); - - /* ...check if we have all data setup */ - XF_CHK_ERR(input && n && output, XA_PCM_EXEC_FATAL_STATE); - -#if 0 - /* ...convert individual samples (that function could be CPU-optimized - tbd) */ - for (i = 0; i < n; i++, input += k) - { - /* ...process individual channels in a sample */ - for (j = 0, map = chmap; j < k; j++, map >>= 4) - { - u8 m = map & 0xF; - - /* ...fill output channel (zero unused channel) */ - *output++ = (m < 8 ? input[m] : 0); - } - } - - /* ...set number of consumed/produced bytes */ - d->consumed = (u32)((u8 *)input - (u8 *)d->input); - d->produced = (u32)((u8 *)output - (u8 *)d->output); -#else - memcpy(output, input, length); - /* ...set number of consumed/produced bytes */ - d->consumed = length; - d->produced = length; -#endif - /* ...reset input buffer length */ - d->insize = 0; - - /* ...copy input to output */ - return XA_NO_ERROR; -} - -/* ...data processing for PCM24/PCM32, channel mapping case */ -static XA_ERRORCODE xa_pcm_do_execute_pcm24_chmap(XAPcmCodec *d) -{ - u32 n = d->insize, i; - u8 k = d->in_channels, j; - u32 chmap = d->chan_routing, map; - s32 *input = d->input, *output = d->output; - - TRACE(PROCESS, _b("Map PCM24 %p to %p (%u samples, map: %X)"), input, output, n, chmap); - - /* ...check if we have all data setup */ - XF_CHK_ERR(input && n && output, XA_PCM_EXEC_FATAL_STATE); - - /* ...convert individual samples (that function could be CPU-optimized - tbd) */ - for (i = 0; i < n; i++, input += k) - { - /* ...process individual channels in a sample */ - for (j = 0, map = chmap; j < k; j++, map >>= 4) - { - u8 m = map & 0xF; - - /* ...fill output channel (zero unused channel) */ - *output++ = (m < 8 ? input[m] : 0); - } - } - - /* ...set number of consumed/produced bytes */ - d->consumed = (u32)((u8 *)input - (u8 *)d->input); - d->produced = (u32)((u8 *)output - (u8 *)d->output); - - /* ...reset input buffer length */ - d->insize = 0; - - /* ...copy input to output */ - return XA_NO_ERROR; -} - -/* ...convert multichannel 24-bit PCM to 16-bit PCM with channel mapping */ -static XA_ERRORCODE xa_pcm_do_execute_pcm24_to_pcm16(XAPcmCodec *d) -{ - u32 n = d->insize, i; - u8 k = d->in_channels, j; - u32 chmap = d->chan_routing, map; - s32 *input = d->input; - s16 *output = d->output; - - TRACE(PROCESS, _b("Convert PCM24 %p to PCM16 %p (%u samples, map: %X)"), input, output, n, chmap); - - /* ...check if we have all data setup */ - XF_CHK_ERR(input && n && output, XA_PCM_EXEC_FATAL_STATE); - - /* ...convert individual samples (that function could be CPU-optimized - tbd) */ - for (i = 0; i < n; i++, input += k) - { - /* ...process individual channels in a sample */ - for (j = 0, map = chmap; j < k; j++, map >>= 4) - { - u8 m = map & 0xF; - - /* ...convert and zero out unused channels */ - *output++ = (m < 8 ? input[m] >> 16 : 0); - } - } - - /* ...set number of consumed/produced bytes */ - d->consumed = (u32)((u8 *)input - (u8 *)d->input); - d->produced = (u32)((u8 *)output - (u8 *)d->output); - - /* ...dump output data */ - //BUG(write(d->f_input, d->input, d->consumed) != d->consumed, _x("%m")); - //BUG(write(d->f_output, d->output, d->produced) != d->produced, _x("%m")); - - /* ...reset input buffer length (tbd - need that?) */ - d->insize = 0; - - /* ...copy input to output */ - return XA_NO_ERROR; -} - -/* ...convert multichannel 16-bit PCM to 24-bit PCM with channel mapping */ -static XA_ERRORCODE xa_pcm_do_execute_pcm16_to_pcm24(XAPcmCodec *d) -{ - u32 n = d->insize, i; - u8 k = d->in_channels, j; - u32 chmap = d->chan_routing, map; - s16 *input = d->input; - s32 *output = d->output; - - TRACE(PROCESS, _b("Convert PCM16 %p to PCM24 %p (%u samples, map: %X)"), input, output, n, chmap); - - /* ...check if we have all data setup */ - XF_CHK_ERR(input && n && output, XA_PCM_EXEC_FATAL_STATE); - - /* ...convert individual samples (that function could be CPU-optimized - tbd) */ - for (i = 0; i < n; i++, input += k) - { - /* ...process individual channels in a sample */ - for (j = 0, map = chmap; j < k; j++, map >>= 4) - { - u8 m = map & 0xF; - - /* ...convert and zero out unused channels */ - *output++ = (m < 8 ? input[m] << 16 : 0); - } - } - - /* ...set number of consumed/produced bytes */ - d->consumed = (u32)((u8 *)input - (u8 *)d->input); - d->produced = (u32)((u8 *)output - (u8 *)d->output); - - /* ...reset input buffer length (tbd - need that?) */ - d->insize = 0; - - /* ...copy input to output */ - return XA_NO_ERROR; -} - -/* ...determine if we need to do a channel routing */ -static inline int xa_pcm_is_identity_mapping(u32 chmap, u8 k) -{ - u8 j; - - for (j = 0; j < k; j++, chmap >>= 4) - if ((chmap & 0xF) != j) - return 0; - - return 1; -} - -/* ...runtime initialization */ -static inline XA_ERRORCODE xa_pcm_do_runtime_init(XAPcmCodec *d) -{ - u8 in_width = d->in_pcm_width, out_width = d->out_pcm_width; - u8 in_ch = d->in_channels, out_ch = d->out_channels; - u32 chmap = d->chan_routing; - - /* ...check for supported processing schemes */ - if (in_width == out_width) - { - /* ...check if we need to do a channel mapping */ - if (in_ch != out_ch || !xa_pcm_is_identity_mapping(chmap, in_ch)) - { - /* ...mapping is needed */ - d->process = (in_width == 16 ? xa_pcm_do_execute_pcm16_chmap : xa_pcm_do_execute_pcm24_chmap); - } - else - { - /* ...setup identity translation */ - d->process = xa_pcm_do_execute_copy; - } - } - else - { - /* ...samples converion is required */ - d->process = (in_width == 16 ? xa_pcm_do_execute_pcm16_to_pcm24 : xa_pcm_do_execute_pcm24_to_pcm16); - } - - /* ...mark the runtime initialization is completed */ - d->state = XA_PCM_FLAG_PREINIT_DONE | XA_PCM_FLAG_POSTINIT_DONE | XA_PCM_FLAG_RUNNING; - - TRACE(INIT, _b("PCM format converter initialized: PCM%u -> PCM%u, ich=%u, och=%u, map=%X"), in_width, out_width, in_ch, out_ch, chmap); - - return XA_NO_ERROR; -} - -/******************************************************************************* - * Commands processing - ******************************************************************************/ - -/* ...standard codec initialization routine */ -static XA_ERRORCODE xa_pcm_get_api_size(XAPcmCodec *d, WORD32 i_idx, pVOID pv_value) -{ - /* ...return API structure size */ - *(WORD32 *)pv_value = sizeof(*d); - - return XA_NO_ERROR; -} - -/* ...standard codec initialization routine */ -static XA_ERRORCODE xa_pcm_init(XAPcmCodec *d, WORD32 i_idx, pVOID pv_value) -{ - /* ...validity check */ - XF_CHK_ERR(d, XA_API_FATAL_INVALID_CMD_TYPE); - - /* ...process particular initialization type */ - switch (i_idx) - { - case XA_CMD_TYPE_INIT_API_PRE_CONFIG_PARAMS: - { - /* ...pre-configuration initialization; reset internal data */ - memset(d, 0, sizeof(*d)); - - /* ...set default parameters */ - d->in_pcm_width = d->out_pcm_width = 16; - d->in_channels = d->out_channels = 2; - d->chan_routing = (0 << 0) | (1 << 1); - d->sample_rate = 48000; - - /* ...open debug files */ - //BUG((d->f_input = open("pcm-in.dat", O_WRONLY | O_CREAT, 0664)) < 0, _x("%m")); - //BUG((d->f_output = open("pcm-out.dat", O_WRONLY | O_CREAT, 0664)) < 0, _x("%m")); - - /* ...mark pre-initialization is done */ - d->state = XA_PCM_FLAG_PREINIT_DONE; - - return XA_NO_ERROR; - } - - case XA_CMD_TYPE_INIT_API_POST_CONFIG_PARAMS: - { - /* ...post-configuration initialization (all parameters are set) */ - XF_CHK_ERR(d->state & XA_PCM_FLAG_PREINIT_DONE, XA_API_FATAL_INVALID_CMD_TYPE); - - /* ...calculate input sample stride size */ - d->in_stride = d->in_channels * (d->in_pcm_width == 16 ? 2 : 4); - d->out_stride = d->out_channels * (d->out_pcm_width == 16 ? 2 : 4); - - /* ...mark post-initialization is complete */ - d->state |= XA_PCM_FLAG_POSTINIT_DONE; - - return XA_NO_ERROR; - } - - case XA_CMD_TYPE_INIT_PROCESS: - { - /* ...run-time initialization process; make sure post-init is complete */ - XF_CHK_ERR(d->state & XA_PCM_FLAG_POSTINIT_DONE, XA_API_FATAL_INVALID_CMD_TYPE); - - /* ...initialize runtime for specified transformation function */ - return xa_pcm_do_runtime_init(d); - } - - case XA_CMD_TYPE_INIT_DONE_QUERY: - { - /* ...check for runtime initialization completion; maske usre post-init is complete */ - XF_CHK_ERR(d->state & XA_PCM_FLAG_POSTINIT_DONE, XA_API_FATAL_INVALID_CMD_TYPE); - - /* ...put current status */ - *(WORD32 *)pv_value = (d->state & XA_PCM_FLAG_RUNNING ? 1 : 0); - - return XA_NO_ERROR; - } - - default: - /* ...unrecognized command */ - return XF_CHK_ERR(0, XA_API_FATAL_INVALID_CMD_TYPE); - } -} - -/* ...set configuration parameter */ -static XA_ERRORCODE xa_pcm_set_config_param(XAPcmCodec *d, WORD32 i_idx, pVOID pv_value) -{ - WORD32 i_value; - - /* ...validity check */ - XF_CHK_ERR(d && pv_value, XA_API_FATAL_INVALID_CMD_TYPE); - - /* ...configuration is allowed only in PRE-CONFIG state */ - XF_CHK_ERR(d->state == XA_PCM_FLAG_PREINIT_DONE, XA_PCM_CONFIG_NONFATAL_STATE); - - /* ...get integer parameter value */ - i_value = *(WORD32 *)pv_value; - - /* ...process individual configuration parameter */ - switch (i_idx) - { - case XA_CODEC_CONFIG_PARAM_SAMPLE_RATE: - case XA_PCM_CONFIG_PARAM_SAMPLE_RATE: - /* ...accept any sampling rate */ - d->sample_rate = (u32)i_value; - return XA_NO_ERROR; - - case XA_PCM_CONFIG_PARAM_IN_PCM_WIDTH: - /* ...return input sample bit-width */ - XF_CHK_ERR(i_value == 16 || i_value == 24, XA_PCM_CONFIG_NONFATAL_RANGE); - d->in_pcm_width = (u8)i_value; - return XA_NO_ERROR; - - case XA_PCM_CONFIG_PARAM_IN_CHANNELS: - /* ...support at most 8-channels stream */ - XF_CHK_ERR(i_value > 0 && i_value <= 8, XA_PCM_CONFIG_NONFATAL_RANGE); - d->in_channels = (u8)i_value; - return XA_NO_ERROR; - - case XA_CODEC_CONFIG_PARAM_PCM_WIDTH: - case XA_PCM_CONFIG_PARAM_OUT_PCM_WIDTH: - /* ...we only support PCM16 and PCM24 */ - XF_CHK_ERR(i_value == 16 || i_value == 24, XA_PCM_CONFIG_NONFATAL_RANGE); - d->out_pcm_width = (u8)i_value; - return XA_NO_ERROR; - - case XA_CODEC_CONFIG_PARAM_CHANNELS: - case XA_PCM_CONFIG_PARAM_OUT_CHANNELS: - /* ...support at most 8-channels stream */ - XF_CHK_ERR(i_value > 0 && i_value <= 8, XA_API_FATAL_INVALID_CMD_TYPE); - d->out_channels = (u8)i_value; - return XA_NO_ERROR; - - case XA_PCM_CONFIG_PARAM_CHANROUTING: - /* ...accept any channel routing mask */ - d->chan_routing = (u32)i_value; - return XA_NO_ERROR; - - default: - /* ...unrecognized parameter */ - return XF_CHK_ERR(0, XA_API_FATAL_INVALID_CMD_TYPE); - } -} - -/* ...retrieve configuration parameter */ -static XA_ERRORCODE xa_pcm_get_config_param(XAPcmCodec *d, WORD32 i_idx, pVOID pv_value) -{ - /* ...validity check */ - XF_CHK_ERR(d && pv_value, XA_API_FATAL_INVALID_CMD_TYPE); - - /* ...make sure pre-configuration is completed */ - XF_CHK_ERR(d->state & XA_PCM_FLAG_PREINIT_DONE, XA_PCM_CONFIG_NONFATAL_STATE); - - /* ...process individual parameter */ - switch (i_idx) - { - case XA_CODEC_CONFIG_PARAM_SAMPLE_RATE: - case XA_PCM_CONFIG_PARAM_SAMPLE_RATE: - /* ...return output sampling frequency */ - *(WORD32 *)pv_value = d->sample_rate; - return XA_NO_ERROR; - - case XA_PCM_CONFIG_PARAM_IN_PCM_WIDTH: - /* ...return input sample bit-width */ - *(WORD32 *)pv_value = d->in_pcm_width; - return XA_NO_ERROR; - - case XA_PCM_CONFIG_PARAM_IN_CHANNELS: - /* ...return number of input channels */ - *(WORD32 *)pv_value = d->in_channels; - return XA_NO_ERROR; - - case XA_CODEC_CONFIG_PARAM_PCM_WIDTH: - case XA_PCM_CONFIG_PARAM_OUT_PCM_WIDTH: - /* ...return output sample bit-width */ - *(WORD32 *)pv_value = d->out_pcm_width; - return XA_NO_ERROR; - - case XA_CODEC_CONFIG_PARAM_CHANNELS: - case XA_PCM_CONFIG_PARAM_OUT_CHANNELS: - /* ...return number of output channels */ - *(WORD32 *)pv_value = d->out_channels; - return XA_NO_ERROR; - - case XA_PCM_CONFIG_PARAM_CHANROUTING: - /* ...return current channel routing mask */ - *(WORD32 *)pv_value = d->chan_routing; - return XA_NO_ERROR; - - default: - /* ...unrecognized parameter */ - return XF_CHK_ERR(0, XA_API_FATAL_INVALID_CMD_TYPE); - } -} - -/* ...execution command */ -static XA_ERRORCODE xa_pcm_execute(XAPcmCodec *d, WORD32 i_idx, pVOID pv_value) -{ - /* ...basic validity check */ - XF_CHK_ERR(d, XA_API_FATAL_INVALID_CMD_TYPE); - - /* ...codec must be in running state */ - XF_CHK_ERR(d->state & XA_PCM_FLAG_RUNNING, XA_API_FATAL_INVALID_CMD_TYPE); - - /* ...process individual command type */ - switch (i_idx) - { - case XA_CMD_TYPE_DO_EXECUTE: - /* ...do data processing (tbd - result code is bad) */ - if (d->insize != 0) - { - XF_CHK_ERR(!XA_ERROR_SEVERITY(d->process(d)), XA_PCM_EXEC_FATAL_STATE); - } - - /* ...process end-of-stream condition */ - (d->state & XA_PCM_FLAG_EOS ? d->state ^= XA_PCM_FLAG_EOS | XA_PCM_FLAG_COMPLETE : 0); - - return XA_NO_ERROR; - - case XA_CMD_TYPE_DONE_QUERY: - /* ...check if processing is complete */ - XF_CHK_ERR(pv_value, XA_API_FATAL_INVALID_CMD_TYPE); - - /* ...return completion status */ - *(WORD32 *)pv_value = (d->state & XA_PCM_FLAG_COMPLETE ? 1 : 0); - - return XA_NO_ERROR; - - case XA_CMD_TYPE_DO_RUNTIME_INIT: - /* ...reset codec operation */ - return xa_pcm_do_runtime_init(d); - - default: - /* ...unrecognized command */ - return XF_CHK_ERR(0, XA_API_FATAL_INVALID_CMD_TYPE); - } -} - -/* ...set number of input bytes */ -static XA_ERRORCODE xa_pcm_set_input_bytes(XAPcmCodec *d, WORD32 i_idx, pVOID pv_value) -{ - u32 in_stride = d->in_stride; - u32 insize; - - /* ...validity check */ - XF_CHK_ERR(d && pv_value, XA_API_FATAL_INVALID_CMD_TYPE); - - /* ...track index must be valid */ - XF_CHK_ERR(i_idx == 0, XA_API_FATAL_INVALID_CMD_TYPE); - - /* ...component must be initialized */ - XF_CHK_ERR(d->state & XA_PCM_FLAG_POSTINIT_DONE, XA_API_FATAL_INVALID_CMD_TYPE); - - /* ...input buffer must exist */ - XF_CHK_ERR(d->input, XA_API_FATAL_INVALID_CMD_TYPE); - - /* ...convert bytes into samples (don't like division, but still...) */ - insize = *(WORD32 *)pv_value / in_stride; - - /* ...make sure we have integral amount of samples */ - XF_CHK_ERR(*(WORD32 *)pv_value == insize * in_stride, XA_API_FATAL_INVALID_CMD_TYPE); - - /* ...limit input buffer size to maximal value*/ - d->insize = (insize > XA_PCM_MAX_SAMPLES ? XA_PCM_MAX_SAMPLES : insize); - - return XA_NO_ERROR; -} - -/* ...get number of output bytes produced */ -static XA_ERRORCODE xa_pcm_get_output_bytes(XAPcmCodec *d, WORD32 i_idx, pVOID pv_value) -{ - /* ...validity check */ - XF_CHK_ERR(d && pv_value, XA_API_FATAL_INVALID_CMD_TYPE); - - /* ...buffer index must be valid */ - XF_CHK_ERR(i_idx == 1, XA_API_FATAL_INVALID_CMD_TYPE); - - /* ...component must be initialized */ - XF_CHK_ERR(d->state & XA_PCM_FLAG_POSTINIT_DONE, XA_API_FATAL_INVALID_CMD_TYPE); - - /* ...output buffer must exist */ - XF_CHK_ERR(d->output, XA_API_FATAL_INVALID_CMD_TYPE); - - /* ...return number of produced bytes (and reset instantly? - tbd) */ - *(WORD32 *)pv_value = d->produced; - - return XA_NO_ERROR; -} - -/* ...get number of consumed bytes */ -static XA_ERRORCODE xa_pcm_get_curidx_input_buf(XAPcmCodec *d, WORD32 i_idx, pVOID pv_value) -{ - /* ...validity check */ - XF_CHK_ERR(d && pv_value, XA_API_FATAL_INVALID_CMD_TYPE); - - /* ...index must be valid */ - XF_CHK_ERR(i_idx == 0, XA_API_FATAL_INVALID_CMD_TYPE); - - /* ...input buffer must exist */ - XF_CHK_ERR(d->input, XA_PCM_EXEC_NONFATAL_INPUT); - - /* ...return number of bytes consumed */ - *(WORD32 *)pv_value = d->consumed; - - return XA_NO_ERROR; -} - -/* ...end-of-stream processing */ -static XA_ERRORCODE xa_pcm_input_over(XAPcmCodec *d, WORD32 i_idx, pVOID pv_value) -{ - /* ...validity check */ - XF_CHK_ERR(d, XA_API_FATAL_INVALID_CMD_TYPE); - - /* ...put end-of-stream flag */ - d->state |= XA_PCM_FLAG_EOS; - - TRACE(PROCESS, _b("Input-over-condition signalled")); - - return XA_NO_ERROR; -} - -/* ..get total amount of data for memory tables */ -static XA_ERRORCODE xa_pcm_get_memtabs_size(XAPcmCodec *d, WORD32 i_idx, pVOID pv_value) -{ - /* ...basic validity checks */ - XF_CHK_ERR(d && pv_value, XA_API_FATAL_INVALID_CMD_TYPE); - - /* ...check mixer is pre-initialized */ - XF_CHK_ERR(d->state & XA_PCM_FLAG_PREINIT_DONE, XA_API_FATAL_INVALID_CMD_TYPE); - - /* ...we have all our tables inside API structure */ - *(WORD32 *)pv_value = 0; - - return XA_NO_ERROR; -} - -/* ...return total amount of memory buffers */ -static XA_ERRORCODE xa_pcm_get_n_memtabs(XAPcmCodec *d, WORD32 i_idx, pVOID pv_value) -{ - /* ...basic validity checks */ - XF_CHK_ERR(d && pv_value, XA_API_FATAL_INVALID_CMD_TYPE); - - /* ...we have 1 input buffer and 1 output buffer */ - *(WORD32 *)pv_value = 1 + 1; - - return XA_NO_ERROR; -} - -/* ...return memory type data */ -static XA_ERRORCODE xa_pcm_get_mem_info_type(XAPcmCodec *d, WORD32 i_idx, pVOID pv_value) -{ - /* ...basic validity check */ - XF_CHK_ERR(d && pv_value, XA_API_FATAL_INVALID_CMD_TYPE); - - /* ...codec must be in post-init state */ - XF_CHK_ERR(d->state & XA_PCM_FLAG_POSTINIT_DONE, XA_API_FATAL_INVALID_CMD_TYPE); - - /* ...check buffer type */ - switch (i_idx) - { - case 0: - *(WORD32 *)pv_value = XA_MEMTYPE_INPUT; - return XA_NO_ERROR; - - case 1: - *(WORD32 *)pv_value = XA_MEMTYPE_OUTPUT; - return XA_NO_ERROR; - - default: - return XF_CHK_ERR(0, XA_API_FATAL_INVALID_CMD_TYPE); - } -} - -/* ...return memory buffer size */ -static XA_ERRORCODE xa_pcm_get_mem_info_size(XAPcmCodec *d, WORD32 i_idx, pVOID pv_value) -{ - /* ...basic validity check */ - XF_CHK_ERR(d && pv_value, XA_API_FATAL_INVALID_CMD_TYPE); - - /* ...codec must be in post-init state */ - XF_CHK_ERR(d->state & XA_PCM_FLAG_POSTINIT_DONE, XA_API_FATAL_INVALID_CMD_TYPE); - - /* ...determine particular buffer */ - switch (i_idx) - { - case 0: - /* ...input buffer size can be any */ - *(WORD32 *)pv_value = 0; - return XA_NO_ERROR; - - case 1: - /* ...output buffer size is dependent on stride */ - *(WORD32 *)pv_value = XA_PCM_MAX_SAMPLES * d->out_stride; - return XA_NO_ERROR; - - default: - /* ...invalid buffer index */ - return XF_CHK_ERR(0, XA_API_FATAL_INVALID_CMD_TYPE); - } -} - -/* ...return memory alignment data */ -static XA_ERRORCODE xa_pcm_get_mem_info_alignment(XAPcmCodec *d, WORD32 i_idx, pVOID pv_value) -{ - /* ...basic validity check */ - XF_CHK_ERR(d && pv_value, XA_API_FATAL_INVALID_CMD_TYPE); - - /* ...codec must be in post-initialization state */ - XF_CHK_ERR(d->state & XA_PCM_FLAG_POSTINIT_DONE, XA_API_FATAL_INVALID_CMD_TYPE); - - /* ...all buffers are 4-bytes aligned */ - *(WORD32 *)pv_value = 4; - - return XA_NO_ERROR; -} - -/* ...set memory pointer */ -static XA_ERRORCODE xa_pcm_set_mem_ptr(XAPcmCodec *d, WORD32 i_idx, pVOID pv_value) -{ - /* ...basic validity check */ - XF_CHK_ERR(d, XA_API_FATAL_INVALID_CMD_TYPE); - XF_CHK_ERR(pv_value, XA_API_FATAL_INVALID_CMD_TYPE); - - /* ...codec must be in post-initialized state */ - XF_CHK_ERR(d->state & XA_PCM_FLAG_POSTINIT_DONE, XA_API_FATAL_INVALID_CMD_TYPE); - - /* ...select memory buffer */ - switch (i_idx) - { - case 0: - /* ...input buffer */ - d->input = pv_value; - return XA_NO_ERROR; - - case 1: - /* ...output buffer */ - d->output = pv_value; - return XA_NO_ERROR; - - default: - /* ...invalid index */ - return XF_CHK_ERR(0, XA_API_FATAL_INVALID_CMD_TYPE); - } -} - -/******************************************************************************* - * API command hooks - ******************************************************************************/ - -static XA_ERRORCODE (* const xa_pcm_api[])(XAPcmCodec *, WORD32, pVOID) = -{ - [XA_API_CMD_GET_API_SIZE] = xa_pcm_get_api_size, - - [XA_API_CMD_INIT] = xa_pcm_init, - [XA_API_CMD_SET_CONFIG_PARAM] = xa_pcm_set_config_param, - [XA_API_CMD_GET_CONFIG_PARAM] = xa_pcm_get_config_param, - - [XA_API_CMD_EXECUTE] = xa_pcm_execute, - [XA_API_CMD_SET_INPUT_BYTES] = xa_pcm_set_input_bytes, - [XA_API_CMD_GET_OUTPUT_BYTES] = xa_pcm_get_output_bytes, - [XA_API_CMD_GET_CURIDX_INPUT_BUF] = xa_pcm_get_curidx_input_buf, - [XA_API_CMD_INPUT_OVER] = xa_pcm_input_over, - - [XA_API_CMD_GET_MEMTABS_SIZE] = xa_pcm_get_memtabs_size, - [XA_API_CMD_GET_N_MEMTABS] = xa_pcm_get_n_memtabs, - [XA_API_CMD_GET_MEM_INFO_TYPE] = xa_pcm_get_mem_info_type, - [XA_API_CMD_GET_MEM_INFO_SIZE] = xa_pcm_get_mem_info_size, - [XA_API_CMD_GET_MEM_INFO_ALIGNMENT] = xa_pcm_get_mem_info_alignment, - [XA_API_CMD_SET_MEM_PTR] = xa_pcm_set_mem_ptr, -}; - -/* ...total numer of commands supported */ -#define XA_PCM_API_COMMANDS_NUM (sizeof(xa_pcm_api) / sizeof(xa_pcm_api[0])) - -/******************************************************************************* - * API entry point - ******************************************************************************/ - -XA_ERRORCODE xa_pcm_codec(xa_codec_handle_t p_xa_module_obj, WORD32 i_cmd, WORD32 i_idx, pVOID pv_value) -{ - XAPcmCodec *d = (XAPcmCodec *) p_xa_module_obj; - - /* ...check if command index is valid */ - XF_CHK_ERR(i_cmd < XA_PCM_API_COMMANDS_NUM, XA_API_FATAL_INVALID_CMD); - - /* ...see if command is defined */ - XF_CHK_ERR(xa_pcm_api[i_cmd], XA_API_FATAL_INVALID_CMD); - - /* ...execute requested command */ - return xa_pcm_api[i_cmd](d, i_idx, pv_value); -} diff --git a/hifi/xaf/hifi-dpf/plugins/cadence/vorbis_dec/lib/hifi3/xa_vorbis_dec.a b/hifi/xaf/hifi-dpf/plugins/cadence/vorbis_dec/lib/hifi3/xa_vorbis_dec.a Binary files differdeleted file mode 100644 index cb284459..00000000 --- a/hifi/xaf/hifi-dpf/plugins/cadence/vorbis_dec/lib/hifi3/xa_vorbis_dec.a +++ /dev/null diff --git a/hifi/xaf/hifi-dpf/plugins/cadence/vorbis_dec/xa-vorbis-decoder.c b/hifi/xaf/hifi-dpf/plugins/cadence/vorbis_dec/xa-vorbis-decoder.c deleted file mode 100644 index 43220ef3..00000000 --- a/hifi/xaf/hifi-dpf/plugins/cadence/vorbis_dec/xa-vorbis-decoder.c +++ /dev/null @@ -1,84 +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-vorbis-decoder.c - * - * VORBIS decoder plugin - thin wrapper around VORBISDEC library - * - ******************************************************************************/ - -#define MODULE_TAG VORBISDEC - -/******************************************************************************* - * Includes - ******************************************************************************/ - -#include "xf-plugin.h" -#include "audio/xa-audio-decoder-api.h" -#include "xa_vorbis_dec_api.h" - -/******************************************************************************* - * Override GET-CONFIG-PARAM function - ******************************************************************************/ - -static inline XA_ERRORCODE xa_vorbis_get_config_param(xa_codec_handle_t handle, WORD32 i_idx, pVOID pv_value) -{ - /* ...translate "standard" parameter index into internal value */ - switch (i_idx) - { - case XA_CODEC_CONFIG_PARAM_CHANNELS: - /* ...return number of output channels */ - i_idx = XA_VORBISDEC_CONFIG_PARAM_NUM_CHANNELS; - break; - - case XA_CODEC_CONFIG_PARAM_SAMPLE_RATE: - /* ...return output sampling frequency */ - i_idx = XA_VORBISDEC_CONFIG_PARAM_SAMP_FREQ; - break; - - case XA_CODEC_CONFIG_PARAM_PCM_WIDTH: - /* ...return sample bit-width */ - i_idx = XA_VORBISDEC_CONFIG_PARAM_PCM_WDSZ; - break; - } - - /* ...pass to library */ - return xa_vorbis_dec(handle, XA_API_CMD_GET_CONFIG_PARAM, i_idx, pv_value); -} - -/******************************************************************************* - * API entry point - ******************************************************************************/ - -XA_ERRORCODE xa_vorbis_decoder(xa_codec_handle_t p_xa_module_obj, WORD32 i_cmd, WORD32 i_idx, pVOID pv_value) -{ - /* ...process common audio-decoder commands */ - if (i_cmd == XA_API_CMD_GET_CONFIG_PARAM) - { - return xa_vorbis_get_config_param(p_xa_module_obj, i_idx, pv_value); - } - else - { - return xa_vorbis_dec(p_xa_module_obj, i_cmd, i_idx, pv_value); - } -} diff --git a/hifi/xaf/hifi-dpf/plugins/cadence/vorbis_dec/xa_vorbis_dec_api.h b/hifi/xaf/hifi-dpf/plugins/cadence/vorbis_dec/xa_vorbis_dec_api.h deleted file mode 100644 index f99660f8..00000000 --- a/hifi/xaf/hifi-dpf/plugins/cadence/vorbis_dec/xa_vorbis_dec_api.h +++ /dev/null @@ -1,121 +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. - -******************************************************************************/ -/******************************************************************************* -* -* NOTE, ANY CHANGES TO THIS FILE MAY AFFECT UNDERLYING AUDIO / SPEECH CODEC -* LIBRARY COMPONENT FROM CADENCE DESIGN SYSTEMS, INC. -* -******************************************************************************/ - - - -#ifndef __XA_VORBIS_DEC_API_H__ -#define __XA_VORBIS_DEC_API_H__ - -#include <xa_memory_standards.h> - -/* vorbis_dec-specific configuration parameters */ -enum xa_config_param_vorbis_dec -{ - XA_VORBISDEC_CONFIG_PARAM_SAMP_FREQ = 0, - XA_VORBISDEC_CONFIG_PARAM_NUM_CHANNELS = 1, - XA_VORBISDEC_CONFIG_PARAM_PCM_WDSZ = 2, - XA_VORBISDEC_CONFIG_PARAM_COMMENT_MEM_PTR = 3, - XA_VORBISDEC_CONFIG_PARAM_COMMENT_MEM_SIZE = 4, - XA_VORBISDEC_CONFIG_PARAM_GET_CUR_BITRATE = 5, - XA_VORBISDEC_CONFIG_PARAM_RAW_VORBIS_FILE_MODE = 6, - XA_VORBISDEC_CONFIG_PARAM_RAW_VORBIS_LAST_PKT_GRANULE_POS = 7, - XA_VORBISDEC_CONFIG_PARAM_OGG_MAX_PAGE_SIZE = 8, - XA_VORBISDEC_CONFIG_PARAM_RUNTIME_MEM = 9 -}; - -/* commands */ -#include <xa_apicmd_standards.h> - -/* vorbis_dec-specific command types */ -/* (none) */ - -/* error codes */ -#include <xa_error_standards.h> -#define XA_CODEC_VORBIS_DEC 7 - -/* vorbis_dec-specific error codes */ - -/*****************************************************************************/ -/* Class 1: Configuration Errors */ -/*****************************************************************************/ -/* Nonfatal Errors */ -enum xa_error_nonfatal_config_vorbis_dec -{ - XA_VORBISDEC_CONFIG_NONFATAL_GROUPED_STREAM = XA_ERROR_CODE(xa_severity_nonfatal, xa_class_config, XA_CODEC_VORBIS_DEC, 0), - XA_VORBISDEC_CONFIG_NONFATAL_BAD_PARAM = XA_ERROR_CODE(xa_severity_nonfatal, xa_class_config, XA_CODEC_VORBIS_DEC, 1) -}; - -/* Fatal Errors */ -enum xa_error_fatal_config_vorbis_dec -{ - XA_VORBISDEC_CONFIG_FATAL_BADHDR = XA_ERROR_CODE(xa_severity_fatal, xa_class_config, XA_CODEC_VORBIS_DEC, 0), - XA_VORBISDEC_CONFIG_FATAL_NOTVORBIS = XA_ERROR_CODE(xa_severity_fatal, xa_class_config, XA_CODEC_VORBIS_DEC, 1), - XA_VORBISDEC_CONFIG_FATAL_BADINFO = XA_ERROR_CODE(xa_severity_fatal, xa_class_config, XA_CODEC_VORBIS_DEC, 2), - XA_VORBISDEC_CONFIG_FATAL_BADVERSION = XA_ERROR_CODE(xa_severity_fatal, xa_class_config, XA_CODEC_VORBIS_DEC, 3), - XA_VORBISDEC_CONFIG_FATAL_BADBOOKS = XA_ERROR_CODE(xa_severity_fatal, xa_class_config, XA_CODEC_VORBIS_DEC, 4), - XA_VORBISDEC_CONFIG_FATAL_CODEBOOK_DECODE = XA_ERROR_CODE(xa_severity_fatal, xa_class_config, XA_CODEC_VORBIS_DEC, 5), - XA_VORBISDEC_CONFIG_FATAL_INVALID_PARAM = XA_ERROR_CODE(xa_severity_fatal, xa_class_config, XA_CODEC_VORBIS_DEC, 6) -}; - -/*****************************************************************************/ -/* Class 2: Execution Errors */ -/*****************************************************************************/ -/* Nonfatal Errors */ -enum xa_error_nonfatal_execute_vorbis_dec -{ - XA_VORBISDEC_EXECUTE_NONFATAL_OV_HOLE = XA_ERROR_CODE(xa_severity_nonfatal, xa_class_execute, XA_CODEC_VORBIS_DEC, 0), - XA_VORBISDEC_EXECUTE_NONFATAL_OV_NOTAUDIO = XA_ERROR_CODE(xa_severity_nonfatal, xa_class_execute, XA_CODEC_VORBIS_DEC, 1), - XA_VORBISDEC_EXECUTE_NONFATAL_OV_BADPACKET = XA_ERROR_CODE(xa_severity_nonfatal, xa_class_execute, XA_CODEC_VORBIS_DEC, 2), - XA_VORBISDEC_EXECUTE_NONFATAL_OV_RUNTIME_DECODE_FLUSH_IN_PROGRESS = XA_ERROR_CODE(xa_severity_nonfatal, xa_class_execute, XA_CODEC_VORBIS_DEC, 3), - XA_VORBISDEC_EXECUTE_NONFATAL_OV_INVALID_STRM_POS = XA_ERROR_CODE(xa_severity_nonfatal, xa_class_execute, XA_CODEC_VORBIS_DEC, 4), - XA_VORBISDEC_EXECUTE_NONFATAL_OV_INSUFFICIENT_DATA = XA_ERROR_CODE(xa_severity_nonfatal, xa_class_execute, XA_CODEC_VORBIS_DEC, 5), - XA_VORBISDEC_EXECUTE_NONFATAL_OV_UNEXPECTED_IDENT_PKT_RECEIVED = XA_ERROR_CODE(xa_severity_nonfatal, xa_class_execute, XA_CODEC_VORBIS_DEC, 6), - XA_VORBISDEC_EXECUTE_NONFATAL_OV_UNEXPECTED_HEADER_PKT_RECEIVED = XA_ERROR_CODE(xa_severity_nonfatal, xa_class_execute, XA_CODEC_VORBIS_DEC, 7) -}; -/* Fatal Errors */ -enum xa_error_fatal_execute_vorbis_dec -{ - XA_VORBISDEC_EXECUTE_FATAL_PERSIST_ALLOC = XA_ERROR_CODE(xa_severity_fatal, xa_class_execute, XA_CODEC_VORBIS_DEC, 0), - XA_VORBISDEC_EXECUTE_FATAL_SCRATCH_ALLOC = XA_ERROR_CODE(xa_severity_fatal, xa_class_execute, XA_CODEC_VORBIS_DEC, 1), - XA_VORBISDEC_EXECUTE_FATAL_CORRUPT_STREAM = XA_ERROR_CODE(xa_severity_fatal, xa_class_execute, XA_CODEC_VORBIS_DEC, 2), - XA_VORBISDEC_EXECUTE_FATAL_INSUFFICIENT_INP_BUF_SIZE = XA_ERROR_CODE(xa_severity_fatal, xa_class_execute, XA_CODEC_VORBIS_DEC, 3) -}; - -#include "xa_type_def.h" - -#ifdef __cplusplus - extern "C" { -#endif /* __cplusplus */ - - xa_codec_func_t xa_vorbis_dec; - -#ifdef __cplusplus - } -#endif /* __cplusplus */ - -#endif /* __XA_VORBIS_DEC_API_H__ */ |