diff --git a/media/java/android/media/MediaFormat.java b/media/java/android/media/MediaFormat.java index 346f083f696be..93c595f1ca2b4 100644 --- a/media/java/android/media/MediaFormat.java +++ b/media/java/android/media/MediaFormat.java @@ -46,7 +46,8 @@ import java.util.Map; * {@link #KEY_HEIGHT}Integer * {@link #KEY_COLOR_FORMAT}Integerset by the user * for encoders, readable in the output format of decoders - * {@link #KEY_FRAME_RATE}Integer or Floatencoder-only + * {@link #KEY_FRAME_RATE}Integer or Floatrequired for encoders, + * optional for decoders * {@link #KEY_CAPTURE_RATE}Integer * {@link #KEY_I_FRAME_INTERVAL}Integerencoder-only * {@link #KEY_INTRA_REFRESH_PERIOD}Integerencoder-only, optional @@ -197,7 +198,19 @@ public final class MediaFormat { /** * A key describing the frame rate of a video format in frames/sec. - * The associated value is an integer or a float. + * The associated value is normally an integer when the value is used by the platform, + * but video codecs also accept float configuration values. + * Specifically, {@link MediaExtractor#getTrackFormat MediaExtractor} provides an integer + * value corresponding to the frame rate information of the track if specified and non-zero. + * Otherwise, this key is not present. {@link MediaCodec#configure MediaCodec} accepts both + * float and integer values. This represents the desired operating frame rate if the + * {@link #KEY_OPERATING_RATE} is not present and {@link #KEY_PRIORITY} is {@code 0} + * (realtime). For video encoders this value corresponds to the intended frame rate, + * although encoders are expected + * to support variable frame rate based on {@link MediaCodec.BufferInfo#presentationTimeUs + * buffer timestamp}. This key is not used in the {@code MediaCodec} + * {@link MediaCodec#getInputFormat input}/{@link MediaCodec#getOutputFormat output} formats, + * nor by {@link MediaMuxer#addTrack MediaMuxer}. */ public static final String KEY_FRAME_RATE = "frame-rate";