Commit 45a46c3e by aquilescanta Committed by Oliver Woodman

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
parent 6b9c43e5
...@@ -15,6 +15,7 @@ ...@@ -15,6 +15,7 @@
*/ */
package com.google.android.exoplayer.ext.vp9; package com.google.android.exoplayer.ext.vp9;
import com.google.android.exoplayer.C;
import com.google.android.exoplayer.CodecCounters; import com.google.android.exoplayer.CodecCounters;
import com.google.android.exoplayer.DecoderInputBuffer; import com.google.android.exoplayer.DecoderInputBuffer;
import com.google.android.exoplayer.ExoPlaybackException; import com.google.android.exoplayer.ExoPlaybackException;
...@@ -185,6 +186,11 @@ public final class LibvpxVideoTrackRenderer extends TrackRenderer { ...@@ -185,6 +186,11 @@ public final class LibvpxVideoTrackRenderer extends TrackRenderer {
} }
@Override @Override
protected int getTrackType() {
return C.TRACK_TYPE_VIDEO;
}
@Override
protected int supportsFormat(Format format) { protected int supportsFormat(Format format) {
return isLibvpxAvailable() && MimeTypes.VIDEO_VP9.equalsIgnoreCase(format.sampleMimeType) return isLibvpxAvailable() && MimeTypes.VIDEO_VP9.equalsIgnoreCase(format.sampleMimeType)
? FORMAT_HANDLED : FORMAT_UNSUPPORTED_TYPE; ? FORMAT_HANDLED : FORMAT_UNSUPPORTED_TYPE;
......
...@@ -145,6 +145,11 @@ public final class C { ...@@ -145,6 +145,11 @@ public final class C {
public static final int TRACK_TYPE_TEXT = 3; public static final int TRACK_TYPE_TEXT = 3;
/** /**
* 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. * 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; public static final int DEFAULT_BUFFER_SEGMENT_SIZE = 64 * 1024;
......
/*
* 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();
}
}
...@@ -182,6 +182,11 @@ public class MediaCodecAudioTrackRenderer extends MediaCodecTrackRenderer implem ...@@ -182,6 +182,11 @@ public class MediaCodecAudioTrackRenderer extends MediaCodecTrackRenderer implem
} }
@Override @Override
protected int getTrackType() {
return C.TRACK_TYPE_AUDIO;
}
@Override
protected int supportsFormat(MediaCodecSelector mediaCodecSelector, Format format) protected int supportsFormat(MediaCodecSelector mediaCodecSelector, Format format)
throws DecoderQueryException { throws DecoderQueryException {
String mimeType = format.sampleMimeType; String mimeType = format.sampleMimeType;
......
...@@ -221,6 +221,11 @@ public class MediaCodecVideoTrackRenderer extends MediaCodecTrackRenderer { ...@@ -221,6 +221,11 @@ public class MediaCodecVideoTrackRenderer extends MediaCodecTrackRenderer {
} }
@Override @Override
protected int getTrackType() {
return C.TRACK_TYPE_VIDEO;
}
@Override
protected int supportsFormat(MediaCodecSelector mediaCodecSelector, Format format) protected int supportsFormat(MediaCodecSelector mediaCodecSelector, Format format)
throws DecoderQueryException { throws DecoderQueryException {
String mimeType = format.sampleMimeType; String mimeType = format.sampleMimeType;
......
...@@ -295,6 +295,15 @@ public abstract class TrackRenderer implements ExoPlayerComponent { ...@@ -295,6 +295,15 @@ public abstract class TrackRenderer implements ExoPlayerComponent {
// Abstract methods. // 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. * Returns the extent to which the renderer supports a given format.
* <p> * <p>
* The returned value is the bitwise OR of two properties: * The returned value is the bitwise OR of two properties:
......
...@@ -15,6 +15,7 @@ ...@@ -15,6 +15,7 @@
*/ */
package com.google.android.exoplayer.metadata; package com.google.android.exoplayer.metadata;
import com.google.android.exoplayer.C;
import com.google.android.exoplayer.DecoderInputBuffer; import com.google.android.exoplayer.DecoderInputBuffer;
import com.google.android.exoplayer.ExoPlaybackException; import com.google.android.exoplayer.ExoPlaybackException;
import com.google.android.exoplayer.Format; import com.google.android.exoplayer.Format;
...@@ -85,6 +86,11 @@ public final class MetadataTrackRenderer<T> extends TrackRenderer implements Cal ...@@ -85,6 +86,11 @@ public final class MetadataTrackRenderer<T> extends TrackRenderer implements Cal
} }
@Override @Override
protected int getTrackType() {
return C.TRACK_TYPE_METADATA;
}
@Override
protected int supportsFormat(Format format) { protected int supportsFormat(Format format) {
return metadataParser.canParse(format.sampleMimeType) ? TrackRenderer.FORMAT_HANDLED return metadataParser.canParse(format.sampleMimeType) ? TrackRenderer.FORMAT_HANDLED
: TrackRenderer.FORMAT_UNSUPPORTED_TYPE; : TrackRenderer.FORMAT_UNSUPPORTED_TYPE;
......
...@@ -92,6 +92,11 @@ public final class TextTrackRenderer extends TrackRenderer implements Callback { ...@@ -92,6 +92,11 @@ public final class TextTrackRenderer extends TrackRenderer implements Callback {
} }
@Override @Override
protected int getTrackType() {
return C.TRACK_TYPE_TEXT;
}
@Override
protected int supportsFormat(Format format) { protected int supportsFormat(Format format) {
return parserFactory.supportsFormat(format) ? TrackRenderer.FORMAT_HANDLED return parserFactory.supportsFormat(format) ? TrackRenderer.FORMAT_HANDLED
: (MimeTypes.isText(format.sampleMimeType) ? FORMAT_UNSUPPORTED_SUBTYPE : (MimeTypes.isText(format.sampleMimeType) ? FORMAT_UNSUPPORTED_SUBTYPE
......
...@@ -15,6 +15,7 @@ ...@@ -15,6 +15,7 @@
*/ */
package com.google.android.exoplayer.util.extensions; package com.google.android.exoplayer.util.extensions;
import com.google.android.exoplayer.C;
import com.google.android.exoplayer.CodecCounters; import com.google.android.exoplayer.CodecCounters;
import com.google.android.exoplayer.DecoderInputBuffer; import com.google.android.exoplayer.DecoderInputBuffer;
import com.google.android.exoplayer.ExoPlaybackException; import com.google.android.exoplayer.ExoPlaybackException;
...@@ -152,6 +153,11 @@ public abstract class AudioDecoderTrackRenderer extends TrackRenderer implements ...@@ -152,6 +153,11 @@ public abstract class AudioDecoderTrackRenderer extends TrackRenderer implements
codecCounters.ensureUpdated(); codecCounters.ensureUpdated();
} }
@Override
protected int getTrackType() {
return C.TRACK_TYPE_AUDIO;
}
protected abstract SimpleDecoder<DecoderInputBuffer, ? extends SimpleOutputBuffer, protected abstract SimpleDecoder<DecoderInputBuffer, ? extends SimpleOutputBuffer,
? extends AudioDecoderException> createDecoder(List<byte[]> initializationData) ? extends AudioDecoderException> createDecoder(List<byte[]> initializationData)
throws AudioDecoderException; throws AudioDecoderException;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment