diff --git a/apex/media/framework/api/current.txt b/apex/media/framework/api/current.txt index 2b7dcd3301bc7..839fb51431963 100644 --- a/apex/media/framework/api/current.txt +++ b/apex/media/framework/api/current.txt @@ -52,6 +52,20 @@ package android.media { field public static final String PARAMETER_TS_IGNORE_AVC_STREAM = "android.media.mediaparser.ts.ignoreAvcStream"; field public static final String PARAMETER_TS_IGNORE_SPLICE_INFO_STREAM = "android.media.mediaparser.ts.ignoreSpliceInfoStream"; field public static final String PARAMETER_TS_MODE = "android.media.mediaparser.ts.mode"; + field public static final String PARSER_NAME_AC3 = "android.media.mediaparser.Ac3Parser"; + field public static final String PARSER_NAME_AC4 = "android.media.mediaparser.Ac4Parser"; + field public static final String PARSER_NAME_ADTS = "android.media.mediaparser.AdtsParser"; + field public static final String PARSER_NAME_AMR = "android.media.mediaparser.AmrParser"; + field public static final String PARSER_NAME_FLAC = "android.media.mediaparser.FlacParser"; + field public static final String PARSER_NAME_FLV = "android.media.mediaparser.FlvParser"; + field public static final String PARSER_NAME_FMP4 = "android.media.mediaparser.FragmentedMp4Parser"; + field public static final String PARSER_NAME_MATROSKA = "android.media.mediaparser.MatroskaParser"; + field public static final String PARSER_NAME_MP3 = "android.media.mediaparser.Mp3Parser"; + field public static final String PARSER_NAME_MP4 = "android.media.mediaparser.Mp4Parser"; + field public static final String PARSER_NAME_OGG = "android.media.mediaparser.OggParser"; + field public static final String PARSER_NAME_PS = "android.media.mediaparser.PsParser"; + field public static final String PARSER_NAME_TS = "android.media.mediaparser.TsParser"; + field public static final String PARSER_NAME_WAV = "android.media.mediaparser.WavParser"; } public static interface MediaParser.InputReader { diff --git a/apex/media/framework/java/android/media/MediaParser.java b/apex/media/framework/java/android/media/MediaParser.java index 0ff55dabbaaee..9b38d84c46bed 100644 --- a/apex/media/framework/java/android/media/MediaParser.java +++ b/apex/media/framework/java/android/media/MediaParser.java @@ -18,6 +18,7 @@ package android.media; import android.annotation.CheckResult; import android.annotation.NonNull; import android.annotation.Nullable; +import android.annotation.StringDef; import android.net.Uri; import android.text.TextUtils; import android.util.Pair; @@ -56,6 +57,8 @@ import com.google.android.exoplayer2.video.ColorInfo; import java.io.EOFException; import java.io.IOException; import java.io.InterruptedIOException; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; import java.nio.ByteBuffer; import java.util.Collections; import java.util.HashMap; @@ -440,7 +443,46 @@ public final class MediaParser { } } - // Public constants. + // Parser implementation names. + + /** @hide */ + @Retention(RetentionPolicy.SOURCE) + @StringDef( + prefix = {"PARSER_NAME_"}, + value = { + PARSER_NAME_MATROSKA, + PARSER_NAME_FMP4, + PARSER_NAME_MP4, + PARSER_NAME_MP3, + PARSER_NAME_ADTS, + PARSER_NAME_AC3, + PARSER_NAME_TS, + PARSER_NAME_FLV, + PARSER_NAME_OGG, + PARSER_NAME_PS, + PARSER_NAME_WAV, + PARSER_NAME_AMR, + PARSER_NAME_AC4, + PARSER_NAME_FLAC + }) + public @interface ParserName {} + + public static final String PARSER_NAME_MATROSKA = "android.media.mediaparser.MatroskaParser"; + public static final String PARSER_NAME_FMP4 = "android.media.mediaparser.FragmentedMp4Parser"; + public static final String PARSER_NAME_MP4 = "android.media.mediaparser.Mp4Parser"; + public static final String PARSER_NAME_MP3 = "android.media.mediaparser.Mp3Parser"; + public static final String PARSER_NAME_ADTS = "android.media.mediaparser.AdtsParser"; + public static final String PARSER_NAME_AC3 = "android.media.mediaparser.Ac3Parser"; + public static final String PARSER_NAME_TS = "android.media.mediaparser.TsParser"; + public static final String PARSER_NAME_FLV = "android.media.mediaparser.FlvParser"; + public static final String PARSER_NAME_OGG = "android.media.mediaparser.OggParser"; + public static final String PARSER_NAME_PS = "android.media.mediaparser.PsParser"; + public static final String PARSER_NAME_WAV = "android.media.mediaparser.WavParser"; + public static final String PARSER_NAME_AMR = "android.media.mediaparser.AmrParser"; + public static final String PARSER_NAME_AC4 = "android.media.mediaparser.Ac4Parser"; + public static final String PARSER_NAME_FLAC = "android.media.mediaparser.FlacParser"; + + // MediaParser parameters. /** * Sets whether constant bitrate seeking should be enabled for ADTS parsing. {@code boolean} @@ -589,7 +631,7 @@ public final class MediaParser { */ @NonNull public static MediaParser createByName( - @NonNull String name, @NonNull OutputConsumer outputConsumer) { + @NonNull @ParserName String name, @NonNull OutputConsumer outputConsumer) { String[] nameAsArray = new String[] {name}; assertValidNames(nameAsArray); return new MediaParser(outputConsumer, /* sniff= */ false, name); @@ -607,7 +649,7 @@ public final class MediaParser { */ @NonNull public static MediaParser create( - @NonNull OutputConsumer outputConsumer, @NonNull String... parserNames) { + @NonNull OutputConsumer outputConsumer, @NonNull @ParserName String... parserNames) { assertValidNames(parserNames); if (parserNames.length == 0) { parserNames = EXTRACTOR_FACTORIES_BY_NAME.keySet().toArray(new String[0]); @@ -624,6 +666,7 @@ public final class MediaParser { *
TODO: List which properties are taken into account. E.g. MimeType.
*/
@NonNull
+ @ParserName
public static List