mirror of
https://github.com/samsonjs/media.git
synced 2026-04-08 11:45:51 +00:00
Add streamType/capabilities for extension audio renderers
------------- Created by MOE: https://github.com/google/moe MOE_MIGRATED_REVID=126913487
This commit is contained in:
parent
a845f1c4cc
commit
c9ec7beb92
5 changed files with 72 additions and 10 deletions
|
|
@ -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) {
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
*
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue