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
This commit is contained in:
aquilescanta 2016-05-03 06:15:06 -07:00 committed by Oliver Woodman
parent 6b9c43e578
commit 45a46c3e6e
9 changed files with 48 additions and 49 deletions

View File

@ -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;
@ -184,6 +185,11 @@ public final class LibvpxVideoTrackRenderer extends TrackRenderer {
return isLibvpxAvailable() ? VpxDecoder.getLibvpxVersion() : null; return isLibvpxAvailable() ? VpxDecoder.getLibvpxVersion() : null;
} }
@Override
protected int getTrackType() {
return C.TRACK_TYPE_VIDEO;
}
@Override @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)

View File

@ -145,8 +145,13 @@ public final class C {
public static final int TRACK_TYPE_TEXT = 3; 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; public static final int DEFAULT_BUFFER_SEGMENT_SIZE = 64 * 1024;
/** /**

View File

@ -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();
}
}

View File

@ -181,6 +181,11 @@ public class MediaCodecAudioTrackRenderer extends MediaCodecTrackRenderer implem
this.audioTrack = new AudioTrack(audioCapabilities, streamType); this.audioTrack = new AudioTrack(audioCapabilities, streamType);
} }
@Override
protected int getTrackType() {
return C.TRACK_TYPE_AUDIO;
}
@Override @Override
protected int supportsFormat(MediaCodecSelector mediaCodecSelector, Format format) protected int supportsFormat(MediaCodecSelector mediaCodecSelector, Format format)
throws DecoderQueryException { throws DecoderQueryException {

View File

@ -220,6 +220,11 @@ public class MediaCodecVideoTrackRenderer extends MediaCodecTrackRenderer {
lastReportedPixelWidthHeightRatio = -1; lastReportedPixelWidthHeightRatio = -1;
} }
@Override
protected int getTrackType() {
return C.TRACK_TYPE_VIDEO;
}
@Override @Override
protected int supportsFormat(MediaCodecSelector mediaCodecSelector, Format format) protected int supportsFormat(MediaCodecSelector mediaCodecSelector, Format format)
throws DecoderQueryException { throws DecoderQueryException {

View File

@ -294,6 +294,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>

View File

@ -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;
@ -84,6 +85,11 @@ public final class MetadataTrackRenderer<T> extends TrackRenderer implements Cal
buffer = new DecoderInputBuffer(DecoderInputBuffer.BUFFER_REPLACEMENT_MODE_NORMAL); buffer = new DecoderInputBuffer(DecoderInputBuffer.BUFFER_REPLACEMENT_MODE_NORMAL);
} }
@Override
protected int getTrackType() {
return C.TRACK_TYPE_METADATA;
}
@Override @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

View File

@ -91,6 +91,11 @@ public final class TextTrackRenderer extends TrackRenderer implements Callback {
formatHolder = new FormatHolder(); formatHolder = new FormatHolder();
} }
@Override
protected int getTrackType() {
return C.TRACK_TYPE_TEXT;
}
@Override @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

View File

@ -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
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;