/*************************************************************************** * * Copyright 2015-2019 BES. * All rights reserved. All unpublished rights reserved. * * No part of this work may be used or reproduced in any form or by any * means, or stored in a database or retrieval system, without prior written * permission of BES. * * Use of this work is governed by a license granted by BES. * This work contains confidential and proprietary information of * BES. which is protected by copyright, trade secret, * trademark and other intellectual property rights. * ****************************************************************************/ #ifndef __APP_BT_MEDIA_MANAGER_H__ #define __APP_BT_MEDIA_MANAGER_H__ #include "resources.h" #ifdef __cplusplus extern "C" { #endif #include "btapp.h" #define BT_STREAM_DIRECTION_OUT 0 #define BT_STREAM_DIRECTION_IN 1 // direction is out #define BT_STREAM_SBC 0x1 #define BT_STREAM_MEDIA 0x2 #define BT_STREAM_VOICE 0x4 #ifdef AUDIO_LINEIN #define BT_STREAM_LINEIN 0x8 #endif #ifdef RB_CODEC #define BT_STREAM_RBCODEC 0x10 //from rockbox decoder #endif // direction is in #ifdef VOICE_DATAPATH #define BT_STREAM_CAPTURE 0x100 #endif #ifdef __AI_VOICE__ #define BT_STREAM_AI_VOICE 0x200 #endif #define BT_STREAM_THIRDPARTY_VOICE 0x400 #define BT_STREAM_TYPE_MASK (BT_STREAM_SBC | BT_STREAM_MEDIA | BT_STREAM_VOICE) enum APP_BT_MEDIA_MANAGER_ID_T { APP_BT_STREAM_MANAGER_START = 0, APP_BT_STREAM_MANAGER_STOP, APP_BT_STREAM_MANAGER_SWITCHTO_SCO, APP_BT_STREAM_MANAGER_STOP_MEDIA, APP_BT_STREAM_MANAGER_UPDATE_MEDIA, APP_BT_STREAM_MANAGER_SWAP_SCO, APP_BT_STREAM_MANAGER_CTRL_VOLUME, APP_BT_STREAM_MANAGER_TUNE_SAMPLERATE_RATIO, APP_BT_STREAM_MANAGER_NUM, }; typedef struct { uint8_t id; uint16_t stream_type; uint8_t device_id; uint16_t aud_id; }APP_AUDIO_MANAGER_MSG_STRUCT; enum APP_AUDIO_MANAGER_VOLUME_CTRL_T { APP_AUDIO_MANAGER_VOLUME_CTRL_SET = 0, APP_AUDIO_MANAGER_VOLUME_CTRL_UP, APP_AUDIO_MANAGER_VOLUME_CTRL_DOWN, APP_AUDIO_MANAGER_VOLUME_CTRL_NUM, }; typedef void (*APP_AUDIO_MANAGER_CALLBACK_T)(uint32_t status, uint32_t param); #define APP_AUDIO_MANAGER_SET_MESSAGE(appevt, id, stream_type) (appevt = (((uint32_t)id&0xffff)<<16)|(stream_type&0xffff)) #define APP_AUDIO_MANAGER_SET_MESSAGE0(appmsg, device_id,aud_id) (appmsg = (((uint32_t)device_id&0xffff)<<16)|(aud_id&0xffff)) #define APP_AUDIO_MANAGER_GET_ID(appevt, id) (id = (appevt>>16)&0xffff) #define APP_AUDIO_MANAGER_GET_STREAM_TYPE(appevt, stream_type) (stream_type = appevt&0xffff) #define APP_AUDIO_MANAGER_GET_DEVICE_ID(appmsg, device_id) (device_id = (appmsg>>16)&0xffff) #define APP_AUDIO_MANAGER_GET_AUD_ID(appmsg, aud_id) (aud_id = appmsg&0xffff) #define APP_AUDIO_MANAGER_GET_CALLBACK(appmsg, callback) (callback = (APP_AUDIO_MANAGER_CALLBACK_T)appmsg) #define APP_AUDIO_MANAGER_GET_CALLBACK_PARAM(appmsg, param) (param = appmsg) int app_audio_manager_sendrequest(uint8_t massage_id,uint16_t stream_type, uint8_t device_id, uint16_t aud_id); int app_audio_manager_sendrequest_need_callback( uint8_t massage_id, uint16_t stream_type, uint8_t device_id, uint16_t aud_id, uint32_t cb, uint32_t cb_param); void app_audio_manager_open(void); void bt_media_start(uint16_t stream_type,enum BT_DEVICE_ID_T device_id,uint16_t media_id); void bt_media_stop(uint16_t stream_type,enum BT_DEVICE_ID_T device_id); void bt_media_switch_to_voice(uint16_t stream_type,enum BT_DEVICE_ID_T device_id); uint16_t bt_media_get_media_active(enum BT_DEVICE_ID_T device_id); uint8_t bt_media_is_media_active_by_type(uint16_t media_type); void bt_media_volume_ptr_update_by_mediatype(uint16_t stream_type); int app_audio_manager_set_active_sco_num(enum BT_DEVICE_ID_T id); int app_audio_manager_get_active_sco_num(void); hf_chan_handle_t* app_audio_manager_get_active_sco_chnl(void); int app_audio_manager_swap_sco(enum BT_DEVICE_ID_T id); uint8_t bt_media_is_media_active_by_device(uint16_t media_type,enum BT_DEVICE_ID_T device_id); uint16_t bt_media_get_current_media(void); int app_audio_manager_sco_status_checker(void); int app_audio_manager_switch_a2dp(enum BT_DEVICE_ID_T id); bool app_audio_manager_a2dp_is_active(enum BT_DEVICE_ID_T id); bool app_audio_manager_capture_is_active(void); bool app_audio_manager_media_is_active(void); bool app_audio_manager_hfp_is_active(enum BT_DEVICE_ID_T id); int app_audio_manager_set_scocodecid(enum BT_DEVICE_ID_T dev_id, uint16_t codec_id); int app_audio_manager_get_scocodecid(void); bool bt_media_is_media_idle(void); uint8_t bt_media_device_enumerate_media_type_by_prior(); void bt_media_clean_up(void); bool bt_media_is_media_active_by_sbc(void); #ifdef RB_CODEC bool app_rbplay_is_localplayer_mode(void); bool app_rbplay_mode_switch(void); void app_rbplay_set_player_mode(bool isInPlayerMode); void app_rbcodec_ctr_play_onoff(bool on ); bool app_rbcodec_get_play_status(void); void app_rbcodec_toggle_play_stop(void); #endif void app_stop_a2dp_media_stream(uint8_t devId); void app_stop_sco_media_stream(uint8_t devId); int app_audio_manager_ctrl_volume(APP_AUDIO_MANAGER_VOLUME_CTRL_T volume_ctrl, uint16_t volume_level); int app_audio_manager_tune_samplerate_ratio(enum AUD_STREAM_T stream, float ratio); bool bt_media_cur_is_bt_stream_media(void); bool bt_media_is_sbc_media_active(void); void bt_media_current_sbc_set(uint8_t id); void app_ibrt_sync_mix_prompt_req_handler(uint8_t* ptrParam, uint16_t paramLen); void app_audio_decode_err_force_trigger(void); #ifdef __cplusplus } #endif #endif