mirror of
https://github.com/samsonjs/media.git
synced 2026-04-27 15:07:40 +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.AudioTrackRendererEventListener;
|
||||||
import com.google.android.exoplayer2.C;
|
import com.google.android.exoplayer2.C;
|
||||||
import com.google.android.exoplayer2.Format;
|
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.extensions.AudioDecoderTrackRenderer;
|
||||||
import com.google.android.exoplayer2.util.MimeTypes;
|
import com.google.android.exoplayer2.util.MimeTypes;
|
||||||
|
|
||||||
|
|
@ -37,11 +39,30 @@ public final class FfmpegAudioTrackRenderer extends AudioDecoderTrackRenderer {
|
||||||
this(null, null);
|
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,
|
public FfmpegAudioTrackRenderer(Handler eventHandler,
|
||||||
AudioTrackRendererEventListener eventListener) {
|
AudioTrackRendererEventListener eventListener) {
|
||||||
super(eventHandler, 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
|
@Override
|
||||||
protected int supportsFormat(Format format) {
|
protected int supportsFormat(Format format) {
|
||||||
if (!FfmpegDecoder.IS_AVAILABLE) {
|
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.AudioTrackRendererEventListener;
|
||||||
import com.google.android.exoplayer2.Format;
|
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.extensions.AudioDecoderTrackRenderer;
|
||||||
import com.google.android.exoplayer2.util.MimeTypes;
|
import com.google.android.exoplayer2.util.MimeTypes;
|
||||||
|
|
||||||
|
|
@ -49,6 +51,21 @@ public class LibflacAudioTrackRenderer extends AudioDecoderTrackRenderer {
|
||||||
AudioTrackRendererEventListener eventListener) {
|
AudioTrackRendererEventListener eventListener) {
|
||||||
super(eventHandler, 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
|
@Override
|
||||||
protected int supportsFormat(Format format) {
|
protected int supportsFormat(Format format) {
|
||||||
return isLibflacAvailable() && MimeTypes.AUDIO_FLAC.equalsIgnoreCase(format.sampleMimeType)
|
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.AudioTrackRendererEventListener;
|
||||||
import com.google.android.exoplayer2.Format;
|
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.extensions.AudioDecoderTrackRenderer;
|
||||||
import com.google.android.exoplayer2.util.MimeTypes;
|
import com.google.android.exoplayer2.util.MimeTypes;
|
||||||
|
|
||||||
|
|
@ -58,6 +60,20 @@ public final class LibopusAudioTrackRenderer extends AudioDecoderTrackRenderer {
|
||||||
super(eventHandler, 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 LibopusAudioTrackRenderer(Handler eventHandler,
|
||||||
|
AudioTrackRendererEventListener eventListener, AudioCapabilities audioCapabilities,
|
||||||
|
int streamType) {
|
||||||
|
super(eventHandler, eventListener, audioCapabilities, streamType);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected int supportsFormat(Format format) {
|
protected int supportsFormat(Format format) {
|
||||||
return isLibopusAvailable() && MimeTypes.AUDIO_OPUS.equalsIgnoreCase(format.sampleMimeType)
|
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.annotation.TargetApi;
|
||||||
import android.media.AudioFormat;
|
import android.media.AudioFormat;
|
||||||
import android.media.AudioManager;
|
|
||||||
import android.media.AudioTimestamp;
|
import android.media.AudioTimestamp;
|
||||||
import android.media.PlaybackParams;
|
import android.media.PlaybackParams;
|
||||||
import android.os.ConditionVariable;
|
import android.os.ConditionVariable;
|
||||||
|
|
@ -230,13 +229,6 @@ public final class AudioTrack {
|
||||||
private ByteBuffer resampledBuffer;
|
private ByteBuffer resampledBuffer;
|
||||||
private boolean useResampledBuffer;
|
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.
|
* 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.MediaClock;
|
||||||
import com.google.android.exoplayer2.TrackRenderer;
|
import com.google.android.exoplayer2.TrackRenderer;
|
||||||
import com.google.android.exoplayer2.TrackStream;
|
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.audio.AudioTrack;
|
||||||
import com.google.android.exoplayer2.util.MimeTypes;
|
import com.google.android.exoplayer2.util.MimeTypes;
|
||||||
import com.google.android.exoplayer2.util.TraceUtil;
|
import com.google.android.exoplayer2.util.TraceUtil;
|
||||||
|
|
||||||
|
import android.media.AudioManager;
|
||||||
import android.media.PlaybackParams;
|
import android.media.PlaybackParams;
|
||||||
import android.os.Handler;
|
import android.os.Handler;
|
||||||
import android.os.SystemClock;
|
import android.os.SystemClock;
|
||||||
|
|
@ -45,7 +47,7 @@ public abstract class AudioDecoderTrackRenderer extends TrackRenderer implements
|
||||||
private CodecCounters codecCounters;
|
private CodecCounters codecCounters;
|
||||||
private Format inputFormat;
|
private Format inputFormat;
|
||||||
private SimpleDecoder<DecoderInputBuffer, ? extends SimpleOutputBuffer,
|
private SimpleDecoder<DecoderInputBuffer, ? extends SimpleOutputBuffer,
|
||||||
? extends AudioDecoderException> decoder;
|
? extends AudioDecoderException> decoder;
|
||||||
private DecoderInputBuffer inputBuffer;
|
private DecoderInputBuffer inputBuffer;
|
||||||
private SimpleOutputBuffer outputBuffer;
|
private SimpleOutputBuffer outputBuffer;
|
||||||
|
|
||||||
|
|
@ -71,9 +73,23 @@ public abstract class AudioDecoderTrackRenderer extends TrackRenderer implements
|
||||||
*/
|
*/
|
||||||
public AudioDecoderTrackRenderer(Handler eventHandler,
|
public AudioDecoderTrackRenderer(Handler eventHandler,
|
||||||
AudioTrackRendererEventListener eventListener) {
|
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);
|
eventDispatcher = new EventDispatcher(eventHandler, eventListener);
|
||||||
audioSessionId = AudioTrack.SESSION_ID_NOT_SET;
|
audioSessionId = AudioTrack.SESSION_ID_NOT_SET;
|
||||||
audioTrack = new AudioTrack();
|
audioTrack = new AudioTrack(audioCapabilities, streamType);
|
||||||
formatHolder = new FormatHolder();
|
formatHolder = new FormatHolder();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue