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) {