/* * Copyright (c) Hisilicon Technologies Co., Ltd. Technologies Co., Ltd. 2020-2020. All rights reserved. * Description: audio hal wrapper for SDK header file. * Author: yinyingcai * Create: 2020-05-11 * Notes: NA * History: 2020-05-11 yinyingcai for CodingStyle */ #ifndef AIAO_WRAP_H #define AIAO_WRAP_H #include #include #include "audio_hw.h" #include "hdo.h" #include "hci.h" typedef enum { HAL_SYNC_REF_MODE_NONE = 0, HAL_SYNC_REF_MODE_AUDIO, HAL_SYNC_REF_MODE_VIDEO, HAL_SYNC_REF_MODE_PCR, HAL_SYNC_REF_MODE_SCR, HAL_SYNC_REF_MODE_MAX } hal_sync_ref_mode; typedef enum { HAL_SND_TRACK_TYPE_MASTER = 0, HAL_SND_TRACK_TYPE_SLAVE, HAL_SND_TRACK_TYPE_VIRTUAL, HAL_SND_TRACK_TYPE_LOWLATENCY, HAL_SND_TRACK_TYPE_OTTSOUND, HAL_SND_TRACK_TYPE_SYSTEMAUDIO, HAL_SND_TRACK_TYPE_APPAUDIO, HAL_SND_TRACK_TYPE_MAX } hal_snd_track_type; typedef enum { HAL_ACODEC_FORMAT_AC3 = 0, HAL_ACODEC_FORMAT_EAC3, HAL_ACODEC_FORMAT_OTHERS } hal_acodec_format; typedef enum { HAL_SND_OUTPUTLATENCY_NORMAL = 0, HAL_SND_OUTPUTLATENCY_LOW, HAL_SND_OUTPUTLATENCY_MAX, } hal_snd_output_latency; typedef enum { HAL_SND_OUT_PORT_DAC0 = 0x00, HAL_SND_OUT_PORT_DAC1, HAL_SND_OUT_PORT_DAC2, HAL_SND_OUT_PORT_DAC3, HAL_SND_OUT_PORT_I2S0, HAL_SND_OUT_PORT_I2S1, HAL_SND_OUT_PORT_I2S2, HAL_SND_OUT_PORT_I2S3, HAL_SND_OUT_PORT_I2S4, HAL_SND_OUT_PORT_SPDIF0, HAL_SND_OUT_PORT_HDMITX0, HAL_SND_OUT_PORT_HDMITX1, HAL_SND_OUT_PORT_ARC0, HAL_SND_OUT_PORT_ARC1, HAL_SND_OUT_PORT_ALL, HAL_SND_OUT_PORT_MAX, } hal_snd_out_port; typedef struct { hal_sync_ref_mode ref_mode; int smooth_play_enable; uint32_t pre_sync_timeout; int start_vid_plus_time; int start_vid_negative_time; int quick_output_enable; } hal_sync_attr; typedef struct { uint32_t buf_level_ms; uint32_t start_threshold_ms; } hal_audio_track_attr; typedef struct { uint32_t atmos; hal_acodec_format format; uint32_t channel_mode; } hal_audio_stream_info; typedef struct { uint32_t add_mute; uint32_t pcm_frame_max_num; uint32_t pcm_samples; } hal_snd_cast_attr; /* function called through avplayservice */ int wraper_set_adec_buffer_size(uint32_t havplay, uint32_t adecMinBufSize, uint32_t adecOutFrameCnt); int wraper_set_adec_attr(uint32_t havplay, const struct audio_attr* attr); int wraper_set_sync_attr(uint32_t havplay, hal_sync_attr sync_attr); int wraper_create_track(uint32_t *phtrack, hal_audio_track_attr track_attr, hal_snd_track_type track_type); int wraper_register_acodec_lib(const char *fileName); int wraper_get_buf(uint32_t hAvplay, uint32_t fragmentsize); int wraper_put_buf(const uint8_t* pData, uint32_t hAvplay, uint32_t fragmentsize, uint32_t u32Pts); int wraper_start_avplay(uint32_t havplay); int wraper_create_avplay(uint32_t *sync_source); int wraper_destroy_avplay(uint32_t sync_source); int wraper_init_snd(void); /* init sound in avplayservice Process */ int wraper_deinit_snd(void); int wraper_init_avplay(void); int wraper_deinit_avplay(void); int wraper_open_chan(uint32_t hAvplay); int wraper_close_chan(uint32_t hAvplay); int wraper_destroy_track(uint32_t hTrack); int wraper_attach_snd(uint32_t hTrack, uint32_t hAvplay); int wraper_detach_snd(uint32_t hTrack, uint32_t hAvplay); int wraper_stop_avplay(uint32_t hAvplay); int wraper_set_snd_default_latency(void); int wraper_pause_avplay(uint32_t hAvplay); int wraper_resume_avplay(uint32_t hAvplay); int wraper_flush_avplay(uint32_t hAvplay); int wraper_get_audio_playtime(uint32_t hAvplay, uint32_t *pu32PlayMS, uint32_t *pu32DelayMS); int wraper_set_track_mute(uint32_t hTrack, bool mute); int wraper_set_track_pre_scale(uint32_t hTrack, int s32IntegerGain, int s32DecimalGain); int wraper_get_stream_info(int hw_sync_id, hal_audio_stream_info* stream_info); /* function called by hci */ int wraper_destroy_cast(uint32_t hCast); int wraper_set_snd_mute(hal_snd_out_port out_port, uint32_t mute); int wraper_open_cast(hal_snd_cast_attr cast_attr, uint32_t *hCast); int wraper_close_cast(uint32_t hCast); int wraper_read_cast(uint32_t hCast, uint32_t *cacheBufSize, uint8_t *cacheBuf); int wraper_set_snd_all_track_mute(uint32_t mute); int wraper_set_sink_delay(uint32_t delay); int wraper_get_sink_delay(uint32_t *delay); int wraper_set_cast_volume(uint32_t hCast, int32_t integer_gain, int32_t decimal_gain); int wraper_set_cast_mute(uint32_t hCast, bool mute); int wraper_init_hal_sound(void); void wraper_deinit_hal_sound(void); int wraper_set_output_latency_mode(hal_snd_output_latency out_mode); int wraper_amp_init(void); int wraper_amp_deinit(void); #endif