Make classes/methods final to prevent uncontrolled extension.
This commit is contained in:
parent
6b775efd4d
commit
574e554e01
@ -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));
|
||||
}
|
||||
|
@ -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<MediaPresentationDescription> mockManifestFetcher;
|
||||
|
||||
@Override
|
||||
public void setUp() throws Exception {
|
||||
|
@ -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();
|
||||
|
@ -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
|
||||
|
@ -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.
|
||||
|
@ -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) {
|
||||
|
@ -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() {}
|
||||
|
||||
}
|
||||
|
@ -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<CodecKey, Pair<String, CodecCapabilities>> codecs = new HashMap<>();
|
||||
|
||||
private MediaCodecUtil() {}
|
||||
|
||||
/**
|
||||
* Get information about the decoder that will be used for a given mime type.
|
||||
*
|
||||
|
@ -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";
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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.
|
||||
|
@ -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
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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;
|
@ -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;
|
||||
|
||||
|
@ -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;
|
||||
|
@ -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.
|
||||
|
@ -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.
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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;
|
||||
|
@ -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";
|
||||
|
||||
|
@ -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";
|
||||
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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);
|
||||
|
@ -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;
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
|
@ -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";
|
||||
|
||||
|
@ -28,7 +28,7 @@ import java.util.Map;
|
||||
/**
|
||||
* Extracts individual TXXX text frames from raw ID3 data.
|
||||
*/
|
||||
public class Id3Parser implements MetadataParser<Map<String, Object>> {
|
||||
public final class Id3Parser implements MetadataParser<Map<String, Object>> {
|
||||
|
||||
private static final int ID3_TEXT_ENCODING_ISO_8859_1 = 0;
|
||||
private static final int ID3_TEXT_ENCODING_UTF_16 = 1;
|
||||
|
@ -35,7 +35,7 @@ import java.io.IOException;
|
||||
*
|
||||
* @param <T> The type of the metadata.
|
||||
*/
|
||||
public class MetadataTrackRenderer<T> extends TrackRenderer implements Callback {
|
||||
public final class MetadataTrackRenderer<T> extends TrackRenderer implements Callback {
|
||||
|
||||
/**
|
||||
* An interface for components that process metadata.
|
||||
|
@ -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";
|
||||
|
||||
|
@ -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";
|
||||
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
||||
|
@ -54,7 +54,7 @@ import java.util.regex.Pattern;
|
||||
* </p>
|
||||
* @see <a href="http://www.w3.org/TR/ttaf1-dfxp/">TTML specification</a>
|
||||
*/
|
||||
public class TtmlParser implements SubtitleParser {
|
||||
public final class TtmlParser implements SubtitleParser {
|
||||
|
||||
private static final String TAG = "TtmlParser";
|
||||
|
||||
|
@ -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<WebvttCue> 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);
|
||||
}
|
||||
|
||||
|
@ -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<WebvttCue> cues;
|
||||
private final int numCues;
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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;
|
||||
|
@ -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}.
|
||||
|
@ -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;
|
||||
|
@ -21,7 +21,7 @@ import java.util.TreeSet;
|
||||
/**
|
||||
* Evicts least recently used cache files first.
|
||||
*/
|
||||
public class LeastRecentlyUsedCacheEvictor implements CacheEvictor, Comparator<CacheSpan> {
|
||||
public final class LeastRecentlyUsedCacheEvictor implements CacheEvictor, Comparator<CacheSpan> {
|
||||
|
||||
private final long maxBytes;
|
||||
private final TreeSet<CacheSpan> leastRecentlyUsed;
|
||||
|
@ -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) {
|
||||
|
@ -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;
|
||||
|
@ -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";
|
||||
|
@ -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;
|
||||
|
||||
|
@ -31,7 +31,7 @@ import java.util.Comparator;
|
||||
* @see <a href="http://en.wikipedia.org/wiki/Moving_average">Wiki: Moving average</a>
|
||||
* @see <a href="http://en.wikipedia.org/wiki/Selection_algorithm">Wiki: Selection algorithm</a>
|
||||
*/
|
||||
public class SlidingPercentile {
|
||||
public final class SlidingPercentile {
|
||||
|
||||
// Orderings.
|
||||
private static final Comparator<Sample> INDEX_COMPARATOR = new Comparator<Sample>() {
|
||||
|
@ -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.
|
||||
|
@ -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.
|
||||
|
Loading…
x
Reference in New Issue
Block a user