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
59 struct ipc4_base_module_cfg base_cfg;
60 uint32_t direction;
61 struct ipc_msg *msg;
62#endif
64 void *self;
66 void *mem_tabs;
69 uint32_t api_id;
70 struct module_config setup_cfg;
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
93struct ipc4_cadence_module_cfg {
94 struct ipc4_base_module_cfg base_cfg;
95 uint32_t param_size;
96 struct module_param param[];
98#endif
99
100extern struct cadence_api cadence_api_table[];
101
102int cadence_codec_set_configuration(struct processing_module *mod, uint32_t config_id,
103 enum module_cfg_fragment_position pos,
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);
109int cadence_codec_process_data(struct processing_module *mod,
110 XA_ERRORCODE *api_error_code);
111int cadence_codec_apply_config(struct processing_module *mod);
112void cadence_codec_free_memory_tables(struct processing_module *mod);
113int cadence_codec_init_memory_tables(struct processing_module *mod);
114unsigned int cadence_codec_get_samples(struct processing_module *mod);
115int cadence_codec_init_process(struct processing_module *mod);
116int cadence_init_codec_object(struct processing_module *mod);
117int cadence_codec_resolve_api(struct processing_module *mod);
118int cadence_codec_free(struct processing_module *mod);
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
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)
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
struct cadence_api cadence_api_table[]
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)
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)
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)
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)
uint32_t data[]
Definition debug_stream_slot.h:2
#define __packed
Definition ext_manifest.h:43
Definition cadence.h:50
uint32_t id
Definition cadence.h:51
xa_codec_func_t * api
Definition cadence.h:52
Definition cadence.h:57
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
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
Definition msg.h:33
DLL_SHARED xa_codec_func_t xa_aac_dec
Definition xa_aac_dec_api.h:411
DLL_SHARED xa_codec_func_t xa_dabplus_dec
Definition xa_aac_dec_api.h:412
xa_codec_func_t xa_mp3_dec
Definition xa_mp3_dec_api.h:158
xa_codec_func_t xa_mp3_enc
Definition xa_mp3_enc_api.h:87
xa_codec_func_t xa_src_pp
Definition xa_src_pp_api.h:100
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
xa_codec_func_t xa_vorbis_dec
Definition xa_vorbis_dec_api.h:109
#define __aligned(x)
Definition compiler_attributes.h:27