You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
144 lines
4.8 KiB
144 lines
4.8 KiB
4 months ago
|
/*
|
||
|
* 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 <system/audio.h>
|
||
|
#include <tinyalsa/asoundlib.h>
|
||
|
|
||
|
#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
|