Add a composition export dump test with a shorter second sequence.

PiperOrigin-RevId: 669348374
This commit is contained in:
samrobinson 2024-08-30 09:18:37 -07:00 committed by Copybara-Service
parent 4e858f7260
commit 5eba716410
3 changed files with 193 additions and 0 deletions

View File

@ -0,0 +1,117 @@
format audio:
averageBitrate = 131072
sampleMimeType = audio/mp4a-latm
channelCount = 1
sampleRate = 44100
pcmEncoding = 2
sample:
trackType = audio
dataHashCode = -477126770
size = 4096
isKeyFrame = true
sample:
trackType = audio
dataHashCode = 779113371
size = 4096
isKeyFrame = true
sample:
trackType = audio
dataHashCode = 45842530
size = 4096
isKeyFrame = true
sample:
trackType = audio
dataHashCode = 2001000243
size = 4096
isKeyFrame = true
sample:
trackType = audio
dataHashCode = -187462316
size = 4096
isKeyFrame = true
sample:
trackType = audio
dataHashCode = -309708822
size = 4096
isKeyFrame = true
sample:
trackType = audio
dataHashCode = 1030869338
size = 4096
isKeyFrame = true
sample:
trackType = audio
dataHashCode = -1134039798
size = 4096
isKeyFrame = true
sample:
trackType = audio
dataHashCode = -2131288947
size = 4096
isKeyFrame = true
sample:
trackType = audio
dataHashCode = 1159697593
size = 4096
isKeyFrame = true
sample:
trackType = audio
dataHashCode = -889164698
size = 4096
isKeyFrame = true
sample:
trackType = audio
dataHashCode = 1380568930
size = 4096
isKeyFrame = true
sample:
trackType = audio
dataHashCode = 1722863050
size = 4096
isKeyFrame = true
sample:
trackType = audio
dataHashCode = -1365744081
size = 4096
isKeyFrame = true
sample:
trackType = audio
dataHashCode = -81471997
size = 4096
isKeyFrame = true
sample:
trackType = audio
dataHashCode = -6915052
size = 4096
isKeyFrame = true
sample:
trackType = audio
dataHashCode = 1634845963
size = 4096
isKeyFrame = true
sample:
trackType = audio
dataHashCode = -1252305359
size = 4096
isKeyFrame = true
sample:
trackType = audio
dataHashCode = 2127515647
size = 4096
isKeyFrame = true
sample:
trackType = audio
dataHashCode = 2077308846
size = 4096
isKeyFrame = true
sample:
trackType = audio
dataHashCode = 1055925064
size = 4096
isKeyFrame = true
sample:
trackType = audio
dataHashCode = 1077088737
size = 1912
isKeyFrame = true
released = true

View File

@ -28,6 +28,7 @@ import static androidx.media3.transformer.TestUtil.addAudioEncoders;
import static androidx.media3.transformer.TestUtil.createAudioEffects; import static androidx.media3.transformer.TestUtil.createAudioEffects;
import static androidx.media3.transformer.TestUtil.createTransformerBuilder; import static androidx.media3.transformer.TestUtil.createTransformerBuilder;
import static androidx.media3.transformer.TestUtil.createVolumeScalingAudioProcessor; import static androidx.media3.transformer.TestUtil.createVolumeScalingAudioProcessor;
import static androidx.media3.transformer.TestUtil.getCompositionDumpFilePath;
import static androidx.media3.transformer.TestUtil.getDumpFileName; import static androidx.media3.transformer.TestUtil.getDumpFileName;
import static androidx.media3.transformer.TestUtil.removeEncodersAndDecoders; import static androidx.media3.transformer.TestUtil.removeEncodersAndDecoders;
import static com.google.common.truth.Truth.assertThat; import static com.google.common.truth.Truth.assertThat;
@ -378,6 +379,72 @@ public class CompositionExportTest {
"48000hz")); "48000hz"));
} }
@Test
public void start_firstSequenceFinishesEarly_works() throws Exception {
CapturingMuxer.Factory muxerFactory = new CapturingMuxer.Factory(/* handleAudioAsPcm= */ true);
Transformer transformer =
createTransformerBuilder(muxerFactory, /* enableFallback= */ false).build();
EditedMediaItem audioItem300ms =
new EditedMediaItem.Builder(
MediaItem.fromUri(ASSET_URI_PREFIX + FILE_AUDIO_RAW)
.buildUpon()
.setClippingConfiguration(
new MediaItem.ClippingConfiguration.Builder()
.setStartPositionMs(100)
.setEndPositionMs(400)
.build())
.build())
.build();
EditedMediaItem audioItem1000ms =
new EditedMediaItem.Builder(MediaItem.fromUri(ASSET_URI_PREFIX + FILE_AUDIO_RAW)).build();
Composition composition =
new Composition.Builder(
new EditedMediaItemSequence(audioItem300ms),
new EditedMediaItemSequence(audioItem1000ms))
.build();
transformer.start(composition, outputDir.newFile().getPath());
TransformerTestRunner.runLooper(transformer);
DumpFileAsserts.assertOutput(
context,
muxerFactory.getCreatedMuxer(),
getCompositionDumpFilePath("seq-sample.wav+seq-sample.wav_clipped_100ms_to_400ms"));
}
@Test
public void start_secondSequenceFinishesEarly_works() throws Exception {
CapturingMuxer.Factory muxerFactory = new CapturingMuxer.Factory(/* handleAudioAsPcm= */ true);
Transformer transformer =
createTransformerBuilder(muxerFactory, /* enableFallback= */ false).build();
EditedMediaItem audioItem1000ms =
new EditedMediaItem.Builder(MediaItem.fromUri(ASSET_URI_PREFIX + FILE_AUDIO_RAW)).build();
EditedMediaItem audioItem300ms =
new EditedMediaItem.Builder(
MediaItem.fromUri(ASSET_URI_PREFIX + FILE_AUDIO_RAW)
.buildUpon()
.setClippingConfiguration(
new MediaItem.ClippingConfiguration.Builder()
.setStartPositionMs(100)
.setEndPositionMs(400)
.build())
.build())
.build();
Composition composition =
new Composition.Builder(
new EditedMediaItemSequence(audioItem1000ms),
new EditedMediaItemSequence(audioItem300ms))
.build();
transformer.start(composition, outputDir.newFile().getPath());
TransformerTestRunner.runLooper(transformer);
DumpFileAsserts.assertOutput(
context,
muxerFactory.getCreatedMuxer(),
getCompositionDumpFilePath("seq-sample.wav+seq-sample.wav_clipped_100ms_to_400ms"));
}
private static String getFileName(String filePath) { private static String getFileName(String filePath) {
int lastSeparator = filePath.lastIndexOf("/"); int lastSeparator = filePath.lastIndexOf("/");
return filePath.substring(lastSeparator + 1); return filePath.substring(lastSeparator + 1);

View File

@ -149,6 +149,15 @@ public final class TestUtil {
return stringJoiner.toString(); return stringJoiner.toString();
} }
/** Returns the file path of the composition export dump file, based on the summary provided. */
public static String getCompositionDumpFilePath(String compositionSummary) {
return DUMP_FILE_OUTPUT_DIRECTORY
+ "/composition/"
+ compositionSummary
+ "."
+ DUMP_FILE_EXTENSION;
}
/** /**
* Adds an audio decoder for each {@linkplain MimeTypes mime type}. * Adds an audio decoder for each {@linkplain MimeTypes mime type}.
* *