Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 58047442 authored by fen wang's avatar fen wang Committed by Pavlin Radoslavov
Browse files

Integration of LDAC Adaptive Bit Rate mechanism

LDAC ABR controls LDAC encoder bit rate based on A2DP transmit queue
length.
It can be used if the LDAC ABR library is installed on the device:
libldacBT_abr.so

Test: manual
Bug: 35381097
Change-Id: Idcc2fabe86acaf441f5a71f5d2bb66ad29252cdb
parent 6da94e0c
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -660,6 +660,13 @@ static void btif_a2dp_source_audio_handle_timer(UNUSED_ATTR void* context) {

  if (alarm_is_scheduled(btif_a2dp_source_cb.media_alarm)) {
    CHECK(btif_a2dp_source_cb.encoder_interface != NULL);
    if (btif_a2dp_source_cb.encoder_interface->set_transmit_queue_length !=
        NULL) {
      size_t transmit_queue_length =
          fixed_queue_length(btif_a2dp_source_cb.tx_audio_queue);
      btif_a2dp_source_cb.encoder_interface->set_transmit_queue_length(
          transmit_queue_length);
    }
    btif_a2dp_source_cb.encoder_interface->send_frames(timestamp_us);
    bta_av_ci_src_data_ready(BTA_AV_CHNL_AUDIO);
    update_scheduling_stats(&btif_a2dp_source_cb.stats.tx_queue_enqueue_stats,
+3 −0
Original line number Diff line number Diff line
@@ -23,6 +23,7 @@ cc_library_static {
        "external/aac/libAACenc/include",
        "external/aac/libSYS/include",
        "external/libldac/inc",
        "external/libldac/abr/inc",
        "packages/modules/Bluetooth/system",
        "packages/modules/Bluetooth/system/btcore/include",
        "packages/modules/Bluetooth/system/vnd/include",
@@ -49,6 +50,7 @@ cc_library_static {
        "a2dp/a2dp_vendor_aptx_encoder.cc",
        "a2dp/a2dp_vendor_aptx_hd_encoder.cc",
        "a2dp/a2dp_vendor_ldac.cc",
        "a2dp/a2dp_vendor_ldac_abr.cc",
        "a2dp/a2dp_vendor_ldac_encoder.cc",
        "avct/avct_api.cc",
        "avct/avct_bcb_act.cc",
@@ -176,6 +178,7 @@ cc_library_static {
    ],
    required: [
        "libldacBT_enc",
        "libldacBT_abr",
    ]
}

+1 −0
Original line number Diff line number Diff line
@@ -82,6 +82,7 @@ static const tA2DP_ENCODER_INTERFACE a2dp_encoder_interface_aac = {
    a2dp_aac_feeding_flush,
    a2dp_aac_get_encoder_interval_ms,
    a2dp_aac_send_frames,
    nullptr,  // set_transmit_queue_length
    a2dp_aac_debug_codec_dump};

UNUSED_ATTR static tA2DP_STATUS A2DP_CodecInfoMatchesCapabilityAac(
+1 −0
Original line number Diff line number Diff line
@@ -97,6 +97,7 @@ static const tA2DP_ENCODER_INTERFACE a2dp_encoder_interface_sbc = {
    a2dp_sbc_feeding_flush,
    a2dp_sbc_get_encoder_interval_ms,
    a2dp_sbc_send_frames,
    nullptr,  // set_transmit_queue_length
    a2dp_sbc_debug_codec_dump};

static tA2DP_STATUS A2DP_CodecInfoMatchesCapabilitySbc(
+1 −0
Original line number Diff line number Diff line
@@ -76,6 +76,7 @@ static const tA2DP_ENCODER_INTERFACE a2dp_encoder_interface_aptx = {
    a2dp_vendor_aptx_feeding_flush,
    a2dp_vendor_aptx_get_encoder_interval_ms,
    a2dp_vendor_aptx_send_frames,
    nullptr,  // set_transmit_queue_length
    a2dp_vendor_aptx_debug_codec_dump};

UNUSED_ATTR static tA2DP_STATUS A2DP_CodecInfoMatchesCapabilityAptx(
Loading