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

Commit 603e649f authored by Alice Kuo's avatar Alice Kuo
Browse files

Fix incorrect tags handle from v7 to SourceMetadata and SinkMetadata

The v7 format concatenat multi-tags with ";." Add the helper function to
covert the tags from v7 to SourceMetadata and SinkMetadata tag vector

Bug: 283349711
Test: m audio.bluetooth.default
Test: Add multi-tags to verify the correctness
Change-Id: I96c7c310862c6402fc79d8c02a84726f57e3f5e9
parent c86d62bc
Loading
Loading
Loading
Loading
+18 −4
Original line number Diff line number Diff line
@@ -99,6 +99,20 @@ audio_format_t BitsPerSampleToAudioFormat(uint8_t bits_per_sample,
  }
}

std::vector<std::string> CovertAudioTagFromV7(char* tags_v7) {
  std::vector<std::string> tags;
  char tags_copy[AUDIO_ATTRIBUTES_TAGS_MAX_SIZE];
  strlcpy(tags_copy, tags_v7, AUDIO_ATTRIBUTES_TAGS_MAX_SIZE);
  char* tag = strtok(tags_copy, ";");

  while (tag != NULL) {
    tags.push_back(tag);
    tag = strtok(NULL, ";");
  }

  return tags;
}

// The maximum time to wait in std::condition_variable::wait_for()
constexpr unsigned int kMaxWaitingTimeMs = 4500;

@@ -600,8 +614,8 @@ void BluetoothAudioPortAidl::UpdateSourceMetadata(
        static_cast<AudioUsage>(source_metadata->tracks[i].base.usage);
    hal_source_metadata.tracks[i].contentType = static_cast<AudioContentType>(
        source_metadata->tracks[i].base.content_type);
    hal_source_metadata.tracks[i].tags.push_back(
        std::string(source_metadata->tracks[i].tags));
    hal_source_metadata.tracks[i].tags =
        std::move(CovertAudioTagFromV7(source_metadata->tracks[i].tags));
  }

  BluetoothAudioSessionControl::UpdateSourceMetadata(session_type_,
@@ -626,8 +640,8 @@ void BluetoothAudioPortAidl::UpdateSinkMetadata(
    hal_sink_metadata.tracks[i].source =
        static_cast<AudioSource>(sink_metadata->tracks[i].base.source);
    hal_sink_metadata.tracks[i].gain = sink_metadata->tracks[i].base.gain;
    hal_sink_metadata.tracks[i].tags.push_back(
        std::string(sink_metadata->tracks[i].tags));
    hal_sink_metadata.tracks[i].tags =
        std::move(CovertAudioTagFromV7(sink_metadata->tracks[i].tags));
  }

  BluetoothAudioSessionControl::UpdateSinkMetadata(session_type_,