Ignore 8k export test on incapable devices

And add a test to cover 8k transcode to lower resolution

PiperOrigin-RevId: 574809781
This commit is contained in:
claincly 2023-10-19 03:56:01 -07:00 committed by Copybara-Service
parent 54d5810fc3
commit 2673b64371

View file

@ -30,12 +30,16 @@ import static androidx.media3.transformer.AndroidTestUtil.MP4_ASSET_WITH_INCREAS
import static androidx.media3.transformer.AndroidTestUtil.MP4_ASSET_WITH_INCREASING_TIMESTAMPS_URI_STRING;
import static androidx.media3.transformer.AndroidTestUtil.recordTestSkipped;
import static com.google.common.truth.Truth.assertThat;
import static org.junit.Assume.assumeFalse;
import android.content.Context;
import android.net.Uri;
import androidx.media3.common.Effect;
import androidx.media3.common.Format;
import androidx.media3.common.MediaItem;
import androidx.media3.common.MimeTypes;
import androidx.media3.common.util.Util;
import androidx.media3.effect.Presentation;
import androidx.media3.effect.ScaleAndRotateTransformation;
import androidx.media3.transformer.AndroidTestUtil;
import androidx.media3.transformer.AndroidTestUtil.ForceEncodeEncoderFactory;
@ -48,6 +52,7 @@ import androidx.media3.transformer.TransformerAndroidTestRunner;
import androidx.media3.transformer.VideoEncoderSettings;
import androidx.test.core.app.ApplicationProvider;
import androidx.test.ext.junit.runners.AndroidJUnit4;
import com.google.common.base.Ascii;
import com.google.common.collect.ImmutableList;
import org.junit.AssumptionViolatedException;
import org.junit.Test;
@ -159,6 +164,14 @@ public class ExportTest {
@Test
public void export8K24() throws Exception {
String testId = TAG + "_export8K24";
// Reference: b/244711282#comment5
assumeFalse(
"Some devices are capable of instantiating only either one 8K decoder or one 8K encoder",
Ascii.equalsIgnoreCase(Util.MODEL, "tb-q706")
|| Ascii.equalsIgnoreCase(Util.MODEL, "sm-f916u1")
|| Ascii.equalsIgnoreCase(Util.MODEL, "sm-g981u1"));
Context context = ApplicationProvider.getApplicationContext();
if (AndroidTestUtil.skipAndLogIfFormatsUnsupported(
context, testId, /* inputFormat= */ MP4_ASSET_8K24_FORMAT, /* outputFormat= */ null)) {
@ -179,6 +192,43 @@ public class ExportTest {
.run(testId, mediaItem);
}
@Test
public void export8K24_withDownscaling() throws Exception {
// This test is to cover devices that are able to either decode or encode 8K, but not transcode.
String testId = TAG + "_export8K24_withDownscaling";
int downscaledWidth = 320;
int downscaledHeight = 240;
Context context = ApplicationProvider.getApplicationContext();
if (AndroidTestUtil.skipAndLogIfFormatsUnsupported(
context,
testId,
/* inputFormat= */ MP4_ASSET_8K24_FORMAT,
/* outputFormat= */ new Format.Builder()
.setSampleMimeType(MimeTypes.VIDEO_H264)
.setWidth(downscaledWidth)
.setHeight(downscaledHeight)
.build())) {
return;
}
new TransformerAndroidTestRunner.Builder(context, new Transformer.Builder(context).build())
.setTimeoutSeconds(120)
.build()
.run(
testId,
new EditedMediaItem.Builder(MediaItem.fromUri(Uri.parse(MP4_ASSET_8K24_URI_STRING)))
.setEffects(
new Effects(
/* audioProcessors= */ ImmutableList.of(),
/* videoEffects= */ ImmutableList.of(
Presentation.createForWidthAndHeight(
downscaledWidth,
downscaledHeight,
Presentation.LAYOUT_SCALE_TO_FIT))))
.build());
}
@Test
public void exportNoAudio() throws Exception {
String testId = TAG + "_exportNoAudio";