Merge "Add parser name constants and a StringDef for them" into rvc-dev am: 1e9da0f457

Change-Id: Ie98b83f74fd56e0b69c27ed16a33c55067c4349a
This commit is contained in:
TreeHugger Robot
2020-03-20 18:40:08 +00:00
committed by Automerger Merge Worker
3 changed files with 89 additions and 17 deletions

View File

@@ -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 {

View File

@@ -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 {
* <p>TODO: List which properties are taken into account. E.g. MimeType.
*/
@NonNull
@ParserName
public static List<String> getParserNames(@NonNull MediaFormat mediaFormat) {
throw new UnsupportedOperationException();
}
@@ -702,6 +745,7 @@ public final class MediaParser {
* implementation has not yet been selected.
*/
@Nullable
@ParserName
public String getParserName() {
return mExtractorName;
}
@@ -1165,20 +1209,20 @@ public final class MediaParser {
LinkedHashMap<String, ExtractorFactory> extractorFactoriesByName = new LinkedHashMap<>();
// Parsers are ordered to match ExoPlayer's DefaultExtractorsFactory extractor ordering,
// which in turn aims to minimize the chances of incorrect extractor selections.
extractorFactoriesByName.put("exo.MatroskaParser", MatroskaExtractor::new);
extractorFactoriesByName.put("exo.FragmentedMp4Parser", FragmentedMp4Extractor::new);
extractorFactoriesByName.put("exo.Mp4Parser", Mp4Extractor::new);
extractorFactoriesByName.put("exo.Mp3Parser", Mp3Extractor::new);
extractorFactoriesByName.put("exo.AdtsParser", AdtsExtractor::new);
extractorFactoriesByName.put("exo.Ac3Parser", Ac3Extractor::new);
extractorFactoriesByName.put("exo.TsParser", TsExtractor::new);
extractorFactoriesByName.put("exo.FlvParser", FlvExtractor::new);
extractorFactoriesByName.put("exo.OggParser", OggExtractor::new);
extractorFactoriesByName.put("exo.PsParser", PsExtractor::new);
extractorFactoriesByName.put("exo.WavParser", WavExtractor::new);
extractorFactoriesByName.put("exo.AmrParser", AmrExtractor::new);
extractorFactoriesByName.put("exo.Ac4Parser", Ac4Extractor::new);
extractorFactoriesByName.put("exo.FlacParser", FlacExtractor::new);
extractorFactoriesByName.put(PARSER_NAME_MATROSKA, MatroskaExtractor::new);
extractorFactoriesByName.put(PARSER_NAME_FMP4, FragmentedMp4Extractor::new);
extractorFactoriesByName.put(PARSER_NAME_MP4, Mp4Extractor::new);
extractorFactoriesByName.put(PARSER_NAME_MP3, Mp3Extractor::new);
extractorFactoriesByName.put(PARSER_NAME_ADTS, AdtsExtractor::new);
extractorFactoriesByName.put(PARSER_NAME_AC3, Ac3Extractor::new);
extractorFactoriesByName.put(PARSER_NAME_TS, TsExtractor::new);
extractorFactoriesByName.put(PARSER_NAME_FLV, FlvExtractor::new);
extractorFactoriesByName.put(PARSER_NAME_OGG, OggExtractor::new);
extractorFactoriesByName.put(PARSER_NAME_PS, PsExtractor::new);
extractorFactoriesByName.put(PARSER_NAME_WAV, WavExtractor::new);
extractorFactoriesByName.put(PARSER_NAME_AMR, AmrExtractor::new);
extractorFactoriesByName.put(PARSER_NAME_AC4, Ac4Extractor::new);
extractorFactoriesByName.put(PARSER_NAME_FLAC, FlacExtractor::new);
EXTRACTOR_FACTORIES_BY_NAME = Collections.unmodifiableMap(extractorFactoriesByName);
HashMap<String, Class> expectedTypeByParameterName = new HashMap<>();

View File

@@ -26435,6 +26435,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 {