summaryrefslogtreecommitdiff
path: root/audio/core/all-versions/default/StreamIn.cpp
diff options
context:
space:
mode:
authorandroid-build-team Robot <android-build-team-robot@google.com>2021-01-05 02:11:27 +0000
committerandroid-build-team Robot <android-build-team-robot@google.com>2021-01-05 02:11:27 +0000
commit78c4ffcbf6ded706cbd1d4b9f4bdebce3a9bdf7b (patch)
tree87428ea09d9ff686ed6e928256f33a1def1c3fee /audio/core/all-versions/default/StreamIn.cpp
parentbf10113939e1361655631a481451ca763eeab1af (diff)
parent74f0eda6ad4944df93b2f19ba2f1cb7a9a06dc2a (diff)
Snap for 7062099 from 74f0eda6ad4944df93b2f19ba2f1cb7a9a06dc2a to sc-release
Change-Id: I764490a53ca97b4070bebdbd6aa2a8ca0a1a3616
Diffstat (limited to 'audio/core/all-versions/default/StreamIn.cpp')
-rw-r--r--audio/core/all-versions/default/StreamIn.cpp82
1 files changed, 69 insertions, 13 deletions
diff --git a/audio/core/all-versions/default/StreamIn.cpp b/audio/core/all-versions/default/StreamIn.cpp
index ead7204712..a6735546f3 100644
--- a/audio/core/all-versions/default/StreamIn.cpp
+++ b/audio/core/all-versions/default/StreamIn.cpp
@@ -478,29 +478,85 @@ Return<void> StreamIn::debug(const hidl_handle& fd, const hidl_vec<hidl_string>&
}
#if MAJOR_VERSION >= 4
-Return<void> StreamIn::updateSinkMetadata(const SinkMetadata& sinkMetadata) {
- if (mStream->update_sink_metadata == nullptr) {
- return Void(); // not supported by the HAL
+
+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) {
std::vector<record_track_metadata> halTracks;
halTracks.reserve(sinkMetadata.tracks.size());
for (auto& metadata : sinkMetadata.tracks) {
- record_track_metadata halTrackMetadata = {.gain = metadata.gain};
- (void)HidlUtils::audioSourceToHal(metadata.source, &halTrackMetadata.source);
-#if MAJOR_VERSION >= 5
- if (metadata.destination.getDiscriminator() ==
- RecordTrackMetadata::Destination::hidl_discriminator::device) {
- (void)deviceAddressToHal(metadata.destination.device(), &halTrackMetadata.dest_device,
- halTrackMetadata.dest_device_address);
- }
-#endif
- halTracks.push_back(halTrackMetadata);
+ halTracks.push_back(convertRecordTrackMetadata(metadata));
}
const sink_metadata_t halMetadata = {
.track_count = halTracks.size(),
.tracks = halTracks.data(),
};
mStream->update_sink_metadata(mStream, &halMetadata);
+}
+
+#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) {
+ std::vector<record_track_metadata_v7> halTracks;
+ halTracks.reserve(sinkMetadata.tracks.size());
+ for (auto& metadata : sinkMetadata.tracks) {
+ halTracks.push_back(convertRecordTrackMetadataV7(metadata));
+ }
+ const sink_metadata_v7_t halMetadata = {
+ .track_count = halTracks.size(),
+ .tracks = halTracks.data(),
+ };
+ mStream->update_sink_metadata_v7(mStream, &halMetadata);
+}
+#endif // MAJOR_VERSION >= 7
+
+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
+ if (mDevice->version() < AUDIO_DEVICE_API_VERSION_3_2) {
+ if (mStream->update_sink_metadata == nullptr) {
+ return Void(); // not supported by the HAL
+ }
+ doUpdateSinkMetadata(sinkMetadata);
+ } else {
+ if (mStream->update_sink_metadata_v7 == nullptr) {
+ return Void(); // not supported by the HAL
+ }
+ doUpdateSinkMetadataV7(sinkMetadata);
+ }
+#endif // MAJOR_VERSION < 7
return Void();
}