Drop "writing/muxed by" metadata
* All muxers (mp4, webm and ogg) are affected * solve some checkstyle's errors (building was blocked) Mp4FromDashWriter: * drop "writing application" * drop "handler name" OggFromWebMWriter: * drop "writing application" for OPUS and VORBIS header WebMWriter: * Drop "Muxing application" * Drop "Writing application"
This commit is contained in:
parent
07cead7e99
commit
452977abdf
|
@ -717,18 +717,6 @@ public class Mp4FromDashWriter {
|
||||||
makeTrak(i, durations[i], defaultMediaTime[i], tablesInfo[i], is64);
|
makeTrak(i, durations[i], defaultMediaTime[i], tablesInfo[i], is64);
|
||||||
}
|
}
|
||||||
|
|
||||||
// udta/meta/ilst/©too
|
|
||||||
auxWrite(new byte[]{
|
|
||||||
0x00, 0x00, 0x00, 0x5C, 0x75, 0x64, 0x74, 0x61, 0x00, 0x00, 0x00, 0x54, 0x6D, 0x65,
|
|
||||||
0x74, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0x68, 0x64, 0x6C, 0x72,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6D, 0x64, 0x69, 0x72, 0x61, 0x70,
|
|
||||||
0x70, 0x6C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x27, 0x69, 0x6C, 0x73, 0x74, 0x00, 0x00, 0x00,
|
|
||||||
0x1F, (byte) 0xA9, 0x74, 0x6F, 0x6F, 0x00, 0x00, 0x00, 0x17, 0x64, 0x61, 0x74, 0x61,
|
|
||||||
0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x4E, 0x65, 0x77, 0x50, 0x69, 0x70, 0x65 // "NewPipe" binary string
|
|
||||||
});
|
|
||||||
|
|
||||||
return lengthFor(start);
|
return lengthFor(start);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -850,20 +838,10 @@ public class Mp4FromDashWriter {
|
||||||
|
|
||||||
private byte[] makeHdlr(final Hdlr hdlr) {
|
private byte[] makeHdlr(final Hdlr hdlr) {
|
||||||
ByteBuffer buffer = ByteBuffer.wrap(new byte[]{
|
ByteBuffer buffer = ByteBuffer.wrap(new byte[]{
|
||||||
0x00, 0x00, 0x00, 0x77, 0x68, 0x64, 0x6C, 0x72, // hdlr
|
0x00, 0x00, 0x00, 0x21, 0x68, 0x64, 0x6C, 0x72, // hdlr
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
// binary string
|
0x00// null string character
|
||||||
// "ISO Media file created in NewPipe (
|
|
||||||
// A libre lightweight streaming frontend for Android)."
|
|
||||||
0x49, 0x53, 0x4F, 0x20, 0x4D, 0x65, 0x64, 0x69, 0x61, 0x20, 0x66, 0x69, 0x6C, 0x65,
|
|
||||||
0x20, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x20, 0x69, 0x6E, 0x20, 0x4E, 0x65,
|
|
||||||
0x77, 0x50, 0x69, 0x70, 0x65, 0x20, 0x28, 0x41, 0x20, 0x6C, 0x69, 0x62, 0x72, 0x65,
|
|
||||||
0x20, 0x6C, 0x69, 0x67, 0x68, 0x74, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x20, 0x73,
|
|
||||||
0x74, 0x72, 0x65, 0x61, 0x6D, 0x69, 0x6E, 0x67,
|
|
||||||
0x20, 0x66, 0x72, 0x6F, 0x6E, 0x74, 0x65, 0x6E, 0x64, 0x20, 0x66, 0x6F, 0x72, 0x20,
|
|
||||||
0x41, 0x6E,
|
|
||||||
0x64, 0x72, 0x6F, 0x69, 0x64, 0x29, 0x2E
|
|
||||||
});
|
});
|
||||||
|
|
||||||
buffer.position(12);
|
buffer.position(12);
|
||||||
|
@ -899,7 +877,7 @@ public class Mp4FromDashWriter {
|
||||||
* characteristics of sample groups. The descriptive information is any other
|
* characteristics of sample groups. The descriptive information is any other
|
||||||
* information needed to define or characterize the sample group.
|
* information needed to define or characterize the sample group.
|
||||||
*
|
*
|
||||||
* ¿is replicabled this box?
|
* ¿is replicable this box?
|
||||||
* NO due lacks of documentation about this box but...
|
* NO due lacks of documentation about this box but...
|
||||||
* most of m4a encoders and ffmpeg uses this box with dummy values (same values)
|
* most of m4a encoders and ffmpeg uses this box with dummy values (same values)
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -274,30 +274,15 @@ public class OggFromWebMWriter implements Closeable {
|
||||||
if ("A_OPUS".equals(webmTrack.codecId)) {
|
if ("A_OPUS".equals(webmTrack.codecId)) {
|
||||||
return new byte[]{
|
return new byte[]{
|
||||||
0x4F, 0x70, 0x75, 0x73, 0x54, 0x61, 0x67, 0x73, // "OpusTags" binary string
|
0x4F, 0x70, 0x75, 0x73, 0x54, 0x61, 0x67, 0x73, // "OpusTags" binary string
|
||||||
0x07, 0x00, 0x00, 0x00, // writing application string size
|
0x00, 0x00, 0x00, 0x00, // writing application string size (not present)
|
||||||
0x4E, 0x65, 0x77, 0x50, 0x69, 0x70, 0x65, // "NewPipe" binary string
|
|
||||||
0x00, 0x00, 0x00, 0x00 // additional tags count (zero means no tags)
|
0x00, 0x00, 0x00, 0x00 // additional tags count (zero means no tags)
|
||||||
};
|
};
|
||||||
} else if ("A_VORBIS".equals(webmTrack.codecId)) {
|
} else if ("A_VORBIS".equals(webmTrack.codecId)) {
|
||||||
return new byte[]{
|
return new byte[]{
|
||||||
0x03, // ????????
|
0x03, // ¿¿¿???
|
||||||
0x76, 0x6f, 0x72, 0x62, 0x69, 0x73, // "vorbis" binary string
|
0x76, 0x6f, 0x72, 0x62, 0x69, 0x73, // "vorbis" binary string
|
||||||
0x07, 0x00, 0x00, 0x00, // writting application string size
|
0x00, 0x00, 0x00, 0x00, // writing application string size (not present)
|
||||||
0x4E, 0x65, 0x77, 0x50, 0x69, 0x70, 0x65, // "NewPipe" binary string
|
0x00, 0x00, 0x00, 0x00, // additional tags count (zero means no tags)
|
||||||
0x01, 0x00, 0x00, 0x00, // additional tags count (zero means no tags)
|
|
||||||
|
|
||||||
/*
|
|
||||||
// whole file duration (not implemented)
|
|
||||||
0x44,// tag string size
|
|
||||||
0x55, 0x52, 0x41, 0x54, 0x49, 0x4F, 0x4E, 0x3D, 0x30,
|
|
||||||
0x30, 0x3A, 0x30, 0x30, 0x3A, 0x30, 0x30, 0x2E, 0x30,
|
|
||||||
0x30, 0x30, 0x30, 0x30, 0x30, 0x30
|
|
||||||
*/
|
|
||||||
0x0F, // tag string size
|
|
||||||
0x00, 0x00, 0x00, 0x45, 0x4E, 0x43, 0x4F,
|
|
||||||
0x44, 0x45, 0x52, 0x3D, // "ENCODER=" binary string
|
|
||||||
0x4E, 0x65, 0x77, 0x50, 0x69, 0x70, 0x65, // "NewPipe" binary string
|
|
||||||
0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // ????????
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -377,7 +362,7 @@ public class OggFromWebMWriter implements Closeable {
|
||||||
return addPacketSegment(block.dataSize);
|
return addPacketSegment(block.dataSize);
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean addPacketSegment(int size) {
|
private boolean addPacketSegment(final int size) {
|
||||||
if (size > 65025) {
|
if (size > 65025) {
|
||||||
throw new UnsupportedOperationException("page size cannot be larger than 65025");
|
throw new UnsupportedOperationException("page size cannot be larger than 65025");
|
||||||
}
|
}
|
||||||
|
@ -396,8 +381,8 @@ public class OggFromWebMWriter implements Closeable {
|
||||||
return false; // not enough space on the page
|
return false; // not enough space on the page
|
||||||
}
|
}
|
||||||
|
|
||||||
for (; size > 0; size -= 255) {
|
for (int seg = size; seg > 0; seg -= 255) {
|
||||||
segmentTable[segmentTableSize++] = (byte) Math.min(size, 255);
|
segmentTable[segmentTableSize++] = (byte) Math.min(seg, 255);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (extra) {
|
if (extra) {
|
||||||
|
@ -419,12 +404,13 @@ public class OggFromWebMWriter implements Closeable {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private int calcCrc32(int initialCrc, final byte[] buffer, final int size) {
|
private int calcCrc32(final int initialCrc, final byte[] buffer, final int size) {
|
||||||
|
int crc = initialCrc;
|
||||||
for (int i = 0; i < size; i++) {
|
for (int i = 0; i < size; i++) {
|
||||||
int reg = (initialCrc >>> 24) & 0xff;
|
int reg = (crc >>> 24) & 0xff;
|
||||||
initialCrc = (initialCrc << 8) ^ crc32Table[reg ^ (buffer[i] & 0xff)];
|
crc = (crc << 8) ^ crc32Table[reg ^ (buffer[i] & 0xff)];
|
||||||
}
|
}
|
||||||
|
|
||||||
return initialCrc;
|
return crc;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -151,7 +151,7 @@ public class WebMWriter implements Closeable {
|
||||||
(byte) 0xac, (byte) 0x81, /*info offset*/ 0x43,
|
(byte) 0xac, (byte) 0x81, /*info offset*/ 0x43,
|
||||||
0x4d, (byte) 0xbb, (byte) 0x8b, 0x53, (byte) 0xab,
|
0x4d, (byte) 0xbb, (byte) 0x8b, 0x53, (byte) 0xab,
|
||||||
(byte) 0x84, 0x16, 0x54, (byte) 0xae, 0x6b, 0x53, (byte) 0xac, (byte) 0x81,
|
(byte) 0x84, 0x16, 0x54, (byte) 0xae, 0x6b, 0x53, (byte) 0xac, (byte) 0x81,
|
||||||
/*tracks offset*/ 0x6a,
|
/*tracks offset*/ 0x56,
|
||||||
0x4d, (byte) 0xbb, (byte) 0x8e, 0x53, (byte) 0xab, (byte) 0x84, 0x1f,
|
0x4d, (byte) 0xbb, (byte) 0x8e, 0x53, (byte) 0xab, (byte) 0x84, 0x1f,
|
||||||
0x43, (byte) 0xb6, 0x75, 0x53, (byte) 0xac, (byte) 0x84, /*cluster offset [2]*/ 0x00, 0x00, 0x00, 0x00,
|
0x43, (byte) 0xb6, 0x75, 0x53, (byte) 0xac, (byte) 0x84, /*cluster offset [2]*/ 0x00, 0x00, 0x00, 0x00,
|
||||||
0x4d, (byte) 0xbb, (byte) 0x8e, 0x53, (byte) 0xab, (byte) 0x84, 0x1c, 0x53,
|
0x4d, (byte) 0xbb, (byte) 0x8e, 0x53, (byte) 0xab, (byte) 0x84, 0x1c, 0x53,
|
||||||
|
@ -160,19 +160,11 @@ public class WebMWriter implements Closeable {
|
||||||
|
|
||||||
/* info */
|
/* info */
|
||||||
listBuffer.add(new byte[]{
|
listBuffer.add(new byte[]{
|
||||||
0x15, 0x49, (byte) 0xa9, 0x66, (byte) 0xa2, 0x2a, (byte) 0xd7, (byte) 0xb1
|
0x15, 0x49, (byte) 0xa9, 0x66, (byte) 0x8e, 0x2a, (byte) 0xd7, (byte) 0xb1
|
||||||
});
|
});
|
||||||
listBuffer.add(encode(DEFAULT_TIMECODE_SCALE, true)); // this value MUST NOT exceed 4 bytes
|
listBuffer.add(encode(DEFAULT_TIMECODE_SCALE, true)); // this value MUST NOT exceed 4 bytes
|
||||||
listBuffer.add(new byte[]{0x44, (byte) 0x89, (byte) 0x84,
|
listBuffer.add(new byte[]{0x44, (byte) 0x89, (byte) 0x84,
|
||||||
0x00, 0x00, 0x00, 0x00, // info.duration
|
0x00, 0x00, 0x00, 0x00, // info.duration
|
||||||
|
|
||||||
/* MuxingApp */
|
|
||||||
0x4d, (byte) 0x80, (byte) 0x87, 0x4E,
|
|
||||||
0x65, 0x77, 0x50, 0x69, 0x70, 0x65, // "NewPipe" binary string
|
|
||||||
|
|
||||||
/* WritingApp */
|
|
||||||
0x57, 0x41, (byte) 0x87, 0x4E,
|
|
||||||
0x65, 0x77, 0x50, 0x69, 0x70, 0x65// "NewPipe" binary string
|
|
||||||
});
|
});
|
||||||
|
|
||||||
/* tracks */
|
/* tracks */
|
||||||
|
@ -416,7 +408,7 @@ public class WebMWriter implements Closeable {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private long makeCluster(final SharpStream stream, final long timecode, long offset,
|
private long makeCluster(final SharpStream stream, final long timecode, final long offset,
|
||||||
final boolean create) throws IOException {
|
final boolean create) throws IOException {
|
||||||
ClusterInfo cluster;
|
ClusterInfo cluster;
|
||||||
|
|
||||||
|
@ -426,8 +418,6 @@ public class WebMWriter implements Closeable {
|
||||||
cluster.size = (int) (written - offset - CLUSTER_HEADER_SIZE);
|
cluster.size = (int) (written - offset - CLUSTER_HEADER_SIZE);
|
||||||
}
|
}
|
||||||
|
|
||||||
offset = written;
|
|
||||||
|
|
||||||
if (create) {
|
if (create) {
|
||||||
/* cluster */
|
/* cluster */
|
||||||
dump(new byte[]{0x1f, 0x43, (byte) 0xb6, 0x75}, stream);
|
dump(new byte[]{0x1f, 0x43, (byte) 0xb6, 0x75}, stream);
|
||||||
|
@ -445,7 +435,7 @@ public class WebMWriter implements Closeable {
|
||||||
dump(encode(timecode, true), stream);
|
dump(encode(timecode, true), stream);
|
||||||
}
|
}
|
||||||
|
|
||||||
return offset;
|
return written;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void makeEBML(final SharpStream stream) throws IOException {
|
private void makeEBML(final SharpStream stream) throws IOException {
|
||||||
|
@ -588,8 +578,10 @@ public class WebMWriter implements Closeable {
|
||||||
return lengthFor(buffer);
|
return lengthFor(buffer);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void makeEbmlVoid(final SharpStream out, int size, final boolean wipe)
|
private void makeEbmlVoid(final SharpStream out, final int amount, final boolean wipe)
|
||||||
throws IOException {
|
throws IOException {
|
||||||
|
int size = amount;
|
||||||
|
|
||||||
/* ebml void */
|
/* ebml void */
|
||||||
outByteBuffer.putShort(0, (short) 0xec20);
|
outByteBuffer.putShort(0, (short) 0xec20);
|
||||||
outByteBuffer.putShort(2, (short) (size - 4));
|
outByteBuffer.putShort(2, (short) (size - 4));
|
||||||
|
|
Loading…
Reference in New Issue