diff --git a/extensions/vp9/src/main/java/com/google/android/exoplayer/ext/vp9/LibvpxVideoTrackRenderer.java b/extensions/vp9/src/main/java/com/google/android/exoplayer/ext/vp9/LibvpxVideoTrackRenderer.java index bbc31b38f0..10bf5c5f6a 100644 --- a/extensions/vp9/src/main/java/com/google/android/exoplayer/ext/vp9/LibvpxVideoTrackRenderer.java +++ b/extensions/vp9/src/main/java/com/google/android/exoplayer/ext/vp9/LibvpxVideoTrackRenderer.java @@ -15,6 +15,7 @@ */ package com.google.android.exoplayer.ext.vp9; +import com.google.android.exoplayer.C; import com.google.android.exoplayer.CodecCounters; import com.google.android.exoplayer.DecoderInputBuffer; import com.google.android.exoplayer.ExoPlaybackException; @@ -184,6 +185,11 @@ public final class LibvpxVideoTrackRenderer extends TrackRenderer { return isLibvpxAvailable() ? VpxDecoder.getLibvpxVersion() : null; } + @Override + protected int getTrackType() { + return C.TRACK_TYPE_VIDEO; + } + @Override protected int supportsFormat(Format format) { return isLibvpxAvailable() && MimeTypes.VIDEO_VP9.equalsIgnoreCase(format.sampleMimeType) diff --git a/library/src/main/java/com/google/android/exoplayer/C.java b/library/src/main/java/com/google/android/exoplayer/C.java index dad3b93ae4..f9b089a1a2 100644 --- a/library/src/main/java/com/google/android/exoplayer/C.java +++ b/library/src/main/java/com/google/android/exoplayer/C.java @@ -145,8 +145,13 @@ public final class C { public static final int TRACK_TYPE_TEXT = 3; /** - * A default size in bytes for an individual allocation that forms part of a larger buffer. + * A type constant for metadata tracks. */ + public static final int TRACK_TYPE_METADATA = 4; + + /** + * A default size in bytes for an individual allocation that forms part of a larger buffer. + */ public static final int DEFAULT_BUFFER_SEGMENT_SIZE = 64 * 1024; /** diff --git a/library/src/main/java/com/google/android/exoplayer/DummyTrackRenderer.java b/library/src/main/java/com/google/android/exoplayer/DummyTrackRenderer.java deleted file mode 100644 index 8f223fc33d..0000000000 --- a/library/src/main/java/com/google/android/exoplayer/DummyTrackRenderer.java +++ /dev/null @@ -1,48 +0,0 @@ -/* - * Copyright (C) 2014 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.google.android.exoplayer; - -/** - * A {@link TrackRenderer} that does nothing. - */ -public final class DummyTrackRenderer extends TrackRenderer { - - @Override - protected int supportsFormat(Format format) throws ExoPlaybackException { - return TrackRenderer.FORMAT_UNSUPPORTED_TYPE; - } - - @Override - protected boolean isEnded() { - throw new IllegalStateException(); - } - - @Override - protected boolean isReady() { - throw new IllegalStateException(); - } - - @Override - protected void render(long positionUs, long elapsedRealtimeUs) throws ExoPlaybackException { - throw new IllegalStateException(); - } - - @Override - protected void reset(long positionUs) throws ExoPlaybackException { - throw new IllegalStateException(); - } - -} diff --git a/library/src/main/java/com/google/android/exoplayer/MediaCodecAudioTrackRenderer.java b/library/src/main/java/com/google/android/exoplayer/MediaCodecAudioTrackRenderer.java index 493ea08b0e..e10a3583d6 100644 --- a/library/src/main/java/com/google/android/exoplayer/MediaCodecAudioTrackRenderer.java +++ b/library/src/main/java/com/google/android/exoplayer/MediaCodecAudioTrackRenderer.java @@ -181,6 +181,11 @@ public class MediaCodecAudioTrackRenderer extends MediaCodecTrackRenderer implem this.audioTrack = new AudioTrack(audioCapabilities, streamType); } + @Override + protected int getTrackType() { + return C.TRACK_TYPE_AUDIO; + } + @Override protected int supportsFormat(MediaCodecSelector mediaCodecSelector, Format format) throws DecoderQueryException { diff --git a/library/src/main/java/com/google/android/exoplayer/MediaCodecVideoTrackRenderer.java b/library/src/main/java/com/google/android/exoplayer/MediaCodecVideoTrackRenderer.java index daa98eb6e9..7eddd930f4 100644 --- a/library/src/main/java/com/google/android/exoplayer/MediaCodecVideoTrackRenderer.java +++ b/library/src/main/java/com/google/android/exoplayer/MediaCodecVideoTrackRenderer.java @@ -220,6 +220,11 @@ public class MediaCodecVideoTrackRenderer extends MediaCodecTrackRenderer { lastReportedPixelWidthHeightRatio = -1; } + @Override + protected int getTrackType() { + return C.TRACK_TYPE_VIDEO; + } + @Override protected int supportsFormat(MediaCodecSelector mediaCodecSelector, Format format) throws DecoderQueryException { diff --git a/library/src/main/java/com/google/android/exoplayer/TrackRenderer.java b/library/src/main/java/com/google/android/exoplayer/TrackRenderer.java index 30c0c7edcd..2ba559b379 100644 --- a/library/src/main/java/com/google/android/exoplayer/TrackRenderer.java +++ b/library/src/main/java/com/google/android/exoplayer/TrackRenderer.java @@ -294,6 +294,15 @@ public abstract class TrackRenderer implements ExoPlayerComponent { // Abstract methods. + /** + * Returns the track type that the renderer handles. For example, a video renderer will return + * {@link C#TRACK_TYPE_VIDEO}, an audio renderer will return {@link C#TRACK_TYPE_AUDIO}, a text + * renderer will return {@link C#TRACK_TYPE_TEXT}, and so on. + * + * @return One of the TRACK_TYPE_* constants defined in {@link C}. + */ + protected abstract int getTrackType(); + /** * Returns the extent to which the renderer supports a given format. *

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 d2f7845dd0..c36809b2e4 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 @@ -15,6 +15,7 @@ */ package com.google.android.exoplayer.metadata; +import com.google.android.exoplayer.C; import com.google.android.exoplayer.DecoderInputBuffer; import com.google.android.exoplayer.ExoPlaybackException; import com.google.android.exoplayer.Format; @@ -84,6 +85,11 @@ public final class MetadataTrackRenderer extends TrackRenderer implements Cal buffer = new DecoderInputBuffer(DecoderInputBuffer.BUFFER_REPLACEMENT_MODE_NORMAL); } + @Override + protected int getTrackType() { + return C.TRACK_TYPE_METADATA; + } + @Override protected int supportsFormat(Format format) { return metadataParser.canParse(format.sampleMimeType) ? TrackRenderer.FORMAT_HANDLED 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 79fc5db88b..4c3fcac0d9 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 @@ -91,6 +91,11 @@ public final class TextTrackRenderer extends TrackRenderer implements Callback { formatHolder = new FormatHolder(); } + @Override + protected int getTrackType() { + return C.TRACK_TYPE_TEXT; + } + @Override protected int supportsFormat(Format format) { return parserFactory.supportsFormat(format) ? TrackRenderer.FORMAT_HANDLED diff --git a/library/src/main/java/com/google/android/exoplayer/util/extensions/AudioDecoderTrackRenderer.java b/library/src/main/java/com/google/android/exoplayer/util/extensions/AudioDecoderTrackRenderer.java index 5aedb06c07..a0f631a95d 100644 --- a/library/src/main/java/com/google/android/exoplayer/util/extensions/AudioDecoderTrackRenderer.java +++ b/library/src/main/java/com/google/android/exoplayer/util/extensions/AudioDecoderTrackRenderer.java @@ -15,6 +15,7 @@ */ package com.google.android.exoplayer.util.extensions; +import com.google.android.exoplayer.C; import com.google.android.exoplayer.CodecCounters; import com.google.android.exoplayer.DecoderInputBuffer; import com.google.android.exoplayer.ExoPlaybackException; @@ -152,6 +153,11 @@ public abstract class AudioDecoderTrackRenderer extends TrackRenderer implements codecCounters.ensureUpdated(); } + @Override + protected int getTrackType() { + return C.TRACK_TYPE_AUDIO; + } + protected abstract SimpleDecoder createDecoder(List initializationData) throws AudioDecoderException;