Allow bt601 as sdr colorspace when checking sdr colors

PiperOrigin-RevId: 624877126
This commit is contained in:
tofunmi 2024-04-15 01:55:31 -07:00 committed by Copybara-Service
parent 71e7e0f2cf
commit c74603b66b
3 changed files with 20 additions and 26 deletions

View File

@ -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<Bitmap> extractBitmapsFromVideo(Context context, String filePath)
throws IOException, InterruptedException {
return extractBitmapsFromVideo(context, filePath, Config.ARGB_8888);

View File

@ -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(

View File

@ -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(