]> granicus.if.org Git - esp-idf/commitdiff
component/bt: remove the A2DP decoding timer and instead trigger decoding directly...
authorwangmengyang <wangmengyang@espressif.com>
Thu, 23 Feb 2017 03:56:38 +0000 (11:56 +0800)
committerwangmengyang <wangmengyang@espressif.com>
Thu, 23 Feb 2017 03:56:38 +0000 (11:56 +0800)
components/bt/bluedroid/btif/btif_dm.c
components/bt/bluedroid/btif/btif_media_task.c
components/bt/bluedroid/btif/btif_storage.c

index b74d858cdda46e8a22aafdde5b98a9b6fd3defdb..ba968c912989456d5eb4ecce3a2f534d79317fc3 100644 (file)
@@ -166,7 +166,7 @@ static void btif_dm_auth_cmpl_evt (tBTA_DM_AUTH_CMPL *p_auth_cmpl)
        if (1)
         {
             bt_status_t ret;
-            BTIF_TRACE_WARNING("%s: Storing link key. key_type=0x%x",
+            BTIF_TRACE_EVENT("%s: Storing link key. key_type=0x%x",
                             __FUNCTION__, p_auth_cmpl->key_type);
             ret = btif_storage_add_bonded_device(&bd_addr,
                                 p_auth_cmpl->key, p_auth_cmpl->key_type,
index 87189b250d85385c5110d3a7d5432aafa27dc3ac..8f3b82fd0b1daf8cfb8428b42ed9a60a2d33298e 100644 (file)
@@ -117,7 +117,7 @@ enum {
 enum {
     SIG_MEDIA_TASK_INIT = 0xf0,
     SIG_MEDIA_TASK_CLEAN_UP = 0xf1,
-    SIG_MEDIA_TASK_AVK_ALARM_TO = 0xf2,
+    SIG_MEDIA_TASK_AVK_DATA_READY = 0xf2,
     SIG_MEDIA_TASK_AA_ALARM_TO = 0xf3,
     SIG_MEDIA_TASK_CMD_READY = 0xf4
 };
@@ -228,7 +228,6 @@ typedef struct {
 
     UINT32  sample_rate;
     UINT8   channel_count;
-    osi_alarm_t *decode_alarm;
 #endif
 
 } tBTIF_MEDIA_CB;
@@ -255,7 +254,6 @@ extern OI_STATUS OI_CODEC_SBC_DecoderReset(OI_CODEC_SBC_DECODER_CONTEXT *context
         OI_BOOL enhanced);
 #endif
 static void btif_media_flush_q(BUFFER_Q *p_q);
-static void btif_media_task_aa_handle_stop_decoding(void );
 static void btif_media_task_aa_rx_flush(void);
 
 static const char *dump_media_event(UINT16 event);
@@ -271,12 +269,11 @@ static void btif_media_task_handle_inc_media(tBT_SBC_HDR *p_msg);
 static void btif_media_task_aa_handle_decoder_reset(BT_HDR *p_msg);
 static void btif_media_task_aa_handle_clear_track(void);
 #endif
-static void btif_media_task_aa_handle_start_decoding(void);
 #endif
 BOOLEAN btif_media_task_clear_track(void);
 static void btif_media_task_handler(void *arg);
 
-static void btif_media_task_avk_handle_timer(UNUSED_ATTR void *context);
+static void btif_media_task_avk_data_ready(UNUSED_ATTR void *context);
 static void btif_media_thread_init(UNUSED_ATTR void *context);
 static void btif_media_thread_cleanup(UNUSED_ATTR void *context);
 extern BOOLEAN btif_hf_is_call_idle();
@@ -383,8 +380,8 @@ static void btif_media_task_handler(void *arg)
         if (pdTRUE == xQueueReceive(xBtifMediaQueue, &e, (portTickType)portMAX_DELAY)) {
             // LOG_ERROR("med evt %d\n", e->sig);
             switch (e->sig) {
-            case SIG_MEDIA_TASK_AVK_ALARM_TO:
-                btif_media_task_avk_handle_timer(NULL);
+            case SIG_MEDIA_TASK_AVK_DATA_READY:
+                btif_media_task_avk_data_ready(NULL);
                 break;
             case SIG_MEDIA_TASK_CMD_READY:
                 fixed_queue_process(btif_media_cmd_msg_queue);
@@ -531,7 +528,6 @@ void btif_a2dp_on_idle(void)
     if (btif_media_cb.peer_sep == AVDT_TSEP_SRC) {
         btif_media_cb.rx_flush = TRUE;
         btif_media_task_aa_rx_flush_req();
-        btif_media_task_aa_handle_stop_decoding();
         btif_media_task_clear_track();
         APPL_TRACE_DEBUG("Stopped BT track");
     }
@@ -608,7 +604,6 @@ void btif_a2dp_on_stopped(tBTA_AV_SUSPEND *p_av)
     if (btif_media_cb.peer_sep == AVDT_TSEP_SRC) { /*  Handling for A2DP SINK cases*/
         btif_media_cb.rx_flush = TRUE;
         btif_media_task_aa_rx_flush_req();
-        btif_media_task_aa_handle_stop_decoding();
         btif_media_cb.data_channel_open = FALSE;
         return;
     }
@@ -631,7 +626,6 @@ void btif_a2dp_on_suspended(tBTA_AV_SUSPEND *p_av)
     if (btif_media_cb.peer_sep == AVDT_TSEP_SRC) {
         btif_media_cb.rx_flush = TRUE;
         btif_media_task_aa_rx_flush_req();
-        btif_media_task_aa_handle_stop_decoding();
         return;
     }
 }
@@ -644,7 +638,7 @@ void btif_a2dp_set_rx_flush(BOOLEAN enable)
 }
 
 #if (BTA_AV_SINK_INCLUDED == TRUE)
-static void btif_media_task_avk_handle_timer(UNUSED_ATTR void *context)
+static void btif_media_task_avk_data_ready(UNUSED_ATTR void *context)
 {
     UINT8 count;
     tBT_SBC_HDR *p_msg;
@@ -694,7 +688,7 @@ static void btif_media_task_avk_handle_timer(UNUSED_ATTR void *context)
     }
 }
 #else
-static void btif_media_task_avk_handle_timer(UNUSED_ATTR void *context) {}
+static void btif_media_task_avk_data_ready(UNUSED_ATTR void *context) {}
 #endif
 
 static void btif_media_thread_init(UNUSED_ATTR void *context)
@@ -909,31 +903,6 @@ void btif_a2dp_set_peer_sep(UINT8 sep)
     btif_media_cb.peer_sep = sep;
 }
 
-static void btif_decode_alarm_cb(UNUSED_ATTR void *context)
-{
-    btif_media_task_post(SIG_MEDIA_TASK_AVK_ALARM_TO);
-}
-
-static void btif_media_task_aa_handle_stop_decoding(void)
-{
-    osi_alarm_free(btif_media_cb.decode_alarm);
-    btif_media_cb.decode_alarm = NULL;
-}
-
-static void btif_media_task_aa_handle_start_decoding(void)
-{
-    if (btif_media_cb.decode_alarm) {
-        return;
-    }
-
-    btif_media_cb.decode_alarm = osi_alarm_new("dec_timer\n", btif_decode_alarm_cb, NULL, BTIF_SINK_MEDIA_TIME_TICK, true);
-    if (!btif_media_cb.decode_alarm) {
-        APPL_TRACE_ERROR("%s unable to allocate decode alarm.\n", __func__);
-        return;
-    }
-    osi_alarm_set(btif_media_cb.decode_alarm, BTIF_SINK_MEDIA_TIME_TICK);
-}
-
 #if (BTA_AV_SINK_INCLUDED == TRUE)
 
 static void btif_media_task_aa_handle_clear_track (void)
@@ -1105,12 +1074,8 @@ UINT8 btif_media_sink_enque_buf(BT_HDR *p_pkt)
         memcpy(p_msg, p_pkt, (sizeof(BT_HDR) + p_pkt->offset + p_pkt->len));
         p_msg->num_frames_to_be_processed = (*((UINT8 *)(p_msg + 1) + p_msg->offset)) & 0x0f;
         BTIF_TRACE_VERBOSE("btif_media_sink_enque_buf %d + \n", p_msg->num_frames_to_be_processed);
-        // LOG_ERROR("sink enq %d\n", p_msg->num_frames_to_be_processed);
         GKI_enqueue(&(btif_media_cb.RxSbcQ), p_msg);
-        if (GKI_queue_length(&btif_media_cb.RxSbcQ) == MAX_A2DP_DELAYED_START_FRAME_COUNT) {
-            BTIF_TRACE_DEBUG(" Initiate Decoding ");
-            btif_media_task_aa_handle_start_decoding();
-        }
+        btif_media_task_post(SIG_MEDIA_TASK_AVK_DATA_READY);
     } else {
         /* let caller deal with a failed allocation */
         BTIF_TRACE_VERBOSE("btif_media_sink_enque_buf No Buffer left - ");
index 16e50bc4c2f9e3c8baa39b857cb628ba1fab0f15..43a38affbf42e0a5fc12356a12104cde718a55b4 100644 (file)
@@ -59,7 +59,7 @@ static bt_status_t btif_in_fetch_bonded_devices(int add)
             continue;
         }
 
-        BTIF_TRACE_WARNING("Remote device:%s\n", name);
+        BTIF_TRACE_EVENT("Remote device:%s\n", name);
         LINK_KEY link_key;
         size_t size = sizeof(link_key);
         if (btif_config_get_bin(name, "LinkKey", link_key, &size)) {