From 60c1ad7797cc64d428d043250a55cdc6189a19c8 Mon Sep 17 00:00:00 2001 From: Kevin Rocard Date: Wed, 28 Mar 2018 11:32:08 -0700 Subject: [PATCH] Audio V4: Add metadata update to legacy API The metadata API was not present in the legacy HAL which lots of developer still use. Test: Check the method is correctly called on each track change Bug: 38184704 Bug: 69623109 Change-Id: If56b4ee3739194e49808cf24d728c791b0588f9f Signed-off-by: Kevin Rocard --- .../core/all-versions/default/StreamIn.impl.h | 17 ++++++++++++++-- .../all-versions/default/StreamOut.impl.h | 20 +++++++++++++++++-- 2 files changed, 33 insertions(+), 4 deletions(-) diff --git a/audio/core/all-versions/default/include/core/all-versions/default/StreamIn.impl.h b/audio/core/all-versions/default/include/core/all-versions/default/StreamIn.impl.h index c03b0554d2..8774be904f 100644 --- a/audio/core/all-versions/default/include/core/all-versions/default/StreamIn.impl.h +++ b/audio/core/all-versions/default/include/core/all-versions/default/StreamIn.impl.h @@ -451,8 +451,21 @@ Return StreamIn::debug(const hidl_handle& fd, const hidl_vec& } #ifdef AUDIO_HAL_VERSION_4_0 -Return StreamIn::updateSinkMetadata(const SinkMetadata& /*sinkMetadata*/) { - return Void(); // TODO: propagate to legacy +Return StreamIn::updateSinkMetadata(const SinkMetadata& sinkMetadata) { + if (mStream->update_sink_metadata == nullptr) { + return Void(); // not supported by the HAL + } + std::vector halTracks; + halTracks.reserve(sinkMetadata.tracks.size()); + for (auto& metadata : sinkMetadata.tracks) { + halTracks.push_back( + {.source = static_cast(metadata.source), .gain = metadata.gain}); + } + const sink_metadata_t halMetadata = { + .track_count = halTracks.size(), .tracks = halTracks.data(), + }; + mStream->update_sink_metadata(mStream, &halMetadata); + return Void(); } Return StreamIn::getActiveMicrophones(getActiveMicrophones_cb _hidl_cb) { diff --git a/audio/core/all-versions/default/include/core/all-versions/default/StreamOut.impl.h b/audio/core/all-versions/default/include/core/all-versions/default/StreamOut.impl.h index 605b824196..77098a8168 100644 --- a/audio/core/all-versions/default/include/core/all-versions/default/StreamOut.impl.h +++ b/audio/core/all-versions/default/include/core/all-versions/default/StreamOut.impl.h @@ -547,8 +547,24 @@ Return StreamOut::debug(const hidl_handle& fd, const hidl_vec } #ifdef AUDIO_HAL_VERSION_4_0 -Return StreamOut::updateSourceMetadata(const SourceMetadata& /*sourceMetadata*/) { - return Void(); // TODO: propagate to legacy +Return StreamOut::updateSourceMetadata(const SourceMetadata& sourceMetadata) { + if (mStream->update_source_metadata == nullptr) { + return Void(); // not supported by the HAL + } + std::vector halTracks; + halTracks.reserve(sourceMetadata.tracks.size()); + for (auto& metadata : sourceMetadata.tracks) { + halTracks.push_back({ + .usage = static_cast(metadata.usage), + .content_type = static_cast(metadata.contentType), + .gain = metadata.gain, + }); + } + const source_metadata_t halMetadata = { + .track_count = halTracks.size(), .tracks = halTracks.data(), + }; + mStream->update_source_metadata(mStream, &halMetadata); + return Void(); } Return StreamOut::selectPresentation(int32_t /*presentationId*/, int32_t /*programId*/) { return Result::NOT_SUPPORTED; // TODO: propagate to legacy