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