mirror of
https://github.com/androidx/media.git
synced 2025-04-30 06:46:50 +08:00
Test: Use AssumptionViolatedException for HDR capability check.
Also, use a common util method PiperOrigin-RevId: 616815502
This commit is contained in:
parent
e8612a0c02
commit
2fa38d15dd
@ -26,7 +26,7 @@ import static androidx.media3.transformer.AndroidTestUtil.MP4_ASSET_1080P_5_SECO
|
|||||||
import static androidx.media3.transformer.AndroidTestUtil.MP4_ASSET_720P_4_SECOND_HDR10_FORMAT;
|
import static androidx.media3.transformer.AndroidTestUtil.MP4_ASSET_720P_4_SECOND_HDR10_FORMAT;
|
||||||
import static androidx.media3.transformer.AndroidTestUtil.MP4_ASSET_FORMAT;
|
import static androidx.media3.transformer.AndroidTestUtil.MP4_ASSET_FORMAT;
|
||||||
import static androidx.media3.transformer.AndroidTestUtil.recordTestSkipped;
|
import static androidx.media3.transformer.AndroidTestUtil.recordTestSkipped;
|
||||||
import static androidx.media3.transformer.EncoderUtil.getSupportedEncodersForHdrEditing;
|
import static androidx.media3.transformer.mh.HdrCapabilitiesUtil.assumeDeviceSupportsHdrEditing;
|
||||||
import static androidx.media3.transformer.mh.UnoptimizedGlEffect.NO_OP_EFFECT;
|
import static androidx.media3.transformer.mh.UnoptimizedGlEffect.NO_OP_EFFECT;
|
||||||
import static androidx.test.core.app.ApplicationProvider.getApplicationContext;
|
import static androidx.test.core.app.ApplicationProvider.getApplicationContext;
|
||||||
import static com.google.common.truth.Truth.assertThat;
|
import static com.google.common.truth.Truth.assertThat;
|
||||||
@ -230,7 +230,7 @@ public final class DefaultVideoFrameProcessorTextureOutputPixelTest {
|
|||||||
public void noEffects_hlg10Input_matchesGoldenFile() throws Exception {
|
public void noEffects_hlg10Input_matchesGoldenFile() throws Exception {
|
||||||
Context context = getApplicationContext();
|
Context context = getApplicationContext();
|
||||||
Format format = MP4_ASSET_1080P_5_SECOND_HLG10_FORMAT;
|
Format format = MP4_ASSET_1080P_5_SECOND_HLG10_FORMAT;
|
||||||
assumeDeviceSupportsHdrEditing(format);
|
assumeDeviceSupportsHdrEditing(testId, format.sampleMimeType, format.colorInfo);
|
||||||
if (AndroidTestUtil.skipAndLogIfFormatsUnsupported(
|
if (AndroidTestUtil.skipAndLogIfFormatsUnsupported(
|
||||||
context, testId, /* inputFormat= */ format, /* outputFormat= */ null)) {
|
context, testId, /* inputFormat= */ format, /* outputFormat= */ null)) {
|
||||||
return;
|
return;
|
||||||
@ -258,7 +258,7 @@ public final class DefaultVideoFrameProcessorTextureOutputPixelTest {
|
|||||||
public void noEffects_hlg10TextureInput_matchesGoldenFile() throws Exception {
|
public void noEffects_hlg10TextureInput_matchesGoldenFile() throws Exception {
|
||||||
Context context = getApplicationContext();
|
Context context = getApplicationContext();
|
||||||
Format format = MP4_ASSET_1080P_5_SECOND_HLG10_FORMAT;
|
Format format = MP4_ASSET_1080P_5_SECOND_HLG10_FORMAT;
|
||||||
assumeDeviceSupportsHdrEditing(format);
|
assumeDeviceSupportsHdrEditing(testId, format.sampleMimeType, format.colorInfo);
|
||||||
if (AndroidTestUtil.skipAndLogIfFormatsUnsupported(
|
if (AndroidTestUtil.skipAndLogIfFormatsUnsupported(
|
||||||
context, testId, /* inputFormat= */ format, /* outputFormat= */ null)) {
|
context, testId, /* inputFormat= */ format, /* outputFormat= */ null)) {
|
||||||
return;
|
return;
|
||||||
@ -288,7 +288,10 @@ public final class DefaultVideoFrameProcessorTextureOutputPixelTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void noEffects_hlg10UltraHDRImageInput_matchesGoldenFile() throws Exception {
|
public void noEffects_hlg10UltraHDRImageInput_matchesGoldenFile() throws Exception {
|
||||||
assumeDeviceSupportsHdrEditing(MP4_ASSET_1080P_5_SECOND_HLG10_FORMAT);
|
assumeDeviceSupportsHdrEditing(
|
||||||
|
testId,
|
||||||
|
MP4_ASSET_1080P_5_SECOND_HLG10_FORMAT.sampleMimeType,
|
||||||
|
MP4_ASSET_1080P_5_SECOND_HLG10_FORMAT.colorInfo);
|
||||||
assumeDeviceSupportsUltraHdrEditing();
|
assumeDeviceSupportsUltraHdrEditing();
|
||||||
ColorInfo outputColorInfo =
|
ColorInfo outputColorInfo =
|
||||||
new ColorInfo.Builder()
|
new ColorInfo.Builder()
|
||||||
@ -323,7 +326,7 @@ public final class DefaultVideoFrameProcessorTextureOutputPixelTest {
|
|||||||
public void noEffects_hdr10Input_matchesGoldenFile() throws Exception {
|
public void noEffects_hdr10Input_matchesGoldenFile() throws Exception {
|
||||||
Context context = getApplicationContext();
|
Context context = getApplicationContext();
|
||||||
Format format = MP4_ASSET_720P_4_SECOND_HDR10_FORMAT;
|
Format format = MP4_ASSET_720P_4_SECOND_HDR10_FORMAT;
|
||||||
assumeDeviceSupportsHdrEditing(format);
|
assumeDeviceSupportsHdrEditing(testId, format.sampleMimeType, format.colorInfo);
|
||||||
if (AndroidTestUtil.skipAndLogIfFormatsUnsupported(
|
if (AndroidTestUtil.skipAndLogIfFormatsUnsupported(
|
||||||
context, testId, /* inputFormat= */ format, /* outputFormat= */ null)) {
|
context, testId, /* inputFormat= */ format, /* outputFormat= */ null)) {
|
||||||
return;
|
return;
|
||||||
@ -351,7 +354,7 @@ public final class DefaultVideoFrameProcessorTextureOutputPixelTest {
|
|||||||
public void noEffects_hdr10TextureInput_matchesGoldenFile() throws Exception {
|
public void noEffects_hdr10TextureInput_matchesGoldenFile() throws Exception {
|
||||||
Context context = getApplicationContext();
|
Context context = getApplicationContext();
|
||||||
Format format = MP4_ASSET_720P_4_SECOND_HDR10_FORMAT;
|
Format format = MP4_ASSET_720P_4_SECOND_HDR10_FORMAT;
|
||||||
assumeDeviceSupportsHdrEditing(format);
|
assumeDeviceSupportsHdrEditing(testId, format.sampleMimeType, format.colorInfo);
|
||||||
if (AndroidTestUtil.skipAndLogIfFormatsUnsupported(
|
if (AndroidTestUtil.skipAndLogIfFormatsUnsupported(
|
||||||
context, testId, /* inputFormat= */ format, /* outputFormat= */ null)) {
|
context, testId, /* inputFormat= */ format, /* outputFormat= */ null)) {
|
||||||
return;
|
return;
|
||||||
@ -381,7 +384,10 @@ public final class DefaultVideoFrameProcessorTextureOutputPixelTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void noEffects_hdr10UltraHDRImageInput_matchesGoldenFile() throws Exception {
|
public void noEffects_hdr10UltraHDRImageInput_matchesGoldenFile() throws Exception {
|
||||||
assumeDeviceSupportsHdrEditing(MP4_ASSET_720P_4_SECOND_HDR10_FORMAT);
|
assumeDeviceSupportsHdrEditing(
|
||||||
|
testId,
|
||||||
|
MP4_ASSET_720P_4_SECOND_HDR10_FORMAT.sampleMimeType,
|
||||||
|
MP4_ASSET_720P_4_SECOND_HDR10_FORMAT.colorInfo);
|
||||||
assumeDeviceSupportsUltraHdrEditing();
|
assumeDeviceSupportsUltraHdrEditing();
|
||||||
ColorInfo outputColorInfo =
|
ColorInfo outputColorInfo =
|
||||||
new ColorInfo.Builder()
|
new ColorInfo.Builder()
|
||||||
@ -416,7 +422,7 @@ public final class DefaultVideoFrameProcessorTextureOutputPixelTest {
|
|||||||
public void noOpEffect_hlg10Input_matchesGoldenFile() throws Exception {
|
public void noOpEffect_hlg10Input_matchesGoldenFile() throws Exception {
|
||||||
Context context = getApplicationContext();
|
Context context = getApplicationContext();
|
||||||
Format format = MP4_ASSET_1080P_5_SECOND_HLG10_FORMAT;
|
Format format = MP4_ASSET_1080P_5_SECOND_HLG10_FORMAT;
|
||||||
assumeDeviceSupportsHdrEditing(format);
|
assumeDeviceSupportsHdrEditing(testId, format.sampleMimeType, format.colorInfo);
|
||||||
if (AndroidTestUtil.skipAndLogIfFormatsUnsupported(
|
if (AndroidTestUtil.skipAndLogIfFormatsUnsupported(
|
||||||
context, testId, /* inputFormat= */ format, /* outputFormat= */ null)) {
|
context, testId, /* inputFormat= */ format, /* outputFormat= */ null)) {
|
||||||
return;
|
return;
|
||||||
@ -445,7 +451,7 @@ public final class DefaultVideoFrameProcessorTextureOutputPixelTest {
|
|||||||
public void noOpEffect_hlg10TextureInput_matchesGoldenFile() throws Exception {
|
public void noOpEffect_hlg10TextureInput_matchesGoldenFile() throws Exception {
|
||||||
Context context = getApplicationContext();
|
Context context = getApplicationContext();
|
||||||
Format format = MP4_ASSET_1080P_5_SECOND_HLG10_FORMAT;
|
Format format = MP4_ASSET_1080P_5_SECOND_HLG10_FORMAT;
|
||||||
assumeDeviceSupportsHdrEditing(format);
|
assumeDeviceSupportsHdrEditing(testId, format.sampleMimeType, format.colorInfo);
|
||||||
if (AndroidTestUtil.skipAndLogIfFormatsUnsupported(
|
if (AndroidTestUtil.skipAndLogIfFormatsUnsupported(
|
||||||
context, testId, /* inputFormat= */ format, /* outputFormat= */ null)) {
|
context, testId, /* inputFormat= */ format, /* outputFormat= */ null)) {
|
||||||
return;
|
return;
|
||||||
@ -475,7 +481,10 @@ public final class DefaultVideoFrameProcessorTextureOutputPixelTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void noOpEffect_hlg10UltraHDRImageInput_matchesGoldenFile() throws Exception {
|
public void noOpEffect_hlg10UltraHDRImageInput_matchesGoldenFile() throws Exception {
|
||||||
assumeDeviceSupportsHdrEditing(MP4_ASSET_720P_4_SECOND_HDR10_FORMAT);
|
assumeDeviceSupportsHdrEditing(
|
||||||
|
testId,
|
||||||
|
MP4_ASSET_720P_4_SECOND_HDR10_FORMAT.sampleMimeType,
|
||||||
|
MP4_ASSET_720P_4_SECOND_HDR10_FORMAT.colorInfo);
|
||||||
assumeDeviceSupportsUltraHdrEditing();
|
assumeDeviceSupportsUltraHdrEditing();
|
||||||
ColorInfo outputColorInfo =
|
ColorInfo outputColorInfo =
|
||||||
new ColorInfo.Builder()
|
new ColorInfo.Builder()
|
||||||
@ -511,7 +520,7 @@ public final class DefaultVideoFrameProcessorTextureOutputPixelTest {
|
|||||||
public void noOpEffect_hdr10Input_matchesGoldenFile() throws Exception {
|
public void noOpEffect_hdr10Input_matchesGoldenFile() throws Exception {
|
||||||
Context context = getApplicationContext();
|
Context context = getApplicationContext();
|
||||||
Format format = MP4_ASSET_720P_4_SECOND_HDR10_FORMAT;
|
Format format = MP4_ASSET_720P_4_SECOND_HDR10_FORMAT;
|
||||||
assumeDeviceSupportsHdrEditing(format);
|
assumeDeviceSupportsHdrEditing(testId, format.sampleMimeType, format.colorInfo);
|
||||||
if (AndroidTestUtil.skipAndLogIfFormatsUnsupported(
|
if (AndroidTestUtil.skipAndLogIfFormatsUnsupported(
|
||||||
context, testId, /* inputFormat= */ format, /* outputFormat= */ null)) {
|
context, testId, /* inputFormat= */ format, /* outputFormat= */ null)) {
|
||||||
return;
|
return;
|
||||||
@ -540,7 +549,7 @@ public final class DefaultVideoFrameProcessorTextureOutputPixelTest {
|
|||||||
public void noOpEffect_hdr10TextureInput_matchesGoldenFile() throws Exception {
|
public void noOpEffect_hdr10TextureInput_matchesGoldenFile() throws Exception {
|
||||||
Context context = getApplicationContext();
|
Context context = getApplicationContext();
|
||||||
Format format = MP4_ASSET_720P_4_SECOND_HDR10_FORMAT;
|
Format format = MP4_ASSET_720P_4_SECOND_HDR10_FORMAT;
|
||||||
assumeDeviceSupportsHdrEditing(format);
|
assumeDeviceSupportsHdrEditing(testId, format.sampleMimeType, format.colorInfo);
|
||||||
if (AndroidTestUtil.skipAndLogIfFormatsUnsupported(
|
if (AndroidTestUtil.skipAndLogIfFormatsUnsupported(
|
||||||
context, testId, /* inputFormat= */ format, /* outputFormat= */ null)) {
|
context, testId, /* inputFormat= */ format, /* outputFormat= */ null)) {
|
||||||
return;
|
return;
|
||||||
@ -570,7 +579,10 @@ public final class DefaultVideoFrameProcessorTextureOutputPixelTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void noOpEffect_hdr10UltraHDRImageInput_matchesGoldenFile() throws Exception {
|
public void noOpEffect_hdr10UltraHDRImageInput_matchesGoldenFile() throws Exception {
|
||||||
assumeDeviceSupportsHdrEditing(MP4_ASSET_720P_4_SECOND_HDR10_FORMAT);
|
assumeDeviceSupportsHdrEditing(
|
||||||
|
testId,
|
||||||
|
MP4_ASSET_720P_4_SECOND_HDR10_FORMAT.sampleMimeType,
|
||||||
|
MP4_ASSET_720P_4_SECOND_HDR10_FORMAT.colorInfo);
|
||||||
assumeDeviceSupportsUltraHdrEditing();
|
assumeDeviceSupportsUltraHdrEditing();
|
||||||
ColorInfo outputColorInfo =
|
ColorInfo outputColorInfo =
|
||||||
new ColorInfo.Builder()
|
new ColorInfo.Builder()
|
||||||
@ -694,17 +706,6 @@ public final class DefaultVideoFrameProcessorTextureOutputPixelTest {
|
|||||||
.setBitmapReader(textureBitmapReader);
|
.setBitmapReader(textureBitmapReader);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void assumeDeviceSupportsHdrEditing(Format format) throws JSONException, IOException {
|
|
||||||
if (getSupportedEncodersForHdrEditing(format.sampleMimeType, format.colorInfo).isEmpty()) {
|
|
||||||
String skipReason =
|
|
||||||
format.colorInfo.colorTransfer == C.COLOR_TRANSFER_HLG
|
|
||||||
? "No HLG editing support."
|
|
||||||
: "No PQ editing support.";
|
|
||||||
recordTestSkipped(getApplicationContext(), testId, skipReason);
|
|
||||||
throw new AssumptionViolatedException(skipReason);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void assumeDeviceSupportsUltraHdrEditing() throws JSONException, IOException {
|
private void assumeDeviceSupportsUltraHdrEditing() throws JSONException, IOException {
|
||||||
if (Util.SDK_INT < 34) {
|
if (Util.SDK_INT < 34) {
|
||||||
recordTestSkipped(
|
recordTestSkipped(
|
||||||
|
@ -15,17 +15,21 @@
|
|||||||
*/
|
*/
|
||||||
package androidx.media3.transformer.mh;
|
package androidx.media3.transformer.mh;
|
||||||
|
|
||||||
|
import static androidx.media3.common.util.Assertions.checkState;
|
||||||
import static androidx.media3.transformer.AndroidTestUtil.recordTestSkipped;
|
import static androidx.media3.transformer.AndroidTestUtil.recordTestSkipped;
|
||||||
import static androidx.media3.transformer.AndroidTestUtil.skipAndLogIfFormatsUnsupported;
|
import static androidx.media3.transformer.AndroidTestUtil.skipAndLogIfFormatsUnsupported;
|
||||||
import static androidx.test.core.app.ApplicationProvider.getApplicationContext;
|
import static androidx.test.core.app.ApplicationProvider.getApplicationContext;
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
|
import androidx.media3.common.ColorInfo;
|
||||||
import androidx.media3.common.Format;
|
import androidx.media3.common.Format;
|
||||||
import androidx.media3.common.util.GlUtil;
|
import androidx.media3.common.util.GlUtil;
|
||||||
import androidx.media3.common.util.Util;
|
import androidx.media3.common.util.Util;
|
||||||
import androidx.media3.exoplayer.mediacodec.MediaCodecUtil;
|
import androidx.media3.exoplayer.mediacodec.MediaCodecUtil;
|
||||||
|
import androidx.media3.transformer.EncoderUtil;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import org.json.JSONException;
|
import org.json.JSONException;
|
||||||
|
import org.junit.AssumptionViolatedException;
|
||||||
|
|
||||||
/** Utility class for checking HDR capabilities. */
|
/** Utility class for checking HDR capabilities. */
|
||||||
public final class HdrCapabilitiesUtil {
|
public final class HdrCapabilitiesUtil {
|
||||||
@ -56,5 +60,20 @@ public final class HdrCapabilitiesUtil {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Assumes that the device supports HDR editing for the given {@code colorInfo}.
|
||||||
|
*
|
||||||
|
* @throws AssumptionViolatedException if the device does not support HDR editing.
|
||||||
|
*/
|
||||||
|
public static void assumeDeviceSupportsHdrEditing(
|
||||||
|
String testId, String mimeType, ColorInfo colorInfo) throws JSONException, IOException {
|
||||||
|
checkState(ColorInfo.isTransferHdr(colorInfo));
|
||||||
|
if (EncoderUtil.getSupportedEncodersForHdrEditing(mimeType, colorInfo).isEmpty()) {
|
||||||
|
String skipReason = "No HDR editing support for " + colorInfo;
|
||||||
|
recordTestSkipped(getApplicationContext(), testId, skipReason);
|
||||||
|
throw new AssumptionViolatedException(skipReason);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private HdrCapabilitiesUtil() {}
|
private HdrCapabilitiesUtil() {}
|
||||||
}
|
}
|
||||||
|
@ -15,8 +15,6 @@
|
|||||||
*/
|
*/
|
||||||
package androidx.media3.transformer.mh;
|
package androidx.media3.transformer.mh;
|
||||||
|
|
||||||
import static androidx.media3.common.MimeTypes.VIDEO_H265;
|
|
||||||
import static androidx.media3.common.util.Assertions.checkState;
|
|
||||||
import static androidx.media3.test.utils.TestUtil.retrieveTrackFormat;
|
import static androidx.media3.test.utils.TestUtil.retrieveTrackFormat;
|
||||||
import static androidx.media3.transformer.AndroidTestUtil.FORCE_TRANSCODE_VIDEO_EFFECTS;
|
import static androidx.media3.transformer.AndroidTestUtil.FORCE_TRANSCODE_VIDEO_EFFECTS;
|
||||||
import static androidx.media3.transformer.AndroidTestUtil.MP4_ASSET_1080P_5_SECOND_HLG10;
|
import static androidx.media3.transformer.AndroidTestUtil.MP4_ASSET_1080P_5_SECOND_HLG10;
|
||||||
@ -28,19 +26,18 @@ import static androidx.media3.transformer.AndroidTestUtil.MP4_ASSET_DOLBY_VISION
|
|||||||
import static androidx.media3.transformer.AndroidTestUtil.recordTestSkipped;
|
import static androidx.media3.transformer.AndroidTestUtil.recordTestSkipped;
|
||||||
import static androidx.media3.transformer.Composition.HDR_MODE_KEEP_HDR;
|
import static androidx.media3.transformer.Composition.HDR_MODE_KEEP_HDR;
|
||||||
import static androidx.media3.transformer.Composition.HDR_MODE_TONE_MAP_HDR_TO_SDR_USING_OPEN_GL;
|
import static androidx.media3.transformer.Composition.HDR_MODE_TONE_MAP_HDR_TO_SDR_USING_OPEN_GL;
|
||||||
|
import static androidx.media3.transformer.mh.HdrCapabilitiesUtil.assumeDeviceSupportsHdrEditing;
|
||||||
import static com.google.common.truth.Truth.assertThat;
|
import static com.google.common.truth.Truth.assertThat;
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.net.Uri;
|
import android.net.Uri;
|
||||||
import androidx.media3.common.C;
|
import androidx.media3.common.C;
|
||||||
import androidx.media3.common.ColorInfo;
|
|
||||||
import androidx.media3.common.Format;
|
import androidx.media3.common.Format;
|
||||||
import androidx.media3.common.MediaItem;
|
import androidx.media3.common.MediaItem;
|
||||||
import androidx.media3.common.util.Util;
|
import androidx.media3.common.util.Util;
|
||||||
import androidx.media3.transformer.AndroidTestUtil;
|
import androidx.media3.transformer.AndroidTestUtil;
|
||||||
import androidx.media3.transformer.Composition;
|
import androidx.media3.transformer.Composition;
|
||||||
import androidx.media3.transformer.EditedMediaItem;
|
import androidx.media3.transformer.EditedMediaItem;
|
||||||
import androidx.media3.transformer.EncoderUtil;
|
|
||||||
import androidx.media3.transformer.ExportException;
|
import androidx.media3.transformer.ExportException;
|
||||||
import androidx.media3.transformer.ExportTestResult;
|
import androidx.media3.transformer.ExportTestResult;
|
||||||
import androidx.media3.transformer.TransformationRequest;
|
import androidx.media3.transformer.TransformationRequest;
|
||||||
@ -143,10 +140,7 @@ public final class HdrEditingTest {
|
|||||||
public void exportAndTranscode_hdr10File_whenHdrEditingIsSupported() throws Exception {
|
public void exportAndTranscode_hdr10File_whenHdrEditingIsSupported() throws Exception {
|
||||||
Context context = ApplicationProvider.getApplicationContext();
|
Context context = ApplicationProvider.getApplicationContext();
|
||||||
Format format = MP4_ASSET_720P_4_SECOND_HDR10_FORMAT;
|
Format format = MP4_ASSET_720P_4_SECOND_HDR10_FORMAT;
|
||||||
if (!deviceSupportsHdrEditing(VIDEO_H265, format.colorInfo)) {
|
assumeDeviceSupportsHdrEditing(testId, format.sampleMimeType, format.colorInfo);
|
||||||
recordTestSkipped(context, testId, /* reason= */ "Device lacks HDR10 editing support.");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (AndroidTestUtil.skipAndLogIfFormatsUnsupported(
|
if (AndroidTestUtil.skipAndLogIfFormatsUnsupported(
|
||||||
context, testId, /* inputFormat= */ format, /* outputFormat= */ format)) {
|
context, testId, /* inputFormat= */ format, /* outputFormat= */ format)) {
|
||||||
@ -174,10 +168,7 @@ public final class HdrEditingTest {
|
|||||||
public void exportAndTranscode_hlg10File_whenHdrEditingIsSupported() throws Exception {
|
public void exportAndTranscode_hlg10File_whenHdrEditingIsSupported() throws Exception {
|
||||||
Context context = ApplicationProvider.getApplicationContext();
|
Context context = ApplicationProvider.getApplicationContext();
|
||||||
Format format = MP4_ASSET_1080P_5_SECOND_HLG10_FORMAT;
|
Format format = MP4_ASSET_1080P_5_SECOND_HLG10_FORMAT;
|
||||||
if (!deviceSupportsHdrEditing(VIDEO_H265, format.colorInfo)) {
|
assumeDeviceSupportsHdrEditing(testId, format.sampleMimeType, format.colorInfo);
|
||||||
recordTestSkipped(context, testId, /* reason= */ "Device lacks HLG10 editing support.");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (AndroidTestUtil.skipAndLogIfFormatsUnsupported(
|
if (AndroidTestUtil.skipAndLogIfFormatsUnsupported(
|
||||||
context, testId, /* inputFormat= */ format, /* outputFormat= */ format)) {
|
context, testId, /* inputFormat= */ format, /* outputFormat= */ format)) {
|
||||||
@ -205,10 +196,7 @@ public final class HdrEditingTest {
|
|||||||
public void exportAndTranscode_dolbyVisionFile_whenHdrEditingIsSupported() throws Exception {
|
public void exportAndTranscode_dolbyVisionFile_whenHdrEditingIsSupported() throws Exception {
|
||||||
Context context = ApplicationProvider.getApplicationContext();
|
Context context = ApplicationProvider.getApplicationContext();
|
||||||
Format format = MP4_ASSET_DOLBY_VISION_HDR_FORMAT;
|
Format format = MP4_ASSET_DOLBY_VISION_HDR_FORMAT;
|
||||||
if (!deviceSupportsHdrEditing(VIDEO_H265, format.colorInfo)) {
|
assumeDeviceSupportsHdrEditing(testId, format.sampleMimeType, format.colorInfo);
|
||||||
recordTestSkipped(context, testId, /* reason= */ "Device lacks HLG10 editing support.");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (AndroidTestUtil.skipAndLogIfFormatsUnsupported(
|
if (AndroidTestUtil.skipAndLogIfFormatsUnsupported(
|
||||||
context, testId, /* inputFormat= */ format, /* outputFormat= */ format)) {
|
context, testId, /* inputFormat= */ format, /* outputFormat= */ format)) {
|
||||||
@ -237,10 +225,7 @@ public final class HdrEditingTest {
|
|||||||
throws Exception {
|
throws Exception {
|
||||||
Context context = ApplicationProvider.getApplicationContext();
|
Context context = ApplicationProvider.getApplicationContext();
|
||||||
Format format = MP4_ASSET_720P_4_SECOND_HDR10_FORMAT;
|
Format format = MP4_ASSET_720P_4_SECOND_HDR10_FORMAT;
|
||||||
if (deviceSupportsHdrEditing(VIDEO_H265, format.colorInfo)) {
|
assumeDeviceSupportsHdrEditing(testId, format.sampleMimeType, format.colorInfo);
|
||||||
recordTestSkipped(context, testId, /* reason= */ "Device supports HDR10 editing.");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (AndroidTestUtil.skipAndLogIfFormatsUnsupported(
|
if (AndroidTestUtil.skipAndLogIfFormatsUnsupported(
|
||||||
context, testId, /* inputFormat= */ format, /* outputFormat= */ null)) {
|
context, testId, /* inputFormat= */ format, /* outputFormat= */ null)) {
|
||||||
@ -302,10 +287,7 @@ public final class HdrEditingTest {
|
|||||||
throws Exception {
|
throws Exception {
|
||||||
Context context = ApplicationProvider.getApplicationContext();
|
Context context = ApplicationProvider.getApplicationContext();
|
||||||
Format format = MP4_ASSET_1080P_5_SECOND_HLG10_FORMAT;
|
Format format = MP4_ASSET_1080P_5_SECOND_HLG10_FORMAT;
|
||||||
if (deviceSupportsHdrEditing(VIDEO_H265, format.colorInfo)) {
|
assumeDeviceSupportsHdrEditing(testId, format.sampleMimeType, format.colorInfo);
|
||||||
recordTestSkipped(context, testId, /* reason= */ "Device supports HLG10 editing.");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (AndroidTestUtil.skipAndLogIfFormatsUnsupported(
|
if (AndroidTestUtil.skipAndLogIfFormatsUnsupported(
|
||||||
context, testId, /* inputFormat= */ format, /* outputFormat= */ null)) {
|
context, testId, /* inputFormat= */ format, /* outputFormat= */ null)) {
|
||||||
@ -359,9 +341,4 @@ public final class HdrEditingTest {
|
|||||||
throw exception;
|
throw exception;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static boolean deviceSupportsHdrEditing(String mimeType, ColorInfo colorInfo) {
|
|
||||||
checkState(ColorInfo.isTransferHdr(colorInfo));
|
|
||||||
return !EncoderUtil.getSupportedEncodersForHdrEditing(mimeType, colorInfo).isEmpty();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -28,14 +28,13 @@ import static androidx.media3.transformer.SequenceEffectTestUtil.SINGLE_30_FPS_V
|
|||||||
import static androidx.media3.transformer.SequenceEffectTestUtil.assertBitmapsMatchExpectedAndSave;
|
import static androidx.media3.transformer.SequenceEffectTestUtil.assertBitmapsMatchExpectedAndSave;
|
||||||
import static androidx.media3.transformer.SequenceEffectTestUtil.clippedVideo;
|
import static androidx.media3.transformer.SequenceEffectTestUtil.clippedVideo;
|
||||||
import static androidx.media3.transformer.SequenceEffectTestUtil.createComposition;
|
import static androidx.media3.transformer.SequenceEffectTestUtil.createComposition;
|
||||||
|
import static androidx.media3.transformer.mh.HdrCapabilitiesUtil.assumeDeviceSupportsHdrEditing;
|
||||||
import static androidx.media3.transformer.mh.HdrCapabilitiesUtil.skipAndLogIfOpenGlToneMappingUnsupported;
|
import static androidx.media3.transformer.mh.HdrCapabilitiesUtil.skipAndLogIfOpenGlToneMappingUnsupported;
|
||||||
import static com.google.common.truth.Truth.assertThat;
|
import static com.google.common.truth.Truth.assertThat;
|
||||||
import static org.junit.Assume.assumeFalse;
|
import static org.junit.Assume.assumeFalse;
|
||||||
import static org.junit.Assume.assumeTrue;
|
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import androidx.annotation.Nullable;
|
import androidx.annotation.Nullable;
|
||||||
import androidx.media3.common.ColorInfo;
|
|
||||||
import androidx.media3.common.Effect;
|
import androidx.media3.common.Effect;
|
||||||
import androidx.media3.common.MediaItem;
|
import androidx.media3.common.MediaItem;
|
||||||
import androidx.media3.effect.Presentation;
|
import androidx.media3.effect.Presentation;
|
||||||
@ -43,7 +42,6 @@ import androidx.media3.effect.RgbFilter;
|
|||||||
import androidx.media3.effect.ScaleAndRotateTransformation;
|
import androidx.media3.effect.ScaleAndRotateTransformation;
|
||||||
import androidx.media3.transformer.Composition;
|
import androidx.media3.transformer.Composition;
|
||||||
import androidx.media3.transformer.EditedMediaItemSequence;
|
import androidx.media3.transformer.EditedMediaItemSequence;
|
||||||
import androidx.media3.transformer.EncoderUtil;
|
|
||||||
import androidx.media3.transformer.ExportException;
|
import androidx.media3.transformer.ExportException;
|
||||||
import androidx.media3.transformer.ExportTestResult;
|
import androidx.media3.transformer.ExportTestResult;
|
||||||
import androidx.media3.transformer.Transformer;
|
import androidx.media3.transformer.Transformer;
|
||||||
@ -119,10 +117,8 @@ public final class TransformerSequenceEffectTestWithHdr {
|
|||||||
@Test
|
@Test
|
||||||
@RequiresNonNull("testId")
|
@RequiresNonNull("testId")
|
||||||
public void export_withHdrThenSdr_throws_whenHdrEditingSupported() throws Exception {
|
public void export_withHdrThenSdr_throws_whenHdrEditingSupported() throws Exception {
|
||||||
assumeTrue(
|
assumeDeviceSupportsHdrEditing(
|
||||||
"Device does not support HDR10 editing.",
|
testId, VIDEO_H265, MP4_ASSET_720P_4_SECOND_HDR10_FORMAT.colorInfo);
|
||||||
deviceSupportsHdrEditing(
|
|
||||||
VIDEO_H265, checkNotNull(MP4_ASSET_720P_4_SECOND_HDR10_FORMAT.colorInfo)));
|
|
||||||
assumeFalse(
|
assumeFalse(
|
||||||
skipAndLogIfFormatsUnsupported(
|
skipAndLogIfFormatsUnsupported(
|
||||||
context,
|
context,
|
||||||
@ -162,10 +158,8 @@ public final class TransformerSequenceEffectTestWithHdr {
|
|||||||
@Test
|
@Test
|
||||||
@RequiresNonNull("testId")
|
@RequiresNonNull("testId")
|
||||||
public void export_withHdrThenSdr_whenHdrEditingUnsupported() throws Exception {
|
public void export_withHdrThenSdr_whenHdrEditingUnsupported() throws Exception {
|
||||||
assumeFalse(
|
assumeDeviceSupportsHdrEditing(
|
||||||
"Device supports HDR10 editing.",
|
testId, VIDEO_H265, MP4_ASSET_720P_4_SECOND_HDR10_FORMAT.colorInfo);
|
||||||
deviceSupportsHdrEditing(
|
|
||||||
VIDEO_H265, checkNotNull(MP4_ASSET_720P_4_SECOND_HDR10_FORMAT.colorInfo)));
|
|
||||||
assumeFalse(
|
assumeFalse(
|
||||||
skipAndLogIfOpenGlToneMappingUnsupported(
|
skipAndLogIfOpenGlToneMappingUnsupported(
|
||||||
testId, /* inputFormat= */ MP4_ASSET_720P_4_SECOND_HDR10_FORMAT));
|
testId, /* inputFormat= */ MP4_ASSET_720P_4_SECOND_HDR10_FORMAT));
|
||||||
@ -199,8 +193,4 @@ public final class TransformerSequenceEffectTestWithHdr {
|
|||||||
assertBitmapsMatchExpectedAndSave(
|
assertBitmapsMatchExpectedAndSave(
|
||||||
extractBitmapsFromVideo(context, checkNotNull(result.filePath)), testId);
|
extractBitmapsFromVideo(context, checkNotNull(result.filePath)), testId);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static boolean deviceSupportsHdrEditing(String mimeType, ColorInfo colorInfo) {
|
|
||||||
return !EncoderUtil.getSupportedEncodersForHdrEditing(mimeType, colorInfo).isEmpty();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user