From 794900bfb8eb37dbbf77dc0bdd8c60f605d02687 Mon Sep 17 00:00:00 2001 From: sheenachhabra Date: Tue, 16 Apr 2024 04:37:55 -0700 Subject: [PATCH] Update addMetadata method in Transformer/Muxer.java This is to align the interface with Muxer/Muxer.java and then finally replace it. PiperOrigin-RevId: 625283725 --- .../main/java/androidx/media3/muxer/Muxer.java | 2 +- ..._mixedWith_sample_18byte_nclx_colr.mp4.dump | 5 +++-- .../transmuxed.dump | 4 +++- .../transmuxed.dump | 4 +++- .../mp4/sample.mp4/noaudio.dump | 5 ++++- .../mp4/sample.mp4/novideo.dump | 5 ++++- .../mp4/sample.mp4/original.dump | 9 +++++++-- .../sample.mp4/original_original_transmux.dump | 9 +++++++-- .../mp4/sample.mp4/rotated.dump | 9 +++++++-- .../mp4/sample.mp4/silence.dump | 5 ++++- .../mp4/sample.mp4/silence_48000hz.dump | 5 ++++- ...ing_mixedWith_test-cbr-info-header.mp3.dump | 5 +++-- .../sample_18byte_nclx_colr.mp4/original.dump | 3 ++- .../sample_18byte_nclx_colr.mp4/silence.dump | 3 ++- .../sample_sef_slow_motion.mp4/noaudio.dump | 8 +++++++- .../mp4/sample_twos_pcm.mp4/original.dump | 7 +++++-- .../mp4/sample_twos_pcm.mp4/silence.dump | 4 +++- .../sample_twos_pcm.mp4/silenceFromEffect.dump | 7 +++++-- .../clipped.dump | 7 +++++-- .../clipped_clipped_transmux.dump | 7 +++++-- .../clipped_to_empty.dump | 7 +++++-- .../original.dump | 7 +++++-- .../rotated.dump | 7 +++++-- .../highPitch_silenceHighPitch.dump | 5 +++-- .../mixed_sample_rf64.wav.dump | 5 +++-- .../mp4/sowt-with-video.mov/original.dump | 5 +++-- .../sowt-with-video.mov/original_silence.dump | 5 +++-- .../sequence_repeated3Times.dump | 5 +++-- ..._mixed_loopingAudiosowt-with-video.mov.dump | 5 +++-- .../mp4/sowt-with-video.mov/silence.dump | 3 ++- .../sowt-with-video.mov/silenceFromEffect.dump | 5 +++-- .../silenceHighPitch_highPitch.dump | 3 ++- .../silenceHighPitch_silence.dump | 3 ++- .../silenceHighPitch_silenceHighPitch.dump | 3 ++- .../sowt-with-video.mov/silence_original.dump | 3 ++- .../sowt-with-video.mov/silence_silence.dump | 3 ++- .../silence_silenceHighPitch.dump | 3 ++- .../TransformerPauseResumeTest.java | 4 ++-- .../media3/transformer/DefaultMuxer.java | 4 ++-- .../media3/transformer/FrameworkMuxer.java | 11 ++++------- .../media3/transformer/InAppMuxer.java | 9 +++------ .../androidx/media3/transformer/Muxer.java | 4 ++-- .../media3/transformer/MuxerWrapper.java | 4 +++- .../media3/transformer/CapturingMuxer.java | 18 +++++++++++------- 44 files changed, 161 insertions(+), 83 deletions(-) diff --git a/libraries/muxer/src/main/java/androidx/media3/muxer/Muxer.java b/libraries/muxer/src/main/java/androidx/media3/muxer/Muxer.java index eede55f85d..5b2145af93 100644 --- a/libraries/muxer/src/main/java/androidx/media3/muxer/Muxer.java +++ b/libraries/muxer/src/main/java/androidx/media3/muxer/Muxer.java @@ -36,7 +36,7 @@ public interface Muxer { TrackToken trackToken, ByteBuffer byteBuffer, MediaCodec.BufferInfo bufferInfo) throws IOException; - /** Adds metadata for the output file. */ + /** Adds {@linkplain Metadata.Entry metadata} about the output file. */ void addMetadata(Metadata.Entry metadata); /** Closes the file. */ diff --git a/libraries/test_data/src/test/assets/transformerdumps/mp3/test-cbr-info-header.mp3/looping_mixedWith_sample_18byte_nclx_colr.mp4.dump b/libraries/test_data/src/test/assets/transformerdumps/mp3/test-cbr-info-header.mp3/looping_mixedWith_sample_18byte_nclx_colr.mp4.dump index 7a717c6e8a..2d241766fa 100644 --- a/libraries/test_data/src/test/assets/transformerdumps/mp3/test-cbr-info-header.mp3/looping_mixedWith_sample_18byte_nclx_colr.mp4.dump +++ b/libraries/test_data/src/test/assets/transformerdumps/mp3/test-cbr-info-header.mp3/looping_mixedWith_sample_18byte_nclx_colr.mp4.dump @@ -25,8 +25,9 @@ format video: initializationData: data = length 29, hash 4746B5D9 data = length 10, hash 7A0D0F2B -container metadata = entries=[Mp4Timestamp: creation time=3718109610, modification time=3718109610, timescale=1000] -container metadata = entries=[TSSE: description=null: values=[Lavf58.45.100]] +container metadata: + entry = Mp4Timestamp: creation time=3718109610, modification time=3718109610, timescale=1000 + entry = TSSE: description=null: values=[Lavf58.45.100] sample: trackType = audio dataHashCode = 1582745311 diff --git a/libraries/test_data/src/test/assets/transformerdumps/mp4/iibbibb_editlist_videoonly.mp4/transmuxed.dump b/libraries/test_data/src/test/assets/transformerdumps/mp4/iibbibb_editlist_videoonly.mp4/transmuxed.dump index b9935b7589..5c794758df 100644 --- a/libraries/test_data/src/test/assets/transformerdumps/mp4/iibbibb_editlist_videoonly.mp4/transmuxed.dump +++ b/libraries/test_data/src/test/assets/transformerdumps/mp4/iibbibb_editlist_videoonly.mp4/transmuxed.dump @@ -13,7 +13,9 @@ format video: initializationData: data = length 30, hash 9DFD8D5 data = length 9, hash FBADD682 -container metadata = entries=[TSSE: description=null: values=[Lavf60.3.100], Mp4Timestamp: creation time=0, modification time=0, timescale=1000] +container metadata: + entry = Mp4Timestamp: creation time=0, modification time=0, timescale=1000 + entry = TSSE: description=null: values=[Lavf60.3.100] sample: trackType = video dataHashCode = 1491581480 diff --git a/libraries/test_data/src/test/assets/transformerdumps/mp4/long_edit_list_audioonly.mp4/transmuxed.dump b/libraries/test_data/src/test/assets/transformerdumps/mp4/long_edit_list_audioonly.mp4/transmuxed.dump index 07652a192e..bb8e91cd01 100644 --- a/libraries/test_data/src/test/assets/transformerdumps/mp4/long_edit_list_audioonly.mp4/transmuxed.dump +++ b/libraries/test_data/src/test/assets/transformerdumps/mp4/long_edit_list_audioonly.mp4/transmuxed.dump @@ -11,7 +11,9 @@ format audio: metadata = entries=[TSSE: description=null: values=[Lavf60.3.100], Mp4Timestamp: creation time=0, modification time=0, timescale=1000] initializationData: data = length 2, hash 5FF -container metadata = entries=[TSSE: description=null: values=[Lavf60.3.100], Mp4Timestamp: creation time=0, modification time=0, timescale=1000] +container metadata: + entry = Mp4Timestamp: creation time=0, modification time=0, timescale=1000 + entry = TSSE: description=null: values=[Lavf60.3.100] sample: trackType = audio dataHashCode = -620111888 diff --git a/libraries/test_data/src/test/assets/transformerdumps/mp4/sample.mp4/noaudio.dump b/libraries/test_data/src/test/assets/transformerdumps/mp4/sample.mp4/noaudio.dump index 0aebbe2bd6..9be2643f85 100644 --- a/libraries/test_data/src/test/assets/transformerdumps/mp4/sample.mp4/noaudio.dump +++ b/libraries/test_data/src/test/assets/transformerdumps/mp4/sample.mp4/noaudio.dump @@ -13,7 +13,10 @@ format video: initializationData: data = length 29, hash 4746B5D9 data = length 10, hash 7A0D0F2B -container metadata = entries=[TSSE: description=null: values=[Lavf56.1.0], xyz: latitude=40.68, longitude=-74.5, Mp4Timestamp: creation time=3547558895, modification time=3547558895, timescale=1000] +container metadata: + entry = Mp4Timestamp: creation time=3547558895, modification time=3547558895, timescale=1000 + entry = TSSE: description=null: values=[Lavf56.1.0] + entry = xyz: latitude=40.68, longitude=-74.5 sample: trackType = video dataHashCode = -770308242 diff --git a/libraries/test_data/src/test/assets/transformerdumps/mp4/sample.mp4/novideo.dump b/libraries/test_data/src/test/assets/transformerdumps/mp4/sample.mp4/novideo.dump index fa90eaea0c..7f858a9629 100644 --- a/libraries/test_data/src/test/assets/transformerdumps/mp4/sample.mp4/novideo.dump +++ b/libraries/test_data/src/test/assets/transformerdumps/mp4/sample.mp4/novideo.dump @@ -10,7 +10,10 @@ format audio: metadata = entries=[TSSE: description=null: values=[Lavf56.1.0], xyz: latitude=40.68, longitude=-74.5, Mp4Timestamp: creation time=3547558895, modification time=3547558895, timescale=1000] initializationData: data = length 2, hash 5F7 -container metadata = entries=[TSSE: description=null: values=[Lavf56.1.0], xyz: latitude=40.68, longitude=-74.5, Mp4Timestamp: creation time=3547558895, modification time=3547558895, timescale=1000] +container metadata: + entry = Mp4Timestamp: creation time=3547558895, modification time=3547558895, timescale=1000 + entry = TSSE: description=null: values=[Lavf56.1.0] + entry = xyz: latitude=40.68, longitude=-74.5 sample: trackType = audio dataHashCode = 1205768497 diff --git a/libraries/test_data/src/test/assets/transformerdumps/mp4/sample.mp4/original.dump b/libraries/test_data/src/test/assets/transformerdumps/mp4/sample.mp4/original.dump index 5a01c4f715..a71406dd05 100644 --- a/libraries/test_data/src/test/assets/transformerdumps/mp4/sample.mp4/original.dump +++ b/libraries/test_data/src/test/assets/transformerdumps/mp4/sample.mp4/original.dump @@ -25,8 +25,13 @@ format video: initializationData: data = length 29, hash 4746B5D9 data = length 10, hash 7A0D0F2B -container metadata = entries=[TSSE: description=null: values=[Lavf56.1.0], xyz: latitude=40.68, longitude=-74.5, Mp4Timestamp: creation time=3547558895, modification time=3547558895, timescale=1000] -container metadata = entries=[TSSE: description=null: values=[Lavf56.1.0], xyz: latitude=40.68, longitude=-74.5, Mp4Timestamp: creation time=3547558895, modification time=3547558895, timescale=1000] +container metadata: + entry = Mp4Timestamp: creation time=3547558895, modification time=3547558895, timescale=1000 + entry = Mp4Timestamp: creation time=3547558895, modification time=3547558895, timescale=1000 + entry = TSSE: description=null: values=[Lavf56.1.0] + entry = TSSE: description=null: values=[Lavf56.1.0] + entry = xyz: latitude=40.68, longitude=-74.5 + entry = xyz: latitude=40.68, longitude=-74.5 sample: trackType = audio dataHashCode = 1205768497 diff --git a/libraries/test_data/src/test/assets/transformerdumps/mp4/sample.mp4/original_original_transmux.dump b/libraries/test_data/src/test/assets/transformerdumps/mp4/sample.mp4/original_original_transmux.dump index 0ac77e54d9..135b53aa87 100644 --- a/libraries/test_data/src/test/assets/transformerdumps/mp4/sample.mp4/original_original_transmux.dump +++ b/libraries/test_data/src/test/assets/transformerdumps/mp4/sample.mp4/original_original_transmux.dump @@ -25,8 +25,13 @@ format video: initializationData: data = length 29, hash 4746B5D9 data = length 10, hash 7A0D0F2B -container metadata = entries=[TSSE: description=null: values=[Lavf56.1.0], xyz: latitude=40.68, longitude=-74.5, Mp4Timestamp: creation time=3547558895, modification time=3547558895, timescale=1000] -container metadata = entries=[TSSE: description=null: values=[Lavf56.1.0], xyz: latitude=40.68, longitude=-74.5, Mp4Timestamp: creation time=3547558895, modification time=3547558895, timescale=1000] +container metadata: + entry = Mp4Timestamp: creation time=3547558895, modification time=3547558895, timescale=1000 + entry = Mp4Timestamp: creation time=3547558895, modification time=3547558895, timescale=1000 + entry = TSSE: description=null: values=[Lavf56.1.0] + entry = TSSE: description=null: values=[Lavf56.1.0] + entry = xyz: latitude=40.68, longitude=-74.5 + entry = xyz: latitude=40.68, longitude=-74.5 sample: trackType = audio dataHashCode = 1205768497 diff --git a/libraries/test_data/src/test/assets/transformerdumps/mp4/sample.mp4/rotated.dump b/libraries/test_data/src/test/assets/transformerdumps/mp4/sample.mp4/rotated.dump index 766b87e3c1..46e92052f6 100644 --- a/libraries/test_data/src/test/assets/transformerdumps/mp4/sample.mp4/rotated.dump +++ b/libraries/test_data/src/test/assets/transformerdumps/mp4/sample.mp4/rotated.dump @@ -26,8 +26,13 @@ format video: initializationData: data = length 29, hash 4746B5D9 data = length 10, hash 7A0D0F2B -container metadata = entries=[TSSE: description=null: values=[Lavf56.1.0], xyz: latitude=40.68, longitude=-74.5, Mp4Timestamp: creation time=3547558895, modification time=3547558895, timescale=1000] -container metadata = entries=[TSSE: description=null: values=[Lavf56.1.0], xyz: latitude=40.68, longitude=-74.5, Mp4Timestamp: creation time=3547558895, modification time=3547558895, timescale=1000] +container metadata: + entry = Mp4Timestamp: creation time=3547558895, modification time=3547558895, timescale=1000 + entry = Mp4Timestamp: creation time=3547558895, modification time=3547558895, timescale=1000 + entry = TSSE: description=null: values=[Lavf56.1.0] + entry = TSSE: description=null: values=[Lavf56.1.0] + entry = xyz: latitude=40.68, longitude=-74.5 + entry = xyz: latitude=40.68, longitude=-74.5 sample: trackType = audio dataHashCode = 1205768497 diff --git a/libraries/test_data/src/test/assets/transformerdumps/mp4/sample.mp4/silence.dump b/libraries/test_data/src/test/assets/transformerdumps/mp4/sample.mp4/silence.dump index 1c49b1ac49..5e01c7f4bb 100644 --- a/libraries/test_data/src/test/assets/transformerdumps/mp4/sample.mp4/silence.dump +++ b/libraries/test_data/src/test/assets/transformerdumps/mp4/sample.mp4/silence.dump @@ -19,7 +19,10 @@ format video: initializationData: data = length 29, hash 4746B5D9 data = length 10, hash 7A0D0F2B -container metadata = entries=[TSSE: description=null: values=[Lavf56.1.0], xyz: latitude=40.68, longitude=-74.5, Mp4Timestamp: creation time=3547558895, modification time=3547558895, timescale=1000] +container metadata: + entry = Mp4Timestamp: creation time=3547558895, modification time=3547558895, timescale=1000 + entry = TSSE: description=null: values=[Lavf56.1.0] + entry = xyz: latitude=40.68, longitude=-74.5 sample: trackType = audio dataHashCode = 1742602241 diff --git a/libraries/test_data/src/test/assets/transformerdumps/mp4/sample.mp4/silence_48000hz.dump b/libraries/test_data/src/test/assets/transformerdumps/mp4/sample.mp4/silence_48000hz.dump index 1b39e8601d..05b73777e5 100644 --- a/libraries/test_data/src/test/assets/transformerdumps/mp4/sample.mp4/silence_48000hz.dump +++ b/libraries/test_data/src/test/assets/transformerdumps/mp4/sample.mp4/silence_48000hz.dump @@ -19,7 +19,10 @@ format video: initializationData: data = length 29, hash 4746B5D9 data = length 10, hash 7A0D0F2B -container metadata = entries=[TSSE: description=null: values=[Lavf56.1.0], xyz: latitude=40.68, longitude=-74.5, Mp4Timestamp: creation time=3547558895, modification time=3547558895, timescale=1000] +container metadata: + entry = Mp4Timestamp: creation time=3547558895, modification time=3547558895, timescale=1000 + entry = TSSE: description=null: values=[Lavf56.1.0] + entry = xyz: latitude=40.68, longitude=-74.5 sample: trackType = audio dataHashCode = 1742602241 diff --git a/libraries/test_data/src/test/assets/transformerdumps/mp4/sample_18byte_nclx_colr.mp4/looping_mixedWith_test-cbr-info-header.mp3.dump b/libraries/test_data/src/test/assets/transformerdumps/mp4/sample_18byte_nclx_colr.mp4/looping_mixedWith_test-cbr-info-header.mp3.dump index ba53bd2055..7f727d0086 100644 --- a/libraries/test_data/src/test/assets/transformerdumps/mp4/sample_18byte_nclx_colr.mp4/looping_mixedWith_test-cbr-info-header.mp3.dump +++ b/libraries/test_data/src/test/assets/transformerdumps/mp4/sample_18byte_nclx_colr.mp4/looping_mixedWith_test-cbr-info-header.mp3.dump @@ -25,8 +25,9 @@ format video: initializationData: data = length 29, hash 4746B5D9 data = length 10, hash 7A0D0F2B -container metadata = entries=[Mp4Timestamp: creation time=3718109610, modification time=3718109610, timescale=1000] -container metadata = entries=[TSSE: description=null: values=[Lavf58.45.100]] +container metadata: + entry = Mp4Timestamp: creation time=3718109610, modification time=3718109610, timescale=1000 + entry = TSSE: description=null: values=[Lavf58.45.100] sample: trackType = audio dataHashCode = 1582745311 diff --git a/libraries/test_data/src/test/assets/transformerdumps/mp4/sample_18byte_nclx_colr.mp4/original.dump b/libraries/test_data/src/test/assets/transformerdumps/mp4/sample_18byte_nclx_colr.mp4/original.dump index 9273e09aef..d862a55644 100644 --- a/libraries/test_data/src/test/assets/transformerdumps/mp4/sample_18byte_nclx_colr.mp4/original.dump +++ b/libraries/test_data/src/test/assets/transformerdumps/mp4/sample_18byte_nclx_colr.mp4/original.dump @@ -16,7 +16,8 @@ format video: initializationData: data = length 29, hash 4746B5D9 data = length 10, hash 7A0D0F2B -container metadata = entries=[Mp4Timestamp: creation time=3718109610, modification time=3718109610, timescale=1000] +container metadata: + entry = Mp4Timestamp: creation time=3718109610, modification time=3718109610, timescale=1000 sample: trackType = video dataHashCode = -770308242 diff --git a/libraries/test_data/src/test/assets/transformerdumps/mp4/sample_18byte_nclx_colr.mp4/silence.dump b/libraries/test_data/src/test/assets/transformerdumps/mp4/sample_18byte_nclx_colr.mp4/silence.dump index 23fd9d32b6..831196a779 100644 --- a/libraries/test_data/src/test/assets/transformerdumps/mp4/sample_18byte_nclx_colr.mp4/silence.dump +++ b/libraries/test_data/src/test/assets/transformerdumps/mp4/sample_18byte_nclx_colr.mp4/silence.dump @@ -22,7 +22,8 @@ format video: initializationData: data = length 29, hash 4746B5D9 data = length 10, hash 7A0D0F2B -container metadata = entries=[Mp4Timestamp: creation time=3718109610, modification time=3718109610, timescale=1000] +container metadata: + entry = Mp4Timestamp: creation time=3718109610, modification time=3718109610, timescale=1000 sample: trackType = audio dataHashCode = 1742602241 diff --git a/libraries/test_data/src/test/assets/transformerdumps/mp4/sample_sef_slow_motion.mp4/noaudio.dump b/libraries/test_data/src/test/assets/transformerdumps/mp4/sample_sef_slow_motion.mp4/noaudio.dump index 1795d9c07f..b032985589 100644 --- a/libraries/test_data/src/test/assets/transformerdumps/mp4/sample_sef_slow_motion.mp4/noaudio.dump +++ b/libraries/test_data/src/test/assets/transformerdumps/mp4/sample_sef_slow_motion.mp4/noaudio.dump @@ -13,7 +13,13 @@ format video: initializationData: data = length 33, hash D3FB879D data = length 10, hash 7A0D0F2B -container metadata = entries=[mdta: key=com.android.version, value=10, mdta: key=com.android.video.temporal_layers_count, value=4, mdta: key=com.android.capture.fps, value=240.0, SlowMotion: segments=[Segment: startTimeMs=88, endTimeMs=879, speedDivisor=2, Segment: startTimeMs=1255, endTimeMs=1970, speedDivisor=8], smta: captureFrameRate=240.0, svcTemporalLayerCount=4, Mp4Timestamp: creation time=3686904890, modification time=3686904890, timescale=1000] +container metadata: + entry = Mp4Timestamp: creation time=3686904890, modification time=3686904890, timescale=1000 + entry = SlowMotion: segments=[Segment: startTimeMs=88, endTimeMs=879, speedDivisor=2, Segment: startTimeMs=1255, endTimeMs=1970, speedDivisor=8] + entry = mdta: key=com.android.capture.fps, value=240.0 + entry = mdta: key=com.android.version, value=10 + entry = mdta: key=com.android.video.temporal_layers_count, value=4 + entry = smta: captureFrameRate=240.0, svcTemporalLayerCount=4 sample: trackType = video dataHashCode = 1949079733 diff --git a/libraries/test_data/src/test/assets/transformerdumps/mp4/sample_twos_pcm.mp4/original.dump b/libraries/test_data/src/test/assets/transformerdumps/mp4/sample_twos_pcm.mp4/original.dump index 6d3e9144eb..95fd45fd94 100644 --- a/libraries/test_data/src/test/assets/transformerdumps/mp4/sample_twos_pcm.mp4/original.dump +++ b/libraries/test_data/src/test/assets/transformerdumps/mp4/sample_twos_pcm.mp4/original.dump @@ -20,8 +20,11 @@ format video: initializationData: data = length 29, hash 4746B5D9 data = length 10, hash 7A0D0F2B -container metadata = entries=[xyz: latitude=40.68, longitude=-74.5, Mp4Timestamp: creation time=0, modification time=0, timescale=1000] -container metadata = entries=[xyz: latitude=40.68, longitude=-74.5, Mp4Timestamp: creation time=0, modification time=0, timescale=1000] +container metadata: + entry = Mp4Timestamp: creation time=0, modification time=0, timescale=1000 + entry = Mp4Timestamp: creation time=0, modification time=0, timescale=1000 + entry = xyz: latitude=40.68, longitude=-74.5 + entry = xyz: latitude=40.68, longitude=-74.5 sample: trackType = audio dataHashCode = -1438864202 diff --git a/libraries/test_data/src/test/assets/transformerdumps/mp4/sample_twos_pcm.mp4/silence.dump b/libraries/test_data/src/test/assets/transformerdumps/mp4/sample_twos_pcm.mp4/silence.dump index 92fbc95205..d1e4d3e9f6 100644 --- a/libraries/test_data/src/test/assets/transformerdumps/mp4/sample_twos_pcm.mp4/silence.dump +++ b/libraries/test_data/src/test/assets/transformerdumps/mp4/sample_twos_pcm.mp4/silence.dump @@ -19,7 +19,9 @@ format video: initializationData: data = length 29, hash 4746B5D9 data = length 10, hash 7A0D0F2B -container metadata = entries=[xyz: latitude=40.68, longitude=-74.5, Mp4Timestamp: creation time=0, modification time=0, timescale=1000] +container metadata: + entry = Mp4Timestamp: creation time=0, modification time=0, timescale=1000 + entry = xyz: latitude=40.68, longitude=-74.5 sample: trackType = audio dataHashCode = 1742602241 diff --git a/libraries/test_data/src/test/assets/transformerdumps/mp4/sample_twos_pcm.mp4/silenceFromEffect.dump b/libraries/test_data/src/test/assets/transformerdumps/mp4/sample_twos_pcm.mp4/silenceFromEffect.dump index 023e932b5d..e65c83bdce 100644 --- a/libraries/test_data/src/test/assets/transformerdumps/mp4/sample_twos_pcm.mp4/silenceFromEffect.dump +++ b/libraries/test_data/src/test/assets/transformerdumps/mp4/sample_twos_pcm.mp4/silenceFromEffect.dump @@ -20,8 +20,11 @@ format video: initializationData: data = length 29, hash 4746B5D9 data = length 10, hash 7A0D0F2B -container metadata = entries=[xyz: latitude=40.68, longitude=-74.5, Mp4Timestamp: creation time=0, modification time=0, timescale=1000] -container metadata = entries=[xyz: latitude=40.68, longitude=-74.5, Mp4Timestamp: creation time=0, modification time=0, timescale=1000] +container metadata: + entry = Mp4Timestamp: creation time=0, modification time=0, timescale=1000 + entry = Mp4Timestamp: creation time=0, modification time=0, timescale=1000 + entry = xyz: latitude=40.68, longitude=-74.5 + entry = xyz: latitude=40.68, longitude=-74.5 sample: trackType = audio dataHashCode = 1742602241 diff --git a/libraries/test_data/src/test/assets/transformerdumps/mp4/sample_with_increasing_timestamps_320w_240h.mp4/clipped.dump b/libraries/test_data/src/test/assets/transformerdumps/mp4/sample_with_increasing_timestamps_320w_240h.mp4/clipped.dump index 356c62bc66..123e82cc79 100644 --- a/libraries/test_data/src/test/assets/transformerdumps/mp4/sample_with_increasing_timestamps_320w_240h.mp4/clipped.dump +++ b/libraries/test_data/src/test/assets/transformerdumps/mp4/sample_with_increasing_timestamps_320w_240h.mp4/clipped.dump @@ -29,8 +29,11 @@ format video: initializationData: data = length 31, hash 4B108214 data = length 9, hash FBA158BB -container metadata = entries=[TSSE: description=null: values=[Lavf58.76.100], Mp4Timestamp: creation time=0, modification time=0, timescale=1000] -container metadata = entries=[TSSE: description=null: values=[Lavf58.76.100], Mp4Timestamp: creation time=0, modification time=0, timescale=1000] +container metadata: + entry = Mp4Timestamp: creation time=0, modification time=0, timescale=1000 + entry = Mp4Timestamp: creation time=0, modification time=0, timescale=1000 + entry = TSSE: description=null: values=[Lavf58.76.100] + entry = TSSE: description=null: values=[Lavf58.76.100] sample: trackType = audio dataHashCode = 620415738 diff --git a/libraries/test_data/src/test/assets/transformerdumps/mp4/sample_with_increasing_timestamps_320w_240h.mp4/clipped_clipped_transmux.dump b/libraries/test_data/src/test/assets/transformerdumps/mp4/sample_with_increasing_timestamps_320w_240h.mp4/clipped_clipped_transmux.dump index 2a30943175..e111bf9c4e 100644 --- a/libraries/test_data/src/test/assets/transformerdumps/mp4/sample_with_increasing_timestamps_320w_240h.mp4/clipped_clipped_transmux.dump +++ b/libraries/test_data/src/test/assets/transformerdumps/mp4/sample_with_increasing_timestamps_320w_240h.mp4/clipped_clipped_transmux.dump @@ -29,8 +29,11 @@ format video: initializationData: data = length 31, hash 4B108214 data = length 9, hash FBA158BB -container metadata = entries=[TSSE: description=null: values=[Lavf58.76.100], Mp4Timestamp: creation time=0, modification time=0, timescale=1000] -container metadata = entries=[TSSE: description=null: values=[Lavf58.76.100], Mp4Timestamp: creation time=0, modification time=0, timescale=1000] +container metadata: + entry = Mp4Timestamp: creation time=0, modification time=0, timescale=1000 + entry = Mp4Timestamp: creation time=0, modification time=0, timescale=1000 + entry = TSSE: description=null: values=[Lavf58.76.100] + entry = TSSE: description=null: values=[Lavf58.76.100] sample: trackType = audio dataHashCode = -119592194 diff --git a/libraries/test_data/src/test/assets/transformerdumps/mp4/sample_with_increasing_timestamps_320w_240h.mp4/clipped_to_empty.dump b/libraries/test_data/src/test/assets/transformerdumps/mp4/sample_with_increasing_timestamps_320w_240h.mp4/clipped_to_empty.dump index a299a17038..5268e91a5c 100644 --- a/libraries/test_data/src/test/assets/transformerdumps/mp4/sample_with_increasing_timestamps_320w_240h.mp4/clipped_to_empty.dump +++ b/libraries/test_data/src/test/assets/transformerdumps/mp4/sample_with_increasing_timestamps_320w_240h.mp4/clipped_to_empty.dump @@ -29,6 +29,9 @@ format video: initializationData: data = length 31, hash 4B108214 data = length 9, hash FBA158BB -container metadata = entries=[TSSE: description=null: values=[Lavf58.76.100], Mp4Timestamp: creation time=0, modification time=0, timescale=1000] -container metadata = entries=[TSSE: description=null: values=[Lavf58.76.100], Mp4Timestamp: creation time=0, modification time=0, timescale=1000] +container metadata: + entry = Mp4Timestamp: creation time=0, modification time=0, timescale=1000 + entry = Mp4Timestamp: creation time=0, modification time=0, timescale=1000 + entry = TSSE: description=null: values=[Lavf58.76.100] + entry = TSSE: description=null: values=[Lavf58.76.100] released = true diff --git a/libraries/test_data/src/test/assets/transformerdumps/mp4/sample_with_increasing_timestamps_320w_240h.mp4/original.dump b/libraries/test_data/src/test/assets/transformerdumps/mp4/sample_with_increasing_timestamps_320w_240h.mp4/original.dump index 7a94b1dc8a..5f4ef2cfa2 100644 --- a/libraries/test_data/src/test/assets/transformerdumps/mp4/sample_with_increasing_timestamps_320w_240h.mp4/original.dump +++ b/libraries/test_data/src/test/assets/transformerdumps/mp4/sample_with_increasing_timestamps_320w_240h.mp4/original.dump @@ -29,8 +29,11 @@ format video: initializationData: data = length 31, hash 4B108214 data = length 9, hash FBA158BB -container metadata = entries=[TSSE: description=null: values=[Lavf58.76.100], Mp4Timestamp: creation time=0, modification time=0, timescale=1000] -container metadata = entries=[TSSE: description=null: values=[Lavf58.76.100], Mp4Timestamp: creation time=0, modification time=0, timescale=1000] +container metadata: + entry = Mp4Timestamp: creation time=0, modification time=0, timescale=1000 + entry = Mp4Timestamp: creation time=0, modification time=0, timescale=1000 + entry = TSSE: description=null: values=[Lavf58.76.100] + entry = TSSE: description=null: values=[Lavf58.76.100] sample: trackType = audio dataHashCode = -119592194 diff --git a/libraries/test_data/src/test/assets/transformerdumps/mp4/sample_with_increasing_timestamps_320w_240h.mp4/rotated.dump b/libraries/test_data/src/test/assets/transformerdumps/mp4/sample_with_increasing_timestamps_320w_240h.mp4/rotated.dump index be3022f612..9b26e3e2f0 100644 --- a/libraries/test_data/src/test/assets/transformerdumps/mp4/sample_with_increasing_timestamps_320w_240h.mp4/rotated.dump +++ b/libraries/test_data/src/test/assets/transformerdumps/mp4/sample_with_increasing_timestamps_320w_240h.mp4/rotated.dump @@ -30,8 +30,11 @@ format video: initializationData: data = length 31, hash 4B108214 data = length 9, hash FBA158BB -container metadata = entries=[TSSE: description=null: values=[Lavf58.76.100], Mp4Timestamp: creation time=0, modification time=0, timescale=1000] -container metadata = entries=[TSSE: description=null: values=[Lavf58.76.100], Mp4Timestamp: creation time=0, modification time=0, timescale=1000] +container metadata: + entry = Mp4Timestamp: creation time=0, modification time=0, timescale=1000 + entry = Mp4Timestamp: creation time=0, modification time=0, timescale=1000 + entry = TSSE: description=null: values=[Lavf58.76.100] + entry = TSSE: description=null: values=[Lavf58.76.100] sample: trackType = audio dataHashCode = -119592194 diff --git a/libraries/test_data/src/test/assets/transformerdumps/mp4/sowt-with-video.mov/highPitch_silenceHighPitch.dump b/libraries/test_data/src/test/assets/transformerdumps/mp4/sowt-with-video.mov/highPitch_silenceHighPitch.dump index 6a175110da..fe6540f60c 100644 --- a/libraries/test_data/src/test/assets/transformerdumps/mp4/sowt-with-video.mov/highPitch_silenceHighPitch.dump +++ b/libraries/test_data/src/test/assets/transformerdumps/mp4/sowt-with-video.mov/highPitch_silenceHighPitch.dump @@ -22,8 +22,9 @@ format video: initializationData: data = length 34, hash 8D738018 data = length 10, hash 7A0D0F2B -container metadata = entries=[Mp4Timestamp: creation time=0, modification time=0, timescale=1000] -container metadata = entries=[Mp4Timestamp: creation time=0, modification time=0, timescale=1000] +container metadata: + entry = Mp4Timestamp: creation time=0, modification time=0, timescale=1000 + entry = Mp4Timestamp: creation time=0, modification time=0, timescale=1000 sample: trackType = audio dataHashCode = 215569108 diff --git a/libraries/test_data/src/test/assets/transformerdumps/mp4/sowt-with-video.mov/mixed_sample_rf64.wav.dump b/libraries/test_data/src/test/assets/transformerdumps/mp4/sowt-with-video.mov/mixed_sample_rf64.wav.dump index 9d72059bff..4b0f5db4d5 100644 --- a/libraries/test_data/src/test/assets/transformerdumps/mp4/sowt-with-video.mov/mixed_sample_rf64.wav.dump +++ b/libraries/test_data/src/test/assets/transformerdumps/mp4/sowt-with-video.mov/mixed_sample_rf64.wav.dump @@ -22,8 +22,9 @@ format video: initializationData: data = length 34, hash 8D738018 data = length 10, hash 7A0D0F2B -container metadata = entries=[Mp4Timestamp: creation time=0, modification time=0, timescale=1000] -container metadata = entries=[Mp4Timestamp: creation time=0, modification time=0, timescale=1000] +container metadata: + entry = Mp4Timestamp: creation time=0, modification time=0, timescale=1000 + entry = Mp4Timestamp: creation time=0, modification time=0, timescale=1000 sample: trackType = audio dataHashCode = 1831484889 diff --git a/libraries/test_data/src/test/assets/transformerdumps/mp4/sowt-with-video.mov/original.dump b/libraries/test_data/src/test/assets/transformerdumps/mp4/sowt-with-video.mov/original.dump index 30de94eef2..38556c1fa4 100644 --- a/libraries/test_data/src/test/assets/transformerdumps/mp4/sowt-with-video.mov/original.dump +++ b/libraries/test_data/src/test/assets/transformerdumps/mp4/sowt-with-video.mov/original.dump @@ -22,8 +22,9 @@ format video: initializationData: data = length 34, hash 8D738018 data = length 10, hash 7A0D0F2B -container metadata = entries=[Mp4Timestamp: creation time=0, modification time=0, timescale=1000] -container metadata = entries=[Mp4Timestamp: creation time=0, modification time=0, timescale=1000] +container metadata: + entry = Mp4Timestamp: creation time=0, modification time=0, timescale=1000 + entry = Mp4Timestamp: creation time=0, modification time=0, timescale=1000 sample: trackType = audio dataHashCode = 1831484889 diff --git a/libraries/test_data/src/test/assets/transformerdumps/mp4/sowt-with-video.mov/original_silence.dump b/libraries/test_data/src/test/assets/transformerdumps/mp4/sowt-with-video.mov/original_silence.dump index 89943c0d1b..597b3555ca 100644 --- a/libraries/test_data/src/test/assets/transformerdumps/mp4/sowt-with-video.mov/original_silence.dump +++ b/libraries/test_data/src/test/assets/transformerdumps/mp4/sowt-with-video.mov/original_silence.dump @@ -22,8 +22,9 @@ format video: initializationData: data = length 34, hash 8D738018 data = length 10, hash 7A0D0F2B -container metadata = entries=[Mp4Timestamp: creation time=0, modification time=0, timescale=1000] -container metadata = entries=[Mp4Timestamp: creation time=0, modification time=0, timescale=1000] +container metadata: + entry = Mp4Timestamp: creation time=0, modification time=0, timescale=1000 + entry = Mp4Timestamp: creation time=0, modification time=0, timescale=1000 sample: trackType = audio dataHashCode = 1831484889 diff --git a/libraries/test_data/src/test/assets/transformerdumps/mp4/sowt-with-video.mov/sequence_repeated3Times.dump b/libraries/test_data/src/test/assets/transformerdumps/mp4/sowt-with-video.mov/sequence_repeated3Times.dump index 3d6f5bc76b..79632570d4 100644 --- a/libraries/test_data/src/test/assets/transformerdumps/mp4/sowt-with-video.mov/sequence_repeated3Times.dump +++ b/libraries/test_data/src/test/assets/transformerdumps/mp4/sowt-with-video.mov/sequence_repeated3Times.dump @@ -22,8 +22,9 @@ format video: initializationData: data = length 34, hash 8D738018 data = length 10, hash 7A0D0F2B -container metadata = entries=[Mp4Timestamp: creation time=0, modification time=0, timescale=1000] -container metadata = entries=[Mp4Timestamp: creation time=0, modification time=0, timescale=1000] +container metadata: + entry = Mp4Timestamp: creation time=0, modification time=0, timescale=1000 + entry = Mp4Timestamp: creation time=0, modification time=0, timescale=1000 sample: trackType = audio dataHashCode = 1831484889 diff --git a/libraries/test_data/src/test/assets/transformerdumps/mp4/sowt-with-video.mov/sequence_repeated3Times_mixed_loopingAudiosowt-with-video.mov.dump b/libraries/test_data/src/test/assets/transformerdumps/mp4/sowt-with-video.mov/sequence_repeated3Times_mixed_loopingAudiosowt-with-video.mov.dump index d71bed8c06..f7e5206c1b 100644 --- a/libraries/test_data/src/test/assets/transformerdumps/mp4/sowt-with-video.mov/sequence_repeated3Times_mixed_loopingAudiosowt-with-video.mov.dump +++ b/libraries/test_data/src/test/assets/transformerdumps/mp4/sowt-with-video.mov/sequence_repeated3Times_mixed_loopingAudiosowt-with-video.mov.dump @@ -22,8 +22,9 @@ format video: initializationData: data = length 34, hash 8D738018 data = length 10, hash 7A0D0F2B -container metadata = entries=[Mp4Timestamp: creation time=0, modification time=0, timescale=1000] -container metadata = entries=[Mp4Timestamp: creation time=0, modification time=0, timescale=1000] +container metadata: + entry = Mp4Timestamp: creation time=0, modification time=0, timescale=1000 + entry = Mp4Timestamp: creation time=0, modification time=0, timescale=1000 sample: trackType = audio dataHashCode = -1687632261 diff --git a/libraries/test_data/src/test/assets/transformerdumps/mp4/sowt-with-video.mov/silence.dump b/libraries/test_data/src/test/assets/transformerdumps/mp4/sowt-with-video.mov/silence.dump index c4fd819452..efb6f02beb 100644 --- a/libraries/test_data/src/test/assets/transformerdumps/mp4/sowt-with-video.mov/silence.dump +++ b/libraries/test_data/src/test/assets/transformerdumps/mp4/sowt-with-video.mov/silence.dump @@ -21,7 +21,8 @@ format video: initializationData: data = length 34, hash 8D738018 data = length 10, hash 7A0D0F2B -container metadata = entries=[Mp4Timestamp: creation time=0, modification time=0, timescale=1000] +container metadata: + entry = Mp4Timestamp: creation time=0, modification time=0, timescale=1000 sample: trackType = audio dataHashCode = 1742602241 diff --git a/libraries/test_data/src/test/assets/transformerdumps/mp4/sowt-with-video.mov/silenceFromEffect.dump b/libraries/test_data/src/test/assets/transformerdumps/mp4/sowt-with-video.mov/silenceFromEffect.dump index 9f282b131a..e62c3dbdda 100644 --- a/libraries/test_data/src/test/assets/transformerdumps/mp4/sowt-with-video.mov/silenceFromEffect.dump +++ b/libraries/test_data/src/test/assets/transformerdumps/mp4/sowt-with-video.mov/silenceFromEffect.dump @@ -22,8 +22,9 @@ format video: initializationData: data = length 34, hash 8D738018 data = length 10, hash 7A0D0F2B -container metadata = entries=[Mp4Timestamp: creation time=0, modification time=0, timescale=1000] -container metadata = entries=[Mp4Timestamp: creation time=0, modification time=0, timescale=1000] +container metadata: + entry = Mp4Timestamp: creation time=0, modification time=0, timescale=1000 + entry = Mp4Timestamp: creation time=0, modification time=0, timescale=1000 sample: trackType = audio dataHashCode = 1742602241 diff --git a/libraries/test_data/src/test/assets/transformerdumps/mp4/sowt-with-video.mov/silenceHighPitch_highPitch.dump b/libraries/test_data/src/test/assets/transformerdumps/mp4/sowt-with-video.mov/silenceHighPitch_highPitch.dump index e08ad07b45..e9756091ab 100644 --- a/libraries/test_data/src/test/assets/transformerdumps/mp4/sowt-with-video.mov/silenceHighPitch_highPitch.dump +++ b/libraries/test_data/src/test/assets/transformerdumps/mp4/sowt-with-video.mov/silenceHighPitch_highPitch.dump @@ -21,7 +21,8 @@ format video: initializationData: data = length 34, hash 8D738018 data = length 10, hash 7A0D0F2B -container metadata = entries=[Mp4Timestamp: creation time=0, modification time=0, timescale=1000] +container metadata: + entry = Mp4Timestamp: creation time=0, modification time=0, timescale=1000 sample: trackType = audio dataHashCode = 1742602241 diff --git a/libraries/test_data/src/test/assets/transformerdumps/mp4/sowt-with-video.mov/silenceHighPitch_silence.dump b/libraries/test_data/src/test/assets/transformerdumps/mp4/sowt-with-video.mov/silenceHighPitch_silence.dump index 42e2756bf7..2270740e95 100644 --- a/libraries/test_data/src/test/assets/transformerdumps/mp4/sowt-with-video.mov/silenceHighPitch_silence.dump +++ b/libraries/test_data/src/test/assets/transformerdumps/mp4/sowt-with-video.mov/silenceHighPitch_silence.dump @@ -21,7 +21,8 @@ format video: initializationData: data = length 34, hash 8D738018 data = length 10, hash 7A0D0F2B -container metadata = entries=[Mp4Timestamp: creation time=0, modification time=0, timescale=1000] +container metadata: + entry = Mp4Timestamp: creation time=0, modification time=0, timescale=1000 sample: trackType = audio dataHashCode = 1742602241 diff --git a/libraries/test_data/src/test/assets/transformerdumps/mp4/sowt-with-video.mov/silenceHighPitch_silenceHighPitch.dump b/libraries/test_data/src/test/assets/transformerdumps/mp4/sowt-with-video.mov/silenceHighPitch_silenceHighPitch.dump index 77b031f3d0..f643d3934a 100644 --- a/libraries/test_data/src/test/assets/transformerdumps/mp4/sowt-with-video.mov/silenceHighPitch_silenceHighPitch.dump +++ b/libraries/test_data/src/test/assets/transformerdumps/mp4/sowt-with-video.mov/silenceHighPitch_silenceHighPitch.dump @@ -21,7 +21,8 @@ format video: initializationData: data = length 34, hash 8D738018 data = length 10, hash 7A0D0F2B -container metadata = entries=[Mp4Timestamp: creation time=0, modification time=0, timescale=1000] +container metadata: + entry = Mp4Timestamp: creation time=0, modification time=0, timescale=1000 sample: trackType = audio dataHashCode = 1742602241 diff --git a/libraries/test_data/src/test/assets/transformerdumps/mp4/sowt-with-video.mov/silence_original.dump b/libraries/test_data/src/test/assets/transformerdumps/mp4/sowt-with-video.mov/silence_original.dump index fb13fbcc59..16cdeecca8 100644 --- a/libraries/test_data/src/test/assets/transformerdumps/mp4/sowt-with-video.mov/silence_original.dump +++ b/libraries/test_data/src/test/assets/transformerdumps/mp4/sowt-with-video.mov/silence_original.dump @@ -21,7 +21,8 @@ format video: initializationData: data = length 34, hash 8D738018 data = length 10, hash 7A0D0F2B -container metadata = entries=[Mp4Timestamp: creation time=0, modification time=0, timescale=1000] +container metadata: + entry = Mp4Timestamp: creation time=0, modification time=0, timescale=1000 sample: trackType = audio dataHashCode = 1742602241 diff --git a/libraries/test_data/src/test/assets/transformerdumps/mp4/sowt-with-video.mov/silence_silence.dump b/libraries/test_data/src/test/assets/transformerdumps/mp4/sowt-with-video.mov/silence_silence.dump index fe7775d402..e4300fe033 100644 --- a/libraries/test_data/src/test/assets/transformerdumps/mp4/sowt-with-video.mov/silence_silence.dump +++ b/libraries/test_data/src/test/assets/transformerdumps/mp4/sowt-with-video.mov/silence_silence.dump @@ -21,7 +21,8 @@ format video: initializationData: data = length 34, hash 8D738018 data = length 10, hash 7A0D0F2B -container metadata = entries=[Mp4Timestamp: creation time=0, modification time=0, timescale=1000] +container metadata: + entry = Mp4Timestamp: creation time=0, modification time=0, timescale=1000 sample: trackType = audio dataHashCode = 1742602241 diff --git a/libraries/test_data/src/test/assets/transformerdumps/mp4/sowt-with-video.mov/silence_silenceHighPitch.dump b/libraries/test_data/src/test/assets/transformerdumps/mp4/sowt-with-video.mov/silence_silenceHighPitch.dump index 42e2756bf7..2270740e95 100644 --- a/libraries/test_data/src/test/assets/transformerdumps/mp4/sowt-with-video.mov/silence_silenceHighPitch.dump +++ b/libraries/test_data/src/test/assets/transformerdumps/mp4/sowt-with-video.mov/silence_silenceHighPitch.dump @@ -21,7 +21,8 @@ format video: initializationData: data = length 34, hash 8D738018 data = length 10, hash 7A0D0F2B -container metadata = entries=[Mp4Timestamp: creation time=0, modification time=0, timescale=1000] +container metadata: + entry = Mp4Timestamp: creation time=0, modification time=0, timescale=1000 sample: trackType = audio dataHashCode = 1742602241 diff --git a/libraries/transformer/src/androidTest/java/androidx/media3/transformer/TransformerPauseResumeTest.java b/libraries/transformer/src/androidTest/java/androidx/media3/transformer/TransformerPauseResumeTest.java index 261c9bd9f0..2cdb081246 100644 --- a/libraries/transformer/src/androidTest/java/androidx/media3/transformer/TransformerPauseResumeTest.java +++ b/libraries/transformer/src/androidTest/java/androidx/media3/transformer/TransformerPauseResumeTest.java @@ -463,8 +463,8 @@ public class TransformerPauseResumeTest { } @Override - public void addMetadata(Metadata metadata) { - wrappedMuxer.addMetadata(metadata); + public void addMetadataEntry(Metadata.Entry metadataEntry) { + wrappedMuxer.addMetadataEntry(metadataEntry); } @Override diff --git a/libraries/transformer/src/main/java/androidx/media3/transformer/DefaultMuxer.java b/libraries/transformer/src/main/java/androidx/media3/transformer/DefaultMuxer.java index 62f4d9c2c5..05d4aca481 100644 --- a/libraries/transformer/src/main/java/androidx/media3/transformer/DefaultMuxer.java +++ b/libraries/transformer/src/main/java/androidx/media3/transformer/DefaultMuxer.java @@ -76,8 +76,8 @@ public final class DefaultMuxer implements Muxer { } @Override - public void addMetadata(Metadata metadata) { - muxer.addMetadata(metadata); + public void addMetadataEntry(Metadata.Entry metadataEntry) { + muxer.addMetadataEntry(metadataEntry); } @Override diff --git a/libraries/transformer/src/main/java/androidx/media3/transformer/FrameworkMuxer.java b/libraries/transformer/src/main/java/androidx/media3/transformer/FrameworkMuxer.java index 8012120ea0..0b6a9a6084 100644 --- a/libraries/transformer/src/main/java/androidx/media3/transformer/FrameworkMuxer.java +++ b/libraries/transformer/src/main/java/androidx/media3/transformer/FrameworkMuxer.java @@ -188,13 +188,10 @@ import java.nio.ByteBuffer; } @Override - public void addMetadata(Metadata metadata) { - for (int i = 0; i < metadata.length(); i++) { - Metadata.Entry entry = metadata.get(i); - if (entry instanceof Mp4LocationData) { - mediaMuxer.setLocation( - ((Mp4LocationData) entry).latitude, ((Mp4LocationData) entry).longitude); - } + public void addMetadataEntry(Metadata.Entry metadataEntry) { + if (metadataEntry instanceof Mp4LocationData) { + mediaMuxer.setLocation( + ((Mp4LocationData) metadataEntry).latitude, ((Mp4LocationData) metadataEntry).longitude); } } diff --git a/libraries/transformer/src/main/java/androidx/media3/transformer/InAppMuxer.java b/libraries/transformer/src/main/java/androidx/media3/transformer/InAppMuxer.java index fd8f32fdc8..4076c4d391 100644 --- a/libraries/transformer/src/main/java/androidx/media3/transformer/InAppMuxer.java +++ b/libraries/transformer/src/main/java/androidx/media3/transformer/InAppMuxer.java @@ -220,12 +220,9 @@ public final class InAppMuxer implements Muxer { } @Override - public void addMetadata(Metadata metadata) { - for (int i = 0; i < metadata.length(); i++) { - Metadata.Entry entry = metadata.get(i); - if (Mp4Utils.isMetadataSupported(entry)) { - metadataEntries.add(entry); - } + public void addMetadataEntry(Metadata.Entry metadataEntry) { + if (Mp4Utils.isMetadataSupported(metadataEntry)) { + metadataEntries.add(metadataEntry); } } diff --git a/libraries/transformer/src/main/java/androidx/media3/transformer/Muxer.java b/libraries/transformer/src/main/java/androidx/media3/transformer/Muxer.java index a37a44be8c..fcad760a6e 100644 --- a/libraries/transformer/src/main/java/androidx/media3/transformer/Muxer.java +++ b/libraries/transformer/src/main/java/androidx/media3/transformer/Muxer.java @@ -90,8 +90,8 @@ public interface Muxer { int trackIndex, ByteBuffer data, long presentationTimeUs, @C.BufferFlags int flags) throws MuxerException; - /** Adds {@link Metadata} about the output file. */ - void addMetadata(Metadata metadata); + /** Adds {@linkplain Metadata.Entry metadata} about the output file. */ + void addMetadataEntry(Metadata.Entry metadataEntry); /** * Finishes writing the output and releases any resources associated with muxing. diff --git a/libraries/transformer/src/main/java/androidx/media3/transformer/MuxerWrapper.java b/libraries/transformer/src/main/java/androidx/media3/transformer/MuxerWrapper.java index 41390f6959..dbd1882432 100644 --- a/libraries/transformer/src/main/java/androidx/media3/transformer/MuxerWrapper.java +++ b/libraries/transformer/src/main/java/androidx/media3/transformer/MuxerWrapper.java @@ -472,7 +472,9 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull; trackTypeToInfo.put(trackType, trackInfo); if (format.metadata != null) { - muxer.addMetadata(format.metadata); + for (int i = 0; i < format.metadata.length(); i++) { + muxer.addMetadataEntry(format.metadata.get(i)); + } } if (trackTypeToInfo.size() == trackCount) { diff --git a/libraries/transformer/src/test/java/androidx/media3/transformer/CapturingMuxer.java b/libraries/transformer/src/test/java/androidx/media3/transformer/CapturingMuxer.java index 73d0954afb..e5d5bb31e5 100644 --- a/libraries/transformer/src/test/java/androidx/media3/transformer/CapturingMuxer.java +++ b/libraries/transformer/src/test/java/androidx/media3/transformer/CapturingMuxer.java @@ -86,7 +86,7 @@ public final class CapturingMuxer implements Muxer, Dumpable { private final SparseArray dumpableFormatByTrackType; private final SparseArray dumpableStreamByTrackType; private final Map trackIndexToType; - private final ArrayList metadataList; + private final ArrayList metadataList; private boolean released; /** Creates a new test muxer. */ @@ -133,9 +133,9 @@ public final class CapturingMuxer implements Muxer, Dumpable { } @Override - public void addMetadata(Metadata metadata) { - metadataList.add(metadata); - wrappedMuxer.addMetadata(metadata); + public void addMetadataEntry(Metadata.Entry metadataEntry) { + metadataList.add(metadataEntry); + wrappedMuxer.addMetadataEntry(metadataEntry); } @Override @@ -152,9 +152,13 @@ public final class CapturingMuxer implements Muxer, Dumpable { dumpableFormatByTrackType.valueAt(i).dump(dumper); } - Collections.sort(metadataList, Comparator.comparing(Metadata::toString)); - for (Metadata metadata : metadataList) { - dumper.add("container metadata", metadata); + if (!metadataList.isEmpty()) { + Collections.sort(metadataList, Comparator.comparing(Metadata.Entry::toString)); + dumper.startBlock("container metadata"); + for (Metadata.Entry metadata : metadataList) { + dumper.add("entry", metadata); + } + dumper.endBlock(); } for (int i = 0; i < dumpableStreamByTrackType.size(); i++) {