diff options
author | Lajos Molnar <lajos@google.com> | 2013-05-09 12:20:34 -0700 |
---|---|---|
committer | Lajos Molnar <lajos@google.com> | 2013-09-06 11:13:33 -0700 |
commit | 9a4575c31411524f5037f78666cdb648a07a5682 (patch) | |
tree | 2c232990ede5e0540ce6c35c3db57fe85e70f771 /media | |
parent | f96b104a7f6e4c2a8883b6d4de69e6de24aa8edc (diff) | |
download | frameworks_base-9a4575c31411524f5037f78666cdb648a07a5682.zip frameworks_base-9a4575c31411524f5037f78666cdb648a07a5682.tar.gz frameworks_base-9a4575c31411524f5037f78666cdb648a07a5682.tar.bz2 |
MediaFormat.java: Add KEY_MAX_WIDTH and KEY_MAX_HEIGHT
KEY_MAX_WIDTH and KEY_MAX_HEIGHT are optional video decoder
format keys. Specify both to request seamless resolution-
change support from video decoders that support this feature.
You can check this via CodecCapabilities.isFeatureSupported.
The codecs use the MAX_WIDTH/HEIGHT values as hints for the
range of resolutions that needs to be supported. Note,
however, that some codecs may require more memory just by
_preparing_ for larger maximum resolutions, whether or not
that resolution is actually used.
Change-Id: I00fe986ef894fec4bb39bceed081da0e88725d59
Signed-off-by: Lajos Molnar <lajos@google.com>
Related-to-bug: 7093648
Diffstat (limited to 'media')
-rw-r--r-- | media/java/android/media/MediaFormat.java | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/media/java/android/media/MediaFormat.java b/media/java/android/media/MediaFormat.java index 949a42c..01658c5 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</b></td></tr> * <tr><td>{@link #KEY_FRAME_RATE}</td><td>Integer or Float</td><td><b>encoder-only</b></td></tr> * <tr><td>{@link #KEY_I_FRAME_INTERVAL}</td><td>Integer</td><td><b>encoder-only</b></td></tr> + * <tr><td>{@link #KEY_MAX_WIDTH}</td><td>Integer</td><td><b>decoder-only</b>, optional, max-resolution width</td></tr> + * <tr><td>{@link #KEY_MAX_HEIGHT}</td><td>Integer</td><td><b>decoder-only</b>, optional, max-resolution height</td></tr> * <tr><td>{@link #KEY_REPEAT_PREVIOUS_FRAME_AFTER}</td><td>Long</td><td><b>video encoder in surface-mode only</b></td></tr> * <tr><td>{@link #KEY_PUSH_BLANK_BUFFERS_ON_STOP}</td><td>Integer(1)</td><td><b>video decoder rendering to a surface only</b></td></tr> * </table> + * 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.<br /><br /> * * Audio formats have the following keys: * <table> @@ -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 |