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 1bd84b6e10..f412695df9 100644 --- a/libraries/transformer/src/androidTest/java/androidx/media3/transformer/TransformerUltraHdrTest.java +++ b/libraries/transformer/src/androidTest/java/androidx/media3/transformer/TransformerUltraHdrTest.java @@ -48,7 +48,7 @@ import org.junit.runner.RunWith; /** * Tests for Ultra HDR support in Transformer that can run on an emulator. * - *

See {@code TransformerMhUltraHdrPixelTest} for other UltraHdr tests. + *

See {@code TransformerMhUltraHdrTest} for other UltraHdr tests. */ @RunWith(AndroidJUnit4.class) public final class TransformerUltraHdrTest { diff --git a/libraries/transformer/src/androidTest/java/androidx/media3/transformer/mh/TransformerMhUltraHdrPixelTest.java b/libraries/transformer/src/androidTest/java/androidx/media3/transformer/mh/TransformerMhUltraHdrTest.java similarity index 78% rename from libraries/transformer/src/androidTest/java/androidx/media3/transformer/mh/TransformerMhUltraHdrPixelTest.java rename to libraries/transformer/src/androidTest/java/androidx/media3/transformer/mh/TransformerMhUltraHdrTest.java index 08d4debd12..a8301710c3 100644 --- a/libraries/transformer/src/androidTest/java/androidx/media3/transformer/mh/TransformerMhUltraHdrPixelTest.java +++ b/libraries/transformer/src/androidTest/java/androidx/media3/transformer/mh/TransformerMhUltraHdrTest.java @@ -17,29 +17,21 @@ package androidx.media3.transformer.mh; -import static androidx.media3.test.utils.BitmapPixelTestUtil.MAXIMUM_AVERAGE_PIXEL_ABSOLUTE_DIFFERENCE_LUMA; -import static androidx.media3.test.utils.BitmapPixelTestUtil.getBitmapAveragePixelAbsoluteDifferenceFp16; -import static androidx.media3.test.utils.BitmapPixelTestUtil.maybeSaveTestBitmap; -import static androidx.media3.test.utils.BitmapPixelTestUtil.readBitmap; 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.extractBitmapsFromVideo; 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; import static androidx.media3.transformer.SequenceEffectTestUtil.clippedVideo; import static androidx.media3.transformer.SequenceEffectTestUtil.createComposition; import static androidx.media3.transformer.SequenceEffectTestUtil.oneFrameFromImage; +import static androidx.media3.transformer.mh.HdrCapabilitiesUtil.assumeDeviceSupportsOpenGlToneMapping; import static androidx.test.core.app.ApplicationProvider.getApplicationContext; import static com.google.common.truth.Truth.assertThat; -import static com.google.common.truth.Truth.assertWithMessage; import android.content.Context; -import android.graphics.Bitmap; -import android.graphics.Bitmap.Config; -import androidx.annotation.RequiresApi; import androidx.media3.common.C; import androidx.media3.common.ColorInfo; import androidx.media3.common.util.Util; @@ -54,7 +46,6 @@ import androidx.media3.transformer.TransformerAndroidTestRunner; import androidx.test.core.app.ApplicationProvider; import androidx.test.ext.junit.runners.AndroidJUnit4; import java.io.IOException; -import java.util.List; import org.json.JSONException; import org.junit.AssumptionViolatedException; import org.junit.Before; @@ -65,11 +56,9 @@ import org.junit.runner.RunWith; /** Tests for Ultra HDR support in Transformer that should only run in mobile harness. */ @RunWith(AndroidJUnit4.class) -public final class TransformerMhUltraHdrPixelTest { +public final class TransformerMhUltraHdrTest { private static final int ONE_FRAME_END_POSITION_MS = 30; - private static final String PNG_ASSET_BASE_PATH = - "test-generated-goldens/TransformerUltraHdrPixelTest"; @Rule public final TestName testName = new TestName(); private final Context context = ApplicationProvider.getApplicationContext(); @@ -99,8 +88,6 @@ public final class TransformerMhUltraHdrPixelTest { retrieveTrackFormat(context, result.filePath, C.TRACK_TYPE_VIDEO).colorInfo; assertThat(colorInfo.colorSpace).isEqualTo(C.COLOR_SPACE_BT2020); assertThat(colorInfo.colorTransfer).isEqualTo(C.COLOR_TRANSFER_HLG); - assertFp16BitmapsMatchExpectedAndSave( - extractBitmapsFromVideo(context, result.filePath, Config.RGBA_F16), testId); } @Test @@ -122,8 +109,6 @@ public final class TransformerMhUltraHdrPixelTest { retrieveTrackFormat(context, result.filePath, C.TRACK_TYPE_VIDEO).colorInfo; assertThat(colorInfo.colorSpace).isEqualTo(C.COLOR_SPACE_BT2020); assertThat(colorInfo.colorTransfer).isEqualTo(C.COLOR_TRANSFER_HLG); - assertFp16BitmapsMatchExpectedAndSave( - extractBitmapsFromVideo(context, result.filePath, Config.RGBA_F16), testId); } @Test @@ -149,6 +134,7 @@ public final class TransformerMhUltraHdrPixelTest { @Test public void exportTonemappedHdrVideoThenUltraHdrImage_exportsSdr() throws Exception { + assumeDeviceSupportsOpenGlToneMapping(testId, MP4_ASSET_1080P_5_SECOND_HLG10_FORMAT); Composition composition = createUltraHdrComposition( /* tonemap= */ true, @@ -167,27 +153,6 @@ public final class TransformerMhUltraHdrPixelTest { assertThat(colorInfo.colorTransfer).isEqualTo(C.COLOR_TRANSFER_SDR); } - @RequiresApi(29) // getBitmapAveragePixelAbsoluteDifferenceFp16() - public static void assertFp16BitmapsMatchExpectedAndSave( - List actualBitmaps, String testId) throws IOException { - for (int i = 0; i < actualBitmaps.size(); i++) { - maybeSaveTestBitmap( - testId, /* bitmapLabel= */ String.valueOf(i), actualBitmaps.get(i), /* path= */ null); - } - - for (int i = 0; i < actualBitmaps.size(); i++) { - String subTestId = testId + "_" + i; - String expectedPath = Util.formatInvariant("%s/%s.png", PNG_ASSET_BASE_PATH, subTestId); - Bitmap expectedBitmap = readBitmap(expectedPath); - - float averagePixelAbsoluteDifference = - getBitmapAveragePixelAbsoluteDifferenceFp16(expectedBitmap, actualBitmaps.get(i)); - assertWithMessage("For expected bitmap " + expectedPath) - .that(averagePixelAbsoluteDifference) - .isAtMost(MAXIMUM_AVERAGE_PIXEL_ABSOLUTE_DIFFERENCE_LUMA); - } - } - private static Composition createUltraHdrComposition( boolean tonemap, EditedMediaItem editedMediaItem, EditedMediaItem... editedMediaItems) { Composition.Builder builder = diff --git a/libraries/transformer/src/main/java/androidx/media3/transformer/TransformerInternal.java b/libraries/transformer/src/main/java/androidx/media3/transformer/TransformerInternal.java index 7a26c9d2f5..1adf5c1de6 100644 --- a/libraries/transformer/src/main/java/androidx/media3/transformer/TransformerInternal.java +++ b/libraries/transformer/src/main/java/androidx/media3/transformer/TransformerInternal.java @@ -703,7 +703,7 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull; firstAssetLoaderInputFormat.buildUpon().setColorInfo(decoderOutputColor).build(); } else if (MimeTypes.isImage(assetLoaderOutputFormat.sampleMimeType)) { firstFormat = - firstAssetLoaderInputFormat + assetLoaderOutputFormat .buildUpon() .setColorInfo(getValidColor(assetLoaderOutputFormat.colorInfo)) .build();