From 2d22604efebc195031f6e91a96f020a8a2e79392 Mon Sep 17 00:00:00 2001 From: samrobinson Date: Tue, 7 Mar 2023 01:40:04 +0000 Subject: [PATCH] Pass Metadata to Muxer when adding a track. PiperOrigin-RevId: 514575400 --- .../android/exoplayer2/transformer/AudioSamplePipeline.java | 2 +- .../android/exoplayer2/transformer/SamplePipeline.java | 6 ++++++ .../assets/transformerdumps/mp4/sample.mp4.48000hz.dump | 1 + ...ample.mp4.concatenated_with_high_pitch_and_no_video.dump | 1 + .../transformerdumps/mp4/sample_sef_slow_motion.mp4.dump | 1 + 5 files changed, 10 insertions(+), 1 deletion(-) diff --git a/library/transformer/src/main/java/com/google/android/exoplayer2/transformer/AudioSamplePipeline.java b/library/transformer/src/main/java/com/google/android/exoplayer2/transformer/AudioSamplePipeline.java index 5da92952d9..75948b1d9e 100644 --- a/library/transformer/src/main/java/com/google/android/exoplayer2/transformer/AudioSamplePipeline.java +++ b/library/transformer/src/main/java/com/google/android/exoplayer2/transformer/AudioSamplePipeline.java @@ -70,7 +70,7 @@ import org.checkerframework.dataflow.qual.Pure; MuxerWrapper muxerWrapper, FallbackListener fallbackListener) throws ExportException { - super(firstPipelineInputFormat, /* streamStartPositionUs= */ streamOffsetUs, muxerWrapper); + super(firstAssetLoaderInputFormat, /* streamStartPositionUs= */ streamOffsetUs, muxerWrapper); silentAudioGenerator = new SilentAudioGenerator(firstPipelineInputFormat); availableInputBuffers = new ConcurrentLinkedDeque<>(); diff --git a/library/transformer/src/main/java/com/google/android/exoplayer2/transformer/SamplePipeline.java b/library/transformer/src/main/java/com/google/android/exoplayer2/transformer/SamplePipeline.java index 6a7ab36a09..a130ffc619 100644 --- a/library/transformer/src/main/java/com/google/android/exoplayer2/transformer/SamplePipeline.java +++ b/library/transformer/src/main/java/com/google/android/exoplayer2/transformer/SamplePipeline.java @@ -27,6 +27,7 @@ import androidx.annotation.Nullable; import com.google.android.exoplayer2.C; import com.google.android.exoplayer2.Format; import com.google.android.exoplayer2.decoder.DecoderInputBuffer; +import com.google.android.exoplayer2.metadata.Metadata; import com.google.android.exoplayer2.util.MimeTypes; import com.google.android.exoplayer2.video.ColorInfo; import com.google.common.collect.ImmutableList; @@ -49,6 +50,7 @@ import java.util.List; private final long streamStartPositionUs; private final MuxerWrapper muxerWrapper; private final @C.TrackType int outputTrackType; + @Nullable private final Metadata metadata; private boolean muxerWrapperTrackAdded; @@ -56,6 +58,7 @@ import java.util.List; Format firstInputFormat, long streamStartPositionUs, MuxerWrapper muxerWrapper) { this.streamStartPositionUs = streamStartPositionUs; this.muxerWrapper = muxerWrapper; + this.metadata = firstInputFormat.metadata; outputTrackType = getProcessedTrackType(firstInputFormat.sampleMimeType); } @@ -94,6 +97,9 @@ import java.util.List; if (inputFormat == null) { return false; } + if (metadata != null) { + inputFormat = inputFormat.buildUpon().setMetadata(metadata).build(); + } try { muxerWrapper.addTrackFormat(inputFormat); } catch (Muxer.MuxerException e) { diff --git a/testdata/src/test/assets/transformerdumps/mp4/sample.mp4.48000hz.dump b/testdata/src/test/assets/transformerdumps/mp4/sample.mp4.48000hz.dump index c366457b5a..8a9b380e25 100644 --- a/testdata/src/test/assets/transformerdumps/mp4/sample.mp4.48000hz.dump +++ b/testdata/src/test/assets/transformerdumps/mp4/sample.mp4.48000hz.dump @@ -14,6 +14,7 @@ format 1: channelCount = 1 sampleRate = 48000 pcmEncoding = 2 + metadata = entries=[TSSE: description=null: values=[Lavf56.1.0]] sample: trackIndex = 1 dataHashCode = 1868041800 diff --git a/testdata/src/test/assets/transformerdumps/mp4/sample.mp4.concatenated_with_high_pitch_and_no_video.dump b/testdata/src/test/assets/transformerdumps/mp4/sample.mp4.concatenated_with_high_pitch_and_no_video.dump index 56ee4a8494..286f255ada 100644 --- a/testdata/src/test/assets/transformerdumps/mp4/sample.mp4.concatenated_with_high_pitch_and_no_video.dump +++ b/testdata/src/test/assets/transformerdumps/mp4/sample.mp4.concatenated_with_high_pitch_and_no_video.dump @@ -3,6 +3,7 @@ format 0: channelCount = 1 sampleRate = 44100 pcmEncoding = 2 + metadata = entries=[TSSE: description=null: values=[Lavf56.1.0]] sample: trackIndex = 0 dataHashCode = 915609509 diff --git a/testdata/src/test/assets/transformerdumps/mp4/sample_sef_slow_motion.mp4.dump b/testdata/src/test/assets/transformerdumps/mp4/sample_sef_slow_motion.mp4.dump index bdbbafc031..4b1421cf36 100644 --- a/testdata/src/test/assets/transformerdumps/mp4/sample_sef_slow_motion.mp4.dump +++ b/testdata/src/test/assets/transformerdumps/mp4/sample_sef_slow_motion.mp4.dump @@ -15,6 +15,7 @@ format 1: channelCount = 2 sampleRate = 12000 pcmEncoding = 2 + metadata = entries=[smta: captureFrameRate=240.0, svcTemporalLayerCount=4, SlowMotion: segments=[Segment: startTimeMs=88, endTimeMs=879, speedDivisor=2, Segment: startTimeMs=1255, endTimeMs=1970, speedDivisor=8]] sample: trackIndex = 1 dataHashCode = -212376212