mirror of
https://github.com/androidx/media.git
synced 2025-04-30 06:46:50 +08:00
Improve SequenceExportTest test and dump file naming.
No-op change to highlight when video and/or audio are transmuxed and reorder the methods. PiperOrigin-RevId: 540567375
This commit is contained in:
parent
501da109ce
commit
1236d37acb
@ -69,7 +69,7 @@ public final class SequenceExportTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void start_concatenateMediaItemsWithSameFormat_completesSuccessfully() throws Exception {
|
public void start_concatenateSameMediaItemWithTransmux_completesSuccessfully() throws Exception {
|
||||||
Transformer transformer =
|
Transformer transformer =
|
||||||
createTransformerBuilder(testMuxerHolder, /* enableFallback= */ false).build();
|
createTransformerBuilder(testMuxerHolder, /* enableFallback= */ false).build();
|
||||||
MediaItem mediaItem = MediaItem.fromUri(ASSET_URI_PREFIX + FILE_AUDIO_VIDEO);
|
MediaItem mediaItem = MediaItem.fromUri(ASSET_URI_PREFIX + FILE_AUDIO_VIDEO);
|
||||||
@ -88,30 +88,29 @@ public final class SequenceExportTest {
|
|||||||
DumpFileAsserts.assertOutput(
|
DumpFileAsserts.assertOutput(
|
||||||
context,
|
context,
|
||||||
checkNotNull(testMuxerHolder.testMuxer),
|
checkNotNull(testMuxerHolder.testMuxer),
|
||||||
getDumpFileName(FILE_AUDIO_VIDEO + ".concatenated"));
|
getDumpFileName(FILE_AUDIO_VIDEO + ".concatenated_transmux"));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void start_concatenateMediaItemsWithSameFormatAndEffects_completesSuccessfully()
|
public void start_concatenateSameMediaItemWithEffectsAndTransmux_ignoresEffects()
|
||||||
throws Exception {
|
throws Exception {
|
||||||
Transformer transformer =
|
Transformer transformer =
|
||||||
createTransformerBuilder(testMuxerHolder, /* enableFallback= */ false).build();
|
createTransformerBuilder(testMuxerHolder, /* enableFallback= */ false).build();
|
||||||
MediaItem mediaItem = MediaItem.fromUri(ASSET_URI_PREFIX + FILE_AUDIO_VIDEO);
|
MediaItem mediaItem = MediaItem.fromUri(ASSET_URI_PREFIX + FILE_AUDIO_VIDEO);
|
||||||
SonicAudioProcessor sonicAudioProcessor = new SonicAudioProcessor();
|
SonicAudioProcessor sonicAudioProcessor = new SonicAudioProcessor();
|
||||||
sonicAudioProcessor.setPitch(2f);
|
sonicAudioProcessor.setPitch(2f);
|
||||||
|
Effect videoEffect = RgbFilter.createGrayscaleFilter();
|
||||||
Effects effects =
|
Effects effects =
|
||||||
new Effects(ImmutableList.of(sonicAudioProcessor), /* videoEffects= */ ImmutableList.of());
|
new Effects(ImmutableList.of(sonicAudioProcessor), ImmutableList.of(videoEffect));
|
||||||
// The video track must be removed in order for the export to end. Indeed, the
|
|
||||||
// Robolectric decoder just copies the input buffers to the output and the audio timestamps are
|
|
||||||
// therefore computed based on the encoded samples (see [internal: b/178685617]). As a result,
|
|
||||||
// the audio timestamps are much smaller than they should be and the muxer waits for more audio
|
|
||||||
// samples before writing video samples.
|
|
||||||
EditedMediaItem editedMediaItem =
|
EditedMediaItem editedMediaItem =
|
||||||
new EditedMediaItem.Builder(mediaItem).setEffects(effects).setRemoveVideo(true).build();
|
new EditedMediaItem.Builder(mediaItem).setEffects(effects).build();
|
||||||
EditedMediaItemSequence editedMediaItemSequence =
|
EditedMediaItemSequence editedMediaItemSequence =
|
||||||
new EditedMediaItemSequence(ImmutableList.of(editedMediaItem, editedMediaItem));
|
new EditedMediaItemSequence(ImmutableList.of(editedMediaItem, editedMediaItem));
|
||||||
Composition composition =
|
Composition composition =
|
||||||
new Composition.Builder(ImmutableList.of(editedMediaItemSequence)).build();
|
new Composition.Builder(ImmutableList.of(editedMediaItemSequence))
|
||||||
|
.setTransmuxAudio(true)
|
||||||
|
.setTransmuxVideo(true)
|
||||||
|
.build();
|
||||||
|
|
||||||
transformer.start(composition, outputPath);
|
transformer.start(composition, outputPath);
|
||||||
TransformerTestRunner.runLooper(transformer);
|
TransformerTestRunner.runLooper(transformer);
|
||||||
@ -119,11 +118,12 @@ public final class SequenceExportTest {
|
|||||||
DumpFileAsserts.assertOutput(
|
DumpFileAsserts.assertOutput(
|
||||||
context,
|
context,
|
||||||
checkNotNull(testMuxerHolder.testMuxer),
|
checkNotNull(testMuxerHolder.testMuxer),
|
||||||
getDumpFileName(FILE_AUDIO_VIDEO + ".concatenated_with_high_pitch_and_no_video"));
|
getDumpFileName(FILE_AUDIO_VIDEO + ".concatenated_transmux"));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void start_concatenateClippedMediaItems_completesSuccessfully() throws Exception {
|
public void start_concatenateClippedMediaItemsWithTransmux_completesSuccessfully()
|
||||||
|
throws Exception {
|
||||||
Transformer transformer =
|
Transformer transformer =
|
||||||
createTransformerBuilder(testMuxerHolder, /* enableFallback= */ false).build();
|
createTransformerBuilder(testMuxerHolder, /* enableFallback= */ false).build();
|
||||||
MediaItem.ClippingConfiguration clippingConfiguration1 =
|
MediaItem.ClippingConfiguration clippingConfiguration1 =
|
||||||
@ -162,11 +162,13 @@ public final class SequenceExportTest {
|
|||||||
DumpFileAsserts.assertOutput(
|
DumpFileAsserts.assertOutput(
|
||||||
context,
|
context,
|
||||||
checkNotNull(testMuxerHolder.testMuxer),
|
checkNotNull(testMuxerHolder.testMuxer),
|
||||||
getDumpFileName(FILE_AUDIO_VIDEO_INCREASING_TIMESTAMPS_15S + ".clipped_and_concatenated"));
|
getDumpFileName(
|
||||||
|
FILE_AUDIO_VIDEO_INCREASING_TIMESTAMPS_15S + ".clipped_concatenated_transmux"));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void start_concatenateSilenceAndAudio_completesSuccessfully() throws Exception {
|
public void start_concatenateSilenceAndAudioWithTransmuxVideo_completesSuccessfully()
|
||||||
|
throws Exception {
|
||||||
Transformer transformer =
|
Transformer transformer =
|
||||||
createTransformerBuilder(testMuxerHolder, /* enableFallback= */ false).build();
|
createTransformerBuilder(testMuxerHolder, /* enableFallback= */ false).build();
|
||||||
MediaItem mediaItem = MediaItem.fromUri(ASSET_URI_PREFIX + FILE_AUDIO_VIDEO);
|
MediaItem mediaItem = MediaItem.fromUri(ASSET_URI_PREFIX + FILE_AUDIO_VIDEO);
|
||||||
@ -191,7 +193,8 @@ public final class SequenceExportTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void start_concatenateSilenceAndAudioWithEffects_completesSuccessfully() throws Exception {
|
public void start_concatenateSilenceAndAudioWithEffectsAndTransmuxVideo_completesSuccessfully()
|
||||||
|
throws Exception {
|
||||||
Transformer transformer =
|
Transformer transformer =
|
||||||
createTransformerBuilder(testMuxerHolder, /* enableFallback= */ false).build();
|
createTransformerBuilder(testMuxerHolder, /* enableFallback= */ false).build();
|
||||||
MediaItem mediaItem = MediaItem.fromUri(ASSET_URI_PREFIX + FILE_AUDIO_VIDEO);
|
MediaItem mediaItem = MediaItem.fromUri(ASSET_URI_PREFIX + FILE_AUDIO_VIDEO);
|
||||||
@ -221,24 +224,26 @@ public final class SequenceExportTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void start_multipleMediaItemsAndTransmux_transmux() throws Exception {
|
public void start_concatenateSameAudioItemWithEffects_completesSuccessfully() throws Exception {
|
||||||
Transformer transformer =
|
Transformer transformer =
|
||||||
createTransformerBuilder(testMuxerHolder, /* enableFallback= */ false).build();
|
createTransformerBuilder(testMuxerHolder, /* enableFallback= */ false).build();
|
||||||
MediaItem mediaItem = MediaItem.fromUri(ASSET_URI_PREFIX + FILE_AUDIO_VIDEO);
|
MediaItem mediaItem = MediaItem.fromUri(ASSET_URI_PREFIX + FILE_AUDIO_VIDEO);
|
||||||
SonicAudioProcessor sonicAudioProcessor = new SonicAudioProcessor();
|
SonicAudioProcessor sonicAudioProcessor = new SonicAudioProcessor();
|
||||||
sonicAudioProcessor.setPitch(2f);
|
sonicAudioProcessor.setPitch(2f);
|
||||||
Effect videoEffect = RgbFilter.createGrayscaleFilter();
|
|
||||||
Effects effects =
|
Effects effects =
|
||||||
new Effects(ImmutableList.of(sonicAudioProcessor), ImmutableList.of(videoEffect));
|
new Effects(ImmutableList.of(sonicAudioProcessor), /* videoEffects= */ ImmutableList.of());
|
||||||
|
|
||||||
|
// The video track must be removed in order for the export to end. Indeed, the
|
||||||
|
// Robolectric decoder just copies the input buffers to the output and the audio timestamps are
|
||||||
|
// therefore computed based on the encoded samples (see [internal: b/178685617]). As a result,
|
||||||
|
// the audio timestamps are much smaller than they should be and the muxer waits for more audio
|
||||||
|
// samples before writing video samples.
|
||||||
EditedMediaItem editedMediaItem =
|
EditedMediaItem editedMediaItem =
|
||||||
new EditedMediaItem.Builder(mediaItem).setEffects(effects).build();
|
new EditedMediaItem.Builder(mediaItem).setEffects(effects).setRemoveVideo(true).build();
|
||||||
EditedMediaItemSequence editedMediaItemSequence =
|
EditedMediaItemSequence editedMediaItemSequence =
|
||||||
new EditedMediaItemSequence(ImmutableList.of(editedMediaItem, editedMediaItem));
|
new EditedMediaItemSequence(ImmutableList.of(editedMediaItem, editedMediaItem));
|
||||||
Composition composition =
|
Composition composition =
|
||||||
new Composition.Builder(ImmutableList.of(editedMediaItemSequence))
|
new Composition.Builder(ImmutableList.of(editedMediaItemSequence)).build();
|
||||||
.setTransmuxAudio(true)
|
|
||||||
.setTransmuxVideo(true)
|
|
||||||
.build();
|
|
||||||
|
|
||||||
transformer.start(composition, outputPath);
|
transformer.start(composition, outputPath);
|
||||||
TransformerTestRunner.runLooper(transformer);
|
TransformerTestRunner.runLooper(transformer);
|
||||||
@ -246,6 +251,6 @@ public final class SequenceExportTest {
|
|||||||
DumpFileAsserts.assertOutput(
|
DumpFileAsserts.assertOutput(
|
||||||
context,
|
context,
|
||||||
checkNotNull(testMuxerHolder.testMuxer),
|
checkNotNull(testMuxerHolder.testMuxer),
|
||||||
getDumpFileName(FILE_AUDIO_VIDEO + ".concatenated"));
|
getDumpFileName(FILE_AUDIO_VIDEO + ".concatenated_audio_high_pitch"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user