diff options
author | android-build-team Robot <android-build-team-robot@google.com> | 2021-01-05 02:11:27 +0000 |
---|---|---|
committer | android-build-team Robot <android-build-team-robot@google.com> | 2021-01-05 02:11:27 +0000 |
commit | 78c4ffcbf6ded706cbd1d4b9f4bdebce3a9bdf7b (patch) | |
tree | 87428ea09d9ff686ed6e928256f33a1def1c3fee /audio/core/all-versions/default/StreamIn.cpp | |
parent | bf10113939e1361655631a481451ca763eeab1af (diff) | |
parent | 74f0eda6ad4944df93b2f19ba2f1cb7a9a06dc2a (diff) |
Snap for 7062099 from 74f0eda6ad4944df93b2f19ba2f1cb7a9a06dc2a to sc-release
Change-Id: I764490a53ca97b4070bebdbd6aa2a8ca0a1a3616
Diffstat (limited to 'audio/core/all-versions/default/StreamIn.cpp')
-rw-r--r-- | audio/core/all-versions/default/StreamIn.cpp | 82 |
1 files changed, 69 insertions, 13 deletions
diff --git a/audio/core/all-versions/default/StreamIn.cpp b/audio/core/all-versions/default/StreamIn.cpp index ead7204712..a6735546f3 100644 --- a/audio/core/all-versions/default/StreamIn.cpp +++ b/audio/core/all-versions/default/StreamIn.cpp @@ -478,29 +478,85 @@ Return<void> StreamIn::debug(const hidl_handle& fd, const hidl_vec<hidl_string>& } #if MAJOR_VERSION >= 4 -Return<void> StreamIn::updateSinkMetadata(const SinkMetadata& sinkMetadata) { - if (mStream->update_sink_metadata == nullptr) { - return Void(); // not supported by the HAL + +record_track_metadata StreamIn::convertRecordTrackMetadata( + const RecordTrackMetadata& trackMetadata) { + record_track_metadata halTrackMetadata = {.gain = trackMetadata.gain}; + (void)HidlUtils::audioSourceToHal(trackMetadata.source, &halTrackMetadata.source); +#if MAJOR_VERSION >= 5 + if (trackMetadata.destination.getDiscriminator() == + RecordTrackMetadata::Destination::hidl_discriminator::device) { + (void)deviceAddressToHal(trackMetadata.destination.device(), &halTrackMetadata.dest_device, + halTrackMetadata.dest_device_address); } +#endif + return halTrackMetadata; +} + +void StreamIn::doUpdateSinkMetadata(const SinkMetadata& sinkMetadata) { std::vector<record_track_metadata> halTracks; halTracks.reserve(sinkMetadata.tracks.size()); for (auto& metadata : sinkMetadata.tracks) { - record_track_metadata halTrackMetadata = {.gain = metadata.gain}; - (void)HidlUtils::audioSourceToHal(metadata.source, &halTrackMetadata.source); -#if MAJOR_VERSION >= 5 - if (metadata.destination.getDiscriminator() == - RecordTrackMetadata::Destination::hidl_discriminator::device) { - (void)deviceAddressToHal(metadata.destination.device(), &halTrackMetadata.dest_device, - halTrackMetadata.dest_device_address); - } -#endif - halTracks.push_back(halTrackMetadata); + halTracks.push_back(convertRecordTrackMetadata(metadata)); } const sink_metadata_t halMetadata = { .track_count = halTracks.size(), .tracks = halTracks.data(), }; mStream->update_sink_metadata(mStream, &halMetadata); +} + +#if MAJOR_VERSION >= 7 +record_track_metadata_v7 StreamIn::convertRecordTrackMetadataV7( + const RecordTrackMetadata& trackMetadata) { + record_track_metadata_v7 halTrackMetadata; + halTrackMetadata.base = convertRecordTrackMetadata(trackMetadata); + (void)HidlUtils::audioChannelMaskToHal(trackMetadata.channelMask, + &halTrackMetadata.channel_mask); + std::string halTags; + for (const auto& tag : trackMetadata.tags) { + if (&tag != &trackMetadata.tags[0]) { + halTags += HidlUtils::sAudioTagSeparator; + } + halTags += tag.c_str(); + } + strncpy(halTrackMetadata.tags, halTags.c_str(), AUDIO_ATTRIBUTES_TAGS_MAX_SIZE); + return halTrackMetadata; +} + +void StreamIn::doUpdateSinkMetadataV7(const SinkMetadata& sinkMetadata) { + std::vector<record_track_metadata_v7> halTracks; + halTracks.reserve(sinkMetadata.tracks.size()); + for (auto& metadata : sinkMetadata.tracks) { + halTracks.push_back(convertRecordTrackMetadataV7(metadata)); + } + const sink_metadata_v7_t halMetadata = { + .track_count = halTracks.size(), + .tracks = halTracks.data(), + }; + mStream->update_sink_metadata_v7(mStream, &halMetadata); +} +#endif // MAJOR_VERSION >= 7 + +Return<void> StreamIn::updateSinkMetadata(const SinkMetadata& sinkMetadata) { +#if MAJOR_VERSION < 7 + if (mStream->update_sink_metadata == nullptr) { + return Void(); // not supported by the HAL + } + doUpdateSinkMetadata(sinkMetadata); +#else + if (mDevice->version() < AUDIO_DEVICE_API_VERSION_3_2) { + if (mStream->update_sink_metadata == nullptr) { + return Void(); // not supported by the HAL + } + doUpdateSinkMetadata(sinkMetadata); + } else { + if (mStream->update_sink_metadata_v7 == nullptr) { + return Void(); // not supported by the HAL + } + doUpdateSinkMetadataV7(sinkMetadata); + } +#endif // MAJOR_VERSION < 7 return Void(); } |