diff --git a/api/current.txt b/api/current.txt index 43f1c4e86ed23..30f0810775d27 100644 --- a/api/current.txt +++ b/api/current.txt @@ -12125,6 +12125,7 @@ package android.media { public static final class MediaCodecInfo.CodecCapabilities { ctor public MediaCodecInfo.CodecCapabilities(); + method public final boolean isFeatureSupported(java.lang.String); field public static final int COLOR_Format12bitRGB444 = 3; // 0x3 field public static final int COLOR_Format16bitARGB1555 = 5; // 0x5 field public static final int COLOR_Format16bitARGB4444 = 4; // 0x4 @@ -12171,6 +12172,7 @@ package android.media { field public static final int COLOR_FormatYUV444Interleaved = 29; // 0x1d field public static final int COLOR_QCOM_FormatYUV420SemiPlanar = 2141391872; // 0x7fa30c00 field public static final int COLOR_TI_FormatYUV420PackedSemiPlanar = 2130706688; // 0x7f000100 + field public static final java.lang.String FEATURE_AdaptivePlayback = "adaptive-playback"; field public int[] colorFormats; field public android.media.MediaCodecInfo.CodecProfileLevel[] profileLevels; } diff --git a/media/java/android/media/MediaCodecInfo.java b/media/java/android/media/MediaCodecInfo.java index aeed7d4b53906..90c12c635c78e 100644 --- a/media/java/android/media/MediaCodecInfo.java +++ b/media/java/android/media/MediaCodecInfo.java @@ -72,7 +72,8 @@ public final class MediaCodecInfo { /** * Encapsulates the capabilities of a given codec component. * For example, what profile/level combinations it supports and what colorspaces - * it is capable of providing the decoded data in. + * it is capable of providing the decoded data in, as well as some + * codec-type specific capability flags. *
You can get an instance for a given {@link MediaCodecInfo} object with
* {@link MediaCodecInfo#getCapabilitiesForType getCapabilitiesForType()}, passing a MIME type.
*/
@@ -139,6 +140,24 @@ public final class MediaCodecInfo {
* OMX_COLOR_FORMATTYPE.
*/
public int[] colorFormats;
+
+ private final static int FLAG_SupportsAdaptivePlayback = (1 << 0);
+ private int flags;
+
+ /**
+ * video decoder only: codec supports seamless resolution changes.
+ */
+ public final static String FEATURE_AdaptivePlayback = "adaptive-playback";
+
+ /**
+ * Query codec feature capabilities.
+ */
+ public final boolean isFeatureSupported(String name) {
+ if (name.equals(FEATURE_AdaptivePlayback)) {
+ return (flags & FLAG_SupportsAdaptivePlayback) != 0;
+ }
+ return false;
+ }
};
/**
diff --git a/media/jni/android_media_MediaCodecList.cpp b/media/jni/android_media_MediaCodecList.cpp
index 04430ec26609c..caa594e654b77 100644
--- a/media/jni/android_media_MediaCodecList.cpp
+++ b/media/jni/android_media_MediaCodecList.cpp
@@ -110,10 +110,11 @@ static jobject android_media_MediaCodecList_getCodecCapabilities(
Vector