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

Commit c8fc2134 authored by Henri Chataing's avatar Henri Chataing
Browse files

Create ranges of reserved codec indexes for codec extensibility

The ranges BTAV_A2DP_CODEC_INDEX_SOURCE_EXT_MIN .. BTAV_A2DP_CODEC_INDEX_SOURCE_EXT_MAX
and BTAV_A2DP_CODEC_INDEX_SINK_EXT_MIN .. BTAV_A2DP_CODEC_INDEX_SINK_MIN
are reserved for offloaded codecs that are not recognized by the stack.

Bug: 308958546
Test: m Bluetooth
Change-Id: I52251fcf6fff2f7f14100b4ad7a60d741785a3b6
parent 596d4b0f
Loading
Loading
Loading
Loading
+19 −2
Original line number Diff line number Diff line
@@ -61,7 +61,14 @@ typedef enum {

  BTAV_A2DP_CODEC_INDEX_SOURCE_MAX,

  BTAV_A2DP_CODEC_INDEX_SINK_MIN = BTAV_A2DP_CODEC_INDEX_SOURCE_MAX,
  // Range of codec indexes reserved for Offload codec extensibility.
  // Indexes in this range will be allocated for offloaded codecs
  // that the stack does not recognize.
  BTAV_A2DP_CODEC_INDEX_SOURCE_EXT_MIN = BTAV_A2DP_CODEC_INDEX_SOURCE_MAX,
  BTAV_A2DP_CODEC_INDEX_SOURCE_EXT_MAX =
      BTAV_A2DP_CODEC_INDEX_SOURCE_EXT_MIN + 4,

  BTAV_A2DP_CODEC_INDEX_SINK_MIN = BTAV_A2DP_CODEC_INDEX_SOURCE_EXT_MAX,

  // Add an entry for each sink codec here
  BTAV_A2DP_CODEC_INDEX_SINK_SBC = BTAV_A2DP_CODEC_INDEX_SINK_MIN,
@@ -71,8 +78,14 @@ typedef enum {

  BTAV_A2DP_CODEC_INDEX_SINK_MAX,

  // Range of codec indexes reserved for Offload codec extensibility.
  // Indexes in this range will be allocated for offloaded codecs
  // that the stack does not recognize.
  BTAV_A2DP_CODEC_INDEX_SINK_EXT_MIN = BTAV_A2DP_CODEC_INDEX_SINK_MAX,
  BTAV_A2DP_CODEC_INDEX_SINK_EXT_MAX = BTAV_A2DP_CODEC_INDEX_SINK_EXT_MIN + 4,

  BTAV_A2DP_CODEC_INDEX_MIN = BTAV_A2DP_CODEC_INDEX_SOURCE_MIN,
  BTAV_A2DP_CODEC_INDEX_MAX = BTAV_A2DP_CODEC_INDEX_SINK_MAX
  BTAV_A2DP_CODEC_INDEX_MAX = BTAV_A2DP_CODEC_INDEX_SINK_EXT_MAX
} btav_a2dp_codec_index_t;

typedef enum {
@@ -188,6 +201,10 @@ struct btav_a2dp_codec_config_t {
      case BTAV_A2DP_CODEC_INDEX_MAX:
        codec_name_str = "Unknown(CODEC_INDEX_MAX)";
        break;
      case BTAV_A2DP_CODEC_INDEX_SOURCE_EXT_MIN:
      case BTAV_A2DP_CODEC_INDEX_SINK_EXT_MIN:
        codec_name_str = "Unknown(CODEC_EXT)";
        break;
    }

    std::string sample_rate_str;
+6 −0
Original line number Diff line number Diff line
@@ -720,6 +720,9 @@ const char* A2DP_VendorCodecIndexStr(btav_a2dp_codec_index_t codec_index) {
    // Add a switch statement for each vendor-specific codec
    case BTAV_A2DP_CODEC_INDEX_MAX:
      break;
    case BTAV_A2DP_CODEC_INDEX_SOURCE_EXT_MIN:
    case BTAV_A2DP_CODEC_INDEX_SINK_EXT_MIN:
      break;
  }

  return "UNKNOWN CODEC INDEX";
@@ -751,6 +754,9 @@ bool A2DP_VendorInitCodecConfig(btav_a2dp_codec_index_t codec_index,
    // Add a switch statement for each vendor-specific codec
    case BTAV_A2DP_CODEC_INDEX_MAX:
      break;
    case BTAV_A2DP_CODEC_INDEX_SOURCE_EXT_MIN:
    case BTAV_A2DP_CODEC_INDEX_SINK_EXT_MIN:
      break;
  }

  return false;
+6 −0
Original line number Diff line number Diff line
@@ -313,6 +313,8 @@ class StackA2dpTest : public ::testing::Test {
          supported = true;
          break;
        case BTAV_A2DP_CODEC_INDEX_MAX:
        case BTAV_A2DP_CODEC_INDEX_SOURCE_MAX:
        case BTAV_A2DP_CODEC_INDEX_SINK_MAX:
          // Needed to avoid using "default:" case so we can capture when
          // a new codec is added, and it can be included here.
          break;
@@ -914,6 +916,10 @@ TEST_F(StackA2dpTest, test_a2dp_codec_index_str) {

  // Test that each codec has a known string
  for (int i = BTAV_A2DP_CODEC_INDEX_MIN; i < BTAV_A2DP_CODEC_INDEX_MAX; i++) {
    if ((i >= BTAV_A2DP_CODEC_INDEX_SOURCE_EXT_MIN && i < BTAV_A2DP_CODEC_INDEX_SOURCE_EXT_MAX)
        || (i >= BTAV_A2DP_CODEC_INDEX_SINK_EXT_MIN && i < BTAV_A2DP_CODEC_INDEX_SINK_EXT_MAX)) {
      continue;
    }
    btav_a2dp_codec_index_t codec_index =
        static_cast<btav_a2dp_codec_index_t>(i);
    EXPECT_STRNE(A2DP_CodecIndexStr(codec_index), "UNKNOWN CODEC INDEX");