summaryrefslogtreecommitdiff
path: root/audio/core/all-versions/default/StreamOut.cpp
diff options
context:
space:
mode:
authorMikhail Naganov <mnaganov@google.com>2021-01-07 18:29:59 -0800
committerMikhail Naganov <mnaganov@google.com>2021-01-07 18:35:11 -0800
commit9139399bada27dbb25057dc24aa1b08dbe28587f (patch)
treefedb8f1bc880f264659a61706618329304151cd8 /audio/core/all-versions/default/StreamOut.cpp
parent254903f8fdc8710e30ae623ba91f163c0b2cd9f1 (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.cpp23
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;