Skip to content

Commit dbdd1dc

Browse files
committed
Add more documentation
1 parent 23d4d58 commit dbdd1dc

File tree

2 files changed

+50
-25
lines changed

2 files changed

+50
-25
lines changed

app/src/main/java/org/schabi/newpipe/streams/Mp4FromDashWriter.java

Lines changed: 37 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -21,11 +21,13 @@
2121
/**
2222
* MP4 muxer that builds a standard MP4 file from DASH fragmented MP4 sources.
2323
*
24-
* @author kapodamy
24+
* <p>
25+
* See <a href="https://atomicparsley.sourceforge.net/mpeg-4files.html">
26+
* https://atomicparsley.sourceforge.net/mpeg-4files.html</a> for information on
27+
* the MP4 file format and its specification.
28+
* </p>
2529
*
26-
* @implNote See <a href="https://atomicparsley.sourceforge.net/mpeg-4files.html">
27-
* https://atomicparsley.sourceforge.net/mpeg-4files.html</a> for information on
28-
* the MP4 file format and its specification.
30+
* @author kapodamy
2931
*/
3032
public class Mp4FromDashWriter {
3133
private static final int EPOCH_OFFSET = 2082844800;
@@ -783,7 +785,7 @@ private void makeTrak(final int index, final long duration, final int defaultMed
783785
final int mediaTime;
784786

785787
if (tracks[index].trak.edstElst == null) {
786-
// is a audio track ¿is edst/elst optional for audio tracks?
788+
// is an audio track; is edst/elst optional for audio tracks?
787789
mediaTime = 0x00; // ffmpeg set this value as zero, instead of defaultMediaTime
788790
bMediaRate = 0x00010000;
789791
} else {
@@ -891,28 +893,35 @@ private int makeSbgp() throws IOException {
891893
return offset + 0x14;
892894
}
893895

896+
/**
897+
* Creates a Sample Group Description Box.
898+
*
899+
* <p>
900+
* What does it do?
901+
* <br>
902+
* The table inside of this box gives information about the
903+
* characteristics of sample groups. The descriptive information is any other
904+
* information needed to define or characterize the sample group.
905+
* </p>
906+
*
907+
* <p>
908+
* ¿is replicable this box?
909+
* <br>
910+
* NO due lacks of documentation about this box but...
911+
* most of m4a encoders and ffmpeg uses this box with dummy values (same values)
912+
* </p>
913+
*
914+
* @return byte array with the 'sgpd' box
915+
*/
894916
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-
908917
final ByteBuffer buffer = ByteBuffer.wrap(new byte[] {
909918
0x00, 0x00, 0x00, 0x1A, // box size
910919
0x73, 0x67, 0x70, 0x64, // "sgpd"
911920
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 // ¿¿??
921+
0x72, 0x6F, 0x6C, 0x6C, // group type??
922+
0x00, 0x00, 0x00, 0x02, // ??
923+
0x00, 0x00, 0x00, 0x01, // ??
924+
(byte) 0xFF, (byte) 0xFF // ??
916925
});
917926

918927
return buffer.array();
@@ -955,6 +964,7 @@ private void makeUdta() throws IOException {
955964
writeMetaItem("©ART", artist);
956965
}
957966
if (date != null && !date.isEmpty()) {
967+
// this means 'year' in mp4 metadata, who the hell thought that?
958968
writeMetaItem("©day", date);
959969
}
960970

@@ -1037,8 +1047,11 @@ private byte[] makeMetaHdlr() {
10371047
}
10381048

10391049
/**
1040-
* Helper to write cover image inside the 'udta' box.
1041-
*
1050+
* Helper to add cover image inside the 'udta' box.
1051+
* <p>
1052+
* This method writes the 'covr' metadata item which contains the cover image.
1053+
* The cover image is displayed as thumbnail in many media players and file managers.
1054+
* </p>
10421055
* <pre>
10431056
* [size][key] [data_box]
10441057
* data_box = [size]["data"][type(4bytes)][locale(4bytes)=0][payload]

app/src/main/java/us/shandian/giga/postprocessing/Postprocessing.java

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import android.util.Log;
55

66
import androidx.annotation.NonNull;
7+
import androidx.annotation.Nullable;
78

89
import org.schabi.newpipe.extractor.stream.StreamInfo;
910
import org.schabi.newpipe.streams.io.SharpStream;
@@ -33,7 +34,7 @@ public abstract class Postprocessing implements Serializable {
3334
public transient static final String ALGORITHM_OGG_FROM_WEBM_DEMUXER = "webm-ogg-d";
3435

3536
public static Postprocessing getAlgorithm(@NonNull String algorithmName, String[] args,
36-
StreamInfo streamInfo) {
37+
@NonNull StreamInfo streamInfo) {
3738
Postprocessing instance;
3839

3940
switch (algorithmName) {
@@ -80,7 +81,18 @@ public static Postprocessing getAlgorithm(@NonNull String algorithmName, String[
8081
private final String name;
8182

8283
private String[] args;
84+
85+
/**
86+
* StreamInfo object related to the current download
87+
*/
88+
@NonNull
8389
protected StreamInfo streamInfo;
90+
91+
/**
92+
* The thumbnail / cover art bitmap associated with the current download.
93+
* May be null.
94+
*/
95+
@Nullable
8496
protected Bitmap thumbnail;
8597

8698
private transient DownloadMission mission;

0 commit comments

Comments
 (0)