Commit 61a5ca48 by ibaker Committed by marcbaechinger

Reduce the diff between different versions of GTS tests

This means there are fewer changes required when exporting these tests
as part of the GTS suite run by device manufacturers.

PiperOrigin-RevId: 367230977
parent d853379b
...@@ -20,8 +20,7 @@ import com.google.android.exoplayer2.util.Util; ...@@ -20,8 +20,7 @@ import com.google.android.exoplayer2.util.Util;
/** Test data for DASH tests. */ /** Test data for DASH tests. */
/* package */ final class DashTestData { /* package */ final class DashTestData {
private static final String BASE_URL = private static final String BASE_URL = getBaseUrl();
"https://storage.googleapis.com/exoplayer-test-media-1/gen-4/";
private static final String BASE_URL_SCREENS = BASE_URL + "screens/dash-vod-single-segment/"; private static final String BASE_URL_SCREENS = BASE_URL + "screens/dash-vod-single-segment/";
private static final String BASE_URL_COMMON_ENCRYPTION = BASE_URL + "common-encryption/"; private static final String BASE_URL_COMMON_ENCRYPTION = BASE_URL + "common-encryption/";
...@@ -161,6 +160,10 @@ import com.google.android.exoplayer2.util.Util; ...@@ -161,6 +160,10 @@ import com.google.android.exoplayer2.util.Util;
} }
} }
private static String getBaseUrl() {
return "https://storage.googleapis.com/exoplayer-test-media-1/gen-4/";
}
private DashTestData() { private DashTestData() {
} }
......
...@@ -23,6 +23,7 @@ import android.view.Surface; ...@@ -23,6 +23,7 @@ import android.view.Surface;
import android.widget.FrameLayout; import android.widget.FrameLayout;
import androidx.annotation.RequiresApi; import androidx.annotation.RequiresApi;
import androidx.test.core.app.ApplicationProvider; import androidx.test.core.app.ApplicationProvider;
import androidx.test.platform.app.InstrumentationRegistry;
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.MediaItem; import com.google.android.exoplayer2.MediaItem;
...@@ -186,7 +187,9 @@ import java.util.List; ...@@ -186,7 +187,9 @@ import java.util.List;
private DashHostedTest createDashHostedTest( private DashHostedTest createDashHostedTest(
boolean canIncludeAdditionalVideoFormats, boolean isCddLimitedRetry) { boolean canIncludeAdditionalVideoFormats, boolean isCddLimitedRetry) {
MetricsLogger metricsLogger = MetricsLogger.Factory.createDefault(tag); MetricsLogger metricsLogger =
MetricsLogger.DEFAULT_FACTORY.create(
InstrumentationRegistry.getInstrumentation(), tag, streamName);
return new DashHostedTest(tag, streamName, manifestUrl, metricsLogger, fullPlaybackNoSeeking, return new DashHostedTest(tag, streamName, manifestUrl, metricsLogger, fullPlaybackNoSeeking,
audioFormat, canIncludeAdditionalVideoFormats, isCddLimitedRetry, actionSchedule, audioFormat, canIncludeAdditionalVideoFormats, isCddLimitedRetry, actionSchedule,
offlineLicenseKeySetId, widevineLicenseUrl, useL1Widevine, dataSourceFactory, offlineLicenseKeySetId, widevineLicenseUrl, useL1Widevine, dataSourceFactory,
...@@ -344,15 +347,20 @@ import java.util.List; ...@@ -344,15 +347,20 @@ import java.util.List;
videoCounters.inputBufferCount - 1, videoCounters.inputBufferCount); videoCounters.inputBufferCount - 1, videoCounters.inputBufferCount);
} }
try { try {
int droppedFrameLimit = (int) Math.ceil(MAX_DROPPED_VIDEO_FRAME_FRACTION if (!shouldSkipDroppedOutputBufferPerformanceAssertions()) {
* DecoderCountersUtil.getTotalBufferCount(videoCounters)); int droppedFrameLimit =
// Assert that performance is acceptable. (int)
// Assert that total dropped frames were within limit. Math.ceil(
DecoderCountersUtil.assertDroppedBufferLimit(tag + VIDEO_TAG_SUFFIX, videoCounters, MAX_DROPPED_VIDEO_FRAME_FRACTION
droppedFrameLimit); * DecoderCountersUtil.getTotalBufferCount(videoCounters));
// Assert that consecutive dropped frames were within limit. // Assert that performance is acceptable.
DecoderCountersUtil.assertConsecutiveDroppedBufferLimit(tag + VIDEO_TAG_SUFFIX, // Assert that total dropped frames were within limit.
videoCounters, MAX_CONSECUTIVE_DROPPED_VIDEO_FRAMES); DecoderCountersUtil.assertDroppedBufferLimit(
tag + VIDEO_TAG_SUFFIX, videoCounters, droppedFrameLimit);
// Assert that consecutive dropped frames were within limit.
DecoderCountersUtil.assertConsecutiveDroppedBufferLimit(
tag + VIDEO_TAG_SUFFIX, videoCounters, MAX_CONSECUTIVE_DROPPED_VIDEO_FRAMES);
}
} catch (AssertionError e) { } catch (AssertionError e) {
if (trackSelector.includedAdditionalVideoFormats) { if (trackSelector.includedAdditionalVideoFormats) {
// Retry limiting to CDD mandated formats (b/28220076). // Retry limiting to CDD mandated formats (b/28220076).
...@@ -365,6 +373,11 @@ import java.util.List; ...@@ -365,6 +373,11 @@ import java.util.List;
} }
} }
/** Provides a hook to skip dropped output buffer assertions in specific circumstances. */
private static boolean shouldSkipDroppedOutputBufferPerformanceAssertions() {
return false;
}
private static final class DashTestTrackSelector extends DefaultTrackSelector { private static final class DashTestTrackSelector extends DefaultTrackSelector {
private final String tag; private final String tag;
......
...@@ -22,6 +22,7 @@ import android.media.MediaCodecInfo.CodecProfileLevel; ...@@ -22,6 +22,7 @@ import android.media.MediaCodecInfo.CodecProfileLevel;
import android.media.MediaCodecInfo.VideoCapabilities; import android.media.MediaCodecInfo.VideoCapabilities;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
import androidx.test.ext.junit.runners.AndroidJUnit4; import androidx.test.ext.junit.runners.AndroidJUnit4;
import androidx.test.platform.app.InstrumentationRegistry;
import com.google.android.exoplayer2.mediacodec.MediaCodecInfo; import com.google.android.exoplayer2.mediacodec.MediaCodecInfo;
import com.google.android.exoplayer2.mediacodec.MediaCodecUtil; import com.google.android.exoplayer2.mediacodec.MediaCodecUtil;
import com.google.android.exoplayer2.mediacodec.MediaCodecUtil.DecoderQueryException; import com.google.android.exoplayer2.mediacodec.MediaCodecUtil.DecoderQueryException;
...@@ -43,7 +44,11 @@ public class EnumerateDecodersTest { ...@@ -43,7 +44,11 @@ public class EnumerateDecodersTest {
@Before @Before
public void setUp() { public void setUp() {
metricsLogger = MetricsLogger.Factory.createDefault(TAG); metricsLogger =
MetricsLogger.DEFAULT_FACTORY.create(
InstrumentationRegistry.getInstrumentation(),
TAG,
/* streamName= */ "enumerate-decoders");
} }
@Test @Test
......
...@@ -20,6 +20,9 @@ import com.google.android.exoplayer2.util.Log; ...@@ -20,6 +20,9 @@ import com.google.android.exoplayer2.util.Log;
/** Implementation of {@link MetricsLogger} that prints the metrics to logcat. */ /** Implementation of {@link MetricsLogger} that prints the metrics to logcat. */
/* package */ final class LogcatMetricsLogger implements MetricsLogger { /* package */ final class LogcatMetricsLogger implements MetricsLogger {
public static final Factory FACTORY =
(instrumentation, tag, streamName) -> new LogcatMetricsLogger(tag);
private final String tag; private final String tag;
public LogcatMetricsLogger(String tag) { public LogcatMetricsLogger(String tag) {
......
...@@ -15,9 +15,17 @@ ...@@ -15,9 +15,17 @@
*/ */
package com.google.android.exoplayer2.playbacktests.gts; package com.google.android.exoplayer2.playbacktests.gts;
import android.app.Instrumentation;
/** Metric logging interface for playback tests. */ /** Metric logging interface for playback tests. */
/* package */ interface MetricsLogger { /* package */ interface MetricsLogger {
interface Factory {
MetricsLogger create(Instrumentation instrumentation, String tag, String streamName);
}
Factory DEFAULT_FACTORY = LogcatMetricsLogger.FACTORY;
String KEY_FRAMES_DROPPED_COUNT = "frames_dropped_count"; String KEY_FRAMES_DROPPED_COUNT = "frames_dropped_count";
String KEY_FRAMES_RENDERED_COUNT = "frames_rendered_count"; String KEY_FRAMES_RENDERED_COUNT = "frames_rendered_count";
String KEY_FRAMES_SKIPPED_COUNT = "frames_skipped_count"; String KEY_FRAMES_SKIPPED_COUNT = "frames_skipped_count";
...@@ -53,22 +61,4 @@ package com.google.android.exoplayer2.playbacktests.gts; ...@@ -53,22 +61,4 @@ package com.google.android.exoplayer2.playbacktests.gts;
* Closes the logger. * Closes the logger.
*/ */
void close(); void close();
/**
* A factory for instantiating {@link MetricsLogger} instances.
*/
final class Factory {
private Factory() {}
/**
* Obtains a new instance of {@link MetricsLogger}.
*
* @param tag The tag to be used for logcat logs.
*/
public static MetricsLogger createDefault(String tag) {
return new LogcatMetricsLogger(tag);
}
}
} }
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