unplugged-vendor/system/bt/mediatek/include/dual_audio_main.h

111 lines
6.1 KiB
C++

/*******************************************************************************
* 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 <future>
#include <queue>
#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<void> 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__