mirror of
https://github.com/samsonjs/media.git
synced 2026-03-27 09:45:47 +00:00
DefaultRenderersFactory can set MediaCodecOperation
Add experimental method on DefaultRenderersFactory to set the MediaCodecOperationMode on MediaCodecRenderer instances. PiperOrigin-RevId: 286004667
This commit is contained in:
parent
863bf45341
commit
43bbc172a4
1 changed files with 26 additions and 4 deletions
|
|
@ -28,6 +28,7 @@ import com.google.android.exoplayer2.audio.DefaultAudioSink;
|
|||
import com.google.android.exoplayer2.audio.MediaCodecAudioRenderer;
|
||||
import com.google.android.exoplayer2.drm.DrmSessionManager;
|
||||
import com.google.android.exoplayer2.drm.FrameworkMediaCrypto;
|
||||
import com.google.android.exoplayer2.mediacodec.MediaCodecRenderer;
|
||||
import com.google.android.exoplayer2.mediacodec.MediaCodecSelector;
|
||||
import com.google.android.exoplayer2.metadata.MetadataOutput;
|
||||
import com.google.android.exoplayer2.metadata.MetadataRenderer;
|
||||
|
|
@ -93,6 +94,7 @@ public class DefaultRenderersFactory implements RenderersFactory {
|
|||
private boolean playClearSamplesWithoutKeys;
|
||||
private boolean enableDecoderFallback;
|
||||
private MediaCodecSelector mediaCodecSelector;
|
||||
@MediaCodecRenderer.MediaCodecOperationMode private int mediaCodecOperationMode;
|
||||
|
||||
/** @param context A {@link Context}. */
|
||||
public DefaultRenderersFactory(Context context) {
|
||||
|
|
@ -100,6 +102,7 @@ public class DefaultRenderersFactory implements RenderersFactory {
|
|||
extensionRendererMode = EXTENSION_RENDERER_MODE_OFF;
|
||||
allowedVideoJoiningTimeMs = DEFAULT_ALLOWED_VIDEO_JOINING_TIME_MS;
|
||||
mediaCodecSelector = MediaCodecSelector.DEFAULT;
|
||||
mediaCodecOperationMode = MediaCodecRenderer.MediaCodecOperationMode.SYNCHRONOUS;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -185,6 +188,21 @@ public class DefaultRenderersFactory implements RenderersFactory {
|
|||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the {@link MediaCodecRenderer.MediaCodecOperationMode} of {@link MediaCodecRenderer}
|
||||
* instances.
|
||||
*
|
||||
* <p>This method is experimental, and will be renamed or removed in a future release.
|
||||
*
|
||||
* @param mode The {@link MediaCodecRenderer.MediaCodecOperationMode} to set.
|
||||
* @return This factory, for convenience.
|
||||
*/
|
||||
public DefaultRenderersFactory experimental_setMediaCodecOperationMode(
|
||||
@MediaCodecRenderer.MediaCodecOperationMode int mode) {
|
||||
mediaCodecOperationMode = mode;
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets whether renderers are permitted to play clear regions of encrypted media prior to having
|
||||
* obtained the keys necessary to decrypt encrypted regions of the media. For encrypted media that
|
||||
|
|
@ -319,7 +337,7 @@ public class DefaultRenderersFactory implements RenderersFactory {
|
|||
VideoRendererEventListener eventListener,
|
||||
long allowedVideoJoiningTimeMs,
|
||||
ArrayList<Renderer> out) {
|
||||
out.add(
|
||||
MediaCodecVideoRenderer videoRenderer =
|
||||
new MediaCodecVideoRenderer(
|
||||
context,
|
||||
mediaCodecSelector,
|
||||
|
|
@ -329,7 +347,9 @@ public class DefaultRenderersFactory implements RenderersFactory {
|
|||
enableDecoderFallback,
|
||||
eventHandler,
|
||||
eventListener,
|
||||
MAX_DROPPED_VIDEO_FRAME_COUNT_TO_NOTIFY));
|
||||
MAX_DROPPED_VIDEO_FRAME_COUNT_TO_NOTIFY);
|
||||
videoRenderer.experimental_setMediaCodecOperationMode(mediaCodecOperationMode);
|
||||
out.add(videoRenderer);
|
||||
|
||||
if (extensionRendererMode == EXTENSION_RENDERER_MODE_OFF) {
|
||||
return;
|
||||
|
|
@ -425,7 +445,7 @@ public class DefaultRenderersFactory implements RenderersFactory {
|
|||
Handler eventHandler,
|
||||
AudioRendererEventListener eventListener,
|
||||
ArrayList<Renderer> out) {
|
||||
out.add(
|
||||
MediaCodecAudioRenderer audioRenderer =
|
||||
new MediaCodecAudioRenderer(
|
||||
context,
|
||||
mediaCodecSelector,
|
||||
|
|
@ -434,7 +454,9 @@ public class DefaultRenderersFactory implements RenderersFactory {
|
|||
enableDecoderFallback,
|
||||
eventHandler,
|
||||
eventListener,
|
||||
new DefaultAudioSink(AudioCapabilities.getCapabilities(context), audioProcessors)));
|
||||
new DefaultAudioSink(AudioCapabilities.getCapabilities(context), audioProcessors));
|
||||
audioRenderer.experimental_setMediaCodecOperationMode(mediaCodecOperationMode);
|
||||
out.add(audioRenderer);
|
||||
|
||||
if (extensionRendererMode == EXTENSION_RENDERER_MODE_OFF) {
|
||||
return;
|
||||
|
|
|
|||
Loading…
Reference in a new issue