mirror of
https://github.com/samsonjs/media.git
synced 2026-04-12 12:25:47 +00:00
Use more realistic time values for MediaCodecVideoRendererTest
This test became flaky aftercbb6878f9fbecause some of the unrealistic frame times ended up on the same release time. Using realistic numbers avoids the flakiness. PiperOrigin-RevId: 512566469 (cherry picked from commit13700e0aec)
This commit is contained in:
parent
29eeca3359
commit
5862fe4d8c
1 changed files with 16 additions and 11 deletions
|
|
@ -19,6 +19,7 @@ import static android.view.Display.DEFAULT_DISPLAY;
|
|||
import static com.google.android.exoplayer2.testutil.FakeSampleStream.FakeSampleStreamItem.END_OF_STREAM_ITEM;
|
||||
import static com.google.android.exoplayer2.testutil.FakeSampleStream.FakeSampleStreamItem.format;
|
||||
import static com.google.android.exoplayer2.testutil.FakeSampleStream.FakeSampleStreamItem.oneByteSample;
|
||||
import static com.google.android.exoplayer2.util.Util.msToUs;
|
||||
import static com.google.common.truth.Truth.assertThat;
|
||||
import static org.mockito.ArgumentMatchers.anyLong;
|
||||
import static org.mockito.ArgumentMatchers.eq;
|
||||
|
|
@ -58,6 +59,7 @@ import com.google.android.exoplayer2.util.MimeTypes;
|
|||
import com.google.common.collect.ImmutableList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
import java.util.stream.Collectors;
|
||||
import org.junit.After;
|
||||
import org.junit.Before;
|
||||
|
|
@ -71,6 +73,7 @@ import org.mockito.junit.MockitoRule;
|
|||
import org.robolectric.Shadows;
|
||||
import org.robolectric.shadows.ShadowDisplay;
|
||||
import org.robolectric.shadows.ShadowLooper;
|
||||
import org.robolectric.shadows.ShadowSystemClock;
|
||||
|
||||
/** Unit test for {@link MediaCodecVideoRenderer}. */
|
||||
@RunWith(AndroidJUnit4.class)
|
||||
|
|
@ -260,7 +263,7 @@ public class MediaCodecVideoRendererTest {
|
|||
/* initialFormat= */ pAsp1,
|
||||
ImmutableList.of(oneByteSample(/* timeUs= */ 0, C.BUFFER_FLAG_KEY_FRAME)));
|
||||
fakeSampleStream.writeData(/* startPositionUs= */ 0);
|
||||
|
||||
SystemClock.setCurrentTimeMillis(876_000_000);
|
||||
mediaCodecVideoRenderer.enable(
|
||||
RendererConfiguration.DEFAULT,
|
||||
new Format[] {pAsp1, pAsp2, pAsp3},
|
||||
|
|
@ -271,25 +274,27 @@ public class MediaCodecVideoRendererTest {
|
|||
/* startPositionUs= */ 0,
|
||||
/* offsetUs */ 0);
|
||||
mediaCodecVideoRenderer.start();
|
||||
mediaCodecVideoRenderer.render(/* positionUs= */ 0, SystemClock.elapsedRealtime() * 1000);
|
||||
mediaCodecVideoRenderer.render(/* positionUs= */ 250, SystemClock.elapsedRealtime() * 1000);
|
||||
mediaCodecVideoRenderer.render(/* positionUs= */ 0, msToUs(SystemClock.elapsedRealtime()));
|
||||
ShadowSystemClock.advanceBy(10, TimeUnit.MILLISECONDS);
|
||||
mediaCodecVideoRenderer.render(/* positionUs= */ 10_000, msToUs(SystemClock.elapsedRealtime()));
|
||||
|
||||
fakeSampleStream.append(
|
||||
ImmutableList.of(
|
||||
format(pAsp2),
|
||||
oneByteSample(/* timeUs= */ 5_000),
|
||||
oneByteSample(/* timeUs= */ 10_000),
|
||||
format(pAsp3),
|
||||
oneByteSample(/* timeUs= */ 15_000),
|
||||
oneByteSample(/* timeUs= */ 20_000),
|
||||
oneByteSample(/* timeUs= */ 40_000),
|
||||
format(pAsp3),
|
||||
oneByteSample(/* timeUs= */ 60_000),
|
||||
oneByteSample(/* timeUs= */ 80_000),
|
||||
END_OF_STREAM_ITEM));
|
||||
fakeSampleStream.writeData(/* startPositionUs= */ 5_000);
|
||||
fakeSampleStream.writeData(/* startPositionUs= */ 20_000);
|
||||
mediaCodecVideoRenderer.setCurrentStreamFinal();
|
||||
|
||||
int pos = 500;
|
||||
int positionUs = 20_000;
|
||||
do {
|
||||
mediaCodecVideoRenderer.render(/* positionUs= */ pos, SystemClock.elapsedRealtime() * 1000);
|
||||
pos += 250;
|
||||
ShadowSystemClock.advanceBy(10, TimeUnit.MILLISECONDS);
|
||||
mediaCodecVideoRenderer.render(positionUs, msToUs(SystemClock.elapsedRealtime()));
|
||||
positionUs += 10_000;
|
||||
} while (!mediaCodecVideoRenderer.isEnded());
|
||||
shadowOf(testMainLooper).idle();
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue