/******************************************************************************* * Copyright Statement: * -------------------- * This software is protected by Copyright and the information contained * herein is confidential. The software may not be copied and the information * contained herein may not be used or disclosed except with the written * permission of MediaTek Inc. (C) 2013 * * BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES * THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE") * RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON * AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES, * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT. * NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE * SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR * SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH * THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO * NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S * SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM. * * BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE * LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE, * AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE, * OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO * MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. * * THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE * WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF * LAWS PRINCIPLES. ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND * RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER * THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC). * *******************************************************************************/ #ifndef __DUAL_AUDIO_API_H__ #define __DUAL_AUDIO_API_H__ #include "dual_audio_main.h" /** Represents the Bluetooth dual audio interface. */ #if defined(MTK_DUAL_AUDIO) && (MTK_DUAL_AUDIO == TRUE) typedef struct { /** set to sizeof(dualaudio_interface_t) */ size_t size; void (*a2dp_get_user_ajust_LR_channel)(void); void (*dump_left_right_channel_data_file_init)(void); void (*dump_left_right_channel_data_file_deinit)(void); void (*a2dp_get_user_want_delay_time)(void); void (*a2dp_suspend_drop_data_queue)(void); void (*btif_a2dp_source_dual_audio_enqueue_data)(BT_HDR* p_buf, BT_HDR* p_buf2); void (*a2dp_lr_channel_handle_data_for_dual_audio)(BT_HDR* p_buf2, int16_t* input, int num_bytes, uint16_t &output_len, uint8_t* output); void (*a2dp_sameaudio_handle_data_for_dual_audio)(BT_HDR* p_buf2, int16_t* input, int num_bytes, uint16_t &output_len, uint8_t* output); void (*bta_av_data_to_l2cap)(tBTA_AV_SCB* p_scb, int i); void (*bta_av_link_distribution)(uint8_t *bta_av_queue_num); void (*bta_av_old_data_handle)(tBTA_AV_SCB* p_scb, BT_HDR* p_pkt); void (*bta_av_dup_audio_handle_for_dual_audio)(tBTA_AV_SCB* p_scb, BT_HDR* p_buf); bool (*l2cu_check_condition_for_dual_audio)(uint8_t* dc); bool (*l2cu_can_allocate_lcb_for_dual_audio)(tL2C_CB &l2cb); void (*avdt_ccb_ajust_SBC_codec)(tAVDT_CCB_EVT* p_data); void (*a2dp_sbc_encoder_update_for_dual_audio)(SBC_ENC_PARAMS* p_encoder_params); void (*a2dp_sbc_encoder_update_for_LR_channel_mode)(void); void (*SBC_Encoder_Init_for_dual_audio)(void); void (*btif_a2dp_get_audio_config_for_dual_audio)(btav_a2dp_codec_config_t &codec_config, btav_a2dp_codec_config_t &codec_capability); void (*bta_av_str_opened_for_dual_audio)(tBTA_AV_SCB* p_scb); void (*bta_av_str_opend_handle_for_dual_audio)(void); void (*bta_av_str_stopped_for_dual_audio)(tBTA_AV_SCB* p_scb); void (*bta_av_start_ok_for_dual_audio)(tBTA_AV_SCB* p_scb); void (*bta_av_start_ok_for_dual_audio2)(tBTA_AV_SCB* p_scb); void (*bta_av_str_closed_for_dual_audio)(tBTA_AV_SCB* p_scb); void (*bta_av_suspend_cfm_for_dual_audio)(tBTA_AV_SCB* p_scb); void (*bta_av_api_enable_for_dual_audio)(void); void (*a2dp_sbc_buffer_handle_for_dual_audio)(SBC_ENC_PARAMS* p_encoder_params); void (*avdt_ccb_hdl_discover_cmd_for_dual_audio)(AvdtpScb* p_scb, tAVDT_SEP_INFO *sep_info, tAVDT_CCB_EVT* p_data); void (*btif_a2dp_set_audio_config_for_dual_audio)(btav_a2dp_codec_config_t &codec_config); void (*updateEffectiveMtu_for_dual_audio)(int mtu); bool (*btif_a2dp_source_setup_codec_delayed_for_dual_audio)(A2dpCodecConfig* a2dp_codec_config, const RawAddress& peer_address); bool (*SetActivePeer_for_audio_audio)(RawAddress& active_peer_, const RawAddress& peer_address, std::promise peer_ready_promise); void (*btif_closing_state_process_stop_event)(uint32_t event); void (*btif_closing_state_onenter)(void); void (*btif_started_state_process_close_event)(void); void (*btif_opened_state_process_close_event)(void); void (*btif_opened_state_process_start_event)(const RawAddress& peer_address); bool (*btif_idle_state_onenter)(void); bool (*btif_idle_state_onenter2)(void); bool (*btif_av_stream_started_ready_for_dual_audio)(void); bool (*btif_av_stream_ready_for_dual_audio)(void); void (*btif_started_state_process_stop_event)(tBTA_AV_SUSPEND* p_av_suspend, const RawAddress& peer_address); void (*btif_started_state_process_stop_suspend_event)(uint32_t event); void (*updateEncoderUserConfig_for_dual_audio)(const tA2DP_ENCODER_INIT_PEER_PARAMS* p_peer_params); void (*a2dp_sbc_get_num_frame_iteration_for_dual_audio)(void); void (*a2dp_sbc_get_num_frame_iteration_for_dual_audio2)(void); void (*dual_audio_init)(void); void (*dual_audio_deinit)(void); bt_a2dp_dual_mode_type_t (*getDualModeType)(void); //void (*setDualModeType)(bt_a2dp_dual_mode_type_t mode_type); //void (*a2dp_set_LR_channel)(const RawAddress& addr, int lr_chl); //int (*a2dp_get_exist_LR_channel)(void); //int (*a2dp_get_exist_LR_channel_by_addr)(const RawAddress& addr); } dualaudio_interface_t; #endif #endif // __DUAL_AUDIO_API_H__