component/bt: fix some performance issues in A2DP source data flow control
1. modify the limit of frames to send to avoid dropping packet on A2DP source due to TX data queue overflow 2. reduce the A2DP source data queue size in order to achieve faster control respnonse
This commit is contained in:
parent
6faaeafcdd
commit
38ec1b9a86
2 changed files with 11 additions and 5 deletions
|
@ -1156,10 +1156,16 @@ static UINT8 btc_get_num_aa_frame(void)
|
||||||
|
|
||||||
/* calculate nbr of frames pending for this media tick */
|
/* calculate nbr of frames pending for this media tick */
|
||||||
result = btc_aa_src_cb.media_feeding_state.pcm.counter / pcm_bytes_per_frame;
|
result = btc_aa_src_cb.media_feeding_state.pcm.counter / pcm_bytes_per_frame;
|
||||||
if (result > MAX_PCM_FRAME_NUM_PER_TICK) {
|
|
||||||
APPL_TRACE_WARNING("%s() - Limiting frames to be sent from %d to %d"
|
/* limit the frames to be sent */
|
||||||
, __FUNCTION__, result, MAX_PCM_FRAME_NUM_PER_TICK);
|
UINT32 frm_nb_threshold = MAX_OUTPUT_A2DP_SRC_FRAME_QUEUE_SZ - fixed_queue_length(btc_aa_src_cb.TxAaQ);
|
||||||
result = MAX_PCM_FRAME_NUM_PER_TICK;
|
if (frm_nb_threshold > MAX_PCM_FRAME_NUM_PER_TICK) {
|
||||||
|
frm_nb_threshold = MAX_PCM_FRAME_NUM_PER_TICK;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (result > frm_nb_threshold) {
|
||||||
|
APPL_TRACE_EVENT("Limit frms to send from %d to %d", result, frm_nb_threshold);
|
||||||
|
result = frm_nb_threshold;
|
||||||
}
|
}
|
||||||
btc_aa_src_cb.media_feeding_state.pcm.counter -= result * pcm_bytes_per_frame;
|
btc_aa_src_cb.media_feeding_state.pcm.counter -= result * pcm_bytes_per_frame;
|
||||||
|
|
||||||
|
|
|
@ -95,7 +95,7 @@ typedef enum {
|
||||||
#define BTC_A2DP_SOURCE_TASK_STACK_SIZE (CONFIG_A2DP_SOURCE_TASK_STACK_SIZE + BT_TASK_EXTRA_STACK_SIZE) // by menuconfig
|
#define BTC_A2DP_SOURCE_TASK_STACK_SIZE (CONFIG_A2DP_SOURCE_TASK_STACK_SIZE + BT_TASK_EXTRA_STACK_SIZE) // by menuconfig
|
||||||
#define BTC_A2DP_SOURCE_TASK_NAME "BtA2dSourceT"
|
#define BTC_A2DP_SOURCE_TASK_NAME "BtA2dSourceT"
|
||||||
#define BTC_A2DP_SOURCE_TASK_PRIO (configMAX_PRIORITIES - 3)
|
#define BTC_A2DP_SOURCE_TASK_PRIO (configMAX_PRIORITIES - 3)
|
||||||
#define BTC_A2DP_SOURCE_DATA_QUEUE_LEN (3)
|
#define BTC_A2DP_SOURCE_DATA_QUEUE_LEN (1)
|
||||||
#define BTC_A2DP_SOURCE_CTRL_QUEUE_LEN (5)
|
#define BTC_A2DP_SOURCE_CTRL_QUEUE_LEN (5)
|
||||||
#define BTC_A2DP_SOURCE_TASK_QUEUE_SET_LEN (BTC_A2DP_SOURCE_DATA_QUEUE_LEN + BTC_A2DP_SOURCE_CTRL_QUEUE_LEN)
|
#define BTC_A2DP_SOURCE_TASK_QUEUE_SET_LEN (BTC_A2DP_SOURCE_DATA_QUEUE_LEN + BTC_A2DP_SOURCE_CTRL_QUEUE_LEN)
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue