Ensure re-encode on performance tests

PiperOrigin-RevId: 453933854
This commit is contained in:
claincly 2022-06-09 15:41:09 +00:00 committed by Marc Baechinger
parent 8b592fc77a
commit 12d775f055
6 changed files with 68 additions and 54 deletions

View File

@ -218,21 +218,34 @@ public final class AndroidTestUtil {
writeTestSummaryToFile(context, testId, testJson); writeTestSummaryToFile(context, testId, testJson);
} }
/** A customizable forwarding {@link Codec.EncoderFactory} that forces encoding. */
public static final class ForceEncodeEncoderFactory implements Codec.EncoderFactory {
private final Codec.EncoderFactory encoderFactory;
/** Creates an instance that wraps {@link DefaultEncoderFactory}. */
public ForceEncodeEncoderFactory() {
encoderFactory = Codec.EncoderFactory.DEFAULT;
}
/** /**
* A {@link Codec.EncoderFactory} that forces encoding, wrapping {@link DefaultEncoderFactory}. * Creates an instance that wraps {@link DefaultEncoderFactory} that wraps another {@link
* Codec.EncoderFactory}.
*/ */
public static final Codec.EncoderFactory FORCE_ENCODE_ENCODER_FACTORY = public ForceEncodeEncoderFactory(Codec.EncoderFactory wrappedEncoderFactory) {
new Codec.EncoderFactory() { this.encoderFactory = wrappedEncoderFactory;
}
@Override @Override
public Codec createForAudioEncoding(Format format, List<String> allowedMimeTypes) public Codec createForAudioEncoding(Format format, List<String> allowedMimeTypes)
throws TransformationException { throws TransformationException {
return Codec.EncoderFactory.DEFAULT.createForAudioEncoding(format, allowedMimeTypes); return encoderFactory.createForAudioEncoding(format, allowedMimeTypes);
} }
@Override @Override
public Codec createForVideoEncoding(Format format, List<String> allowedMimeTypes) public Codec createForVideoEncoding(Format format, List<String> allowedMimeTypes)
throws TransformationException { throws TransformationException {
return Codec.EncoderFactory.DEFAULT.createForVideoEncoding(format, allowedMimeTypes); return encoderFactory.createForVideoEncoding(format, allowedMimeTypes);
} }
@Override @Override
@ -244,7 +257,7 @@ public final class AndroidTestUtil {
public boolean videoNeedsEncoding() { public boolean videoNeedsEncoding() {
return true; return true;
} }
}; }
/** /**
* Returns a {@link JSONObject} containing device specific details from {@link Build}, including * Returns a {@link JSONObject} containing device specific details from {@link Build}, including

View File

@ -48,7 +48,7 @@ public final class RepeatedTranscodeTransformationTest {
new Transformer.Builder(context) new Transformer.Builder(context)
.setTransformationRequest( .setTransformationRequest(
new TransformationRequest.Builder().setRotationDegrees(45).build()) new TransformationRequest.Builder().setRotationDegrees(45).build())
.setEncoderFactory(AndroidTestUtil.FORCE_ENCODE_ENCODER_FACTORY) .setEncoderFactory(new AndroidTestUtil.ForceEncodeEncoderFactory())
.build()) .build())
.build(); .build();
@ -78,7 +78,7 @@ public final class RepeatedTranscodeTransformationTest {
.setRemoveAudio(true) .setRemoveAudio(true)
.setTransformationRequest( .setTransformationRequest(
new TransformationRequest.Builder().setRotationDegrees(45).build()) new TransformationRequest.Builder().setRotationDegrees(45).build())
.setEncoderFactory(AndroidTestUtil.FORCE_ENCODE_ENCODER_FACTORY) .setEncoderFactory(new AndroidTestUtil.ForceEncodeEncoderFactory())
.build()) .build())
.build(); .build();
@ -107,7 +107,7 @@ public final class RepeatedTranscodeTransformationTest {
new Transformer.Builder(context) new Transformer.Builder(context)
.setRemoveVideo(true) .setRemoveVideo(true)
.setTransformationRequest(new TransformationRequest.Builder().build()) .setTransformationRequest(new TransformationRequest.Builder().build())
.setEncoderFactory(AndroidTestUtil.FORCE_ENCODE_ENCODER_FACTORY) .setEncoderFactory(new AndroidTestUtil.ForceEncodeEncoderFactory())
.build()) .build())
.build(); .build();

View File

@ -52,7 +52,7 @@ public final class TranscodeQualityTest {
new Transformer.Builder(context) new Transformer.Builder(context)
.setTransformationRequest( .setTransformationRequest(
new TransformationRequest.Builder().setVideoMimeType(MimeTypes.VIDEO_H264).build()) new TransformationRequest.Builder().setVideoMimeType(MimeTypes.VIDEO_H264).build())
.setEncoderFactory(AndroidTestUtil.FORCE_ENCODE_ENCODER_FACTORY) .setEncoderFactory(new AndroidTestUtil.ForceEncodeEncoderFactory())
.setRemoveAudio(true) .setRemoveAudio(true)
.build(); .build();
@ -119,7 +119,7 @@ public final class TranscodeQualityTest {
new Transformer.Builder(context) new Transformer.Builder(context)
.setTransformationRequest( .setTransformationRequest(
new TransformationRequest.Builder().setVideoMimeType(MimeTypes.VIDEO_H264).build()) new TransformationRequest.Builder().setVideoMimeType(MimeTypes.VIDEO_H264).build())
.setEncoderFactory(AndroidTestUtil.FORCE_ENCODE_ENCODER_FACTORY) .setEncoderFactory(new AndroidTestUtil.ForceEncodeEncoderFactory())
.setRemoveAudio(true) .setRemoveAudio(true)
.build(); .build();

View File

@ -15,7 +15,6 @@
*/ */
package androidx.media3.transformer.mh; package androidx.media3.transformer.mh;
import static androidx.media3.transformer.AndroidTestUtil.FORCE_ENCODE_ENCODER_FACTORY;
import static androidx.media3.transformer.AndroidTestUtil.MP4_ASSET_SEF_URI_STRING; import static androidx.media3.transformer.AndroidTestUtil.MP4_ASSET_SEF_URI_STRING;
import static androidx.media3.transformer.AndroidTestUtil.MP4_ASSET_URI_STRING; import static androidx.media3.transformer.AndroidTestUtil.MP4_ASSET_URI_STRING;
import static androidx.media3.transformer.AndroidTestUtil.MP4_ASSET_WITH_INCREASING_TIMESTAMPS_URI_STRING; import static androidx.media3.transformer.AndroidTestUtil.MP4_ASSET_WITH_INCREASING_TIMESTAMPS_URI_STRING;
@ -30,6 +29,7 @@ import android.net.Uri;
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.AndroidTestUtil.ForceEncodeEncoderFactory;
import androidx.media3.transformer.DefaultEncoderFactory; import androidx.media3.transformer.DefaultEncoderFactory;
import androidx.media3.transformer.EncoderSelector; import androidx.media3.transformer.EncoderSelector;
import androidx.media3.transformer.TransformationRequest; import androidx.media3.transformer.TransformationRequest;
@ -52,9 +52,7 @@ public class TransformationTest {
String testId = TAG + "_transform"; String testId = TAG + "_transform";
Context context = ApplicationProvider.getApplicationContext(); Context context = ApplicationProvider.getApplicationContext();
Transformer transformer = Transformer transformer =
new Transformer.Builder(context) new Transformer.Builder(context).setEncoderFactory(new ForceEncodeEncoderFactory()).build();
.setEncoderFactory(AndroidTestUtil.FORCE_ENCODE_ENCODER_FACTORY)
.build();
new TransformerAndroidTestRunner.Builder(context, transformer) new TransformerAndroidTestRunner.Builder(context, transformer)
.setMaybeCalculateSsim(true) .setMaybeCalculateSsim(true)
.build() .build()
@ -80,10 +78,11 @@ public class TransformationTest {
new Transformer.Builder(context) new Transformer.Builder(context)
.setRemoveAudio(true) .setRemoveAudio(true)
.setEncoderFactory( .setEncoderFactory(
new DefaultEncoderFactory( new ForceEncodeEncoderFactory(
/* wrappedEncoderFactory= */ new DefaultEncoderFactory(
EncoderSelector.DEFAULT, EncoderSelector.DEFAULT,
new VideoEncoderSettings.Builder().setBitrate(5_000_000).build(), new VideoEncoderSettings.Builder().setBitrate(5_000_000).build(),
/* enableFallback= */ true)) /* enableFallback= */ true)))
.build(); .build();
new TransformerAndroidTestRunner.Builder(context, transformer) new TransformerAndroidTestRunner.Builder(context, transformer)
.setMaybeCalculateSsim(true) .setMaybeCalculateSsim(true)
@ -105,7 +104,7 @@ public class TransformationTest {
} }
Transformer transformer = Transformer transformer =
new Transformer.Builder(context).setEncoderFactory(FORCE_ENCODE_ENCODER_FACTORY).build(); new Transformer.Builder(context).setEncoderFactory(new ForceEncodeEncoderFactory()).build();
new TransformerAndroidTestRunner.Builder(context, transformer) new TransformerAndroidTestRunner.Builder(context, transformer)
.setMaybeCalculateSsim(true) .setMaybeCalculateSsim(true)
.setTimeoutSeconds(180) .setTimeoutSeconds(180)
@ -126,7 +125,7 @@ public class TransformationTest {
return; return;
} }
Transformer transformer = Transformer transformer =
new Transformer.Builder(context).setEncoderFactory(FORCE_ENCODE_ENCODER_FACTORY).build(); new Transformer.Builder(context).setEncoderFactory(new ForceEncodeEncoderFactory()).build();
new TransformerAndroidTestRunner.Builder(context, transformer) new TransformerAndroidTestRunner.Builder(context, transformer)
.setMaybeCalculateSsim(true) .setMaybeCalculateSsim(true)
.setTimeoutSeconds(180) .setTimeoutSeconds(180)
@ -140,7 +139,7 @@ public class TransformationTest {
Context context = ApplicationProvider.getApplicationContext(); Context context = ApplicationProvider.getApplicationContext();
Transformer transformer = Transformer transformer =
new Transformer.Builder(context) new Transformer.Builder(context)
.setEncoderFactory(FORCE_ENCODE_ENCODER_FACTORY) .setEncoderFactory(new ForceEncodeEncoderFactory())
.setRemoveAudio(true) .setRemoveAudio(true)
.build(); .build();
new TransformerAndroidTestRunner.Builder(context, transformer) new TransformerAndroidTestRunner.Builder(context, transformer)
@ -155,7 +154,7 @@ public class TransformationTest {
Context context = ApplicationProvider.getApplicationContext(); Context context = ApplicationProvider.getApplicationContext();
Transformer transformer = Transformer transformer =
new Transformer.Builder(context) new Transformer.Builder(context)
.setEncoderFactory(FORCE_ENCODE_ENCODER_FACTORY) .setEncoderFactory(new ForceEncodeEncoderFactory())
.setRemoveVideo(true) .setRemoveVideo(true)
.build(); .build();
new TransformerAndroidTestRunner.Builder(context, transformer) new TransformerAndroidTestRunner.Builder(context, transformer)

View File

@ -116,13 +116,14 @@ public class BitrateAnalysisTest {
new Transformer.Builder(context) new Transformer.Builder(context)
.setRemoveAudio(true) .setRemoveAudio(true)
.setEncoderFactory( .setEncoderFactory(
new DefaultEncoderFactory( new AndroidTestUtil.ForceEncodeEncoderFactory(
/* wrappedEncoderFactory= */ new DefaultEncoderFactory(
EncoderSelector.DEFAULT, EncoderSelector.DEFAULT,
new VideoEncoderSettings.Builder() new VideoEncoderSettings.Builder()
.setBitrate(bitrate) .setBitrate(bitrate)
.setBitrateMode(bitrateMode) .setBitrateMode(bitrateMode)
.build(), .build(),
/* enableFallback= */ false)) /* enableFallback= */ false)))
.build(); .build();
new TransformerAndroidTestRunner.Builder(context, transformer) new TransformerAndroidTestRunner.Builder(context, transformer)

View File

@ -126,12 +126,13 @@ public class EncoderPerformanceAnalysisTest {
new Transformer.Builder(context) new Transformer.Builder(context)
.setRemoveAudio(true) .setRemoveAudio(true)
.setEncoderFactory( .setEncoderFactory(
new DefaultEncoderFactory( new AndroidTestUtil.ForceEncodeEncoderFactory(
/* wrappedEncoderFactory= */ new DefaultEncoderFactory(
EncoderSelector.DEFAULT, EncoderSelector.DEFAULT,
new VideoEncoderSettings.Builder() new VideoEncoderSettings.Builder()
.setEncoderPerformanceParameters(operatingRate, priority) .setEncoderPerformanceParameters(operatingRate, priority)
.build(), .build(),
/* enableFallback= */ false)) /* enableFallback= */ false)))
.build(); .build();
new TransformerAndroidTestRunner.Builder(context, transformer) new TransformerAndroidTestRunner.Builder(context, transformer)