diff --git a/libraries/transformer/src/androidTest/java/androidx/media3/transformer/AndroidTestUtil.java b/libraries/transformer/src/androidTest/java/androidx/media3/transformer/AndroidTestUtil.java index 2bbd1e0884..8fb3ae288c 100644 --- a/libraries/transformer/src/androidTest/java/androidx/media3/transformer/AndroidTestUtil.java +++ b/libraries/transformer/src/androidTest/java/androidx/media3/transformer/AndroidTestUtil.java @@ -37,6 +37,8 @@ import org.json.JSONObject; /** Utilities for instrumentation tests. */ public final class AndroidTestUtil { + private static final String TAG = "AndroidTestUtil"; + // TODO(b/228865104): Add device capability based test skipping. public static final String MP4_ASSET_URI_STRING = "asset:///media/mp4/sample.mp4"; public static final Format MP4_ASSET_FORMAT = @@ -136,7 +138,7 @@ public final class AndroidTestUtil { */ public static void recordTestSkipped(Context context, String testId, String reason) throws JSONException, IOException { - Log.i(testId, reason); + Log.i(TAG, testId + ": " + reason); JSONObject testJson = new JSONObject(); testJson.put("skipReason", reason); @@ -216,7 +218,7 @@ public final class AndroidTestUtil { // Log contents as well as writing to file, for easier visibility on individual device testing. for (String line : Util.split(analysisContents, "\n")) { - Log.i(testId, line); + Log.i(TAG, testId + ": " + line); } File analysisFile = createExternalCacheFile(context, /* fileName= */ testId + "-result.txt"); diff --git a/libraries/transformer/src/androidTest/java/androidx/media3/transformer/TransformerAndroidTestRunner.java b/libraries/transformer/src/androidTest/java/androidx/media3/transformer/TransformerAndroidTestRunner.java index 45d3bd77f6..d52c178a6b 100644 --- a/libraries/transformer/src/androidTest/java/androidx/media3/transformer/TransformerAndroidTestRunner.java +++ b/libraries/transformer/src/androidTest/java/androidx/media3/transformer/TransformerAndroidTestRunner.java @@ -26,6 +26,7 @@ import androidx.media3.common.Format; import androidx.media3.common.MediaItem; import androidx.media3.common.util.Log; import androidx.media3.common.util.SystemClock; +import androidx.media3.common.util.Util; import androidx.test.platform.app.InstrumentationRegistry; import java.io.File; import java.io.IOException; @@ -40,7 +41,7 @@ import org.json.JSONObject; /** An android instrumentation test runner for {@link Transformer}. */ public class TransformerAndroidTestRunner { - private static final String TAG_PREFIX = "TransformerAndroidTest_"; + private static final String TAG = "TransformerAndroidTest"; /** The default transformation timeout value. */ public static final int DEFAULT_TIMEOUT_SECONDS = 120; @@ -299,7 +300,7 @@ public class TransformerAndroidTestRunner { if (calculateSsim) { double ssim = SsimHelper.calculate( - context, /* expectedVideoPath= */ uriString, outputVideoFile.getPath()); + context, /* referenceVideoPath= */ uriString, outputVideoFile.getPath()); resultBuilder.setSsim(ssim); } } catch (InterruptedException interruptedException) { @@ -308,15 +309,19 @@ public class TransformerAndroidTestRunner { // TransformationTestResult. throw interruptedException; } catch (Throwable analysisFailure) { - // Catch all (checked and unchecked) failures throw by the SsimHelper and process them as - // part of the TransformationTestResult. - Exception analysisException = - analysisFailure instanceof Exception - ? (Exception) analysisFailure - : new IllegalStateException(analysisFailure); + if (Util.SDK_INT == 21 && "Nexus 5".equals(Util.MODEL)) { // b/233584640 + Log.i(TAG, testId + ": Skipping SSIM calculation due to known device-specific issue"); + } else { + // Catch all (checked and unchecked) failures throw by the SsimHelper and process them as + // part of the TransformationTestResult. + Exception analysisException = + analysisFailure instanceof Exception + ? (Exception) analysisFailure + : new IllegalStateException(analysisFailure); - resultBuilder.setAnalysisException(analysisException); - Log.e(TAG_PREFIX + testId, "SSIM calculation failed.", analysisException); + resultBuilder.setAnalysisException(analysisException); + Log.e(TAG, testId + ": SSIM calculation failed.", analysisException); + } } return resultBuilder.build(); } diff --git a/libraries/transformer/src/androidTest/java/androidx/media3/transformer/mh/TranscodeQualityTest.java b/libraries/transformer/src/androidTest/java/androidx/media3/transformer/mh/TranscodeQualityTest.java index acef1629d8..d42d85ee92 100644 --- a/libraries/transformer/src/androidTest/java/androidx/media3/transformer/mh/TranscodeQualityTest.java +++ b/libraries/transformer/src/androidTest/java/androidx/media3/transformer/mh/TranscodeQualityTest.java @@ -60,7 +60,9 @@ public final class TranscodeQualityTest { .build() .run(testId, AndroidTestUtil.MP4_ASSET_WITH_INCREASING_TIMESTAMPS_URI_STRING); - assertThat(result.ssim).isGreaterThan(0.90); + if (result.ssim != TransformationTestResult.SSIM_UNSET) { + assertThat(result.ssim).isGreaterThan(0.90); + } } @Test @@ -92,7 +94,9 @@ public final class TranscodeQualityTest { .build() .run(testId, AndroidTestUtil.MP4_ASSET_WITH_INCREASING_TIMESTAMPS_URI_STRING); - assertThat(result.ssim).isGreaterThan(0.90); + if (result.ssim != TransformationTestResult.SSIM_UNSET) { + assertThat(result.ssim).isGreaterThan(0.90); + } } @Test @@ -119,6 +123,8 @@ public final class TranscodeQualityTest { testId, AndroidTestUtil.MP4_ASSET_WITH_INCREASING_TIMESTAMPS_320W_240H_15S_URI_STRING); - assertThat(result.ssim).isGreaterThan(0.90); + if (result.ssim != TransformationTestResult.SSIM_UNSET) { + assertThat(result.ssim).isGreaterThan(0.90); + } } }