From c74603b66bfc4b4a53f03d369e9ea98f00c22039 Mon Sep 17 00:00:00 2001 From: tofunmi Date: Mon, 15 Apr 2024 01:55:31 -0700 Subject: [PATCH] Allow bt601 as sdr colorspace when checking sdr colors PiperOrigin-RevId: 624877126 --- .../media3/transformer/AndroidTestUtil.java | 12 ++++++++ .../transformer/TransformerUltraHdrTest.java | 28 ++++--------------- .../mh/TransformerMhUltraHdrTest.java | 6 ++-- 3 files changed, 20 insertions(+), 26 deletions(-) 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 8bc61f3d0c..fb304a3fdf 100644 --- a/libraries/transformer/src/androidTest/java/androidx/media3/transformer/AndroidTestUtil.java +++ b/libraries/transformer/src/androidTest/java/androidx/media3/transformer/AndroidTestUtil.java @@ -22,6 +22,8 @@ import static androidx.media3.common.MimeTypes.VIDEO_H265; import static androidx.media3.common.util.Assertions.checkNotNull; import static androidx.media3.common.util.Assertions.checkState; import static androidx.media3.common.util.Util.SDK_INT; +import static androidx.media3.test.utils.TestUtil.retrieveTrackFormat; +import static com.google.common.truth.Truth.assertThat; import static org.junit.Assume.assumeFalse; import android.content.Context; @@ -52,6 +54,7 @@ import com.google.common.collect.ImmutableList; import java.io.File; import java.io.FileWriter; import java.io.IOException; +import java.util.concurrent.ExecutionException; import org.json.JSONException; import org.json.JSONObject; import org.junit.AssumptionViolatedException; @@ -633,6 +636,15 @@ public final class AndroidTestUtil { writeTestSummaryToFile(context, testId, testJson); } + public static void assertSdrColors(Context context, String filePath) + throws ExecutionException, InterruptedException { + ColorInfo colorInfo = retrieveTrackFormat(context, filePath, C.TRACK_TYPE_VIDEO).colorInfo; + assertThat(colorInfo.colorTransfer).isEqualTo(C.COLOR_TRANSFER_SDR); + // Before API 34 some encoders output a BT.601 bitstream even though we request BT.709 for SDR + // output, so allow both color spaces in output files when checking for SDR. + assertThat(colorInfo.colorSpace).isAnyOf(C.COLOR_SPACE_BT709, C.COLOR_SPACE_BT601); + } + public static ImmutableList extractBitmapsFromVideo(Context context, String filePath) throws IOException, InterruptedException { return extractBitmapsFromVideo(context, filePath, Config.ARGB_8888); diff --git a/libraries/transformer/src/androidTest/java/androidx/media3/transformer/TransformerUltraHdrTest.java b/libraries/transformer/src/androidTest/java/androidx/media3/transformer/TransformerUltraHdrTest.java index d0a526c3cd..da595ab864 100644 --- a/libraries/transformer/src/androidTest/java/androidx/media3/transformer/TransformerUltraHdrTest.java +++ b/libraries/transformer/src/androidTest/java/androidx/media3/transformer/TransformerUltraHdrTest.java @@ -17,9 +17,9 @@ package androidx.media3.transformer; -import static androidx.media3.test.utils.TestUtil.retrieveTrackFormat; import static androidx.media3.transformer.AndroidTestUtil.JPG_ASSET_URI_STRING; import static androidx.media3.transformer.AndroidTestUtil.ULTRA_HDR_URI_STRING; +import static androidx.media3.transformer.AndroidTestUtil.assertSdrColors; import static androidx.media3.transformer.AndroidTestUtil.assumeFormatsSupported; import static androidx.media3.transformer.Composition.HDR_MODE_TONE_MAP_HDR_TO_SDR_USING_OPEN_GL; import static androidx.media3.transformer.SequenceEffectTestUtil.NO_EFFECT; @@ -30,7 +30,6 @@ import static org.junit.Assume.assumeTrue; import android.content.Context; import android.graphics.Bitmap; import android.net.Uri; -import androidx.media3.common.C; import androidx.media3.common.ColorInfo; import androidx.media3.common.Format; import androidx.media3.common.MimeTypes; @@ -96,10 +95,7 @@ public final class TransformerUltraHdrTest { .run(testId, composition); assertThat(result.filePath).isNotNull(); - ColorInfo colorInfo = - retrieveTrackFormat(context, result.filePath, C.TRACK_TYPE_VIDEO).colorInfo; - assertThat(colorInfo.colorSpace).isEqualTo(C.COLOR_SPACE_BT709); - assertThat(colorInfo.colorTransfer).isEqualTo(C.COLOR_TRANSFER_SDR); + assertSdrColors(context, result.filePath); } @Test @@ -120,10 +116,7 @@ public final class TransformerUltraHdrTest { .run(testId, composition); assertThat(result.filePath).isNotNull(); - ColorInfo colorInfo = - retrieveTrackFormat(context, result.filePath, C.TRACK_TYPE_VIDEO).colorInfo; - assertThat(colorInfo.colorSpace).isEqualTo(C.COLOR_SPACE_BT709); - assertThat(colorInfo.colorTransfer).isEqualTo(C.COLOR_TRANSFER_SDR); + assertSdrColors(context, result.filePath); } @Test @@ -145,10 +138,7 @@ public final class TransformerUltraHdrTest { .run(testId, composition); assertThat(result.filePath).isNotNull(); - ColorInfo colorInfo = - retrieveTrackFormat(context, result.filePath, C.TRACK_TYPE_VIDEO).colorInfo; - assertThat(colorInfo.colorSpace).isEqualTo(C.COLOR_SPACE_BT709); - assertThat(colorInfo.colorTransfer).isEqualTo(C.COLOR_TRANSFER_SDR); + assertSdrColors(context, result.filePath); } @Test @@ -163,10 +153,7 @@ public final class TransformerUltraHdrTest { .run(testId, composition); assertThat(result.filePath).isNotNull(); - ColorInfo colorInfo = - retrieveTrackFormat(context, result.filePath, C.TRACK_TYPE_VIDEO).colorInfo; - assertThat(colorInfo.colorSpace).isEqualTo(C.COLOR_SPACE_BT709); - assertThat(colorInfo.colorTransfer).isEqualTo(C.COLOR_TRANSFER_SDR); + assertSdrColors(context, result.filePath); } @Test @@ -183,10 +170,7 @@ public final class TransformerUltraHdrTest { .run(testId, composition); assertThat(result.filePath).isNotNull(); - ColorInfo colorInfo = - retrieveTrackFormat(context, result.filePath, C.TRACK_TYPE_VIDEO).colorInfo; - assertThat(colorInfo.colorSpace).isEqualTo(C.COLOR_SPACE_BT709); - assertThat(colorInfo.colorTransfer).isEqualTo(C.COLOR_TRANSFER_SDR); + assertSdrColors(context, result.filePath); } private static Composition createUltraHdrComposition( diff --git a/libraries/transformer/src/androidTest/java/androidx/media3/transformer/mh/TransformerMhUltraHdrTest.java b/libraries/transformer/src/androidTest/java/androidx/media3/transformer/mh/TransformerMhUltraHdrTest.java index e6c18259d1..712d91df33 100644 --- a/libraries/transformer/src/androidTest/java/androidx/media3/transformer/mh/TransformerMhUltraHdrTest.java +++ b/libraries/transformer/src/androidTest/java/androidx/media3/transformer/mh/TransformerMhUltraHdrTest.java @@ -21,6 +21,7 @@ import static androidx.media3.test.utils.TestUtil.retrieveTrackFormat; import static androidx.media3.transformer.AndroidTestUtil.MP4_ASSET_1080P_5_SECOND_HLG10; import static androidx.media3.transformer.AndroidTestUtil.MP4_ASSET_1080P_5_SECOND_HLG10_FORMAT; import static androidx.media3.transformer.AndroidTestUtil.ULTRA_HDR_URI_STRING; +import static androidx.media3.transformer.AndroidTestUtil.assertSdrColors; import static androidx.media3.transformer.AndroidTestUtil.recordTestSkipped; import static androidx.media3.transformer.Composition.HDR_MODE_TONE_MAP_HDR_TO_SDR_USING_OPEN_GL; import static androidx.media3.transformer.SequenceEffectTestUtil.NO_EFFECT; @@ -146,10 +147,7 @@ public final class TransformerMhUltraHdrTest { .run(testId, composition); assertThat(result.filePath).isNotNull(); - ColorInfo colorInfo = - retrieveTrackFormat(context, result.filePath, C.TRACK_TYPE_VIDEO).colorInfo; - assertThat(colorInfo.colorSpace).isEqualTo(C.COLOR_SPACE_BT709); - assertThat(colorInfo.colorTransfer).isEqualTo(C.COLOR_TRANSFER_SDR); + assertSdrColors(context, result.filePath); } private static Composition createUltraHdrComposition(