From 51d27d757505886c7b49fc669982cdde3174d1d4 Mon Sep 17 00:00:00 2001 From: sheenachhabra Date: Wed, 17 Jul 2024 12:13:09 -0700 Subject: [PATCH] Merge Boxes.moov() into Mp4MoovStucture.moov() Boxes.moov() simply wraps the subboxes and this logic can be put into main method which has all the logic of creating moov box. This is to eventually move Mp4MoovStucture.moov() into Boxes.java where all other box creation methods are already present. PiperOrigin-RevId: 653319292 --- .../java/androidx/media3/muxer/Boxes.java | 21 ------------------- .../media3/muxer/Mp4MoovStructure.java | 18 +++++++++------- 2 files changed, 10 insertions(+), 29 deletions(-) diff --git a/libraries/muxer/src/main/java/androidx/media3/muxer/Boxes.java b/libraries/muxer/src/main/java/androidx/media3/muxer/Boxes.java index 6ad4d98869..4a5540c63b 100644 --- a/libraries/muxer/src/main/java/androidx/media3/muxer/Boxes.java +++ b/libraries/muxer/src/main/java/androidx/media3/muxer/Boxes.java @@ -487,27 +487,6 @@ import java.util.List; "uuid", ImmutableList.of(ByteBuffer.wrap(Bytes.toArray(uuid)), contents)); } - /** - * Returns the moov box. - * - *

This box is a top level movie descriptor box (there is a single one of this per Mp4 file). - */ - public static ByteBuffer moov( - ByteBuffer mvhdBox, - ByteBuffer udtaBox, - ByteBuffer metaBox, - List trakBoxes, - ByteBuffer mvexBox) { - List subBoxes = new ArrayList<>(); - subBoxes.add(mvhdBox); - subBoxes.add(udtaBox); - subBoxes.add(metaBox); - subBoxes.addAll(trakBoxes); - subBoxes.add(mvexBox); - - return BoxUtils.wrapBoxesIntoBox("moov", subBoxes); - } - /** Returns an audio sample entry box based on the MIME type. */ public static ByteBuffer audioSampleEntry(Format format) { String fourcc = codecSpecificFourcc(format); diff --git a/libraries/muxer/src/main/java/androidx/media3/muxer/Mp4MoovStructure.java b/libraries/muxer/src/main/java/androidx/media3/muxer/Mp4MoovStructure.java index 126f8090bc..0e03392eeb 100644 --- a/libraries/muxer/src/main/java/androidx/media3/muxer/Mp4MoovStructure.java +++ b/libraries/muxer/src/main/java/androidx/media3/muxer/Mp4MoovStructure.java @@ -192,14 +192,16 @@ import org.checkerframework.checker.nullness.qual.PolyNull; Boxes.keys(Lists.newArrayList(metadataCollector.metadataEntries)), Boxes.ilst(Lists.newArrayList(metadataCollector.metadataEntries))); - ByteBuffer moovBox; - moovBox = - Boxes.moov( - mvhdBox, - udtaBox, - metaBox, - trakBoxes, - isFragmentedMp4 ? Boxes.mvex(trexBoxes) : ByteBuffer.allocate(0)); + List subBoxes = new ArrayList<>(); + subBoxes.add(mvhdBox); + subBoxes.add(udtaBox); + subBoxes.add(metaBox); + subBoxes.addAll(trakBoxes); + if (isFragmentedMp4) { + subBoxes.add(Boxes.mvex(trexBoxes)); + } + + ByteBuffer moovBox = BoxUtils.wrapBoxesIntoBox("moov", subBoxes); // Also add XMP if needed if (metadataCollector.xmpData != null) {