diff --git a/extensions/flac/src/androidTest/java/com/google/android/exoplayer2/ext/flac/FlacPlaybackTest.java b/extensions/flac/src/androidTest/java/com/google/android/exoplayer2/ext/flac/FlacPlaybackTest.java index bbcc26fb64..1736b5aa29 100644 --- a/extensions/flac/src/androidTest/java/com/google/android/exoplayer2/ext/flac/FlacPlaybackTest.java +++ b/extensions/flac/src/androidTest/java/com/google/android/exoplayer2/ext/flac/FlacPlaybackTest.java @@ -24,9 +24,11 @@ import androidx.annotation.Nullable; import androidx.test.core.app.ApplicationProvider; import androidx.test.ext.junit.runners.AndroidJUnit4; import com.google.android.exoplayer2.ExoPlaybackException; -import com.google.android.exoplayer2.ExoPlayer; import com.google.android.exoplayer2.MediaItem; import com.google.android.exoplayer2.Player; +import com.google.android.exoplayer2.Renderer; +import com.google.android.exoplayer2.RenderersFactory; +import com.google.android.exoplayer2.SimpleExoPlayer; import com.google.android.exoplayer2.audio.AudioProcessor; import com.google.android.exoplayer2.audio.AudioSink; import com.google.android.exoplayer2.audio.DefaultAudioSink; @@ -93,7 +95,7 @@ public class FlacPlaybackTest { private final Uri uri; private final AudioSink audioSink; - @Nullable private ExoPlayer player; + @Nullable private SimpleExoPlayer player; @Nullable private ExoPlaybackException playbackException; public TestPlaybackRunnable(Uri uri, Context context, AudioSink audioSink) { @@ -105,9 +107,16 @@ public class FlacPlaybackTest { @Override public void run() { Looper.prepare(); - LibflacAudioRenderer audioRenderer = - new LibflacAudioRenderer(/* eventHandler= */ null, /* eventListener= */ null, audioSink); - player = new ExoPlayer.Builder(context, audioRenderer).build(); + RenderersFactory renderersFactory = + (eventHandler, + videoRendererEventListener, + audioRendererEventListener, + textRendererOutput, + metadataRendererOutput) -> + new Renderer[] { + new LibflacAudioRenderer(eventHandler, audioRendererEventListener, audioSink) + }; + player = new SimpleExoPlayer.Builder(context, renderersFactory).build(); player.addListener(this); MediaSource mediaSource = new ProgressiveMediaSource.Factory( diff --git a/extensions/opus/src/androidTest/java/com/google/android/exoplayer2/ext/opus/OpusPlaybackTest.java b/extensions/opus/src/androidTest/java/com/google/android/exoplayer2/ext/opus/OpusPlaybackTest.java index c964b0cc1c..95acaafc81 100644 --- a/extensions/opus/src/androidTest/java/com/google/android/exoplayer2/ext/opus/OpusPlaybackTest.java +++ b/extensions/opus/src/androidTest/java/com/google/android/exoplayer2/ext/opus/OpusPlaybackTest.java @@ -24,9 +24,11 @@ import androidx.annotation.Nullable; import androidx.test.core.app.ApplicationProvider; import androidx.test.ext.junit.runners.AndroidJUnit4; import com.google.android.exoplayer2.ExoPlaybackException; -import com.google.android.exoplayer2.ExoPlayer; import com.google.android.exoplayer2.MediaItem; import com.google.android.exoplayer2.Player; +import com.google.android.exoplayer2.Renderer; +import com.google.android.exoplayer2.RenderersFactory; +import com.google.android.exoplayer2.SimpleExoPlayer; import com.google.android.exoplayer2.extractor.mkv.MatroskaExtractor; import com.google.android.exoplayer2.source.MediaSource; import com.google.android.exoplayer2.source.ProgressiveMediaSource; @@ -76,7 +78,7 @@ public class OpusPlaybackTest { private final Context context; private final Uri uri; - @Nullable private ExoPlayer player; + @Nullable private SimpleExoPlayer player; @Nullable private ExoPlaybackException playbackException; public TestPlaybackRunnable(Uri uri, Context context) { @@ -87,8 +89,14 @@ public class OpusPlaybackTest { @Override public void run() { Looper.prepare(); - LibopusAudioRenderer audioRenderer = new LibopusAudioRenderer(); - player = new ExoPlayer.Builder(context, audioRenderer).build(); + RenderersFactory renderersFactory = + (eventHandler, + videoRendererEventListener, + audioRendererEventListener, + textRendererOutput, + metadataRendererOutput) -> + new Renderer[] {new LibopusAudioRenderer(eventHandler, audioRendererEventListener)}; + player = new SimpleExoPlayer.Builder(context, renderersFactory).build(); player.addListener(this); MediaSource mediaSource = new ProgressiveMediaSource.Factory( diff --git a/extensions/vp9/src/androidTest/java/com/google/android/exoplayer2/ext/vp9/VpxPlaybackTest.java b/extensions/vp9/src/androidTest/java/com/google/android/exoplayer2/ext/vp9/VpxPlaybackTest.java index 823ce02cfe..407dc8a55d 100644 --- a/extensions/vp9/src/androidTest/java/com/google/android/exoplayer2/ext/vp9/VpxPlaybackTest.java +++ b/extensions/vp9/src/androidTest/java/com/google/android/exoplayer2/ext/vp9/VpxPlaybackTest.java @@ -25,10 +25,11 @@ import androidx.annotation.Nullable; import androidx.test.core.app.ApplicationProvider; import androidx.test.ext.junit.runners.AndroidJUnit4; import com.google.android.exoplayer2.ExoPlaybackException; -import com.google.android.exoplayer2.ExoPlayer; import com.google.android.exoplayer2.MediaItem; import com.google.android.exoplayer2.Player; import com.google.android.exoplayer2.Renderer; +import com.google.android.exoplayer2.RenderersFactory; +import com.google.android.exoplayer2.SimpleExoPlayer; import com.google.android.exoplayer2.extractor.mkv.MatroskaExtractor; import com.google.android.exoplayer2.source.MediaSource; import com.google.android.exoplayer2.source.ProgressiveMediaSource; @@ -105,7 +106,7 @@ public class VpxPlaybackTest { private final Context context; private final Uri uri; - @Nullable private ExoPlayer player; + @Nullable private SimpleExoPlayer player; @Nullable private ExoPlaybackException playbackException; public TestPlaybackRunnable(Uri uri, Context context) { @@ -116,18 +117,26 @@ public class VpxPlaybackTest { @Override public void run() { Looper.prepare(); - LibvpxVideoRenderer videoRenderer = new LibvpxVideoRenderer(0); - player = new ExoPlayer.Builder(context, videoRenderer).build(); + RenderersFactory renderersFactory = + (eventHandler, + videoRendererEventListener, + audioRendererEventListener, + textRendererOutput, + metadataRendererOutput) -> + new Renderer[] { + new LibvpxVideoRenderer( + /* allowedJoiningTimeMs= */ 0, + eventHandler, + videoRendererEventListener, + /* maxDroppedFramesToNotify= */ -1) + }; + player = new SimpleExoPlayer.Builder(context, renderersFactory).build(); player.addListener(this); MediaSource mediaSource = new ProgressiveMediaSource.Factory( new DefaultDataSourceFactory(context), MatroskaExtractor.FACTORY) .createMediaSource(MediaItem.fromUri(uri)); - player - .createMessage(videoRenderer) - .setType(Renderer.MSG_SET_VIDEO_DECODER_OUTPUT_BUFFER_RENDERER) - .setPayload(new VideoDecoderGLSurfaceView(context).getVideoDecoderOutputBufferRenderer()) - .send(); + player.setVideoSurfaceView(new VideoDecoderGLSurfaceView(context)); player.setMediaSource(mediaSource); player.prepare(); player.play(); diff --git a/library/core/build.gradle b/library/core/build.gradle index ae8e7b773f..a4cd3bd2a3 100644 --- a/library/core/build.gradle +++ b/library/core/build.gradle @@ -19,6 +19,7 @@ android { // "pm clear" command after each test invocation. This command ensures // that the app's state is completely cleared between tests. testInstrumentationRunnerArguments clearPackageData: 'true' + multiDexEnabled true } buildTypes { diff --git a/library/core/src/main/java/com/google/android/exoplayer2/video/MediaCodecVideoRenderer.java b/library/core/src/main/java/com/google/android/exoplayer2/video/MediaCodecVideoRenderer.java index 3a6ed345b0..70621d7e49 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/video/MediaCodecVideoRenderer.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/video/MediaCodecVideoRenderer.java @@ -176,7 +176,7 @@ public class MediaCodecVideoRenderer extends MediaCodecRenderer { allowedJoiningTimeMs, /* eventHandler= */ null, /* eventListener= */ null, - /* maxDroppedFramesToNotify= */ -1); + /* maxDroppedFramesToNotify= */ 0); } /**