diff options
author | Mikhail Naganov <mnaganov@google.com> | 2021-01-07 18:29:59 -0800 |
---|---|---|
committer | Mikhail Naganov <mnaganov@google.com> | 2021-01-07 18:35:11 -0800 |
commit | 9139399bada27dbb25057dc24aa1b08dbe28587f (patch) | |
tree | fedb8f1bc880f264659a61706618329304151cd8 /audio/core/all-versions/default/StreamOut.cpp | |
parent | 254903f8fdc8710e30ae623ba91f163c0b2cd9f1 (diff) |
Audio: Add VTS tests for invalid enum-strings, Part 1b
Add missing checks for invalid channel mask and tags
in playback and record metadata. Fix the behavior of
the default wrapper.
Bug: 142480271
Test: atest VtsHalAudioV6_0TargetTest
Test: atest VtsHalAudioV7_0TargetTest
with side-loaded V7 default wrapper
Change-Id: Ie0f82b2becc457b735349eb351ea29989a64f22c
Diffstat (limited to 'audio/core/all-versions/default/StreamOut.cpp')
-rw-r--r-- | audio/core/all-versions/default/StreamOut.cpp | 23 |
1 files changed, 17 insertions, 6 deletions
diff --git a/audio/core/all-versions/default/StreamOut.cpp b/audio/core/all-versions/default/StreamOut.cpp index 0ff918213d..ffd3b6b856 100644 --- a/audio/core/all-versions/default/StreamOut.cpp +++ b/audio/core/all-versions/default/StreamOut.cpp @@ -586,13 +586,24 @@ Return<void> StreamOut::debug(const hidl_handle& fd, const hidl_vec<hidl_string> } #if MAJOR_VERSION >= 4 -Result StreamOut::doUpdateSourceMetadata(const SourceMetadata& sourceMetadata, - bool abortOnConversionFailure) { +Result StreamOut::doUpdateSourceMetadata(const SourceMetadata& sourceMetadata) { std::vector<playback_track_metadata_t> halTracks; - if (status_t status = sourceMetadataToHal(sourceMetadata, &halTracks); - status != NO_ERROR && abortOnConversionFailure) { +#if MAJOR_VERSION <= 6 + (void)sourceMetadataToHal(sourceMetadata, &halTracks); +#else + // Validate whether a conversion to V7 is possible. This is needed + // to have a consistent behavior of the HAL regardless of the API + // version of the legacy HAL (and also to be consistent with openOutputStream). + std::vector<playback_track_metadata_v7> halTracksV7; + if (status_t status = sourceMetadataToHalV7(sourceMetadata, &halTracksV7); status == NO_ERROR) { + halTracks.reserve(halTracksV7.size()); + for (auto metadata_v7 : halTracksV7) { + halTracks.push_back(std::move(metadata_v7.base)); + } + } else { return Stream::analyzeStatus("sourceMetadataToHal", status); } +#endif // MAJOR_VERSION <= 6 const source_metadata_t halMetadata = { .track_count = halTracks.size(), .tracks = halTracks.data(), @@ -621,7 +632,7 @@ Return<void> StreamOut::updateSourceMetadata(const SourceMetadata& sourceMetadat if (mStream->update_source_metadata == nullptr) { return Void(); // not supported by the HAL } - (void)doUpdateSourceMetadata(sourceMetadata, false /*abortOnConversionFailure*/); + (void)doUpdateSourceMetadata(sourceMetadata); return Void(); } #elif MAJOR_VERSION >= 7 @@ -630,7 +641,7 @@ Return<Result> StreamOut::updateSourceMetadata(const SourceMetadata& sourceMetad if (mStream->update_source_metadata == nullptr) { return Result::NOT_SUPPORTED; } - return doUpdateSourceMetadata(sourceMetadata, true /*abortOnConversionFailure*/); + return doUpdateSourceMetadata(sourceMetadata); } else { if (mStream->update_source_metadata_v7 == nullptr) { return Result::NOT_SUPPORTED; |