diff --git a/extensions/av1/proguard-rules.txt b/extensions/av1/proguard-rules.txt index 9d73f7e2b5..c4ef2286f2 100644 --- a/extensions/av1/proguard-rules.txt +++ b/extensions/av1/proguard-rules.txt @@ -5,3 +5,7 @@ native ; } +# Some members of this class are being accessed from native methods. Keep them unobfuscated. +-keep class com.google.android.exoplayer2.video.VideoDecoderOutputBuffer { + *; +} diff --git a/extensions/av1/src/main/java/com/google/android/exoplayer2/ext/av1/Gav1Decoder.java b/extensions/av1/src/main/java/com/google/android/exoplayer2/ext/av1/Gav1Decoder.java index ad8c8a682c..08d48e9699 100644 --- a/extensions/av1/src/main/java/com/google/android/exoplayer2/ext/av1/Gav1Decoder.java +++ b/extensions/av1/src/main/java/com/google/android/exoplayer2/ext/av1/Gav1Decoder.java @@ -15,10 +15,12 @@ */ package com.google.android.exoplayer2.ext.av1; +import static androidx.annotation.VisibleForTesting.PACKAGE_PRIVATE; import static java.lang.Runtime.getRuntime; import android.view.Surface; import androidx.annotation.Nullable; +import androidx.annotation.VisibleForTesting; import com.google.android.exoplayer2.C; import com.google.android.exoplayer2.decoder.DecoderInputBuffer; import com.google.android.exoplayer2.decoder.SimpleDecoder; @@ -28,7 +30,8 @@ import com.google.android.exoplayer2.video.VideoDecoderOutputBuffer; import java.nio.ByteBuffer; /** Gav1 decoder. */ -/* package */ final class Gav1Decoder +@VisibleForTesting(otherwise = PACKAGE_PRIVATE) +public final class Gav1Decoder extends SimpleDecoder { // LINT.IfChange diff --git a/extensions/av1/src/main/proguard-rules.pgcfg b/extensions/av1/src/main/proguard-rules.pgcfg new file mode 120000 index 0000000000..499fb08b36 --- /dev/null +++ b/extensions/av1/src/main/proguard-rules.pgcfg @@ -0,0 +1 @@ +../../proguard-rules.txt \ No newline at end of file diff --git a/extensions/flac/README.md b/extensions/flac/README.md index a9d4c3094e..47c74d1148 100644 --- a/extensions/flac/README.md +++ b/extensions/flac/README.md @@ -68,7 +68,7 @@ renderer. ### Using `FlacExtractor` ### -`FlacExtractor` is used via `ExtractorMediaSource`. If you're using +`FlacExtractor` is used via `ProgressiveMediaSource`. If you're using `DefaultExtractorsFactory`, `FlacExtractor` will automatically be used to read `.flac` files. If you're not using `DefaultExtractorsFactory`, return a `FlacExtractor` from your `ExtractorsFactory.createExtractors` implementation. diff --git a/extensions/flac/src/main/java/com/google/android/exoplayer2/ext/flac/FlacDecoder.java b/extensions/flac/src/main/java/com/google/android/exoplayer2/ext/flac/FlacDecoder.java index 84cb081b29..f6c5f6a6a7 100644 --- a/extensions/flac/src/main/java/com/google/android/exoplayer2/ext/flac/FlacDecoder.java +++ b/extensions/flac/src/main/java/com/google/android/exoplayer2/ext/flac/FlacDecoder.java @@ -15,7 +15,10 @@ */ package com.google.android.exoplayer2.ext.flac; +import static androidx.annotation.VisibleForTesting.PACKAGE_PRIVATE; + import androidx.annotation.Nullable; +import androidx.annotation.VisibleForTesting; import com.google.android.exoplayer2.Format; import com.google.android.exoplayer2.ParserException; import com.google.android.exoplayer2.decoder.DecoderInputBuffer; @@ -27,11 +30,10 @@ import java.io.IOException; import java.nio.ByteBuffer; import java.util.List; -/** - * Flac decoder. - */ -/* package */ final class FlacDecoder extends - SimpleDecoder { +/** Flac decoder. */ +@VisibleForTesting(otherwise = PACKAGE_PRIVATE) +public final class FlacDecoder + extends SimpleDecoder { private final FlacStreamMetadata streamMetadata; private final FlacDecoderJni decoderJni; diff --git a/extensions/ima/proguard-rules.txt b/extensions/ima/proguard-rules.txt index feef3daf7a..a46014de75 100644 --- a/extensions/ima/proguard-rules.txt +++ b/extensions/ima/proguard-rules.txt @@ -1,5 +1,6 @@ # Proguard rules specific to the IMA extension. +-dontwarn com.google.ads.interactivemedia.** -keep class com.google.ads.interactivemedia.** { *; } -keep interface com.google.ads.interactivemedia.** { *; } -keep class com.google.obf.** { *; } diff --git a/extensions/opus/src/main/java/com/google/android/exoplayer2/ext/opus/OpusDecoder.java b/extensions/opus/src/main/java/com/google/android/exoplayer2/ext/opus/OpusDecoder.java index 6b96cc5e49..f6da031a7a 100644 --- a/extensions/opus/src/main/java/com/google/android/exoplayer2/ext/opus/OpusDecoder.java +++ b/extensions/opus/src/main/java/com/google/android/exoplayer2/ext/opus/OpusDecoder.java @@ -15,7 +15,10 @@ */ package com.google.android.exoplayer2.ext.opus; +import static androidx.annotation.VisibleForTesting.PACKAGE_PRIVATE; + import androidx.annotation.Nullable; +import androidx.annotation.VisibleForTesting; import com.google.android.exoplayer2.C; import com.google.android.exoplayer2.audio.OpusUtil; import com.google.android.exoplayer2.decoder.CryptoInfo; @@ -30,7 +33,8 @@ import java.nio.ByteBuffer; import java.util.List; /** Opus decoder. */ -/* package */ final class OpusDecoder +@VisibleForTesting(otherwise = PACKAGE_PRIVATE) +public final class OpusDecoder extends SimpleDecoder { private static final int NO_ERROR = 0; diff --git a/extensions/vp9/proguard-rules.txt b/extensions/vp9/proguard-rules.txt index d64773da2f..c3cd063680 100644 --- a/extensions/vp9/proguard-rules.txt +++ b/extensions/vp9/proguard-rules.txt @@ -6,6 +6,6 @@ } # Some members of this class are being accessed from native methods. Keep them unobfuscated. --keep class com.google.android.exoplayer2.ext.vp9.VpxOutputBuffer { +-keep class com.google.android.exoplayer2.video.VideoDecoderOutputBuffer { *; } diff --git a/extensions/vp9/src/main/java/com/google/android/exoplayer2/ext/vp9/VpxDecoder.java b/extensions/vp9/src/main/java/com/google/android/exoplayer2/ext/vp9/VpxDecoder.java index ce0873ad40..021ce3a946 100644 --- a/extensions/vp9/src/main/java/com/google/android/exoplayer2/ext/vp9/VpxDecoder.java +++ b/extensions/vp9/src/main/java/com/google/android/exoplayer2/ext/vp9/VpxDecoder.java @@ -15,8 +15,11 @@ */ package com.google.android.exoplayer2.ext.vp9; +import static androidx.annotation.VisibleForTesting.PACKAGE_PRIVATE; + import android.view.Surface; import androidx.annotation.Nullable; +import androidx.annotation.VisibleForTesting; import com.google.android.exoplayer2.C; import com.google.android.exoplayer2.decoder.CryptoInfo; import com.google.android.exoplayer2.decoder.DecoderInputBuffer; @@ -30,7 +33,8 @@ import com.google.android.exoplayer2.video.VideoDecoderOutputBuffer; import java.nio.ByteBuffer; /** Vpx decoder. */ -/* package */ final class VpxDecoder +@VisibleForTesting(otherwise = PACKAGE_PRIVATE) +public final class VpxDecoder extends SimpleDecoder { // These constants should match the codes returned from vpxDecode and vpxSecureDecode functions in diff --git a/library/core/proguard-rules.txt b/library/core/proguard-rules.txt index 67c33679cd..3623e8f926 100644 --- a/library/core/proguard-rules.txt +++ b/library/core/proguard-rules.txt @@ -5,17 +5,6 @@ public static android.net.Uri buildRawResourceUri(int); } -# Methods accessed via reflection in DefaultExtractorsFactory --dontnote com.google.android.exoplayer2.ext.flac.FlacLibrary --keepclassmembers class com.google.android.exoplayer2.ext.flac.FlacLibrary { - public static boolean isAvailable(); -} - -# Some members of this class are being accessed from native methods. Keep them unobfuscated. --keep class com.google.android.exoplayer2.video.VideoDecoderOutputBuffer { - *; -} - # Constructors accessed via reflection in DefaultRenderersFactory -dontnote com.google.android.exoplayer2.ext.vp9.LibvpxVideoRenderer -keepclassmembers class com.google.android.exoplayer2.ext.vp9.LibvpxVideoRenderer { diff --git a/library/extractor/proguard-rules.txt b/library/extractor/proguard-rules.txt index d79f79a4a1..c39f894dfe 100644 --- a/library/extractor/proguard-rules.txt +++ b/library/extractor/proguard-rules.txt @@ -1,10 +1,14 @@ # Proguard rules specific to the extractor module. -# Constructors accessed via reflection in DefaultExtractorsFactory +# Methods accessed via reflection in DefaultExtractorsFactory -dontnote com.google.android.exoplayer2.ext.flac.FlacExtractor -keepclassmembers class com.google.android.exoplayer2.ext.flac.FlacExtractor { (int); } +-dontnote com.google.android.exoplayer2.ext.flac.FlacLibrary +-keepclassmembers class com.google.android.exoplayer2.ext.flac.FlacLibrary { + public static boolean isAvailable(); +} # Don't warn about checkerframework and Kotlin annotations -dontwarn org.checkerframework.** diff --git a/library/ui/proguard-rules.txt b/library/ui/proguard-rules.txt index ad7c139ea8..111a79c916 100644 --- a/library/ui/proguard-rules.txt +++ b/library/ui/proguard-rules.txt @@ -11,6 +11,16 @@ public androidx.appcompat.app.AlertDialog$Builder setNegativeButton(int, android.content.DialogInterface$OnClickListener); public androidx.appcompat.app.AlertDialog create(); } +-dontnote android.support.v7.app.AlertDialog.Builder +-keepclassmembers class android.support.v7.app.AlertDialog$Builder { + (android.content.Context, int); + public android.content.Context getContext(); + public android.support.v7.app.AlertDialog$Builder setTitle(java.lang.CharSequence); + public android.support.v7.app.AlertDialog$Builder setView(android.view.View); + public android.support.v7.app.AlertDialog$Builder setPositiveButton(int, android.content.DialogInterface$OnClickListener); + public android.support.v7.app.AlertDialog$Builder setNegativeButton(int, android.content.DialogInterface$OnClickListener); + public android.support.v7.app.AlertDialog create(); +} # Don't warn about checkerframework and Kotlin annotations -dontwarn org.checkerframework.**