1 /*
2  * Copyright (C) 2015-2020 Alibaba Group Holding Limited
3  */
4 
5 #ifndef _AUDIO_DEC_
6 #define _AUDIO_DEC_
7 #ifdef __cplusplus
8 extern "C"
9 {
10 #endif
11 
12 #include "plat_types.h"
13 
14     typedef enum
15     {
16         AUDIO_DEC_FORMAT_INVALID = -1,
17         AUDIO_DEC_FORMAT_MP3 = 0,
18         AUDIO_DEC_FORMAT_AAC_ADTS,
19         AUDIO_DEC_FORMAT_AAC_M4A,
20         AUDIO_DEC_FORMAT_OPUS,
21     } audio_dec_format_t;
22 
23     typedef struct
24     {
25         uint32_t sample_rate;
26         uint32_t channels_num;
27         uint32_t bitrate;
28         uint32_t sample_bit;
29     } audio_dec_pcm_arg_t;
30 
31     typedef int (*audio_dec_pcm_handler_cb)(uint8_t *pcm, uint32_t pcm_size, audio_dec_pcm_arg_t *pcm_arg, void *user_arg);
32     typedef int (*audio_dec_finish_cb)(void);
33 
34     int audio_dec_get_decoder_available_input_data_size(void * audio_dec_handle, audio_dec_format_t format);
35     void* audio_dec_open(audio_dec_format_t format);
36     int audio_dec_write(void * audio_dec_handle, audio_dec_format_t format, uint8_t *data, uint32_t input_size, audio_dec_pcm_handler_cb cb, void * cb_arg);
37     int audio_dec_close(void * audio_dec_handle, audio_dec_format_t format, audio_dec_finish_cb cb);
38     int audio_dec_check_pcm_arg_changed(audio_dec_pcm_arg_t *old_pcm_arg, audio_dec_pcm_arg_t *new_pcm_arg);
39 
40 #ifdef __cplusplus
41 }
42 #endif
43 
44 #endif /* _AUDIO_DEC_ */
45