diff --git a/library/src/androidTest/java/com/google/android/exoplayer/TimeRangeTest.java b/library/src/androidTest/java/com/google/android/exoplayer/TimeRangeTest.java index 5c93130de6..58df649d65 100644 --- a/library/src/androidTest/java/com/google/android/exoplayer/TimeRangeTest.java +++ b/library/src/androidTest/java/com/google/android/exoplayer/TimeRangeTest.java @@ -25,10 +25,10 @@ public class TimeRangeTest extends TestCase { public void testEquals() { TimeRange timeRange1 = new TimeRange(TimeRange.TYPE_SNAPSHOT, 0, 30000000); assertTrue(timeRange1.equals(timeRange1)); - + TimeRange timeRange2 = new TimeRange(TimeRange.TYPE_SNAPSHOT, 0, 30000000); assertTrue(timeRange1.equals(timeRange2)); - + TimeRange timeRange3 = new TimeRange(TimeRange.TYPE_SNAPSHOT, 0, 60000000); assertFalse(timeRange1.equals(timeRange3)); } diff --git a/library/src/androidTest/java/com/google/android/exoplayer/dash/DashChunkSourceTest.java b/library/src/androidTest/java/com/google/android/exoplayer/dash/DashChunkSourceTest.java index 70d3b195db..db387c179a 100644 --- a/library/src/androidTest/java/com/google/android/exoplayer/dash/DashChunkSourceTest.java +++ b/library/src/androidTest/java/com/google/android/exoplayer/dash/DashChunkSourceTest.java @@ -82,7 +82,6 @@ public class DashChunkSourceTest extends InstrumentationTestCase { new Format("3", "video/mp4", WIDE_WIDTH, 50, -1, -1, -1, 1000); @Mock private DataSource mockDataSource; - @Mock private ManifestFetcher mockManifestFetcher; @Override public void setUp() throws Exception { diff --git a/library/src/main/java/com/google/android/exoplayer/BehindLiveWindowException.java b/library/src/main/java/com/google/android/exoplayer/BehindLiveWindowException.java index 074a1de01a..3fd2bfedd9 100644 --- a/library/src/main/java/com/google/android/exoplayer/BehindLiveWindowException.java +++ b/library/src/main/java/com/google/android/exoplayer/BehindLiveWindowException.java @@ -20,7 +20,7 @@ import java.io.IOException; /** * Thrown when a live playback falls behind the available media window. */ -public class BehindLiveWindowException extends IOException { +public final class BehindLiveWindowException extends IOException { public BehindLiveWindowException() { super(); diff --git a/library/src/main/java/com/google/android/exoplayer/CryptoInfo.java b/library/src/main/java/com/google/android/exoplayer/CryptoInfo.java index 81e55446eb..4be481259c 100644 --- a/library/src/main/java/com/google/android/exoplayer/CryptoInfo.java +++ b/library/src/main/java/com/google/android/exoplayer/CryptoInfo.java @@ -23,7 +23,7 @@ import android.media.MediaExtractor; /** * Compatibility wrapper around {@link android.media.MediaCodec.CryptoInfo}. */ -public class CryptoInfo { +public final class CryptoInfo { /** * @see android.media.MediaCodec.CryptoInfo#iv diff --git a/library/src/main/java/com/google/android/exoplayer/DefaultLoadControl.java b/library/src/main/java/com/google/android/exoplayer/DefaultLoadControl.java index c85453c05f..17d8512bf9 100644 --- a/library/src/main/java/com/google/android/exoplayer/DefaultLoadControl.java +++ b/library/src/main/java/com/google/android/exoplayer/DefaultLoadControl.java @@ -39,7 +39,7 @@ import java.util.List; * itself as a task with priority {@link NetworkLock#STREAMING_PRIORITY} during loading periods, * and unregistering itself during draining periods. */ -public class DefaultLoadControl implements LoadControl { +public final class DefaultLoadControl implements LoadControl { /** * Interface definition for a callback to be notified of {@link DefaultLoadControl} events. diff --git a/library/src/main/java/com/google/android/exoplayer/DummyTrackRenderer.java b/library/src/main/java/com/google/android/exoplayer/DummyTrackRenderer.java index dfcf7660a8..1a1305898e 100644 --- a/library/src/main/java/com/google/android/exoplayer/DummyTrackRenderer.java +++ b/library/src/main/java/com/google/android/exoplayer/DummyTrackRenderer.java @@ -22,7 +22,7 @@ package com.google.android.exoplayer; * to request that it should be ignored. {@link IllegalStateException} is thrown from all methods * that are documented to indicate that they should not be invoked unless the renderer is prepared. */ -public class DummyTrackRenderer extends TrackRenderer { +public final class DummyTrackRenderer extends TrackRenderer { @Override protected int doPrepare(long positionUs) { diff --git a/library/src/main/java/com/google/android/exoplayer/ExoPlayerLibraryInfo.java b/library/src/main/java/com/google/android/exoplayer/ExoPlayerLibraryInfo.java index 1fc0cdcae4..be06690ca1 100644 --- a/library/src/main/java/com/google/android/exoplayer/ExoPlayerLibraryInfo.java +++ b/library/src/main/java/com/google/android/exoplayer/ExoPlayerLibraryInfo.java @@ -18,10 +18,7 @@ package com.google.android.exoplayer; /** * Information about the ExoPlayer library. */ -// TODO: This file should be automatically generated by the build system. -public class ExoPlayerLibraryInfo { - - private ExoPlayerLibraryInfo() {} +public final class ExoPlayerLibraryInfo { /** * The version of the library, expressed as a string. @@ -48,4 +45,6 @@ public class ExoPlayerLibraryInfo { */ public static final boolean TRACE_ENABLED = true; + private ExoPlayerLibraryInfo() {} + } diff --git a/library/src/main/java/com/google/android/exoplayer/MediaCodecUtil.java b/library/src/main/java/com/google/android/exoplayer/MediaCodecUtil.java index ff3a453b16..8cffd8a852 100644 --- a/library/src/main/java/com/google/android/exoplayer/MediaCodecUtil.java +++ b/library/src/main/java/com/google/android/exoplayer/MediaCodecUtil.java @@ -34,7 +34,7 @@ import java.util.HashMap; * A utility class for querying the available codecs. */ @TargetApi(16) -public class MediaCodecUtil { +public final class MediaCodecUtil { /** * Thrown when an error occurs querying the device for its underlying media capabilities. @@ -54,6 +54,8 @@ public class MediaCodecUtil { private static final HashMap> codecs = new HashMap<>(); + private MediaCodecUtil() {} + /** * Get information about the decoder that will be used for a given mime type. * diff --git a/library/src/main/java/com/google/android/exoplayer/MediaFormat.java b/library/src/main/java/com/google/android/exoplayer/MediaFormat.java index 34407f4042..c1de1160c9 100644 --- a/library/src/main/java/com/google/android/exoplayer/MediaFormat.java +++ b/library/src/main/java/com/google/android/exoplayer/MediaFormat.java @@ -29,7 +29,7 @@ import java.util.List; /** * Defines the format of an elementary media stream. */ -public class MediaFormat { +public final class MediaFormat { private static final String KEY_PIXEL_WIDTH_HEIGHT_RATIO = "com.google.android.videos.pixelWidthHeightRatio"; diff --git a/library/src/main/java/com/google/android/exoplayer/SmoothFrameReleaseTimeHelper.java b/library/src/main/java/com/google/android/exoplayer/SmoothFrameReleaseTimeHelper.java index 1245ea6454..ce93136734 100644 --- a/library/src/main/java/com/google/android/exoplayer/SmoothFrameReleaseTimeHelper.java +++ b/library/src/main/java/com/google/android/exoplayer/SmoothFrameReleaseTimeHelper.java @@ -25,7 +25,7 @@ import android.view.Choreographer.FrameCallback; * Makes a best effort to adjust frame release timestamps for a smoother visual result. */ @TargetApi(16) -public class SmoothFrameReleaseTimeHelper implements FrameReleaseTimeHelper, FrameCallback { +public final class SmoothFrameReleaseTimeHelper implements FrameReleaseTimeHelper, FrameCallback { private static final long CHOREOGRAPHER_SAMPLE_DELAY_MILLIS = 500; private static final long MAX_ALLOWED_DRIFT_NS = 20000000; diff --git a/library/src/main/java/com/google/android/exoplayer/StandaloneMediaClock.java b/library/src/main/java/com/google/android/exoplayer/StandaloneMediaClock.java index f4b85b0d35..3b6871c811 100644 --- a/library/src/main/java/com/google/android/exoplayer/StandaloneMediaClock.java +++ b/library/src/main/java/com/google/android/exoplayer/StandaloneMediaClock.java @@ -21,7 +21,7 @@ import android.os.SystemClock; * A standalone {@link MediaClock}. The clock can be started, stopped and its time can be set and * retrieved. When started, this clock is based on {@link SystemClock#elapsedRealtime()}. */ -/* package */ class StandaloneMediaClock implements MediaClock { +/* package */ final class StandaloneMediaClock implements MediaClock { private boolean started; diff --git a/library/src/main/java/com/google/android/exoplayer/chunk/ContainerMediaChunk.java b/library/src/main/java/com/google/android/exoplayer/chunk/ContainerMediaChunk.java index 72c317f535..d147ce2e64 100644 --- a/library/src/main/java/com/google/android/exoplayer/chunk/ContainerMediaChunk.java +++ b/library/src/main/java/com/google/android/exoplayer/chunk/ContainerMediaChunk.java @@ -74,68 +74,69 @@ public class ContainerMediaChunk extends BaseMediaChunk implements SingleTrackOu } @Override - public long bytesLoaded() { + public final long bytesLoaded() { return bytesLoaded; } @Override - public MediaFormat getMediaFormat() { + public final MediaFormat getMediaFormat() { return mediaFormat; } @Override - public DrmInitData getDrmInitData() { + public final DrmInitData getDrmInitData() { return drmInitData; } // SingleTrackOutput implementation. @Override - public void seekMap(SeekMap seekMap) { + public final void seekMap(SeekMap seekMap) { // Do nothing. } @Override - public void drmInitData(DrmInitData drmInitData) { + public final void drmInitData(DrmInitData drmInitData) { this.drmInitData = drmInitData; } @Override - public void format(MediaFormat mediaFormat) { + public final void format(MediaFormat mediaFormat) { this.mediaFormat = mediaFormat; } @Override - public int sampleData(ExtractorInput input, int length, boolean allowEndOfInput) + public final int sampleData(ExtractorInput input, int length, boolean allowEndOfInput) throws IOException, InterruptedException { return getOutput().sampleData(input, length, allowEndOfInput); } @Override - public void sampleData(ParsableByteArray data, int length) { + public final void sampleData(ParsableByteArray data, int length) { getOutput().sampleData(data, length); } @Override - public void sampleMetadata(long timeUs, int flags, int size, int offset, byte[] encryptionKey) { + public final void sampleMetadata(long timeUs, int flags, int size, int offset, + byte[] encryptionKey) { getOutput().sampleMetadata(timeUs + sampleOffsetUs, flags, size, offset, encryptionKey); } // Loadable implementation. @Override - public void cancelLoad() { + public final void cancelLoad() { loadCanceled = true; } @Override - public boolean isLoadCanceled() { + public final boolean isLoadCanceled() { return loadCanceled; } @SuppressWarnings("NonAtomicVolatileUpdate") @Override - public void load() throws IOException, InterruptedException { + public final void load() throws IOException, InterruptedException { DataSpec loadDataSpec = Util.getRemainderDataSpec(dataSpec, bytesLoaded); try { // Create and open the input. diff --git a/library/src/main/java/com/google/android/exoplayer/chunk/MultiTrackChunkSource.java b/library/src/main/java/com/google/android/exoplayer/chunk/MultiTrackChunkSource.java index 549ab66f96..c612dca454 100644 --- a/library/src/main/java/com/google/android/exoplayer/chunk/MultiTrackChunkSource.java +++ b/library/src/main/java/com/google/android/exoplayer/chunk/MultiTrackChunkSource.java @@ -28,7 +28,7 @@ import java.util.List; * A {@link ChunkSource} providing the ability to switch between multiple other {@link ChunkSource} * instances. */ -public class MultiTrackChunkSource implements ChunkSource, ExoPlayerComponent { +public final class MultiTrackChunkSource implements ChunkSource, ExoPlayerComponent { /** * A message to indicate a source selection. Source selection can only be performed when the diff --git a/library/src/main/java/com/google/android/exoplayer/chunk/SingleSampleChunkSource.java b/library/src/main/java/com/google/android/exoplayer/chunk/SingleSampleChunkSource.java index a0d6678ef1..12f7689099 100644 --- a/library/src/main/java/com/google/android/exoplayer/chunk/SingleSampleChunkSource.java +++ b/library/src/main/java/com/google/android/exoplayer/chunk/SingleSampleChunkSource.java @@ -29,7 +29,7 @@ import java.util.List; * An example use case for this implementation is to act as the source for loading out-of-band * subtitles, where subtitles for the entire video are delivered as a single file. */ -public class SingleSampleChunkSource implements ChunkSource { +public final class SingleSampleChunkSource implements ChunkSource { private final DataSource dataSource; private final DataSpec dataSpec; diff --git a/library/src/main/java/com/google/android/exoplayer/dash/DashWrappingSegmentIndex.java b/library/src/main/java/com/google/android/exoplayer/dash/DashWrappingSegmentIndex.java index 441cad6194..bcff061458 100644 --- a/library/src/main/java/com/google/android/exoplayer/dash/DashWrappingSegmentIndex.java +++ b/library/src/main/java/com/google/android/exoplayer/dash/DashWrappingSegmentIndex.java @@ -22,7 +22,7 @@ import com.google.android.exoplayer.extractor.ChunkIndex; * An implementation of {@link DashSegmentIndex} that wraps a {@link ChunkIndex} parsed from a * media stream. */ -public class DashWrappingSegmentIndex implements DashSegmentIndex { +/* package */ final class DashWrappingSegmentIndex implements DashSegmentIndex { private final ChunkIndex chunkIndex; private final String uri; diff --git a/library/src/main/java/com/google/android/exoplayer/dash/DashSingleSegmentIndex.java b/library/src/main/java/com/google/android/exoplayer/dash/mpd/DashSingleSegmentIndex.java similarity index 90% rename from library/src/main/java/com/google/android/exoplayer/dash/DashSingleSegmentIndex.java rename to library/src/main/java/com/google/android/exoplayer/dash/mpd/DashSingleSegmentIndex.java index 46a02a3ea2..9b8f6b276c 100644 --- a/library/src/main/java/com/google/android/exoplayer/dash/DashSingleSegmentIndex.java +++ b/library/src/main/java/com/google/android/exoplayer/dash/mpd/DashSingleSegmentIndex.java @@ -13,14 +13,14 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.google.android.exoplayer.dash; +package com.google.android.exoplayer.dash.mpd; -import com.google.android.exoplayer.dash.mpd.RangedUri; +import com.google.android.exoplayer.dash.DashSegmentIndex; /** * A {@link DashSegmentIndex} that defines a single segment. */ -public class DashSingleSegmentIndex implements DashSegmentIndex { +/* package */ final class DashSingleSegmentIndex implements DashSegmentIndex { private final long startTimeUs; private final long durationUs; diff --git a/library/src/main/java/com/google/android/exoplayer/dash/mpd/Representation.java b/library/src/main/java/com/google/android/exoplayer/dash/mpd/Representation.java index f5eb289fd5..54c0d6913a 100644 --- a/library/src/main/java/com/google/android/exoplayer/dash/mpd/Representation.java +++ b/library/src/main/java/com/google/android/exoplayer/dash/mpd/Representation.java @@ -18,7 +18,6 @@ package com.google.android.exoplayer.dash.mpd; import com.google.android.exoplayer.chunk.Format; import com.google.android.exoplayer.chunk.FormatWrapper; import com.google.android.exoplayer.dash.DashSegmentIndex; -import com.google.android.exoplayer.dash.DashSingleSegmentIndex; import com.google.android.exoplayer.dash.mpd.SegmentBase.MultiSegmentBase; import com.google.android.exoplayer.dash.mpd.SegmentBase.SingleSegmentBase; diff --git a/library/src/main/java/com/google/android/exoplayer/dash/mpd/UtcTimingElement.java b/library/src/main/java/com/google/android/exoplayer/dash/mpd/UtcTimingElement.java index e2f452b543..025cec3413 100644 --- a/library/src/main/java/com/google/android/exoplayer/dash/mpd/UtcTimingElement.java +++ b/library/src/main/java/com/google/android/exoplayer/dash/mpd/UtcTimingElement.java @@ -18,7 +18,7 @@ package com.google.android.exoplayer.dash.mpd; /** * Represents a UTCTiming element. */ -public class UtcTimingElement { +public final class UtcTimingElement { public final String schemeIdUri; public final String value; diff --git a/library/src/main/java/com/google/android/exoplayer/dash/mpd/UtcTimingElementResolver.java b/library/src/main/java/com/google/android/exoplayer/dash/mpd/UtcTimingElementResolver.java index c275faebd7..19098fa8f5 100644 --- a/library/src/main/java/com/google/android/exoplayer/dash/mpd/UtcTimingElementResolver.java +++ b/library/src/main/java/com/google/android/exoplayer/dash/mpd/UtcTimingElementResolver.java @@ -38,7 +38,7 @@ import java.util.concurrent.CancellationException; /** * Resolves a {@link UtcTimingElement}. */ -public class UtcTimingElementResolver implements Loader.Callback { +public final class UtcTimingElementResolver implements Loader.Callback { /** * Callback for timing element resolution. diff --git a/library/src/main/java/com/google/android/exoplayer/extractor/ExtractorSampleSource.java b/library/src/main/java/com/google/android/exoplayer/extractor/ExtractorSampleSource.java index a81c866892..639c992b65 100644 --- a/library/src/main/java/com/google/android/exoplayer/extractor/ExtractorSampleSource.java +++ b/library/src/main/java/com/google/android/exoplayer/extractor/ExtractorSampleSource.java @@ -67,8 +67,8 @@ import java.util.List; * constructor. When reading a new stream, the first {@link Extractor} that returns {@code true} * from {@link Extractor#sniff(ExtractorInput)} will be used. */ -public class ExtractorSampleSource implements SampleSource, SampleSourceReader, ExtractorOutput, - Loader.Callback { +public final class ExtractorSampleSource implements SampleSource, SampleSourceReader, + ExtractorOutput, Loader.Callback { /** * Thrown if the input format could not recognized. diff --git a/library/src/main/java/com/google/android/exoplayer/extractor/ts/AdtsExtractor.java b/library/src/main/java/com/google/android/exoplayer/extractor/ts/AdtsExtractor.java index 315cc2f497..fd72242216 100644 --- a/library/src/main/java/com/google/android/exoplayer/extractor/ts/AdtsExtractor.java +++ b/library/src/main/java/com/google/android/exoplayer/extractor/ts/AdtsExtractor.java @@ -29,7 +29,7 @@ import java.io.IOException; * Facilitates the extraction of AAC samples from elementary audio files formatted as AAC with ADTS * headers. */ -public class AdtsExtractor implements Extractor { +public final class AdtsExtractor implements Extractor { private static final int MAX_PACKET_SIZE = 200; diff --git a/library/src/main/java/com/google/android/exoplayer/extractor/ts/AdtsReader.java b/library/src/main/java/com/google/android/exoplayer/extractor/ts/AdtsReader.java index 8121c54901..5f360d4664 100644 --- a/library/src/main/java/com/google/android/exoplayer/extractor/ts/AdtsReader.java +++ b/library/src/main/java/com/google/android/exoplayer/extractor/ts/AdtsReader.java @@ -30,7 +30,7 @@ import java.util.Collections; /** * Parses a continuous ADTS byte stream and extracts individual frames. */ -/* package */ class AdtsReader extends ElementaryStreamReader { +/* package */ final class AdtsReader extends ElementaryStreamReader { private static final int STATE_FINDING_SYNC = 0; private static final int STATE_READING_HEADER = 1; diff --git a/library/src/main/java/com/google/android/exoplayer/extractor/ts/H264Reader.java b/library/src/main/java/com/google/android/exoplayer/extractor/ts/H264Reader.java index 776adb5bc9..731254dbde 100644 --- a/library/src/main/java/com/google/android/exoplayer/extractor/ts/H264Reader.java +++ b/library/src/main/java/com/google/android/exoplayer/extractor/ts/H264Reader.java @@ -32,7 +32,7 @@ import java.util.List; /** * Parses a continuous H264 byte stream and extracts individual frames. */ -/* package */ class H264Reader extends ElementaryStreamReader { +/* package */ final class H264Reader extends ElementaryStreamReader { private static final String TAG = "H264Reader"; diff --git a/library/src/main/java/com/google/android/exoplayer/extractor/ts/H265Reader.java b/library/src/main/java/com/google/android/exoplayer/extractor/ts/H265Reader.java index 1631700911..7a2dd8c454 100644 --- a/library/src/main/java/com/google/android/exoplayer/extractor/ts/H265Reader.java +++ b/library/src/main/java/com/google/android/exoplayer/extractor/ts/H265Reader.java @@ -30,7 +30,7 @@ import java.util.Collections; /** * Parses a continuous H.265 byte stream and extracts individual frames. */ -/* package */ class H265Reader extends ElementaryStreamReader { +/* package */ final class H265Reader extends ElementaryStreamReader { private static final String TAG = "H265Reader"; diff --git a/library/src/main/java/com/google/android/exoplayer/extractor/ts/Id3Reader.java b/library/src/main/java/com/google/android/exoplayer/extractor/ts/Id3Reader.java index 28c4fe71d1..4e778820a5 100644 --- a/library/src/main/java/com/google/android/exoplayer/extractor/ts/Id3Reader.java +++ b/library/src/main/java/com/google/android/exoplayer/extractor/ts/Id3Reader.java @@ -24,7 +24,7 @@ import com.google.android.exoplayer.util.ParsableByteArray; /** * Parses ID3 data and extracts individual text information frames. */ -/* package */ class Id3Reader extends ElementaryStreamReader { +/* package */ final class Id3Reader extends ElementaryStreamReader { // State that should be reset on seek. private boolean writingSample; diff --git a/library/src/main/java/com/google/android/exoplayer/extractor/ts/MpegAudioReader.java b/library/src/main/java/com/google/android/exoplayer/extractor/ts/MpegAudioReader.java index b2ee4ec7a9..5ce86b7d63 100644 --- a/library/src/main/java/com/google/android/exoplayer/extractor/ts/MpegAudioReader.java +++ b/library/src/main/java/com/google/android/exoplayer/extractor/ts/MpegAudioReader.java @@ -24,7 +24,7 @@ import com.google.android.exoplayer.util.ParsableByteArray; /** * Parses a continuous MPEG Audio byte stream and extracts individual frames. */ -/* package */ class MpegAudioReader extends ElementaryStreamReader { +/* package */ final class MpegAudioReader extends ElementaryStreamReader { private static final int STATE_FINDING_HEADER = 0; private static final int STATE_READING_HEADER = 1; diff --git a/library/src/main/java/com/google/android/exoplayer/extractor/ts/SeiReader.java b/library/src/main/java/com/google/android/exoplayer/extractor/ts/SeiReader.java index 3aa57557cc..ac1aaef4a2 100644 --- a/library/src/main/java/com/google/android/exoplayer/extractor/ts/SeiReader.java +++ b/library/src/main/java/com/google/android/exoplayer/extractor/ts/SeiReader.java @@ -28,7 +28,7 @@ import com.google.android.exoplayer.util.ParsableByteArray; * TODO: Technically, we shouldn't allow a sample to be read from the queue until we're sure that * a sample with an earlier timestamp won't be added to it. */ -/* package */ class SeiReader extends ElementaryStreamReader { +/* package */ final class SeiReader extends ElementaryStreamReader { public SeiReader(TrackOutput output) { super(output); diff --git a/library/src/main/java/com/google/android/exoplayer/extractor/webm/VarintReader.java b/library/src/main/java/com/google/android/exoplayer/extractor/webm/VarintReader.java index 07973732e8..03cdb2debb 100644 --- a/library/src/main/java/com/google/android/exoplayer/extractor/webm/VarintReader.java +++ b/library/src/main/java/com/google/android/exoplayer/extractor/webm/VarintReader.java @@ -8,7 +8,7 @@ import java.io.IOException; /** * Reads EBML variable-length integers (varints) from an {@link ExtractorInput}. */ -/* package */ class VarintReader { +/* package */ final class VarintReader { private static final int STATE_BEGIN_READING = 0; private static final int STATE_READ_CONTENTS = 1; diff --git a/library/src/main/java/com/google/android/exoplayer/hls/HlsSampleSource.java b/library/src/main/java/com/google/android/exoplayer/hls/HlsSampleSource.java index 39e47a7aec..30eb9bb0a1 100644 --- a/library/src/main/java/com/google/android/exoplayer/hls/HlsSampleSource.java +++ b/library/src/main/java/com/google/android/exoplayer/hls/HlsSampleSource.java @@ -40,7 +40,7 @@ import java.util.LinkedList; /** * A {@link SampleSource} for HLS streams. */ -public class HlsSampleSource implements SampleSource, SampleSourceReader, Loader.Callback { +public final class HlsSampleSource implements SampleSource, SampleSourceReader, Loader.Callback { /** * Interface definition for a callback to be notified of {@link HlsSampleSource} events. @@ -561,7 +561,7 @@ public class HlsSampleSource implements SampleSource, SampleSourceReader, Loader return Math.min((errorCount - 1) * 1000, 5000); } - protected final int usToMs(long timeUs) { + /* package */ int usToMs(long timeUs) { return (int) (timeUs / 1000); } diff --git a/library/src/main/java/com/google/android/exoplayer/metadata/GeobMetadata.java b/library/src/main/java/com/google/android/exoplayer/metadata/GeobMetadata.java index 1d4fcb4dee..6cc61dd468 100644 --- a/library/src/main/java/com/google/android/exoplayer/metadata/GeobMetadata.java +++ b/library/src/main/java/com/google/android/exoplayer/metadata/GeobMetadata.java @@ -19,7 +19,7 @@ package com.google.android.exoplayer.metadata; * A metadata that contains parsed ID3 GEOB (General Encapsulated Object) frame data associated * with time indices. */ -public class GeobMetadata { +public final class GeobMetadata { public static final String TYPE = "GEOB"; diff --git a/library/src/main/java/com/google/android/exoplayer/metadata/Id3Parser.java b/library/src/main/java/com/google/android/exoplayer/metadata/Id3Parser.java index f306c5d6e8..6b52cb5371 100644 --- a/library/src/main/java/com/google/android/exoplayer/metadata/Id3Parser.java +++ b/library/src/main/java/com/google/android/exoplayer/metadata/Id3Parser.java @@ -28,7 +28,7 @@ import java.util.Map; /** * Extracts individual TXXX text frames from raw ID3 data. */ -public class Id3Parser implements MetadataParser> { +public final class Id3Parser implements MetadataParser> { private static final int ID3_TEXT_ENCODING_ISO_8859_1 = 0; private static final int ID3_TEXT_ENCODING_UTF_16 = 1; diff --git a/library/src/main/java/com/google/android/exoplayer/metadata/MetadataTrackRenderer.java b/library/src/main/java/com/google/android/exoplayer/metadata/MetadataTrackRenderer.java index b1722e2596..767214482f 100644 --- a/library/src/main/java/com/google/android/exoplayer/metadata/MetadataTrackRenderer.java +++ b/library/src/main/java/com/google/android/exoplayer/metadata/MetadataTrackRenderer.java @@ -35,7 +35,7 @@ import java.io.IOException; * * @param The type of the metadata. */ -public class MetadataTrackRenderer extends TrackRenderer implements Callback { +public final class MetadataTrackRenderer extends TrackRenderer implements Callback { /** * An interface for components that process metadata. diff --git a/library/src/main/java/com/google/android/exoplayer/metadata/PrivMetadata.java b/library/src/main/java/com/google/android/exoplayer/metadata/PrivMetadata.java index 8573b25906..94ba6e52cc 100644 --- a/library/src/main/java/com/google/android/exoplayer/metadata/PrivMetadata.java +++ b/library/src/main/java/com/google/android/exoplayer/metadata/PrivMetadata.java @@ -19,7 +19,7 @@ package com.google.android.exoplayer.metadata; * A metadata that contains parsed ID3 PRIV (Private) frame data associated * with time indices. */ -public class PrivMetadata { +public final class PrivMetadata { public static final String TYPE = "PRIV"; diff --git a/library/src/main/java/com/google/android/exoplayer/metadata/TxxxMetadata.java b/library/src/main/java/com/google/android/exoplayer/metadata/TxxxMetadata.java index c455bb825d..c0f1d2c5b3 100644 --- a/library/src/main/java/com/google/android/exoplayer/metadata/TxxxMetadata.java +++ b/library/src/main/java/com/google/android/exoplayer/metadata/TxxxMetadata.java @@ -19,7 +19,7 @@ package com.google.android.exoplayer.metadata; * A metadata that contains parsed ID3 TXXX (User defined text information) frame data associated * with time indices. */ -public class TxxxMetadata { +public final class TxxxMetadata { public static final String TYPE = "TXXX"; diff --git a/library/src/main/java/com/google/android/exoplayer/text/SubtitleParserHelper.java b/library/src/main/java/com/google/android/exoplayer/text/SubtitleParserHelper.java index 69872bf385..835f66aa51 100644 --- a/library/src/main/java/com/google/android/exoplayer/text/SubtitleParserHelper.java +++ b/library/src/main/java/com/google/android/exoplayer/text/SubtitleParserHelper.java @@ -31,7 +31,7 @@ import java.io.InputStream; * Wraps a {@link SubtitleParser}, exposing an interface similar to {@link MediaCodec} for * asynchronous parsing of subtitles. */ -public class SubtitleParserHelper implements Handler.Callback { +public final class SubtitleParserHelper implements Handler.Callback { private final SubtitleParser parser; diff --git a/library/src/main/java/com/google/android/exoplayer/text/TextTrackRenderer.java b/library/src/main/java/com/google/android/exoplayer/text/TextTrackRenderer.java index 47ef4a41c4..dd9b7bd28f 100644 --- a/library/src/main/java/com/google/android/exoplayer/text/TextTrackRenderer.java +++ b/library/src/main/java/com/google/android/exoplayer/text/TextTrackRenderer.java @@ -58,7 +58,7 @@ import java.util.List; * {@link SubtitleParser#canParse(String)} will be used. */ @TargetApi(16) -public class TextTrackRenderer extends TrackRenderer implements Callback { +public final class TextTrackRenderer extends TrackRenderer implements Callback { private static final int MSG_UPDATE_OVERLAY = 0; diff --git a/library/src/main/java/com/google/android/exoplayer/text/eia608/Eia608Parser.java b/library/src/main/java/com/google/android/exoplayer/text/eia608/Eia608Parser.java index 9fdf41ba08..e47d1dc29f 100644 --- a/library/src/main/java/com/google/android/exoplayer/text/eia608/Eia608Parser.java +++ b/library/src/main/java/com/google/android/exoplayer/text/eia608/Eia608Parser.java @@ -26,7 +26,7 @@ import java.util.ArrayList; * Facilitates the extraction and parsing of EIA-608 (a.k.a. "line 21 captions" and "CEA-608") * Closed Captions from the SEI data block from H.264. */ -public class Eia608Parser { +public final class Eia608Parser { private static final int PAYLOAD_TYPE_CC = 4; private static final int COUNTRY_CODE = 0xB5; diff --git a/library/src/main/java/com/google/android/exoplayer/text/eia608/Eia608TrackRenderer.java b/library/src/main/java/com/google/android/exoplayer/text/eia608/Eia608TrackRenderer.java index 8f81dc62dd..ffb9faddbb 100644 --- a/library/src/main/java/com/google/android/exoplayer/text/eia608/Eia608TrackRenderer.java +++ b/library/src/main/java/com/google/android/exoplayer/text/eia608/Eia608TrackRenderer.java @@ -39,7 +39,7 @@ import java.util.TreeSet; /** * A {@link TrackRenderer} for EIA-608 closed captions in a media stream. */ -public class Eia608TrackRenderer extends TrackRenderer implements Callback { +public final class Eia608TrackRenderer extends TrackRenderer implements Callback { private static final int MSG_INVOKE_RENDERER = 0; diff --git a/library/src/main/java/com/google/android/exoplayer/text/ttml/TtmlParser.java b/library/src/main/java/com/google/android/exoplayer/text/ttml/TtmlParser.java index d93f99fea0..22bc7e1975 100644 --- a/library/src/main/java/com/google/android/exoplayer/text/ttml/TtmlParser.java +++ b/library/src/main/java/com/google/android/exoplayer/text/ttml/TtmlParser.java @@ -54,7 +54,7 @@ import java.util.regex.Pattern; *

* @see TTML specification */ -public class TtmlParser implements SubtitleParser { +public final class TtmlParser implements SubtitleParser { private static final String TAG = "TtmlParser"; diff --git a/library/src/main/java/com/google/android/exoplayer/text/webvtt/WebvttParser.java b/library/src/main/java/com/google/android/exoplayer/text/webvtt/WebvttParser.java index 0503eb2299..bebf643e82 100644 --- a/library/src/main/java/com/google/android/exoplayer/text/webvtt/WebvttParser.java +++ b/library/src/main/java/com/google/android/exoplayer/text/webvtt/WebvttParser.java @@ -91,7 +91,7 @@ public class WebvttParser implements SubtitleParser { } @Override - public WebvttSubtitle parse(InputStream inputStream, String inputEncoding, long startTimeUs) + public final WebvttSubtitle parse(InputStream inputStream, String inputEncoding, long startTimeUs) throws IOException { ArrayList subtitles = new ArrayList<>(); long mediaTimestampUs = startTimeUs; @@ -253,7 +253,7 @@ public class WebvttParser implements SubtitleParser { } @Override - public boolean canParse(String mimeType) { + public final boolean canParse(String mimeType) { return MimeTypes.TEXT_VTT.equals(mimeType); } diff --git a/library/src/main/java/com/google/android/exoplayer/text/webvtt/WebvttSubtitle.java b/library/src/main/java/com/google/android/exoplayer/text/webvtt/WebvttSubtitle.java index 3ca64cdc21..3cc7ba6362 100644 --- a/library/src/main/java/com/google/android/exoplayer/text/webvtt/WebvttSubtitle.java +++ b/library/src/main/java/com/google/android/exoplayer/text/webvtt/WebvttSubtitle.java @@ -30,7 +30,7 @@ import java.util.List; /** * A representation of a WebVTT subtitle. */ -public class WebvttSubtitle implements Subtitle { +public final class WebvttSubtitle implements Subtitle { private final List cues; private final int numCues; diff --git a/library/src/main/java/com/google/android/exoplayer/upstream/ByteArrayDataSink.java b/library/src/main/java/com/google/android/exoplayer/upstream/ByteArrayDataSink.java index d672dd95d7..aaa8a1c186 100644 --- a/library/src/main/java/com/google/android/exoplayer/upstream/ByteArrayDataSink.java +++ b/library/src/main/java/com/google/android/exoplayer/upstream/ByteArrayDataSink.java @@ -24,7 +24,7 @@ import java.io.IOException; /** * A {@link DataSink} for writing to a byte array. */ -public class ByteArrayDataSink implements DataSink { +public final class ByteArrayDataSink implements DataSink { private ByteArrayOutputStream stream; diff --git a/library/src/main/java/com/google/android/exoplayer/upstream/ByteArrayDataSource.java b/library/src/main/java/com/google/android/exoplayer/upstream/ByteArrayDataSource.java index 0438f87371..e16b3a7ccc 100644 --- a/library/src/main/java/com/google/android/exoplayer/upstream/ByteArrayDataSource.java +++ b/library/src/main/java/com/google/android/exoplayer/upstream/ByteArrayDataSource.java @@ -23,7 +23,7 @@ import java.io.IOException; /** * A {@link DataSource} for reading from a byte array. */ -public class ByteArrayDataSource implements DataSource { +public final class ByteArrayDataSource implements DataSource { private final byte[] data; private int readPosition; diff --git a/library/src/main/java/com/google/android/exoplayer/upstream/DataSourceInputStream.java b/library/src/main/java/com/google/android/exoplayer/upstream/DataSourceInputStream.java index 75bcf72b88..ff3d0b7b8e 100644 --- a/library/src/main/java/com/google/android/exoplayer/upstream/DataSourceInputStream.java +++ b/library/src/main/java/com/google/android/exoplayer/upstream/DataSourceInputStream.java @@ -24,7 +24,7 @@ import java.io.InputStream; * Allows data corresponding to a given {@link DataSpec} to be read from a {@link DataSource} and * consumed as an {@link InputStream}. */ -public class DataSourceInputStream extends InputStream { +public final class DataSourceInputStream extends InputStream { private final DataSource dataSource; private final DataSpec dataSpec; diff --git a/library/src/main/java/com/google/android/exoplayer/upstream/DefaultBandwidthMeter.java b/library/src/main/java/com/google/android/exoplayer/upstream/DefaultBandwidthMeter.java index 8af7bf9250..ba2297341b 100644 --- a/library/src/main/java/com/google/android/exoplayer/upstream/DefaultBandwidthMeter.java +++ b/library/src/main/java/com/google/android/exoplayer/upstream/DefaultBandwidthMeter.java @@ -26,7 +26,7 @@ import android.os.Handler; * Counts transferred bytes while transfers are open and creates a bandwidth sample and updated * bandwidth estimate each time a transfer ends. */ -public class DefaultBandwidthMeter implements BandwidthMeter { +public final class DefaultBandwidthMeter implements BandwidthMeter { public static final int DEFAULT_MAX_WEIGHT = 2000; diff --git a/library/src/main/java/com/google/android/exoplayer/upstream/PriorityDataSource.java b/library/src/main/java/com/google/android/exoplayer/upstream/PriorityDataSource.java index 34ed14794c..19a2b224de 100644 --- a/library/src/main/java/com/google/android/exoplayer/upstream/PriorityDataSource.java +++ b/library/src/main/java/com/google/android/exoplayer/upstream/PriorityDataSource.java @@ -24,7 +24,7 @@ import java.io.IOException; * priority is the highest priority of any task. {@link NetworkLock.PriorityTooLowException} is * thrown when this condition does not hold. */ -public class PriorityDataSource implements DataSource { +public final class PriorityDataSource implements DataSource { private final DataSource upstream; private final int priority; diff --git a/library/src/main/java/com/google/android/exoplayer/upstream/UdpDataSource.java b/library/src/main/java/com/google/android/exoplayer/upstream/UdpDataSource.java index 4bb12294bd..c9a41e3aa3 100644 --- a/library/src/main/java/com/google/android/exoplayer/upstream/UdpDataSource.java +++ b/library/src/main/java/com/google/android/exoplayer/upstream/UdpDataSource.java @@ -27,7 +27,7 @@ import java.net.MulticastSocket; /** * A UDP {@link DataSource}. */ -public class UdpDataSource implements UriDataSource { +public final class UdpDataSource implements UriDataSource { /** * Thrown when an error is encountered when trying to read from a {@link UdpDataSource}. diff --git a/library/src/main/java/com/google/android/exoplayer/upstream/cache/CacheDataSink.java b/library/src/main/java/com/google/android/exoplayer/upstream/cache/CacheDataSink.java index 01e06b5158..5ed4efcf2e 100644 --- a/library/src/main/java/com/google/android/exoplayer/upstream/cache/CacheDataSink.java +++ b/library/src/main/java/com/google/android/exoplayer/upstream/cache/CacheDataSink.java @@ -29,7 +29,7 @@ import java.io.IOException; /** * Writes data into a cache. */ -public class CacheDataSink implements DataSink { +public final class CacheDataSink implements DataSink { private final Cache cache; private final long maxCacheFileSize; diff --git a/library/src/main/java/com/google/android/exoplayer/upstream/cache/LeastRecentlyUsedCacheEvictor.java b/library/src/main/java/com/google/android/exoplayer/upstream/cache/LeastRecentlyUsedCacheEvictor.java index 577d7b3bbf..4998f09fc2 100644 --- a/library/src/main/java/com/google/android/exoplayer/upstream/cache/LeastRecentlyUsedCacheEvictor.java +++ b/library/src/main/java/com/google/android/exoplayer/upstream/cache/LeastRecentlyUsedCacheEvictor.java @@ -21,7 +21,7 @@ import java.util.TreeSet; /** * Evicts least recently used cache files first. */ -public class LeastRecentlyUsedCacheEvictor implements CacheEvictor, Comparator { +public final class LeastRecentlyUsedCacheEvictor implements CacheEvictor, Comparator { private final long maxBytes; private final TreeSet leastRecentlyUsed; diff --git a/library/src/main/java/com/google/android/exoplayer/upstream/cache/NoOpCacheEvictor.java b/library/src/main/java/com/google/android/exoplayer/upstream/cache/NoOpCacheEvictor.java index ea050c28dd..56e4e33400 100644 --- a/library/src/main/java/com/google/android/exoplayer/upstream/cache/NoOpCacheEvictor.java +++ b/library/src/main/java/com/google/android/exoplayer/upstream/cache/NoOpCacheEvictor.java @@ -22,7 +22,7 @@ package com.google.android.exoplayer.upstream.cache; * Warning: Using this evictor might have unforeseeable consequences if cache * size is not managed elsewhere. */ -public class NoOpCacheEvictor implements CacheEvictor { +public final class NoOpCacheEvictor implements CacheEvictor { @Override public void onStartFile(Cache cache, String key, long position, long length) { diff --git a/library/src/main/java/com/google/android/exoplayer/upstream/cache/SimpleCache.java b/library/src/main/java/com/google/android/exoplayer/upstream/cache/SimpleCache.java index ed2001b371..649e555dc3 100644 --- a/library/src/main/java/com/google/android/exoplayer/upstream/cache/SimpleCache.java +++ b/library/src/main/java/com/google/android/exoplayer/upstream/cache/SimpleCache.java @@ -32,7 +32,7 @@ import java.util.TreeSet; /** * A {@link Cache} implementation that maintains an in-memory representation. */ -public class SimpleCache implements Cache { +public final class SimpleCache implements Cache { private final File cacheDir; private final CacheEvictor evictor; diff --git a/library/src/main/java/com/google/android/exoplayer/util/MimeTypes.java b/library/src/main/java/com/google/android/exoplayer/util/MimeTypes.java index 61f268be21..7b0d9d0d4c 100644 --- a/library/src/main/java/com/google/android/exoplayer/util/MimeTypes.java +++ b/library/src/main/java/com/google/android/exoplayer/util/MimeTypes.java @@ -23,7 +23,7 @@ import android.media.AudioFormat; /** * Defines common MIME types and helper methods. */ -public class MimeTypes { +public final class MimeTypes { public static final String BASE_TYPE_VIDEO = "video"; public static final String BASE_TYPE_AUDIO = "audio"; diff --git a/library/src/main/java/com/google/android/exoplayer/util/PriorityHandlerThread.java b/library/src/main/java/com/google/android/exoplayer/util/PriorityHandlerThread.java index 86f77ffa3b..d10b3055c3 100644 --- a/library/src/main/java/com/google/android/exoplayer/util/PriorityHandlerThread.java +++ b/library/src/main/java/com/google/android/exoplayer/util/PriorityHandlerThread.java @@ -21,7 +21,7 @@ import android.os.Process; /** * A {@link HandlerThread} with a specified process priority. */ -public class PriorityHandlerThread extends HandlerThread { +public final class PriorityHandlerThread extends HandlerThread { private final int priority; diff --git a/library/src/main/java/com/google/android/exoplayer/util/SlidingPercentile.java b/library/src/main/java/com/google/android/exoplayer/util/SlidingPercentile.java index 77294f4562..36a15101ae 100644 --- a/library/src/main/java/com/google/android/exoplayer/util/SlidingPercentile.java +++ b/library/src/main/java/com/google/android/exoplayer/util/SlidingPercentile.java @@ -31,7 +31,7 @@ import java.util.Comparator; * @see Wiki: Moving average * @see Wiki: Selection algorithm */ -public class SlidingPercentile { +public final class SlidingPercentile { // Orderings. private static final Comparator INDEX_COMPARATOR = new Comparator() { diff --git a/library/src/main/java/com/google/android/exoplayer/util/TraceUtil.java b/library/src/main/java/com/google/android/exoplayer/util/TraceUtil.java index d581305c8c..3cd305bfe7 100644 --- a/library/src/main/java/com/google/android/exoplayer/util/TraceUtil.java +++ b/library/src/main/java/com/google/android/exoplayer/util/TraceUtil.java @@ -22,7 +22,9 @@ import android.annotation.TargetApi; /** * Calls through to {@link android.os.Trace} methods on supported API levels. */ -public class TraceUtil { +public final class TraceUtil { + + private TraceUtil() {} /** * Writes a trace message to indicate that a given section of code has begun. diff --git a/library/src/main/java/com/google/android/exoplayer/util/VerboseLogUtil.java b/library/src/main/java/com/google/android/exoplayer/util/VerboseLogUtil.java index 590c1b51c0..4fe40cde5f 100644 --- a/library/src/main/java/com/google/android/exoplayer/util/VerboseLogUtil.java +++ b/library/src/main/java/com/google/android/exoplayer/util/VerboseLogUtil.java @@ -18,14 +18,12 @@ package com.google.android.exoplayer.util; /** * Utility class for managing a set of tags for which verbose logging should be enabled. */ -public class VerboseLogUtil { +public final class VerboseLogUtil { private static volatile String[] enabledTags; private static volatile boolean enableAllTags; - private VerboseLogUtil() { - // Private constructor to prevent instantiation. - } + private VerboseLogUtil() {} /** * Sets the tags for which verbose logging should be enabled.