/******************************************************************************* * 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_MAIN_H__ #define __DUAL_AUDIO_MAIN_H__ #include #include #include "bt_target.h" #include "raw_address.h" #include "bt_types.h" #include "btif_a2dp_source.h" #include "bta/av/bta_av_int.h" #include "stack/avdt/avdt_int.h" #include "stack/l2cap/l2c_int.h" #include "stack/include/a2dp_codec_api.h" #include "embdrv/sbc/encoder/include/sbc_encoder.h" #include "osi/include/osi.h" #include "osi/include/log.h" #include "osi/include/fixed_queue.h" #include "osi/include/properties.h" #include "bta_sys_int.h" #include "embdrv/sbc/encoder/include/sbc_encoder.h" #if defined(MTK_DUAL_AUDIO) && (MTK_DUAL_AUDIO == TRUE) bool dual_audio_library_load(void); 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); #endif #endif // __DUAL_AUDIO_MAIN_H__