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 Floatencoder-only * {@link #KEY_I_FRAME_INTERVAL}Integerencoder-only + * {@link #KEY_MAX_WIDTH}Integerdecoder-only, optional, max-resolution width + * {@link #KEY_MAX_HEIGHT}Integerdecoder-only, optional, max-resolution height * {@link #KEY_REPEAT_PREVIOUS_FRAME_AFTER}Longvideo 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