Commit 433734dc by christosts Committed by Oliver Woodman

MediaCodecVideoRendererTest: remove LooperMode.LEGACY

PiperOrigin-RevId: 322536247
parent f81a353b
...@@ -26,9 +26,11 @@ import static org.mockito.Mockito.inOrder; ...@@ -26,9 +26,11 @@ import static org.mockito.Mockito.inOrder;
import static org.mockito.Mockito.never; import static org.mockito.Mockito.never;
import static org.mockito.Mockito.times; import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify; import static org.mockito.Mockito.verify;
import static org.robolectric.Shadows.shadowOf;
import android.graphics.SurfaceTexture; import android.graphics.SurfaceTexture;
import android.os.Handler; import android.os.Handler;
import android.os.Looper;
import android.os.SystemClock; import android.os.SystemClock;
import android.view.Surface; import android.view.Surface;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
...@@ -58,11 +60,10 @@ import org.mockito.InOrder; ...@@ -58,11 +60,10 @@ import org.mockito.InOrder;
import org.mockito.Mock; import org.mockito.Mock;
import org.mockito.junit.MockitoJUnit; import org.mockito.junit.MockitoJUnit;
import org.mockito.junit.MockitoRule; import org.mockito.junit.MockitoRule;
import org.robolectric.annotation.LooperMode; import org.robolectric.shadows.ShadowLooper;
/** Unit test for {@link MediaCodecVideoRenderer}. */ /** Unit test for {@link MediaCodecVideoRenderer}. */
@RunWith(AndroidJUnit4.class) @RunWith(AndroidJUnit4.class)
@LooperMode(LooperMode.Mode.LEGACY)
public class MediaCodecVideoRendererTest { public class MediaCodecVideoRendererTest {
@Rule public final MockitoRule mockito = MockitoJUnit.rule(); @Rule public final MockitoRule mockito = MockitoJUnit.rule();
...@@ -73,6 +74,7 @@ public class MediaCodecVideoRendererTest { ...@@ -73,6 +74,7 @@ public class MediaCodecVideoRendererTest {
.setHeight(1080) .setHeight(1080)
.build(); .build();
private Looper testMainLooper;
private MediaCodecVideoRenderer mediaCodecVideoRenderer; private MediaCodecVideoRenderer mediaCodecVideoRenderer;
@Nullable private Format currentOutputFormat; @Nullable private Format currentOutputFormat;
...@@ -80,6 +82,7 @@ public class MediaCodecVideoRendererTest { ...@@ -80,6 +82,7 @@ public class MediaCodecVideoRendererTest {
@Before @Before
public void setUp() throws Exception { public void setUp() throws Exception {
testMainLooper = Looper.getMainLooper();
MediaCodecSelector mediaCodecSelector = MediaCodecSelector mediaCodecSelector =
(mimeType, requiresSecureDecoder, requiresTunnelingDecoder) -> (mimeType, requiresSecureDecoder, requiresTunnelingDecoder) ->
Collections.singletonList( Collections.singletonList(
...@@ -99,7 +102,7 @@ public class MediaCodecVideoRendererTest { ...@@ -99,7 +102,7 @@ public class MediaCodecVideoRendererTest {
ApplicationProvider.getApplicationContext(), ApplicationProvider.getApplicationContext(),
mediaCodecSelector, mediaCodecSelector,
/* allowedJoiningTimeMs= */ 0, /* allowedJoiningTimeMs= */ 0,
/* eventHandler= */ new Handler(), /* eventHandler= */ new Handler(testMainLooper),
/* eventListener= */ eventListener, /* eventListener= */ eventListener,
/* maxDroppedFramesToNotify= */ 1) { /* maxDroppedFramesToNotify= */ 1) {
@Override @Override
...@@ -152,6 +155,7 @@ public class MediaCodecVideoRendererTest { ...@@ -152,6 +155,7 @@ public class MediaCodecVideoRendererTest {
mediaCodecVideoRenderer.render(posUs, SystemClock.elapsedRealtime() * 1000); mediaCodecVideoRenderer.render(posUs, SystemClock.elapsedRealtime() * 1000);
posUs += 40_000; posUs += 40_000;
} }
shadowOf(testMainLooper).idle();
verify(eventListener).onDroppedFrames(eq(1), anyLong()); verify(eventListener).onDroppedFrames(eq(1), anyLong());
} }
...@@ -182,6 +186,7 @@ public class MediaCodecVideoRendererTest { ...@@ -182,6 +186,7 @@ public class MediaCodecVideoRendererTest {
mediaCodecVideoRenderer.render(positionUs, SystemClock.elapsedRealtime() * 1000); mediaCodecVideoRenderer.render(positionUs, SystemClock.elapsedRealtime() * 1000);
positionUs += 10; positionUs += 10;
} while (!mediaCodecVideoRenderer.isEnded()); } while (!mediaCodecVideoRenderer.isEnded());
shadowOf(testMainLooper).idle();
verify(eventListener) verify(eventListener)
.onVideoSizeChanged( .onVideoSizeChanged(
...@@ -234,6 +239,7 @@ public class MediaCodecVideoRendererTest { ...@@ -234,6 +239,7 @@ public class MediaCodecVideoRendererTest {
mediaCodecVideoRenderer.render(/* positionUs= */ pos, SystemClock.elapsedRealtime() * 1000); mediaCodecVideoRenderer.render(/* positionUs= */ pos, SystemClock.elapsedRealtime() * 1000);
pos += 250; pos += 250;
} while (!mediaCodecVideoRenderer.isEnded()); } while (!mediaCodecVideoRenderer.isEnded());
shadowOf(testMainLooper).idle();
InOrder orderVerifier = inOrder(eventListener); InOrder orderVerifier = inOrder(eventListener);
orderVerifier.verify(eventListener).onVideoSizeChanged(anyInt(), anyInt(), anyInt(), eq(1f)); orderVerifier.verify(eventListener).onVideoSizeChanged(anyInt(), anyInt(), anyInt(), eq(1f));
...@@ -274,6 +280,7 @@ public class MediaCodecVideoRendererTest { ...@@ -274,6 +280,7 @@ public class MediaCodecVideoRendererTest {
mediaCodecVideoRenderer.render(positionUs, SystemClock.elapsedRealtime() * 1000); mediaCodecVideoRenderer.render(positionUs, SystemClock.elapsedRealtime() * 1000);
positionUs += 10; positionUs += 10;
} while (!mediaCodecVideoRenderer.isEnded()); } while (!mediaCodecVideoRenderer.isEnded());
shadowOf(testMainLooper).idle();
assertThat(currentOutputFormat).isEqualTo(VIDEO_H264); assertThat(currentOutputFormat).isEqualTo(VIDEO_H264);
} }
...@@ -300,6 +307,7 @@ public class MediaCodecVideoRendererTest { ...@@ -300,6 +307,7 @@ public class MediaCodecVideoRendererTest {
for (int i = 0; i < 10; i++) { for (int i = 0; i < 10; i++) {
mediaCodecVideoRenderer.render(/* positionUs= */ 0, SystemClock.elapsedRealtime() * 1000); mediaCodecVideoRenderer.render(/* positionUs= */ 0, SystemClock.elapsedRealtime() * 1000);
} }
shadowOf(testMainLooper).idle();
verify(eventListener).onRenderedFirstFrame(any()); verify(eventListener).onRenderedFirstFrame(any());
} }
...@@ -327,6 +335,7 @@ public class MediaCodecVideoRendererTest { ...@@ -327,6 +335,7 @@ public class MediaCodecVideoRendererTest {
for (int i = 0; i < 10; i++) { for (int i = 0; i < 10; i++) {
mediaCodecVideoRenderer.render(/* positionUs= */ 0, SystemClock.elapsedRealtime() * 1000); mediaCodecVideoRenderer.render(/* positionUs= */ 0, SystemClock.elapsedRealtime() * 1000);
} }
shadowOf(testMainLooper).idle();
verify(eventListener, never()).onRenderedFirstFrame(any()); verify(eventListener, never()).onRenderedFirstFrame(any());
} }
...@@ -354,12 +363,14 @@ public class MediaCodecVideoRendererTest { ...@@ -354,12 +363,14 @@ public class MediaCodecVideoRendererTest {
for (int i = 0; i < 10; i++) { for (int i = 0; i < 10; i++) {
mediaCodecVideoRenderer.render(/* positionUs= */ 0, SystemClock.elapsedRealtime() * 1000); mediaCodecVideoRenderer.render(/* positionUs= */ 0, SystemClock.elapsedRealtime() * 1000);
} }
shadowOf(testMainLooper).idle();
verify(eventListener).onRenderedFirstFrame(any()); verify(eventListener).onRenderedFirstFrame(any());
} }
@Test @Test
public void replaceStream_rendersFirstFrameOnlyAfterStartPosition() throws Exception { public void replaceStream_rendersFirstFrameOnlyAfterStartPosition() throws Exception {
ShadowLooper shadowLooper = shadowOf(testMainLooper);
FakeSampleStream fakeSampleStream1 = FakeSampleStream fakeSampleStream1 =
new FakeSampleStream( new FakeSampleStream(
/* mediaSourceEventDispatcher= */ null, /* mediaSourceEventDispatcher= */ null,
...@@ -404,11 +415,13 @@ public class MediaCodecVideoRendererTest { ...@@ -404,11 +415,13 @@ public class MediaCodecVideoRendererTest {
} }
// Expect only the first frame of the first stream to have been rendered. // Expect only the first frame of the first stream to have been rendered.
shadowLooper.idle();
verify(eventListener).onRenderedFirstFrame(any()); verify(eventListener).onRenderedFirstFrame(any());
// Render to the start position of the stream and verify the new first frame gets rendered (even // Render to the start position of the stream and verify the new first frame gets rendered (even
// though its sampleTimeUs is far in the future). // though its sampleTimeUs is far in the future).
mediaCodecVideoRenderer.render(/* positionUs= */ 50, SystemClock.elapsedRealtime() * 1000); mediaCodecVideoRenderer.render(/* positionUs= */ 50, SystemClock.elapsedRealtime() * 1000);
shadowLooper.idle();
verify(eventListener, times(2)).onRenderedFirstFrame(any()); verify(eventListener, times(2)).onRenderedFirstFrame(any());
} }
...@@ -455,6 +468,7 @@ public class MediaCodecVideoRendererTest { ...@@ -455,6 +468,7 @@ public class MediaCodecVideoRendererTest {
positionUs += 10; positionUs += 10;
} while (!mediaCodecVideoRenderer.isEnded()); } while (!mediaCodecVideoRenderer.isEnded());
mediaCodecVideoRenderer.stop(); mediaCodecVideoRenderer.stop();
shadowOf(testMainLooper).idle();
InOrder orderVerifier = inOrder(eventListener); InOrder orderVerifier = inOrder(eventListener);
orderVerifier.verify(eventListener).onVideoFrameProcessingOffset(anyLong(), eq(1), eq(mp4Uhd)); orderVerifier.verify(eventListener).onVideoFrameProcessingOffset(anyLong(), eq(1), eq(mp4Uhd));
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment