Sound Open Firmware
Loading...
Searching...
No Matches
cadence.h
Go to the documentation of this file.
1/* SPDX-License-Identifier: BSD-3-Clause
2 *
3 * Copyright(c) 2019 Intel Corporation. All rights reserved.
4 *
5 * Author: Marcin Rajwa <marcin.rajwa@linux.intel.com>
6 */
7
8#ifndef __SOF_AUDIO_CADENCE_CODEC__
9#define __SOF_AUDIO_CADENCE_CODEC__
10
15
16#define LIB_NAME_MAX_LEN 30
17#define LIB_NO_ERROR XA_NO_ERROR
18#define LIB_IS_FATAL_ERROR(e) ((e) & XA_FATAL_ERROR)
19#define CODEC_GET_API_ID(id) ((id) & 0xFF)
20#define CADENCE_MP3_ENCODER_DEFAULT_BITRATE 320
21
22/*****************************************************************************/
23/* Cadence API functions */
24/*****************************************************************************/
36
37#define DEFAULT_CODEC_ID CADENCE_CODEC_WRAPPER_ID
38
39#define API_CALL(cd, cmd, sub_cmd, value, ret) \
40 do { \
41 ret = (cd)->api((cd)->self, \
42 (cmd), \
43 (sub_cmd), \
44 (value)); \
45 } while (0)
46
47/*****************************************************************************/
48/* Cadence private data types */
49/*****************************************************************************/
51 uint32_t id;
53};
54
55struct ipc_msg;
56
58#if CONFIG_IPC_MAJOR_4
60 uint32_t direction;
61 struct ipc_msg *msg;
62#endif
64 void *self;
66 void *mem_tabs;
69 uint32_t api_id;
71};
72
84 /*
85 * IDs >= 0x80 are reserved for in-tree open-source codecs that
86 * plug into the Cadence wrapper but are not Cadence proprietary
87 * codecs.
88 */
90};
91
92#if CONFIG_IPC_MAJOR_4
95 uint32_t param_size;
97} __packed __aligned(4);
98#endif
99
100extern const struct cadence_api cadence_api_table[];
101
102int cadence_codec_set_configuration(struct processing_module *mod, uint32_t config_id,
104 uint32_t data_offset_size, const uint8_t *fragment,
105 size_t fragment_size, uint8_t *response, size_t response_size);
106int cadence_codec_resolve_api_with_id(struct processing_module *mod, uint32_t codec_id,
107 uint32_t direction);
108int cadence_codec_apply_params(struct processing_module *mod, int size, void *data);
110 XA_ERRORCODE *api_error_code);
120void cadence_copy_data_from_buffer(void *dest, const void *buffer_ptr, size_t bytes_to_copy,
121 size_t buffer_size, void const *buffer_start);
122void cadence_copy_data_to_buffer(void *buffer_ptr, size_t bytes_to_copy,
123 size_t buffer_size, void *buffer_start,
124 const void *src);
125
126#endif /* __SOF_AUDIO_CADENCE_CODEC__ */
#define LIB_NAME_MAX_LEN
Definition cadence.h:16
xa_codec_func_t xa_sbc_dec
xa_codec_func_t xa_vorbis_dec
Definition xa_vorbis_dec_api.h:109
int cadence_codec_set_configuration(struct processing_module *mod, uint32_t config_id, enum module_cfg_fragment_position pos, uint32_t data_offset_size, const uint8_t *fragment, size_t fragment_size, uint8_t *response, size_t response_size)
int cadence_codec_apply_config(struct processing_module *mod)
xa_codec_func_t cadence_api_function
unsigned int cadence_codec_get_samples(struct processing_module *mod)
int cadence_codec_init_memory_tables(struct processing_module *mod)
int cadence_codec_resolve_api(struct processing_module *mod)
xa_codec_func_t xa_mp3_dec
Definition xa_mp3_dec_api.h:158
const struct cadence_api cadence_api_table[]
void cadence_copy_data_from_buffer(void *dest, const void *buffer_ptr, size_t bytes_to_copy, size_t buffer_size, void const *buffer_start)
int cadence_init_codec_object(struct processing_module *mod)
xa_codec_func_t xa_bsac_dec
xa_codec_func_t xa_drm_dec
void cadence_copy_data_to_buffer(void *buffer_ptr, size_t bytes_to_copy, size_t buffer_size, void *buffer_start, const void *src)
int cadence_codec_process_data(struct processing_module *mod, XA_ERRORCODE *api_error_code)
xa_codec_func_t xa_mp3_enc
Definition xa_mp3_enc_api.h:87
xa_codec_func_t xa_dabplus_dec
Definition xa_aac_dec_api.h:412
cadence_api_id
Definition cadence.h:73
@ CADENCE_CODEC_DRM_DEC_ID
Definition cadence.h:78
@ CADENCE_CODEC_WRAPPER_ID
Definition cadence.h:74
@ CADENCE_CODEC_SRC_PP_ID
Definition cadence.h:82
@ CADENCE_CODEC_VORBIS_DEC_ID
Definition cadence.h:81
@ CADENCE_CODEC_MP3_DEC_ID
Definition cadence.h:79
@ SOF_COMPRESS_CODEC_PCM_DEC_ID
Definition cadence.h:89
@ CADENCE_CODEC_BSAC_DEC_ID
Definition cadence.h:76
@ CADENCE_CODEC_AAC_DEC_ID
Definition cadence.h:75
@ CADENCE_CODEC_SBC_DEC_ID
Definition cadence.h:80
@ CADENCE_CODEC_MP3_ENC_ID
Definition cadence.h:83
@ CADENCE_CODEC_DAB_DEC_ID
Definition cadence.h:77
void cadence_codec_free_memory_tables(struct processing_module *mod)
xa_codec_func_t xa_aac_dec
Definition xa_aac_dec_api.h:411
int cadence_codec_resolve_api_with_id(struct processing_module *mod, uint32_t codec_id, uint32_t direction)
xa_codec_func_t xa_pcm_dec
int cadence_codec_init_process(struct processing_module *mod)
xa_codec_func_t xa_src_pp
Definition xa_src_pp_api.h:100
int cadence_codec_free(struct processing_module *mod)
int cadence_codec_apply_params(struct processing_module *mod, int size, void *data)
size_t cadence_api_table_size(void)
module_cfg_fragment_position
Fragment position in config MODULE_CFG_FRAGMENT_FIRST: first fragment of the large configuration MODU...
Definition interface.h:29
uint8_t data[0]
Binary byte payload for raw controls.
Definition header.h:5
Definition cadence.h:50
uint32_t id
Definition cadence.h:51
xa_codec_func_t * api
Definition cadence.h:52
Definition cadence.h:57
uint32_t direction
Definition cadence.h:60
struct ipc_msg * msg
Definition cadence.h:61
void * mem_tabs
Definition cadence.h:66
size_t mem_to_be_freed_len
Definition cadence.h:67
char name[LIB_NAME_MAX_LEN]
Definition cadence.h:63
struct ipc4_base_module_cfg base_cfg
Definition cadence.h:59
void * self
Definition cadence.h:64
uint32_t api_id
Definition cadence.h:69
void ** mem_to_be_freed
Definition cadence.h:68
struct module_config setup_cfg
Definition cadence.h:70
xa_codec_func_t * api
Definition cadence.h:65
Base module configuration parameters provided upon module instantiation.
Definition base-config.h:160
Definition cadence.h:93
struct ipc4_base_module_cfg base_cfg
Definition cadence.h:94
struct module_param param[]
Definition cadence.h:96
uint32_t param_size
Definition cadence.h:95
Definition msg.h:34
Module config container, used for both config types.
Definition base.h:50
Module TLV parameters container - used for both config types.
Definition generic.h:119
Definition base.h:103
int XA_ERRORCODE
Definition xa_type_def.h:92
XA_ERRORCODE xa_codec_func_t(xa_codec_handle_t p_xa_module_obj, WORD32 i_cmd, WORD32 i_idx, pVOID pv_value)
Definition xa_type_def.h:94