Align flags between the core and extension FLAC extractors
- It seems conceptually simpler for DefaultExtractorsFactory - It seems unlikely we'll need to diverge the two. In the case of workaround flags we can just have them be no-ops in the version that doesn't need them. PiperOrigin-RevId: 317151955
This commit is contained in:
parent
816a364a51
commit
f8843441a2
@ -53,6 +53,11 @@ public final class FlacExtractor implements Extractor {
|
|||||||
/** Factory that returns one extractor which is a {@link FlacExtractor}. */
|
/** Factory that returns one extractor which is a {@link FlacExtractor}. */
|
||||||
public static final ExtractorsFactory FACTORY = () -> new Extractor[] {new FlacExtractor()};
|
public static final ExtractorsFactory FACTORY = () -> new Extractor[] {new FlacExtractor()};
|
||||||
|
|
||||||
|
// LINT.IfChange
|
||||||
|
/*
|
||||||
|
* Flags in the two FLAC extractors should be kept in sync. If we ever change this then
|
||||||
|
* DefaultExtractorsFactory will need modifying, because it currently assumes this is the case.
|
||||||
|
*/
|
||||||
/**
|
/**
|
||||||
* Flags controlling the behavior of the extractor. Possible flag value is {@link
|
* Flags controlling the behavior of the extractor. Possible flag value is {@link
|
||||||
* #FLAG_DISABLE_ID3_METADATA}.
|
* #FLAG_DISABLE_ID3_METADATA}.
|
||||||
@ -68,7 +73,9 @@ public final class FlacExtractor implements Extractor {
|
|||||||
* Flag to disable parsing of ID3 metadata. Can be set to save memory if ID3 metadata is not
|
* Flag to disable parsing of ID3 metadata. Can be set to save memory if ID3 metadata is not
|
||||||
* required.
|
* required.
|
||||||
*/
|
*/
|
||||||
public static final int FLAG_DISABLE_ID3_METADATA = 1;
|
public static final int FLAG_DISABLE_ID3_METADATA =
|
||||||
|
com.google.android.exoplayer2.extractor.flac.FlacExtractor.FLAG_DISABLE_ID3_METADATA;
|
||||||
|
// LINT.ThenChange(../../../../../../../../../../../library/extractor/src/main/java/com/google/android/exoplayer2/extractor/flac/FlacExtractor.java)
|
||||||
|
|
||||||
private final ParsableByteArray outputBuffer;
|
private final ParsableByteArray outputBuffer;
|
||||||
private final boolean id3MetadataDisabled;
|
private final boolean id3MetadataDisabled;
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
# Constructors accessed via reflection in DefaultExtractorsFactory
|
# Constructors accessed via reflection in DefaultExtractorsFactory
|
||||||
-dontnote com.google.android.exoplayer2.ext.flac.FlacExtractor
|
-dontnote com.google.android.exoplayer2.ext.flac.FlacExtractor
|
||||||
-keepclassmembers class com.google.android.exoplayer2.ext.flac.FlacExtractor {
|
-keepclassmembers class com.google.android.exoplayer2.ext.flac.FlacExtractor {
|
||||||
<init>();
|
<init>(int);
|
||||||
}
|
}
|
||||||
|
|
||||||
# Don't warn about checkerframework and Kotlin annotations
|
# Don't warn about checkerframework and Kotlin annotations
|
||||||
|
@ -63,7 +63,8 @@ import java.util.Map;
|
|||||||
* <li>AMR ({@link AmrExtractor})
|
* <li>AMR ({@link AmrExtractor})
|
||||||
* <li>FLAC
|
* <li>FLAC
|
||||||
* <ul>
|
* <ul>
|
||||||
* <li>If available, the FLAC extension extractor is used.
|
* <li>If available, the FLAC extension's {@code
|
||||||
|
* com.google.android.exoplayer2.ext.flac.FlacExtractor} is used.
|
||||||
* <li>Otherwise, the core {@link FlacExtractor} is used. Note that Android devices do not
|
* <li>Otherwise, the core {@link FlacExtractor} is used. Note that Android devices do not
|
||||||
* generally include a FLAC decoder before API 27. This can be worked around by using
|
* generally include a FLAC decoder before API 27. This can be worked around by using
|
||||||
* the FLAC extension or the FFmpeg extension.
|
* the FLAC extension or the FFmpeg extension.
|
||||||
@ -108,7 +109,7 @@ public final class DefaultExtractorsFactory implements ExtractorsFactory {
|
|||||||
flacExtensionExtractorConstructor =
|
flacExtensionExtractorConstructor =
|
||||||
Class.forName("com.google.android.exoplayer2.ext.flac.FlacExtractor")
|
Class.forName("com.google.android.exoplayer2.ext.flac.FlacExtractor")
|
||||||
.asSubclass(Extractor.class)
|
.asSubclass(Extractor.class)
|
||||||
.getConstructor();
|
.getConstructor(int.class);
|
||||||
}
|
}
|
||||||
// LINT.ThenChange(../../../../../../../../proguard-rules.txt)
|
// LINT.ThenChange(../../../../../../../../proguard-rules.txt)
|
||||||
} catch (ClassNotFoundException e) {
|
} catch (ClassNotFoundException e) {
|
||||||
@ -123,7 +124,7 @@ public final class DefaultExtractorsFactory implements ExtractorsFactory {
|
|||||||
private boolean constantBitrateSeekingEnabled;
|
private boolean constantBitrateSeekingEnabled;
|
||||||
@AdtsExtractor.Flags private int adtsFlags;
|
@AdtsExtractor.Flags private int adtsFlags;
|
||||||
@AmrExtractor.Flags private int amrFlags;
|
@AmrExtractor.Flags private int amrFlags;
|
||||||
@FlacExtractor.Flags private int coreFlacFlags;
|
@FlacExtractor.Flags private int flacFlags;
|
||||||
@MatroskaExtractor.Flags private int matroskaFlags;
|
@MatroskaExtractor.Flags private int matroskaFlags;
|
||||||
@Mp4Extractor.Flags private int mp4Flags;
|
@Mp4Extractor.Flags private int mp4Flags;
|
||||||
@FragmentedMp4Extractor.Flags private int fragmentedMp4Flags;
|
@FragmentedMp4Extractor.Flags private int fragmentedMp4Flags;
|
||||||
@ -178,15 +179,17 @@ public final class DefaultExtractorsFactory implements ExtractorsFactory {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets flags for {@link FlacExtractor} instances created by the factory.
|
* Sets flags for {@link FlacExtractor} instances created by the factory. The flags are also used
|
||||||
|
* by {@code com.google.android.exoplayer2.ext.flac.FlacExtractor} instances if the FLAC extension
|
||||||
|
* is being used.
|
||||||
*
|
*
|
||||||
* @see FlacExtractor#FlacExtractor(int)
|
* @see FlacExtractor#FlacExtractor(int)
|
||||||
* @param flags The flags to use.
|
* @param flags The flags to use.
|
||||||
* @return The factory, for convenience.
|
* @return The factory, for convenience.
|
||||||
*/
|
*/
|
||||||
public synchronized DefaultExtractorsFactory setCoreFlacExtractorFlags(
|
public synchronized DefaultExtractorsFactory setFlacExtractorFlags(
|
||||||
@FlacExtractor.Flags int flags) {
|
@FlacExtractor.Flags int flags) {
|
||||||
this.coreFlacFlags = flags;
|
this.flacFlags = flags;
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -324,13 +327,13 @@ public final class DefaultExtractorsFactory implements ExtractorsFactory {
|
|||||||
case FileTypes.FLAC:
|
case FileTypes.FLAC:
|
||||||
if (FLAC_EXTENSION_EXTRACTOR_CONSTRUCTOR != null) {
|
if (FLAC_EXTENSION_EXTRACTOR_CONSTRUCTOR != null) {
|
||||||
try {
|
try {
|
||||||
extractors.add(FLAC_EXTENSION_EXTRACTOR_CONSTRUCTOR.newInstance());
|
extractors.add(FLAC_EXTENSION_EXTRACTOR_CONSTRUCTOR.newInstance(flacFlags));
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
// Should never happen.
|
// Should never happen.
|
||||||
throw new IllegalStateException("Unexpected error creating FLAC extractor", e);
|
throw new IllegalStateException("Unexpected error creating FLAC extractor", e);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
extractors.add(new FlacExtractor(coreFlacFlags));
|
extractors.add(new FlacExtractor(flacFlags));
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case FileTypes.FLV:
|
case FileTypes.FLV:
|
||||||
|
@ -52,6 +52,11 @@ public final class FlacExtractor implements Extractor {
|
|||||||
/** Factory for {@link FlacExtractor} instances. */
|
/** Factory for {@link FlacExtractor} instances. */
|
||||||
public static final ExtractorsFactory FACTORY = () -> new Extractor[] {new FlacExtractor()};
|
public static final ExtractorsFactory FACTORY = () -> new Extractor[] {new FlacExtractor()};
|
||||||
|
|
||||||
|
// LINT.IfChange
|
||||||
|
/*
|
||||||
|
* Flags in the two FLAC extractors should be kept in sync. If we ever change this then
|
||||||
|
* DefaultExtractorsFactory will need modifying, because it currently assumes this is the case.
|
||||||
|
*/
|
||||||
/**
|
/**
|
||||||
* Flags controlling the behavior of the extractor. Possible flag value is {@link
|
* Flags controlling the behavior of the extractor. Possible flag value is {@link
|
||||||
* #FLAG_DISABLE_ID3_METADATA}.
|
* #FLAG_DISABLE_ID3_METADATA}.
|
||||||
@ -68,6 +73,7 @@ public final class FlacExtractor implements Extractor {
|
|||||||
* required.
|
* required.
|
||||||
*/
|
*/
|
||||||
public static final int FLAG_DISABLE_ID3_METADATA = 1;
|
public static final int FLAG_DISABLE_ID3_METADATA = 1;
|
||||||
|
// LINT.ThenChange(../../../../../../../../../../../extensions/flac/src/main/java/com/google/android/exoplayer2/ext/flac/FlacExtractor.java)
|
||||||
|
|
||||||
/** Parser state. */
|
/** Parser state. */
|
||||||
@Documented
|
@Documented
|
||||||
|
Loading…
x
Reference in New Issue
Block a user