diff --git a/extensions/ffmpeg/src/main/java/com/google/android/exoplayer2/ext/ffmpeg/FfmpegDecoder.java b/extensions/ffmpeg/src/main/java/com/google/android/exoplayer2/ext/ffmpeg/FfmpegDecoder.java index 8807738cfa..91bd82ab2a 100644 --- a/extensions/ffmpeg/src/main/java/com/google/android/exoplayer2/ext/ffmpeg/FfmpegDecoder.java +++ b/extensions/ffmpeg/src/main/java/com/google/android/exoplayer2/ext/ffmpeg/FfmpegDecoder.java @@ -69,18 +69,23 @@ import java.util.List; } @Override - public DecoderInputBuffer createInputBuffer() { + protected DecoderInputBuffer createInputBuffer() { return new DecoderInputBuffer(DecoderInputBuffer.BUFFER_REPLACEMENT_MODE_DIRECT); } @Override - public SimpleOutputBuffer createOutputBuffer() { + protected SimpleOutputBuffer createOutputBuffer() { return new SimpleOutputBuffer(this); } @Override - public FfmpegDecoderException decode(DecoderInputBuffer inputBuffer, - SimpleOutputBuffer outputBuffer, boolean reset) { + protected FfmpegDecoderException createUnexpectedDecodeException(Throwable error) { + return new FfmpegDecoderException("Unexpected decode error", error); + } + + @Override + protected FfmpegDecoderException decode( + DecoderInputBuffer inputBuffer, SimpleOutputBuffer outputBuffer, boolean reset) { if (reset) { nativeContext = ffmpegReset(nativeContext, extraData); if (nativeContext == 0) { diff --git a/extensions/ffmpeg/src/main/java/com/google/android/exoplayer2/ext/ffmpeg/FfmpegDecoderException.java b/extensions/ffmpeg/src/main/java/com/google/android/exoplayer2/ext/ffmpeg/FfmpegDecoderException.java index b4cf327198..d6b5a62450 100644 --- a/extensions/ffmpeg/src/main/java/com/google/android/exoplayer2/ext/ffmpeg/FfmpegDecoderException.java +++ b/extensions/ffmpeg/src/main/java/com/google/android/exoplayer2/ext/ffmpeg/FfmpegDecoderException.java @@ -26,4 +26,7 @@ public final class FfmpegDecoderException extends AudioDecoderException { super(message); } + /* package */ FfmpegDecoderException(String message, Throwable cause) { + super(message, cause); + } } 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 3ecccd8246..15d294a35a 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 @@ -70,18 +70,23 @@ import java.util.List; } @Override - public DecoderInputBuffer createInputBuffer() { + protected DecoderInputBuffer createInputBuffer() { return new DecoderInputBuffer(DecoderInputBuffer.BUFFER_REPLACEMENT_MODE_NORMAL); } @Override - public SimpleOutputBuffer createOutputBuffer() { + protected SimpleOutputBuffer createOutputBuffer() { return new SimpleOutputBuffer(this); } @Override - public FlacDecoderException decode(DecoderInputBuffer inputBuffer, - SimpleOutputBuffer outputBuffer, boolean reset) { + protected FlacDecoderException createUnexpectedDecodeException(Throwable error) { + return new FlacDecoderException("Unexpected decode error", error); + } + + @Override + protected FlacDecoderException decode( + DecoderInputBuffer inputBuffer, SimpleOutputBuffer outputBuffer, boolean reset) { if (reset) { decoderJni.flush(); } diff --git a/extensions/flac/src/main/java/com/google/android/exoplayer2/ext/flac/FlacDecoderException.java b/extensions/flac/src/main/java/com/google/android/exoplayer2/ext/flac/FlacDecoderException.java index 2bdff62935..95d7f87c05 100644 --- a/extensions/flac/src/main/java/com/google/android/exoplayer2/ext/flac/FlacDecoderException.java +++ b/extensions/flac/src/main/java/com/google/android/exoplayer2/ext/flac/FlacDecoderException.java @@ -26,4 +26,7 @@ public final class FlacDecoderException extends AudioDecoderException { super(message); } + /* package */ FlacDecoderException(String message, Throwable cause) { + super(message, cause); + } } 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 b4a4622346..f8ec477b88 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 @@ -135,18 +135,23 @@ import java.util.List; } @Override - public DecoderInputBuffer createInputBuffer() { + protected DecoderInputBuffer createInputBuffer() { return new DecoderInputBuffer(DecoderInputBuffer.BUFFER_REPLACEMENT_MODE_DIRECT); } @Override - public SimpleOutputBuffer createOutputBuffer() { + protected SimpleOutputBuffer createOutputBuffer() { return new SimpleOutputBuffer(this); } @Override - public OpusDecoderException decode(DecoderInputBuffer inputBuffer, - SimpleOutputBuffer outputBuffer, boolean reset) { + protected OpusDecoderException createUnexpectedDecodeException(Throwable error) { + return new OpusDecoderException("Unexpected decode error", error); + } + + @Override + protected OpusDecoderException decode( + DecoderInputBuffer inputBuffer, SimpleOutputBuffer outputBuffer, boolean reset) { if (reset) { opusReset(nativeDecoderContext); // When seeking to 0, skip number of samples as specified in opus header. When seeking to 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 6a15023c0b..6f8c0a1918 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 @@ -99,6 +99,11 @@ import java.nio.ByteBuffer; super.releaseOutputBuffer(buffer); } + @Override + protected VpxDecoderException createUnexpectedDecodeException(Throwable error) { + return new VpxDecoderException("Unexpected decode error", error); + } + @Override protected VpxDecoderException decode(VpxInputBuffer inputBuffer, VpxOutputBuffer outputBuffer, boolean reset) { diff --git a/extensions/vp9/src/main/java/com/google/android/exoplayer2/ext/vp9/VpxDecoderException.java b/extensions/vp9/src/main/java/com/google/android/exoplayer2/ext/vp9/VpxDecoderException.java index 5f43b503ac..8de14629d3 100644 --- a/extensions/vp9/src/main/java/com/google/android/exoplayer2/ext/vp9/VpxDecoderException.java +++ b/extensions/vp9/src/main/java/com/google/android/exoplayer2/ext/vp9/VpxDecoderException.java @@ -15,10 +15,8 @@ */ package com.google.android.exoplayer2.ext.vp9; -/** - * Thrown when a libvpx decoder error occurs. - */ -public class VpxDecoderException extends Exception { +/** Thrown when a libvpx decoder error occurs. */ +public final class VpxDecoderException extends Exception { /* package */ VpxDecoderException(String message) { super(message); diff --git a/library/core/src/main/java/com/google/android/exoplayer2/audio/AudioDecoderException.java b/library/core/src/main/java/com/google/android/exoplayer2/audio/AudioDecoderException.java index b5ee052924..ac4f632d62 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/audio/AudioDecoderException.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/audio/AudioDecoderException.java @@ -15,27 +15,21 @@ */ package com.google.android.exoplayer2.audio; -/** - * Thrown when an audio decoder error occurs. - */ -public abstract class AudioDecoderException extends Exception { +/** Thrown when an audio decoder error occurs. */ +public class AudioDecoderException extends Exception { - /** - * @param detailMessage The detail message for this exception. - */ - public AudioDecoderException(String detailMessage) { - super(detailMessage); + /** @param message The detail message for this exception. */ + public AudioDecoderException(String message) { + super(message); } /** - * @param detailMessage The detail message for this exception. - * @param cause the cause (which is saved for later retrieval by the - * {@link #getCause()} method). (A null value is - * permitted, and indicates that the cause is nonexistent or - * unknown.) + * @param message The detail message for this exception. + * @param cause the cause (which is saved for later retrieval by the {@link #getCause()} method). + * A null value is permitted, and indicates that the cause is nonexistent or unknown. */ - public AudioDecoderException(String detailMessage, Throwable cause) { - super(detailMessage, cause); + public AudioDecoderException(String message, Throwable cause) { + super(message, cause); } } diff --git a/library/core/src/main/java/com/google/android/exoplayer2/audio/DefaultAudioSink.java b/library/core/src/main/java/com/google/android/exoplayer2/audio/DefaultAudioSink.java index ab4564e2c3..b9a0b8236f 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/audio/DefaultAudioSink.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/audio/DefaultAudioSink.java @@ -55,11 +55,9 @@ public final class DefaultAudioSink implements AudioSink { */ public static final class InvalidAudioTrackTimestampException extends RuntimeException { - /** - * @param detailMessage The detail message for this exception. - */ - public InvalidAudioTrackTimestampException(String detailMessage) { - super(detailMessage); + /** @param message The detail message for this exception. */ + public InvalidAudioTrackTimestampException(String message) { + super(message); } } diff --git a/library/core/src/main/java/com/google/android/exoplayer2/decoder/SimpleDecoder.java b/library/core/src/main/java/com/google/android/exoplayer2/decoder/SimpleDecoder.java index 1d380ef858..68089d7b41 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/decoder/SimpleDecoder.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/decoder/SimpleDecoder.java @@ -219,7 +219,18 @@ public abstract class SimpleDecoder