mirror of
https://github.com/androidx/media.git
synced 2025-04-30 06:46:50 +08:00
Add a composition export dump test with a shorter second sequence.
PiperOrigin-RevId: 669348374
This commit is contained in:
parent
4e858f7260
commit
5eba716410
@ -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
|
@ -28,6 +28,7 @@ import static androidx.media3.transformer.TestUtil.addAudioEncoders;
|
||||
import static androidx.media3.transformer.TestUtil.createAudioEffects;
|
||||
import static androidx.media3.transformer.TestUtil.createTransformerBuilder;
|
||||
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.removeEncodersAndDecoders;
|
||||
import static com.google.common.truth.Truth.assertThat;
|
||||
@ -378,6 +379,72 @@ public class CompositionExportTest {
|
||||
"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) {
|
||||
int lastSeparator = filePath.lastIndexOf("/");
|
||||
return filePath.substring(lastSeparator + 1);
|
||||
|
@ -149,6 +149,15 @@ public final class TestUtil {
|
||||
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}.
|
||||
*
|
||||
|
Loading…
x
Reference in New Issue
Block a user