diff --git a/api/current.txt b/api/current.txt
index 70fec89646ad5..9252152d15ec9 100644
--- a/api/current.txt
+++ b/api/current.txt
@@ -12753,7 +12753,9 @@ package android.media {
field public static final java.lang.String KEY_IS_ADTS = "is-adts";
field public static final java.lang.String KEY_I_FRAME_INTERVAL = "i-frame-interval";
field public static final java.lang.String KEY_LANGUAGE = "language";
+ field public static final java.lang.String KEY_MAX_HEIGHT = "max-height";
field public static final java.lang.String KEY_MAX_INPUT_SIZE = "max-input-size";
+ field public static final java.lang.String KEY_MAX_WIDTH = "max-width";
field public static final java.lang.String KEY_MIME = "mime";
field public static final java.lang.String KEY_PUSH_BLANK_BUFFERS_ON_STOP = "push-blank-buffers-on-shutdown";
field public static final java.lang.String KEY_REPEAT_PREVIOUS_FRAME_AFTER = "repeat-previous-frame-after";
diff --git a/media/java/android/media/MediaFormat.java b/media/java/android/media/MediaFormat.java
index 71af9ccb92d8a..fd4c81b248150 100644
--- a/media/java/android/media/MediaFormat.java
+++ b/media/java/android/media/MediaFormat.java
@@ -44,9 +44,19 @@ import java.util.Map;
* for encoders, readable in the output format of decoders
*
| {@link #KEY_FRAME_RATE} | Integer or Float | encoder-only |
* | {@link #KEY_I_FRAME_INTERVAL} | Integer | encoder-only |
+ * | {@link #KEY_MAX_WIDTH} | Integer | decoder-only, optional, max-resolution width |
+ * | {@link #KEY_MAX_HEIGHT} | Integer | decoder-only, optional, max-resolution height |
* | {@link #KEY_REPEAT_PREVIOUS_FRAME_AFTER} | Long | video encoder in surface-mode only |
* | {@link #KEY_PUSH_BLANK_BUFFERS_ON_STOP} | Integer(1) | video decoder rendering to a surface only |
*
+ * Specify both {@link #KEY_MAX_WIDTH} and {@link #KEY_MAX_HEIGHT} to enable
+ * adaptive playback (seamless resolution change) for a video decoder that
+ * supports it ({@link MediaCodecInfo.CodecCapabilities#FEATURE_AdaptivePlayback}).
+ * The values are used as hints for the codec: they are the maximum expected
+ * resolution to prepare for. Depending on codec support, preparing for larger
+ * maximum resolution may require more memory even if that resolution is never
+ * reached. These fields have no effect for codecs that do not support adaptive
+ * playback.
*
* Audio formats have the following keys:
*
@@ -104,6 +114,20 @@ public final class MediaFormat {
*/
public static final String KEY_HEIGHT = "height";
+ /**
+ * A key describing the maximum expected width of the content in a video
+ * decoder format, in case there are resolution changes in the video content.
+ * The associated value is an integer
+ */
+ public static final String KEY_MAX_WIDTH = "max-width";
+
+ /**
+ * A key describing the maximum expected height of the content in a video
+ * decoder format, in case there are resolution changes in the video content.
+ * The associated value is an integer
+ */
+ public static final String KEY_MAX_HEIGHT = "max-height";
+
/** A key describing the maximum size in bytes of a buffer of data
* described by this MediaFormat.
* The associated value is an integer