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:
parent
6b9c43e578
commit
45a46c3e6e
@ -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)
|
||||||
|
@ -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;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -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();
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -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 {
|
||||||
|
@ -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 {
|
||||||
|
@ -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>
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user