diff options
author | Mikhail Naganov <mnaganov@google.com> | 2020-12-17 15:01:54 -0800 |
---|---|---|
committer | Mikhail Naganov <mnaganov@google.com> | 2021-01-07 10:32:06 -0800 |
commit | 3f1457b9537b1ff23704e17be7588dadf1e2884e (patch) | |
tree | 82878ed14f6c3b93734a211ffbaa75c5fd0aad32 /audio/core/all-versions/default/StreamIn.cpp | |
parent | daedb0dc2e582d6db90793045759a7acef6f1096 (diff) |
Audio: Add VTS tests for invalid enum-strings, Part 1
Add tests that try passing invalid enum-string values to HAL
methods taking enum-strings. Fix issues found in the default
wrapper.
Interface updates:
- Update AudioConfig structure to indicate whether
AudioOffloadInfo is specified.
- Add return value to IStreamIn.updateSinkMetadata
and IStreamOut.updateSourceMetadata to provide indication
of invalid arguments.
- Specify the behavior of IDevice.open{Input|Output}Stream
in the case of invalid arguments vs. rejected config.
Bug: 142480271
Test: atest VtsHalAudioV6_0TargetTest
Test: atest VtsHalAudioV7_0TargetTest
with side-loaded V7 default wrapper
Change-Id: I6bd7be3869cc7a8d5d00506565bbf0b3a050b630
Diffstat (limited to 'audio/core/all-versions/default/StreamIn.cpp')
-rw-r--r-- | audio/core/all-versions/default/StreamIn.cpp | 70 |
1 files changed, 21 insertions, 49 deletions
diff --git a/audio/core/all-versions/default/StreamIn.cpp b/audio/core/all-versions/default/StreamIn.cpp index a6735546f3..39a4c27210 100644 --- a/audio/core/all-versions/default/StreamIn.cpp +++ b/audio/core/all-versions/default/StreamIn.cpp @@ -478,87 +478,59 @@ Return<void> StreamIn::debug(const hidl_handle& fd, const hidl_vec<hidl_string>& } #if MAJOR_VERSION >= 4 - -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) { +Result StreamIn::doUpdateSinkMetadata(const SinkMetadata& sinkMetadata, + bool abortOnConversionFailure) { std::vector<record_track_metadata> halTracks; - halTracks.reserve(sinkMetadata.tracks.size()); - for (auto& metadata : sinkMetadata.tracks) { - halTracks.push_back(convertRecordTrackMetadata(metadata)); + if (status_t status = sinkMetadataToHal(sinkMetadata, &halTracks); + status != NO_ERROR && abortOnConversionFailure) { + return Stream::analyzeStatus("sinkMetadataToHal", status); } const sink_metadata_t halMetadata = { .track_count = halTracks.size(), .tracks = halTracks.data(), }; mStream->update_sink_metadata(mStream, &halMetadata); + return Result::OK; } #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) { +Result 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)); + if (status_t status = sinkMetadataToHalV7(sinkMetadata, &halTracks); status != NO_ERROR) { + return Stream::analyzeStatus("sinkMetadataToHal", status); } const sink_metadata_v7_t halMetadata = { .track_count = halTracks.size(), .tracks = halTracks.data(), }; mStream->update_sink_metadata_v7(mStream, &halMetadata); + return Result::OK; } #endif // MAJOR_VERSION >= 7 +#if MAJOR_VERSION <= 6 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 + (void)doUpdateSinkMetadata(sinkMetadata, false /*abortOnConversionFailure*/); + return Void(); +} +#elif MAJOR_VERSION >= 7 +Return<Result> StreamIn::updateSinkMetadata(const SinkMetadata& sinkMetadata) { if (mDevice->version() < AUDIO_DEVICE_API_VERSION_3_2) { if (mStream->update_sink_metadata == nullptr) { - return Void(); // not supported by the HAL + return Result::NOT_SUPPORTED; } - doUpdateSinkMetadata(sinkMetadata); + return doUpdateSinkMetadata(sinkMetadata, true /*abortOnConversionFailure*/); } else { if (mStream->update_sink_metadata_v7 == nullptr) { - return Void(); // not supported by the HAL + return Result::NOT_SUPPORTED; } - doUpdateSinkMetadataV7(sinkMetadata); + return doUpdateSinkMetadataV7(sinkMetadata); } -#endif // MAJOR_VERSION < 7 - return Void(); } +#endif Return<void> StreamIn::getActiveMicrophones(getActiveMicrophones_cb _hidl_cb) { Result retval = Result::NOT_SUPPORTED; |