Propagate haptic channels metadata through MediaFormat in MediaPlayer so that
the presence of haptic channels can be determined without re-opening the
source with a MediaExtractor.
Test: manual
Bug: 240621827
Change-Id: I4bb1c74a82306f2bcc3d50c92503b73e20e6f0f1
diff --git a/media/libmediaplayerservice/nuplayer/GenericSource.cpp b/media/libmediaplayerservice/nuplayer/GenericSource.cpp
index 36e4d4a..1358faa 100644
--- a/media/libmediaplayerservice/nuplayer/GenericSource.cpp
+++ b/media/libmediaplayerservice/nuplayer/GenericSource.cpp
@@ -992,6 +992,11 @@
format->setInt32("auto", !!isAutoselect);
format->setInt32("default", !!isDefault);
format->setInt32("forced", !!isForced);
+ } else if (trackType == MEDIA_TRACK_TYPE_AUDIO) {
+ int32_t hapticChannelCount;
+ if (meta->findInt32(kKeyHapticChannelCount, &hapticChannelCount)) {
+ format->setInt32("haptic-channel-count", hapticChannelCount);
+ }
}
return format;
diff --git a/media/libmediaplayerservice/nuplayer/NuPlayer.cpp b/media/libmediaplayerservice/nuplayer/NuPlayer.cpp
index 9b4fc8f..c07e34c 100644
--- a/media/libmediaplayerservice/nuplayer/NuPlayer.cpp
+++ b/media/libmediaplayerservice/nuplayer/NuPlayer.cpp
@@ -555,6 +555,13 @@
reply->writeInt32(isAuto);
reply->writeInt32(isDefault);
reply->writeInt32(isForced);
+ } else if (trackType == MEDIA_TRACK_TYPE_AUDIO) {
+ int32_t hapticChannelCount;
+ bool hasHapticChannels = format->findInt32("haptic-channel-count", &hapticChannelCount);
+ reply->writeInt32(hasHapticChannels);
+ if (hasHapticChannels) {
+ reply->writeInt32(hapticChannelCount);
+ }
}
}