Add streamType/capabilities for extension audio renderers

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=126913487
This commit is contained in:
olly 2016-07-08 08:23:30 -07:00 committed by Oliver Woodman
parent a845f1c4cc
commit c9ec7beb92
5 changed files with 72 additions and 10 deletions

View file

@ -18,6 +18,8 @@ package com.google.android.exoplayer2.ext.ffmpeg;
import com.google.android.exoplayer2.AudioTrackRendererEventListener;
import com.google.android.exoplayer2.C;
import com.google.android.exoplayer2.Format;
import com.google.android.exoplayer2.audio.AudioCapabilities;
import com.google.android.exoplayer2.audio.AudioTrack;
import com.google.android.exoplayer2.extensions.AudioDecoderTrackRenderer;
import com.google.android.exoplayer2.util.MimeTypes;
@ -37,11 +39,30 @@ public final class FfmpegAudioTrackRenderer extends AudioDecoderTrackRenderer {
this(null, null);
}
/**
* @param eventHandler A handler to use when delivering events to {@code eventListener}. May be
* null if delivery of events is not required.
* @param eventListener A listener of events. May be null if delivery of events is not required.
*/
public FfmpegAudioTrackRenderer(Handler eventHandler,
AudioTrackRendererEventListener eventListener) {
super(eventHandler, eventListener);
}
/**
* @param eventHandler A handler to use when delivering events to {@code eventListener}. May be
* null if delivery of events is not required.
* @param eventListener A listener of events. May be null if delivery of events is not required.
* @param audioCapabilities The audio capabilities for playback on this device. May be null if the
* default capabilities (no encoded audio passthrough support) should be assumed.
* @param streamType The type of audio stream for the {@link AudioTrack}.
*/
public FfmpegAudioTrackRenderer(Handler eventHandler,
AudioTrackRendererEventListener eventListener, AudioCapabilities audioCapabilities,
int streamType) {
super(eventHandler, eventListener, audioCapabilities, streamType);
}
@Override
protected int supportsFormat(Format format) {
if (!FfmpegDecoder.IS_AVAILABLE) {

View file

@ -17,6 +17,8 @@ package com.google.android.exoplayer2.ext.flac;
import com.google.android.exoplayer2.AudioTrackRendererEventListener;
import com.google.android.exoplayer2.Format;
import com.google.android.exoplayer2.audio.AudioCapabilities;
import com.google.android.exoplayer2.audio.AudioTrack;
import com.google.android.exoplayer2.extensions.AudioDecoderTrackRenderer;
import com.google.android.exoplayer2.util.MimeTypes;
@ -49,6 +51,21 @@ public class LibflacAudioTrackRenderer extends AudioDecoderTrackRenderer {
AudioTrackRendererEventListener eventListener) {
super(eventHandler, eventListener);
}
/**
* @param eventHandler A handler to use when delivering events to {@code eventListener}. May be
* null if delivery of events is not required.
* @param eventListener A listener of events. May be null if delivery of events is not required.
* @param audioCapabilities The audio capabilities for playback on this device. May be null if the
* default capabilities (no encoded audio passthrough support) should be assumed.
* @param streamType The type of audio stream for the {@link AudioTrack}.
*/
public LibflacAudioTrackRenderer(Handler eventHandler,
AudioTrackRendererEventListener eventListener, AudioCapabilities audioCapabilities,
int streamType) {
super(eventHandler, eventListener, audioCapabilities, streamType);
}
@Override
protected int supportsFormat(Format format) {
return isLibflacAvailable() && MimeTypes.AUDIO_FLAC.equalsIgnoreCase(format.sampleMimeType)

View file

@ -17,6 +17,8 @@ package com.google.android.exoplayer2.ext.opus;
import com.google.android.exoplayer2.AudioTrackRendererEventListener;
import com.google.android.exoplayer2.Format;
import com.google.android.exoplayer2.audio.AudioCapabilities;
import com.google.android.exoplayer2.audio.AudioTrack;
import com.google.android.exoplayer2.extensions.AudioDecoderTrackRenderer;
import com.google.android.exoplayer2.util.MimeTypes;
@ -58,6 +60,20 @@ public final class LibopusAudioTrackRenderer extends AudioDecoderTrackRenderer {
super(eventHandler, eventListener);
}
/**
* @param eventHandler A handler to use when delivering events to {@code eventListener}. May be
* null if delivery of events is not required.
* @param eventListener A listener of events. May be null if delivery of events is not required.
* @param audioCapabilities The audio capabilities for playback on this device. May be null if the
* default capabilities (no encoded audio passthrough support) should be assumed.
* @param streamType The type of audio stream for the {@link AudioTrack}.
*/
public LibopusAudioTrackRenderer(Handler eventHandler,
AudioTrackRendererEventListener eventListener, AudioCapabilities audioCapabilities,
int streamType) {
super(eventHandler, eventListener, audioCapabilities, streamType);
}
@Override
protected int supportsFormat(Format format) {
return isLibopusAvailable() && MimeTypes.AUDIO_OPUS.equalsIgnoreCase(format.sampleMimeType)

View file

@ -24,7 +24,6 @@ import com.google.android.exoplayer2.util.Util;
import android.annotation.TargetApi;
import android.media.AudioFormat;
import android.media.AudioManager;
import android.media.AudioTimestamp;
import android.media.PlaybackParams;
import android.os.ConditionVariable;
@ -230,13 +229,6 @@ public final class AudioTrack {
private ByteBuffer resampledBuffer;
private boolean useResampledBuffer;
/**
* Creates an audio track with default audio capabilities (no encoded audio passthrough support).
*/
public AudioTrack() {
this(null, AudioManager.STREAM_MUSIC);
}
/**
* Creates an audio track using the specified audio capabilities and stream type.
*

View file

@ -26,10 +26,12 @@ import com.google.android.exoplayer2.FormatHolder;
import com.google.android.exoplayer2.MediaClock;
import com.google.android.exoplayer2.TrackRenderer;
import com.google.android.exoplayer2.TrackStream;
import com.google.android.exoplayer2.audio.AudioCapabilities;
import com.google.android.exoplayer2.audio.AudioTrack;
import com.google.android.exoplayer2.util.MimeTypes;
import com.google.android.exoplayer2.util.TraceUtil;
import android.media.AudioManager;
import android.media.PlaybackParams;
import android.os.Handler;
import android.os.SystemClock;
@ -45,7 +47,7 @@ public abstract class AudioDecoderTrackRenderer extends TrackRenderer implements
private CodecCounters codecCounters;
private Format inputFormat;
private SimpleDecoder<DecoderInputBuffer, ? extends SimpleOutputBuffer,
? extends AudioDecoderException> decoder;
? extends AudioDecoderException> decoder;
private DecoderInputBuffer inputBuffer;
private SimpleOutputBuffer outputBuffer;
@ -71,9 +73,23 @@ public abstract class AudioDecoderTrackRenderer extends TrackRenderer implements
*/
public AudioDecoderTrackRenderer(Handler eventHandler,
AudioTrackRendererEventListener eventListener) {
this (eventHandler, eventListener, null, AudioManager.STREAM_MUSIC);
}
/**
* @param eventHandler A handler to use when delivering events to {@code eventListener}. May be
* null if delivery of events is not required.
* @param eventListener A listener of events. May be null if delivery of events is not required.
* @param audioCapabilities The audio capabilities for playback on this device. May be null if the
* default capabilities (no encoded audio passthrough support) should be assumed.
* @param streamType The type of audio stream for the {@link AudioTrack}.
*/
public AudioDecoderTrackRenderer(Handler eventHandler,
AudioTrackRendererEventListener eventListener, AudioCapabilities audioCapabilities,
int streamType) {
eventDispatcher = new EventDispatcher(eventHandler, eventListener);
audioSessionId = AudioTrack.SESSION_ID_NOT_SET;
audioTrack = new AudioTrack();
audioTrack = new AudioTrack(audioCapabilities, streamType);
formatHolder = new FormatHolder();
}