diff --git a/media/java/android/media/MediaMuxer.java b/media/java/android/media/MediaMuxer.java index 7117fbdbf1226..e481aa141d6b3 100644 --- a/media/java/android/media/MediaMuxer.java +++ b/media/java/android/media/MediaMuxer.java @@ -266,6 +266,121 @@ final public class MediaMuxer { /** * Adds a track with the specified format. + *

+ * The following table summarizes support for specific format keys across android releases. + * Keys marked with '+:' are required. + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + *
OS Version(s){@code MediaFormat} keys used for + *
All TracksAudio TracksVideo Tracks
{@link android.os.Build.VERSION_CODES#JELLY_BEAN_MR2}+: {@link MediaFormat#KEY_MIME}+: {@link MediaFormat#KEY_SAMPLE_RATE},
+ * +: {@link MediaFormat#KEY_CHANNEL_COUNT},
+ * +: codec-specific dataAAC
+: {@link MediaFormat#KEY_WIDTH},
+ * +: {@link MediaFormat#KEY_HEIGHT},
+ * no {@code KEY_ROTATION}, + * use {@link #setOrientationHint setOrientationHint()}.mp4,
+ * +: codec-specific dataAVC, MPEG4
{@link android.os.Build.VERSION_CODES#KITKAT}
{@link android.os.Build.VERSION_CODES#KITKAT_WATCH}
{@link android.os.Build.VERSION_CODES#LOLLIPOP}as above, plus
+ * +: codec-specific dataVorbis & .webm
{@link android.os.Build.VERSION_CODES#LOLLIPOP_MR1}
{@link android.os.Build.VERSION_CODES#M}as above, plus
+ * {@link MediaFormat#KEY_BIT_RATE}AAC
{@link android.os.Build.VERSION_CODES#N}as above, plus
+ * + * {@link MediaFormat#KEY_BIT_RATE}MPEG4,
+ * {@link MediaFormat#KEY_HDR_STATIC_INFO}#, .webm,
+ * {@link MediaFormat#KEY_COLOR_STANDARD}#,
+ * {@link MediaFormat#KEY_COLOR_TRANSFER}#,
+ * {@link MediaFormat#KEY_COLOR_RANGE}#,
+ * +: codec-specific dataHEVC,
+ * codec-specific dataVP9
+ *

Notes:
+ * #: storing into container metadata.
+ * .mp4, .webm…: for listed containers
+ * MPEG4, AAC…: for listed codecs + *

+ *

Note that the codec-specific data for the track must be specified using + * this method. Furthermore, codec-specific data must not be passed/specified via the + * {@link #writeSampleData writeSampleData()} call. + *

+ * + *

+ * The following table summarizes codec support for containers across android releases: + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + *
OS Version(s)Codec support + *
{@linkplain OutputFormat#MUXER_OUTPUT_MPEG_4 MP4}{@linkplain OutputFormat#MUXER_OUTPUT_WEBM WEBM}
{@link android.os.Build.VERSION_CODES#JELLY_BEAN_MR2}{@link MediaFormat#MIMETYPE_AUDIO_AAC AAC},
+ * {@link MediaFormat#MIMETYPE_AUDIO_AMR_NB NB-AMR},
+ * {@link MediaFormat#MIMETYPE_AUDIO_AMR_WB WB-AMR},
+ * {@link MediaFormat#MIMETYPE_VIDEO_H263 H.263},
+ * {@link MediaFormat#MIMETYPE_VIDEO_MPEG4 MPEG-4},
+ * {@link MediaFormat#MIMETYPE_VIDEO_AVC AVC} (H.264)
Not supported
{@link android.os.Build.VERSION_CODES#KITKAT}
{@link android.os.Build.VERSION_CODES#KITKAT_WATCH}
{@link android.os.Build.VERSION_CODES#LOLLIPOP}{@link MediaFormat#MIMETYPE_AUDIO_VORBIS Vorbis},
+ * {@link MediaFormat#MIMETYPE_VIDEO_VP8 VP8}
{@link android.os.Build.VERSION_CODES#LOLLIPOP_MR1}
{@link android.os.Build.VERSION_CODES#M}
{@link android.os.Build.VERSION_CODES#N}as above, plus
+ * {@link MediaFormat#MIMETYPE_VIDEO_HEVC HEVC} (H.265)
as above, plus
+ * {@link MediaFormat#MIMETYPE_VIDEO_VP9 VP9}
+ * * @param format The media format for the track. This must not be an empty * MediaFormat. * @return The track index for this newly added track, and it should be used