From: Pavlin Radoslavov Date: Wed, 19 Apr 2017 17:50:16 +0000 (-0700) Subject: Print the LDAC adaptive bit rate adjustments X-Git-Tag: android-x86-8.1-r1~62^2^2~17 X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=3c53aa771f26fb91a92f8ee4ea3a27cc4a9f40be;p=android-x86%2Fsystem-bt.git Print the LDAC adaptive bit rate adjustments A2DP LDAC State: ... LDAC quality mode : ABR LDAC transmission bitrate (Kbps) : 990 LDAC saved transmit queue length : 0 LDAC adaptive bit rate encode quality mode index : 0 LDAC adaptive bit rate adjustments : 4 Test: A2DP streaming to headsets that support LDAC Bug: 37287785 Change-Id: Ife8017ca129fa9b06ea85f6029c553a52a306cc2 (cherry picked from commit a825f565504fa17d5458c57092f4c0ec0e539128) --- diff --git a/stack/a2dp/a2dp_vendor_ldac_encoder.cc b/stack/a2dp/a2dp_vendor_ldac_encoder.cc index f124da966..68deea8db 100644 --- a/stack/a2dp/a2dp_vendor_ldac_encoder.cc +++ b/stack/a2dp/a2dp_vendor_ldac_encoder.cc @@ -154,6 +154,7 @@ typedef struct { HANDLE_LDAC_ABR ldac_abr_handle; bool has_ldac_abr_handle; int last_ldac_abr_eqmid; + size_t ldac_abr_adjustments; tA2DP_FEEDING_PARAMS feeding_params; tA2DP_LDAC_ENCODER_PARAMS ldac_encoder_params; @@ -291,6 +292,7 @@ void a2dp_vendor_ldac_encoder_init( a2dp_ldac_encoder_cb.ldac_abr_handle = NULL; a2dp_ldac_encoder_cb.has_ldac_abr_handle = false; a2dp_ldac_encoder_cb.last_ldac_abr_eqmid = -1; + a2dp_ldac_encoder_cb.ldac_abr_adjustments = 0; a2dp_ldac_encoder_cb.use_SCMS_T = false; // TODO: should be a parameter #if (BTA_AV_CO_CP_SCMS_T == TRUE) @@ -427,6 +429,8 @@ static void a2dp_vendor_ldac_encoder_update(uint16_t peer_mtu, a2dp_ldac_encoder_cb.ldac_abr_handle = a2dp_ldac_abr_get_handle(); if (a2dp_ldac_encoder_cb.ldac_abr_handle != NULL) { a2dp_ldac_encoder_cb.has_ldac_abr_handle = true; + a2dp_ldac_encoder_cb.last_ldac_abr_eqmid = -1; + a2dp_ldac_encoder_cb.ldac_abr_adjustments = 0; a2dp_ldac_abr_init(a2dp_ldac_encoder_cb.ldac_abr_handle, A2DP_LDAC_ENCODER_INTERVAL_MS); } else { @@ -449,6 +453,7 @@ static void a2dp_vendor_ldac_encoder_update(uint16_t peer_mtu, a2dp_ldac_encoder_cb.ldac_abr_handle = NULL; a2dp_ldac_encoder_cb.has_ldac_abr_handle = false; a2dp_ldac_encoder_cb.last_ldac_abr_eqmid = -1; + a2dp_ldac_encoder_cb.ldac_abr_adjustments = 0; } } @@ -533,10 +538,13 @@ void a2dp_vendor_ldac_send_frames(uint64_t timestamp_us) { for (uint8_t counter = 0; counter < nb_iterations; counter++) { if (a2dp_ldac_encoder_cb.has_ldac_abr_handle) { int flag_enable = 1; + int prev_eqmid = a2dp_ldac_encoder_cb.last_ldac_abr_eqmid; a2dp_ldac_encoder_cb.last_ldac_abr_eqmid = a2dp_ldac_abr_proc(a2dp_ldac_encoder_cb.ldac_handle, a2dp_ldac_encoder_cb.ldac_abr_handle, a2dp_ldac_encoder_cb.TxQueueLength, flag_enable); + if (prev_eqmid != a2dp_ldac_encoder_cb.last_ldac_abr_eqmid) + a2dp_ldac_encoder_cb.ldac_abr_adjustments++; } // Transcode frame and enqueue a2dp_ldac_encode_frames(nb_frame); @@ -774,5 +782,8 @@ void A2dpCodecConfigLdac::debug_codec_dump(int fd) { dprintf(fd, " LDAC adaptive bit rate encode quality mode index : %d\n", a2dp_ldac_encoder_cb.last_ldac_abr_eqmid); + dprintf(fd, + " LDAC adaptive bit rate adjustments : %zu\n", + a2dp_ldac_encoder_cb.ldac_abr_adjustments); } }