From 45a46c3e6eaa5c593cde1b230474c65255565cbb Mon Sep 17 00:00:00 2001 From: aquilescanta Date: Tue, 3 May 2016 06:15:06 -0700 Subject: [PATCH] Add getTrackType to allow track selection In order to apply track type specific policies in the track selection, we need to know the type of the track renderer, this method returns one of the constants defined in C.java of the form TRACK_TYPE_* to allow renderer classification. ------------- Created by MOE: https://github.com/google/moe MOE_MIGRATED_REVID=121369021 --- .../ext/vp9/LibvpxVideoTrackRenderer.java | 6 +++ .../java/com/google/android/exoplayer/C.java | 7 ++- .../android/exoplayer/DummyTrackRenderer.java | 48 ------------------- .../MediaCodecAudioTrackRenderer.java | 5 ++ .../MediaCodecVideoTrackRenderer.java | 5 ++ .../android/exoplayer/TrackRenderer.java | 9 ++++ .../metadata/MetadataTrackRenderer.java | 6 +++ .../exoplayer/text/TextTrackRenderer.java | 5 ++ .../extensions/AudioDecoderTrackRenderer.java | 6 +++ 9 files changed, 48 insertions(+), 49 deletions(-) delete mode 100644 library/src/main/java/com/google/android/exoplayer/DummyTrackRenderer.java 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;