@@ -783,7 +783,7 @@ private void makeTrak(final int index, final long duration, final int defaultMed
783783 final int mediaTime ;
784784
785785 if (tracks [index ].trak .edstElst == null ) {
786- // is a audio track ¿ is edst/elst optional for audio tracks?
786+ // is a audio track; is edst/elst optional for audio tracks?
787787 mediaTime = 0x00 ; // ffmpeg set this value as zero, instead of defaultMediaTime
788788 bMediaRate = 0x00010000 ;
789789 } else {
@@ -891,28 +891,33 @@ private int makeSbgp() throws IOException {
891891 return offset + 0x14 ;
892892 }
893893
894+ /**
895+ * Creates a Sample Group Description Box.
896+ *
897+ * <p>
898+ * What does it do?
899+ * <br>
900+ * The table inside of this box gives information about the
901+ * characteristics of sample groups. The descriptive information is any other
902+ * information needed to define or characterize the sample group.
903+ * </p>
904+ *
905+ * <p>
906+ * ¿is replicable this box?
907+ * <br>
908+ * NO due lacks of documentation about this box but...
909+ * most of m4a encoders and ffmpeg uses this box with dummy values (same values)
910+ * </p>
911+ */
894912 private byte [] makeSgpd () {
895- /*
896- * Sample Group Description Box
897- *
898- * ¿whats does?
899- * the table inside of this box gives information about the
900- * characteristics of sample groups. The descriptive information is any other
901- * information needed to define or characterize the sample group.
902- *
903- * ¿is replicable this box?
904- * NO due lacks of documentation about this box but...
905- * most of m4a encoders and ffmpeg uses this box with dummy values (same values)
906- */
907-
908913 final ByteBuffer buffer = ByteBuffer .wrap (new byte [] {
909914 0x00 , 0x00 , 0x00 , 0x1A , // box size
910915 0x73 , 0x67 , 0x70 , 0x64 , // "sgpd"
911916 0x01 , 0x00 , 0x00 , 0x00 , // box flags (unknown flag sets)
912- 0x72 , 0x6F , 0x6C , 0x6C , // ¿¿ group type??
913- 0x00 , 0x00 , 0x00 , 0x02 , // ¿¿ ??
914- 0x00 , 0x00 , 0x00 , 0x01 , // ¿¿ ??
915- (byte ) 0xFF , (byte ) 0xFF // ¿¿ ??
917+ 0x72 , 0x6F , 0x6C , 0x6C , // group type??
918+ 0x00 , 0x00 , 0x00 , 0x02 , // ??
919+ 0x00 , 0x00 , 0x00 , 0x01 , // ??
920+ (byte ) 0xFF , (byte ) 0xFF // ??
916921 });
917922
918923 return buffer .array ();
@@ -955,6 +960,7 @@ private void makeUdta() throws IOException {
955960 writeMetaItem ("©ART" , artist );
956961 }
957962 if (date != null && !date .isEmpty ()) {
963+ // this means 'year' in mp4 metadata, who the hell thought that?
958964 writeMetaItem ("©day" , date );
959965 }
960966
@@ -1037,8 +1043,11 @@ private byte[] makeMetaHdlr() {
10371043 }
10381044
10391045 /**
1040- * Helper to write cover image inside the 'udta' box.
1041- *
1046+ * Helper to add cover image inside the 'udta' box.
1047+ * <p>
1048+ * This method writes the 'covr' metadata item which contains the cover image.
1049+ * The cover image is displayed as thumbnail in many media players and file managers.
1050+ * </p>
10421051 * <pre>
10431052 * [size][key] [data_box]
10441053 * data_box = [size]["data"][type(4bytes)][locale(4bytes)=0][payload]
0 commit comments