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