Add new effects helper util for unit tests.

PiperOrigin-RevId: 557515564
This commit is contained in:
samrobinson 2023-08-16 17:44:26 +01:00 committed by oceanjules
parent 9631923440
commit 27bc2e6844
3 changed files with 45 additions and 87 deletions

View File

@ -32,6 +32,8 @@ import static androidx.media3.transformer.TestUtil.FILE_WITH_SEF_SLOW_MOTION;
import static androidx.media3.transformer.TestUtil.FILE_WITH_SUBTITLES;
import static androidx.media3.transformer.TestUtil.addAudioDecoders;
import static androidx.media3.transformer.TestUtil.addAudioEncoders;
import static androidx.media3.transformer.TestUtil.createAudioEffects;
import static androidx.media3.transformer.TestUtil.createPitchChangingAudioProcessor;
import static androidx.media3.transformer.TestUtil.createTransformerBuilder;
import static androidx.media3.transformer.TestUtil.getDumpFileName;
import static androidx.media3.transformer.TestUtil.removeEncodersAndDecoders;
@ -60,7 +62,6 @@ import androidx.media3.common.C;
import androidx.media3.common.Effect;
import androidx.media3.common.MediaItem;
import androidx.media3.common.MimeTypes;
import androidx.media3.common.audio.AudioProcessor;
import androidx.media3.common.audio.SonicAudioProcessor;
import androidx.media3.common.util.Util;
import androidx.media3.effect.Presentation;
@ -361,7 +362,7 @@ public final class MediaItemExportTest {
EditedMediaItem editedMediaItem =
new EditedMediaItem.Builder(MediaItem.fromUri(ASSET_URI_PREFIX + FILE_AUDIO_VIDEO))
.setRemoveAudio(true)
.setEffects(new Effects(ImmutableList.of(sonicAudioProcessor), ImmutableList.of()))
.setEffects(createAudioEffects(sonicAudioProcessor))
.build();
EditedMediaItemSequence sequence =
new EditedMediaItemSequence(ImmutableList.of(editedMediaItem));
@ -427,10 +428,11 @@ public final class MediaItemExportTest {
Transformer transformer =
createTransformerBuilder(muxerFactory, /* enableFallback= */ false).build();
MediaItem mediaItem = MediaItem.fromUri(ASSET_URI_PREFIX + FILE_AUDIO_VIDEO);
ImmutableList<AudioProcessor> audioProcessors = ImmutableList.of(sonicAudioProcessor);
Effects effects = new Effects(audioProcessors, /* videoEffects= */ ImmutableList.of());
EditedMediaItem editedMediaItem =
new EditedMediaItem.Builder(mediaItem).setEffects(effects).build();
new EditedMediaItem.Builder(mediaItem)
.setEffects(createAudioEffects(sonicAudioProcessor))
.build();
transformer.start(editedMediaItem, outputPath);
TransformerTestRunner.runLooper(transformer);
@ -446,10 +448,10 @@ public final class MediaItemExportTest {
Transformer transformer =
createTransformerBuilder(muxerFactory, /* enableFallback= */ false).build();
MediaItem mediaItem = MediaItem.fromUri(ASSET_URI_PREFIX + FILE_AUDIO_VIDEO);
ImmutableList<AudioProcessor> audioProcessors = ImmutableList.of(sonicAudioProcessor);
Effects effects = new Effects(audioProcessors, /* videoEffects= */ ImmutableList.of());
EditedMediaItem editedMediaItem =
new EditedMediaItem.Builder(mediaItem).setEffects(effects).build();
new EditedMediaItem.Builder(mediaItem)
.setEffects(createAudioEffects(sonicAudioProcessor))
.build();
EditedMediaItemSequence editedMediaItemSequence =
new EditedMediaItemSequence(ImmutableList.of(editedMediaItem));
Composition composition =
@ -971,10 +973,10 @@ public final class MediaItemExportTest {
SUPPORTED_OUTPUT_TYPE_ENCODED, /* sampleConsumerRef= */ null))
.build();
MediaItem mediaItem = MediaItem.fromUri(ASSET_URI_PREFIX + FILE_AUDIO_VIDEO);
ImmutableList<AudioProcessor> audioProcessors = ImmutableList.of(new SonicAudioProcessor());
Effects effects = new Effects(audioProcessors, /* videoEffects= */ ImmutableList.of());
EditedMediaItem editedMediaItem =
new EditedMediaItem.Builder(mediaItem).setEffects(effects).build();
new EditedMediaItem.Builder(mediaItem)
.setEffects(createAudioEffects(createPitchChangingAudioProcessor(/* pitch= */ 2f)))
.build();
transformer.start(editedMediaItem, outputPath);
ExportException exportException =

View File

@ -24,16 +24,15 @@ import static androidx.media3.transformer.TestUtil.FILE_AUDIO_VIDEO;
import static androidx.media3.transformer.TestUtil.FILE_AUDIO_VIDEO_INCREASING_TIMESTAMPS_15S;
import static androidx.media3.transformer.TestUtil.addAudioDecoders;
import static androidx.media3.transformer.TestUtil.addAudioEncoders;
import static androidx.media3.transformer.TestUtil.createAudioEffects;
import static androidx.media3.transformer.TestUtil.createPitchChangingAudioProcessor;
import static androidx.media3.transformer.TestUtil.createTransformerBuilder;
import static androidx.media3.transformer.TestUtil.getDumpFileName;
import static androidx.media3.transformer.TestUtil.removeEncodersAndDecoders;
import android.content.Context;
import androidx.media3.common.Effect;
import androidx.media3.common.MediaItem;
import androidx.media3.common.MimeTypes;
import androidx.media3.common.audio.SonicAudioProcessor;
import androidx.media3.common.util.Util;
import androidx.media3.effect.RgbFilter;
import androidx.media3.test.utils.DumpFileAsserts;
@ -109,12 +108,13 @@ public final class SequenceExportTest {
Transformer transformer =
createTransformerBuilder(muxerFactory, /* enableFallback= */ false).build();
MediaItem mediaItem = MediaItem.fromUri(ASSET_URI_PREFIX + FILE_AUDIO_VIDEO);
SonicAudioProcessor sonicAudioProcessor = createPitchChangingAudioProcessor(/* pitch= */ 2f);
Effect videoEffect = RgbFilter.createGrayscaleFilter();
Effects effects =
new Effects(ImmutableList.of(sonicAudioProcessor), ImmutableList.of(videoEffect));
EditedMediaItem editedMediaItem =
new EditedMediaItem.Builder(mediaItem).setEffects(effects).build();
new EditedMediaItem.Builder(mediaItem)
.setEffects(
new Effects(
ImmutableList.of(createPitchChangingAudioProcessor(/* pitch= */ 2f)),
ImmutableList.of(RgbFilter.createGrayscaleFilter())))
.build();
EditedMediaItemSequence editedMediaItemSequence =
new EditedMediaItemSequence(ImmutableList.of(editedMediaItem, editedMediaItem));
Composition composition =
@ -237,18 +237,12 @@ public final class SequenceExportTest {
MediaItem mediaItem = MediaItem.fromUri(ASSET_URI_PREFIX + FILE_AUDIO_RAW_VIDEO);
EditedMediaItem audioEditedMediaItem =
new EditedMediaItem.Builder(mediaItem)
.setEffects(
new Effects(
ImmutableList.of(createPitchChangingAudioProcessor(/* pitch= */ 2f)),
/* videoEffects= */ ImmutableList.of()))
.setEffects(createAudioEffects(createPitchChangingAudioProcessor(/* pitch= */ 2f)))
.build();
EditedMediaItem noAudioEditedMediaItem =
new EditedMediaItem.Builder(mediaItem)
.setRemoveAudio(true)
.setEffects(
new Effects(
ImmutableList.of(createPitchChangingAudioProcessor(/* pitch= */ 2f)),
/* videoEffects= */ ImmutableList.of()))
.setEffects(createAudioEffects(createPitchChangingAudioProcessor(/* pitch= */ 2f)))
.build();
EditedMediaItemSequence sequence =
new EditedMediaItemSequence(ImmutableList.of(audioEditedMediaItem, noAudioEditedMediaItem));
@ -276,17 +270,11 @@ public final class SequenceExportTest {
EditedMediaItem noAudioEditedMediaItem =
new EditedMediaItem.Builder(mediaItem)
.setRemoveAudio(true)
.setEffects(
new Effects(
ImmutableList.of(createPitchChangingAudioProcessor(/* pitch= */ 2f)),
/* videoEffects= */ ImmutableList.of()))
.setEffects(createAudioEffects(createPitchChangingAudioProcessor(/* pitch= */ 2f)))
.build();
EditedMediaItem audioEditedMediaItem =
new EditedMediaItem.Builder(mediaItem)
.setEffects(
new Effects(
ImmutableList.of(createPitchChangingAudioProcessor(/* pitch= */ 2f)),
/* videoEffects= */ ImmutableList.of()))
.setEffects(createAudioEffects(createPitchChangingAudioProcessor(/* pitch= */ 2f)))
.build();
Composition composition =
new Composition.Builder(
@ -340,18 +328,12 @@ public final class SequenceExportTest {
EditedMediaItem silenceWithEffectsItem =
new EditedMediaItem.Builder(mediaItem)
.setRemoveAudio(true)
.setEffects(
new Effects(
ImmutableList.of(createPitchChangingAudioProcessor(/* pitch= */ 2f)),
/* videoEffects= */ ImmutableList.of()))
.setEffects(createAudioEffects(createPitchChangingAudioProcessor(/* pitch= */ 2f)))
.build();
EditedMediaItem silenceItem =
new EditedMediaItem.Builder(mediaItem)
.setRemoveAudio(true)
.setEffects(
new Effects(
ImmutableList.of(createPitchChangingAudioProcessor(/* pitch= */ 2f)),
/* videoEffects= */ ImmutableList.of()))
.setEffects(createAudioEffects(createPitchChangingAudioProcessor(/* pitch= */ 2f)))
.build();
EditedMediaItemSequence sequence =
new EditedMediaItemSequence(ImmutableList.of(silenceWithEffectsItem, silenceItem));
@ -379,18 +361,12 @@ public final class SequenceExportTest {
EditedMediaItem silenceWithEffectsItem =
new EditedMediaItem.Builder(mediaItem)
.setRemoveAudio(true)
.setEffects(
new Effects(
ImmutableList.of(createPitchChangingAudioProcessor(/* pitch= */ 2f)),
/* videoEffects= */ ImmutableList.of()))
.setEffects(createAudioEffects(createPitchChangingAudioProcessor(/* pitch= */ 2f)))
.build();
EditedMediaItem silenceItem =
new EditedMediaItem.Builder(mediaItem)
.setRemoveAudio(true)
.setEffects(
new Effects(
ImmutableList.of(createPitchChangingAudioProcessor(/* pitch= */ 2f)),
/* videoEffects= */ ImmutableList.of()))
.setEffects(createAudioEffects(createPitchChangingAudioProcessor(/* pitch= */ 2f)))
.build();
EditedMediaItemSequence sequence =
new EditedMediaItemSequence(ImmutableList.of(silenceItem, silenceWithEffectsItem));
@ -418,18 +394,12 @@ public final class SequenceExportTest {
EditedMediaItem firstItem =
new EditedMediaItem.Builder(mediaItem)
.setRemoveAudio(true)
.setEffects(
new Effects(
ImmutableList.of(createPitchChangingAudioProcessor(/* pitch= */ 2f)),
/* videoEffects= */ ImmutableList.of()))
.setEffects(createAudioEffects(createPitchChangingAudioProcessor(/* pitch= */ 2f)))
.build();
EditedMediaItem secondItem =
new EditedMediaItem.Builder(mediaItem)
.setRemoveAudio(true)
.setEffects(
new Effects(
ImmutableList.of(createPitchChangingAudioProcessor(/* pitch= */ 2f)),
/* videoEffects= */ ImmutableList.of()))
.setEffects(createAudioEffects(createPitchChangingAudioProcessor(/* pitch= */ 2f)))
.build();
EditedMediaItemSequence sequence =
new EditedMediaItemSequence(ImmutableList.of(firstItem, secondItem));
@ -472,11 +442,10 @@ public final class SequenceExportTest {
Transformer transformer =
createTransformerBuilder(muxerFactory, /* enableFallback= */ false).build();
MediaItem audioOnlyMediaItem = MediaItem.fromUri(ASSET_URI_PREFIX + FILE_AUDIO_RAW);
SonicAudioProcessor sonicAudioProcessor = createPitchChangingAudioProcessor(/* pitch= */ 2f);
Effects effects =
new Effects(ImmutableList.of(sonicAudioProcessor), /* videoEffects= */ ImmutableList.of());
EditedMediaItem editedMediaItem =
new EditedMediaItem.Builder(audioOnlyMediaItem).setEffects(effects).build();
new EditedMediaItem.Builder(audioOnlyMediaItem)
.setEffects(createAudioEffects(createPitchChangingAudioProcessor(/* pitch= */ 2f)))
.build();
EditedMediaItemSequence editedMediaItemSequence =
new EditedMediaItemSequence(ImmutableList.of(editedMediaItem, editedMediaItem));
Composition composition =
@ -497,23 +466,15 @@ public final class SequenceExportTest {
Transformer transformer =
createTransformerBuilder(muxerFactory, /* enableFallback= */ false).build();
MediaItem audioOnlyMediaItem = MediaItem.fromUri(ASSET_URI_PREFIX + FILE_AUDIO_RAW);
Effects highPitchEffects =
new Effects(
ImmutableList.of(createPitchChangingAudioProcessor(/* pitch= */ 2f)),
/* videoEffects= */ ImmutableList.of());
EditedMediaItem highPitchMediaItem =
new EditedMediaItem.Builder(audioOnlyMediaItem)
.setRemoveVideo(true)
.setEffects(highPitchEffects)
.setEffects(createAudioEffects(createPitchChangingAudioProcessor(/* pitch= */ 2f)))
.build();
Effects lowPitchEffects =
new Effects(
ImmutableList.of(createPitchChangingAudioProcessor(/* pitch= */ 0.5f)),
/* videoEffects= */ ImmutableList.of());
EditedMediaItem lowPitchMediaItem =
new EditedMediaItem.Builder(audioOnlyMediaItem)
.setRemoveVideo(true)
.setEffects(lowPitchEffects)
.setEffects(createAudioEffects(createPitchChangingAudioProcessor(/* pitch= */ 0.5f)))
.build();
EditedMediaItemSequence sequence =
new EditedMediaItemSequence(ImmutableList.of(highPitchMediaItem, lowPitchMediaItem));
@ -558,19 +519,14 @@ public final class SequenceExportTest {
Transformer transformer =
createTransformerBuilder(muxerFactory, /* enableFallback= */ false).build();
Effects highPitch =
new Effects(
ImmutableList.of(createPitchChangingAudioProcessor(/* pitch= */ 2f)),
/* videoEffects= */ ImmutableList.of());
EditedMediaItem stereo48000Audio =
new EditedMediaItem.Builder(
MediaItem.fromUri(ASSET_URI_PREFIX + FILE_AUDIO_RAW_STEREO_48000KHZ))
.setEffects(highPitch)
.setEffects(createAudioEffects(createPitchChangingAudioProcessor(/* pitch= */ 2f)))
.build();
EditedMediaItem mono44100Audio =
new EditedMediaItem.Builder(MediaItem.fromUri(ASSET_URI_PREFIX + FILE_AUDIO_RAW))
.setEffects(highPitch)
.setEffects(createAudioEffects(createPitchChangingAudioProcessor(/* pitch= */ 2f)))
.build();
EditedMediaItemSequence editedMediaItemSequence =
@ -596,17 +552,11 @@ public final class SequenceExportTest {
EditedMediaItem stereo48000AudioHighPitch =
new EditedMediaItem.Builder(
MediaItem.fromUri(ASSET_URI_PREFIX + FILE_AUDIO_RAW_STEREO_48000KHZ))
.setEffects(
new Effects(
ImmutableList.of(createPitchChangingAudioProcessor(/* pitch= */ 2f)),
/* videoEffects= */ ImmutableList.of()))
.setEffects(createAudioEffects(createPitchChangingAudioProcessor(/* pitch= */ 2f)))
.build();
EditedMediaItem mono44100AudioLowPitch =
new EditedMediaItem.Builder(MediaItem.fromUri(ASSET_URI_PREFIX + FILE_AUDIO_RAW))
.setEffects(
new Effects(
ImmutableList.of(createPitchChangingAudioProcessor(/* pitch= */ 0.5f)),
/* videoEffects= */ ImmutableList.of()))
.setEffects(createAudioEffects(createPitchChangingAudioProcessor(/* pitch= */ 0.5f)))
.build();
EditedMediaItemSequence editedMediaItemSequence =
new EditedMediaItemSequence(

View File

@ -22,6 +22,7 @@ import androidx.annotation.Nullable;
import androidx.media3.common.C;
import androidx.media3.common.Format;
import androidx.media3.common.MimeTypes;
import androidx.media3.common.audio.AudioProcessor;
import androidx.media3.common.audio.SonicAudioProcessor;
import androidx.media3.common.util.UnstableApi;
import androidx.media3.common.util.Util;
@ -144,6 +145,11 @@ public final class TestUtil {
new DefaultEncoderFactory.Builder(context).setEnableFallback(enableFallback).build());
}
public static Effects createAudioEffects(AudioProcessor... audioProcessors) {
return new Effects(
ImmutableList.copyOf(audioProcessors), /* videoEffects= */ ImmutableList.of());
}
public static SonicAudioProcessor createPitchChangingAudioProcessor(float pitch) {
SonicAudioProcessor sonicAudioProcessor = new SonicAudioProcessor();
sonicAudioProcessor.setPitch(pitch);