Fix parsing some MP4 metadata fields we wrongly assumed were 1 byte

This fixes parsing the `gnre` and `tmpo` values, as seen in the test
dump changes in this CL.

Issue: androidx/media#1305
PiperOrigin-RevId: 628352773
This commit is contained in:
ibaker 2024-04-26 03:27:31 -07:00 committed by Copybara-Service
parent 08abc964ab
commit e194225b32
12 changed files with 51 additions and 38 deletions

View File

@ -25,6 +25,8 @@
(`soal`), 'artist sort' (`soar`) and 'album artist sort' (`soaa`) MP4
tags were wrongly mapped to the `TSO2`, `TSOA` and `TSOP` ID3 tags
([#1302](https://github.com/androidx/media/issues/1302)).
* Fix reading of MP4 (/iTunes) numeric `gnre` (genre) and `tmpo` (tempo)
tags when the value is more than one byte long.
* Image:
* DRM:
* Allow setting a `LoadErrorHandlingPolicy` on

View File

@ -377,9 +377,9 @@ import com.google.common.collect.ImmutableList;
} else if (type == TYPE_TRACK_NUMBER) {
return parseIndexAndCountAttribute(type, "TRCK", ilst);
} else if (type == TYPE_TEMPO) {
return parseUint8Attribute(type, "TBPM", ilst, true, false);
return parseIntegerAttribute(type, "TBPM", ilst, true, false);
} else if (type == TYPE_COMPILATION) {
return parseUint8Attribute(type, "TCMP", ilst, true, true);
return parseIntegerAttribute(type, "TCMP", ilst, true, true);
} else if (type == TYPE_COVER_ART) {
return parseCoverArt(ilst);
} else if (type == TYPE_ALBUM_ARTIST) {
@ -395,9 +395,9 @@ import com.google.common.collect.ImmutableList;
} else if (type == TYPE_SORT_COMPOSER) {
return parseTextAttribute(type, "TSOC", ilst);
} else if (type == TYPE_RATING) {
return parseUint8Attribute(type, "ITUNESADVISORY", ilst, false, false);
return parseIntegerAttribute(type, "ITUNESADVISORY", ilst, false, false);
} else if (type == TYPE_GAPLESS_ALBUM) {
return parseUint8Attribute(type, "ITUNESGAPLESS", ilst, false, true);
return parseIntegerAttribute(type, "ITUNESGAPLESS", ilst, false, true);
} else if (type == TYPE_TV_SORT_SHOW) {
return parseTextAttribute(type, "TVSHOWSORT", ilst);
} else if (type == TYPE_TV_SHOW) {
@ -468,13 +468,13 @@ import com.google.common.collect.ImmutableList;
}
@Nullable
private static Id3Frame parseUint8Attribute(
private static Id3Frame parseIntegerAttribute(
int type,
String id,
ParsableByteArray data,
boolean isTextInformationFrame,
boolean isBoolean) {
int value = parseUint8AttributeValue(data);
int value = parseIntegerAttribute(data);
if (isBoolean) {
value = min(1, value);
}
@ -488,6 +488,28 @@ import com.google.common.collect.ImmutableList;
return null;
}
private static int parseIntegerAttribute(ParsableByteArray data) {
int atomSize = data.readInt();
int atomType = data.readInt();
if (atomType == Atom.TYPE_data) {
data.skipBytes(8); // version (1), flags (3), empty (4)
switch (atomSize - 16) {
case 1:
return data.readUnsignedByte();
case 2:
return data.readUnsignedShort();
case 3:
return data.readUnsignedInt24();
case 4:
if ((data.peekUnsignedByte() & 0x80) == 0) {
return data.readUnsignedIntToInt();
}
}
}
Log.w(TAG, "Failed to parse data atom to int");
return -1;
}
@Nullable
private static TextInformationFrame parseIndexAndCountAttribute(
int type, String attributeName, ParsableByteArray data) {
@ -512,7 +534,7 @@ import com.google.common.collect.ImmutableList;
@Nullable
private static TextInformationFrame parseStandardGenreAttribute(ParsableByteArray data) {
int genreCode = parseUint8AttributeValue(data);
int genreCode = parseIntegerAttribute(data);
@Nullable
String genreString =
(0 < genreCode && genreCode <= STANDARD_GENRES.length)
@ -582,15 +604,4 @@ import com.google.common.collect.ImmutableList;
String value = data.readNullTerminatedString(dataAtomSize - 16);
return new InternalFrame(domain, name, value);
}
private static int parseUint8AttributeValue(ParsableByteArray data) {
data.skipBytes(4); // atomSize
int atomType = data.readInt();
if (atomType == Atom.TYPE_data) {
data.skipBytes(8); // version (1), flags (3), empty (4)
return data.readUnsignedByte();
}
Log.w(TAG, "Failed to parse uint8 attribute value");
return -1;
}
}

View File

@ -20,7 +20,7 @@ track 0:
colorInfo:
lumaBitdepth = 8
chromaBitdepth = 8
metadata = entries=[TSSE: description=null: values=[Lavf56.1.0], TPE1: description=null: values=[Test Artist], TALB: description=null: values=[Test Album], TRCK: description=null: values=[2/12], TPOS: description=null: values=[2/3], TDRC: description=null: values=[2024], TCON: description=null: values=[Gorpcore], TBPM: description=null: values=[0], TCMP: description=null: values=[1], COMM: language=und, description=ITUNESADVISORY, text=2, COMM: language=und, description=ITUNESGAPLESS, text=1, TSOP: description=null: values=[Sorting Artist], TSOA: description=null: values=[Sorting Album], xyz: latitude=40.68, longitude=-74.5, Mp4Timestamp: creation time=3547558895, modification time=3796909510, timescale=1000]
metadata = entries=[TSSE: description=null: values=[Lavf56.1.0], TPE1: description=null: values=[Test Artist], TALB: description=null: values=[Test Album], TRCK: description=null: values=[2/12], TPOS: description=null: values=[2/3], TDRC: description=null: values=[2024], TCON: description=null: values=[Gorpcore], TBPM: description=null: values=[120], TCMP: description=null: values=[1], COMM: language=und, description=ITUNESADVISORY, text=2, COMM: language=und, description=ITUNESGAPLESS, text=1, TSOP: description=null: values=[Sorting Artist], TSOA: description=null: values=[Sorting Album], xyz: latitude=40.68, longitude=-74.5, Mp4Timestamp: creation time=3547558895, modification time=3796909510, timescale=1000]
initializationData:
data = length 29, hash 4746B5D9
data = length 10, hash 7A0D0F2B
@ -156,7 +156,7 @@ track 1:
channelCount = 1
sampleRate = 44100
language = und
metadata = entries=[TSSE: description=null: values=[Lavf56.1.0], TPE1: description=null: values=[Test Artist], TALB: description=null: values=[Test Album], TRCK: description=null: values=[2/12], TPOS: description=null: values=[2/3], TDRC: description=null: values=[2024], TCON: description=null: values=[Gorpcore], TBPM: description=null: values=[0], TCMP: description=null: values=[1], COMM: language=und, description=ITUNESADVISORY, text=2, COMM: language=und, description=ITUNESGAPLESS, text=1, TSOP: description=null: values=[Sorting Artist], TSOA: description=null: values=[Sorting Album], xyz: latitude=40.68, longitude=-74.5, Mp4Timestamp: creation time=3547558895, modification time=3796909510, timescale=1000]
metadata = entries=[TSSE: description=null: values=[Lavf56.1.0], TPE1: description=null: values=[Test Artist], TALB: description=null: values=[Test Album], TRCK: description=null: values=[2/12], TPOS: description=null: values=[2/3], TDRC: description=null: values=[2024], TCON: description=null: values=[Gorpcore], TBPM: description=null: values=[120], TCMP: description=null: values=[1], COMM: language=und, description=ITUNESADVISORY, text=2, COMM: language=und, description=ITUNESGAPLESS, text=1, TSOP: description=null: values=[Sorting Artist], TSOA: description=null: values=[Sorting Album], xyz: latitude=40.68, longitude=-74.5, Mp4Timestamp: creation time=3547558895, modification time=3796909510, timescale=1000]
initializationData:
data = length 2, hash 5F7
sample 0:

View File

@ -20,7 +20,7 @@ track 0:
colorInfo:
lumaBitdepth = 8
chromaBitdepth = 8
metadata = entries=[TSSE: description=null: values=[Lavf56.1.0], TPE1: description=null: values=[Test Artist], TALB: description=null: values=[Test Album], TRCK: description=null: values=[2/12], TPOS: description=null: values=[2/3], TDRC: description=null: values=[2024], TCON: description=null: values=[Gorpcore], TBPM: description=null: values=[0], TCMP: description=null: values=[1], COMM: language=und, description=ITUNESADVISORY, text=2, COMM: language=und, description=ITUNESGAPLESS, text=1, TSOP: description=null: values=[Sorting Artist], TSOA: description=null: values=[Sorting Album], xyz: latitude=40.68, longitude=-74.5, Mp4Timestamp: creation time=3547558895, modification time=3796909510, timescale=1000]
metadata = entries=[TSSE: description=null: values=[Lavf56.1.0], TPE1: description=null: values=[Test Artist], TALB: description=null: values=[Test Album], TRCK: description=null: values=[2/12], TPOS: description=null: values=[2/3], TDRC: description=null: values=[2024], TCON: description=null: values=[Gorpcore], TBPM: description=null: values=[120], TCMP: description=null: values=[1], COMM: language=und, description=ITUNESADVISORY, text=2, COMM: language=und, description=ITUNESGAPLESS, text=1, TSOP: description=null: values=[Sorting Artist], TSOA: description=null: values=[Sorting Album], xyz: latitude=40.68, longitude=-74.5, Mp4Timestamp: creation time=3547558895, modification time=3796909510, timescale=1000]
initializationData:
data = length 29, hash 4746B5D9
data = length 10, hash 7A0D0F2B
@ -156,7 +156,7 @@ track 1:
channelCount = 1
sampleRate = 44100
language = und
metadata = entries=[TSSE: description=null: values=[Lavf56.1.0], TPE1: description=null: values=[Test Artist], TALB: description=null: values=[Test Album], TRCK: description=null: values=[2/12], TPOS: description=null: values=[2/3], TDRC: description=null: values=[2024], TCON: description=null: values=[Gorpcore], TBPM: description=null: values=[0], TCMP: description=null: values=[1], COMM: language=und, description=ITUNESADVISORY, text=2, COMM: language=und, description=ITUNESGAPLESS, text=1, TSOP: description=null: values=[Sorting Artist], TSOA: description=null: values=[Sorting Album], xyz: latitude=40.68, longitude=-74.5, Mp4Timestamp: creation time=3547558895, modification time=3796909510, timescale=1000]
metadata = entries=[TSSE: description=null: values=[Lavf56.1.0], TPE1: description=null: values=[Test Artist], TALB: description=null: values=[Test Album], TRCK: description=null: values=[2/12], TPOS: description=null: values=[2/3], TDRC: description=null: values=[2024], TCON: description=null: values=[Gorpcore], TBPM: description=null: values=[120], TCMP: description=null: values=[1], COMM: language=und, description=ITUNESADVISORY, text=2, COMM: language=und, description=ITUNESGAPLESS, text=1, TSOP: description=null: values=[Sorting Artist], TSOA: description=null: values=[Sorting Album], xyz: latitude=40.68, longitude=-74.5, Mp4Timestamp: creation time=3547558895, modification time=3796909510, timescale=1000]
initializationData:
data = length 2, hash 5F7
sample 0:

View File

@ -20,7 +20,7 @@ track 0:
colorInfo:
lumaBitdepth = 8
chromaBitdepth = 8
metadata = entries=[TSSE: description=null: values=[Lavf56.1.0], TPE1: description=null: values=[Test Artist], TALB: description=null: values=[Test Album], TRCK: description=null: values=[2/12], TPOS: description=null: values=[2/3], TDRC: description=null: values=[2024], TCON: description=null: values=[Gorpcore], TBPM: description=null: values=[0], TCMP: description=null: values=[1], COMM: language=und, description=ITUNESADVISORY, text=2, COMM: language=und, description=ITUNESGAPLESS, text=1, TSOP: description=null: values=[Sorting Artist], TSOA: description=null: values=[Sorting Album], xyz: latitude=40.68, longitude=-74.5, Mp4Timestamp: creation time=3547558895, modification time=3796909510, timescale=1000]
metadata = entries=[TSSE: description=null: values=[Lavf56.1.0], TPE1: description=null: values=[Test Artist], TALB: description=null: values=[Test Album], TRCK: description=null: values=[2/12], TPOS: description=null: values=[2/3], TDRC: description=null: values=[2024], TCON: description=null: values=[Gorpcore], TBPM: description=null: values=[120], TCMP: description=null: values=[1], COMM: language=und, description=ITUNESADVISORY, text=2, COMM: language=und, description=ITUNESGAPLESS, text=1, TSOP: description=null: values=[Sorting Artist], TSOA: description=null: values=[Sorting Album], xyz: latitude=40.68, longitude=-74.5, Mp4Timestamp: creation time=3547558895, modification time=3796909510, timescale=1000]
initializationData:
data = length 29, hash 4746B5D9
data = length 10, hash 7A0D0F2B
@ -156,7 +156,7 @@ track 1:
channelCount = 1
sampleRate = 44100
language = und
metadata = entries=[TSSE: description=null: values=[Lavf56.1.0], TPE1: description=null: values=[Test Artist], TALB: description=null: values=[Test Album], TRCK: description=null: values=[2/12], TPOS: description=null: values=[2/3], TDRC: description=null: values=[2024], TCON: description=null: values=[Gorpcore], TBPM: description=null: values=[0], TCMP: description=null: values=[1], COMM: language=und, description=ITUNESADVISORY, text=2, COMM: language=und, description=ITUNESGAPLESS, text=1, TSOP: description=null: values=[Sorting Artist], TSOA: description=null: values=[Sorting Album], xyz: latitude=40.68, longitude=-74.5, Mp4Timestamp: creation time=3547558895, modification time=3796909510, timescale=1000]
metadata = entries=[TSSE: description=null: values=[Lavf56.1.0], TPE1: description=null: values=[Test Artist], TALB: description=null: values=[Test Album], TRCK: description=null: values=[2/12], TPOS: description=null: values=[2/3], TDRC: description=null: values=[2024], TCON: description=null: values=[Gorpcore], TBPM: description=null: values=[120], TCMP: description=null: values=[1], COMM: language=und, description=ITUNESADVISORY, text=2, COMM: language=und, description=ITUNESGAPLESS, text=1, TSOP: description=null: values=[Sorting Artist], TSOA: description=null: values=[Sorting Album], xyz: latitude=40.68, longitude=-74.5, Mp4Timestamp: creation time=3547558895, modification time=3796909510, timescale=1000]
initializationData:
data = length 2, hash 5F7
sample 0:

View File

@ -20,7 +20,7 @@ track 0:
colorInfo:
lumaBitdepth = 8
chromaBitdepth = 8
metadata = entries=[TSSE: description=null: values=[Lavf56.1.0], TPE1: description=null: values=[Test Artist], TALB: description=null: values=[Test Album], TRCK: description=null: values=[2/12], TPOS: description=null: values=[2/3], TDRC: description=null: values=[2024], TCON: description=null: values=[Gorpcore], TBPM: description=null: values=[0], TCMP: description=null: values=[1], COMM: language=und, description=ITUNESADVISORY, text=2, COMM: language=und, description=ITUNESGAPLESS, text=1, TSOP: description=null: values=[Sorting Artist], TSOA: description=null: values=[Sorting Album], xyz: latitude=40.68, longitude=-74.5, Mp4Timestamp: creation time=3547558895, modification time=3796909510, timescale=1000]
metadata = entries=[TSSE: description=null: values=[Lavf56.1.0], TPE1: description=null: values=[Test Artist], TALB: description=null: values=[Test Album], TRCK: description=null: values=[2/12], TPOS: description=null: values=[2/3], TDRC: description=null: values=[2024], TCON: description=null: values=[Gorpcore], TBPM: description=null: values=[120], TCMP: description=null: values=[1], COMM: language=und, description=ITUNESADVISORY, text=2, COMM: language=und, description=ITUNESGAPLESS, text=1, TSOP: description=null: values=[Sorting Artist], TSOA: description=null: values=[Sorting Album], xyz: latitude=40.68, longitude=-74.5, Mp4Timestamp: creation time=3547558895, modification time=3796909510, timescale=1000]
initializationData:
data = length 29, hash 4746B5D9
data = length 10, hash 7A0D0F2B
@ -156,7 +156,7 @@ track 1:
channelCount = 1
sampleRate = 44100
language = und
metadata = entries=[TSSE: description=null: values=[Lavf56.1.0], TPE1: description=null: values=[Test Artist], TALB: description=null: values=[Test Album], TRCK: description=null: values=[2/12], TPOS: description=null: values=[2/3], TDRC: description=null: values=[2024], TCON: description=null: values=[Gorpcore], TBPM: description=null: values=[0], TCMP: description=null: values=[1], COMM: language=und, description=ITUNESADVISORY, text=2, COMM: language=und, description=ITUNESGAPLESS, text=1, TSOP: description=null: values=[Sorting Artist], TSOA: description=null: values=[Sorting Album], xyz: latitude=40.68, longitude=-74.5, Mp4Timestamp: creation time=3547558895, modification time=3796909510, timescale=1000]
metadata = entries=[TSSE: description=null: values=[Lavf56.1.0], TPE1: description=null: values=[Test Artist], TALB: description=null: values=[Test Album], TRCK: description=null: values=[2/12], TPOS: description=null: values=[2/3], TDRC: description=null: values=[2024], TCON: description=null: values=[Gorpcore], TBPM: description=null: values=[120], TCMP: description=null: values=[1], COMM: language=und, description=ITUNESADVISORY, text=2, COMM: language=und, description=ITUNESGAPLESS, text=1, TSOP: description=null: values=[Sorting Artist], TSOA: description=null: values=[Sorting Album], xyz: latitude=40.68, longitude=-74.5, Mp4Timestamp: creation time=3547558895, modification time=3796909510, timescale=1000]
initializationData:
data = length 2, hash 5F7
sample 0:

View File

@ -20,7 +20,7 @@ track 0:
colorInfo:
lumaBitdepth = 8
chromaBitdepth = 8
metadata = entries=[TSSE: description=null: values=[Lavf56.1.0], TPE1: description=null: values=[Test Artist], TALB: description=null: values=[Test Album], TRCK: description=null: values=[2/12], TPOS: description=null: values=[2/3], TDRC: description=null: values=[2024], TCON: description=null: values=[Gorpcore], TBPM: description=null: values=[0], TCMP: description=null: values=[1], COMM: language=und, description=ITUNESADVISORY, text=2, COMM: language=und, description=ITUNESGAPLESS, text=1, TSOP: description=null: values=[Sorting Artist], TSOA: description=null: values=[Sorting Album], xyz: latitude=40.68, longitude=-74.5, Mp4Timestamp: creation time=3547558895, modification time=3796909510, timescale=1000]
metadata = entries=[TSSE: description=null: values=[Lavf56.1.0], TPE1: description=null: values=[Test Artist], TALB: description=null: values=[Test Album], TRCK: description=null: values=[2/12], TPOS: description=null: values=[2/3], TDRC: description=null: values=[2024], TCON: description=null: values=[Gorpcore], TBPM: description=null: values=[120], TCMP: description=null: values=[1], COMM: language=und, description=ITUNESADVISORY, text=2, COMM: language=und, description=ITUNESGAPLESS, text=1, TSOP: description=null: values=[Sorting Artist], TSOA: description=null: values=[Sorting Album], xyz: latitude=40.68, longitude=-74.5, Mp4Timestamp: creation time=3547558895, modification time=3796909510, timescale=1000]
initializationData:
data = length 29, hash 4746B5D9
data = length 10, hash 7A0D0F2B
@ -156,7 +156,7 @@ track 1:
channelCount = 1
sampleRate = 44100
language = und
metadata = entries=[TSSE: description=null: values=[Lavf56.1.0], TPE1: description=null: values=[Test Artist], TALB: description=null: values=[Test Album], TRCK: description=null: values=[2/12], TPOS: description=null: values=[2/3], TDRC: description=null: values=[2024], TCON: description=null: values=[Gorpcore], TBPM: description=null: values=[0], TCMP: description=null: values=[1], COMM: language=und, description=ITUNESADVISORY, text=2, COMM: language=und, description=ITUNESGAPLESS, text=1, TSOP: description=null: values=[Sorting Artist], TSOA: description=null: values=[Sorting Album], xyz: latitude=40.68, longitude=-74.5, Mp4Timestamp: creation time=3547558895, modification time=3796909510, timescale=1000]
metadata = entries=[TSSE: description=null: values=[Lavf56.1.0], TPE1: description=null: values=[Test Artist], TALB: description=null: values=[Test Album], TRCK: description=null: values=[2/12], TPOS: description=null: values=[2/3], TDRC: description=null: values=[2024], TCON: description=null: values=[Gorpcore], TBPM: description=null: values=[120], TCMP: description=null: values=[1], COMM: language=und, description=ITUNESADVISORY, text=2, COMM: language=und, description=ITUNESGAPLESS, text=1, TSOP: description=null: values=[Sorting Artist], TSOA: description=null: values=[Sorting Album], xyz: latitude=40.68, longitude=-74.5, Mp4Timestamp: creation time=3547558895, modification time=3796909510, timescale=1000]
initializationData:
data = length 2, hash 5F7
sample 0:

View File

@ -20,7 +20,7 @@ track 0:
colorInfo:
lumaBitdepth = 8
chromaBitdepth = 8
metadata = entries=[TSSE: description=null: values=[Lavf56.1.0], xyz: latitude=40.68, longitude=-74.5, Mp4Timestamp: creation time=3547558895, modification time=3796908763, timescale=1000]
metadata = entries=[TSSE: description=null: values=[Lavf56.1.0], TCON: description=null: values=[Metal], xyz: latitude=40.68, longitude=-74.5, Mp4Timestamp: creation time=3547558895, modification time=3796908763, timescale=1000]
initializationData:
data = length 29, hash 4746B5D9
data = length 10, hash 7A0D0F2B
@ -156,7 +156,7 @@ track 1:
channelCount = 1
sampleRate = 44100
language = und
metadata = entries=[TSSE: description=null: values=[Lavf56.1.0], xyz: latitude=40.68, longitude=-74.5, Mp4Timestamp: creation time=3547558895, modification time=3796908763, timescale=1000]
metadata = entries=[TSSE: description=null: values=[Lavf56.1.0], TCON: description=null: values=[Metal], xyz: latitude=40.68, longitude=-74.5, Mp4Timestamp: creation time=3547558895, modification time=3796908763, timescale=1000]
initializationData:
data = length 2, hash 5F7
sample 0:

View File

@ -20,7 +20,7 @@ track 0:
colorInfo:
lumaBitdepth = 8
chromaBitdepth = 8
metadata = entries=[TSSE: description=null: values=[Lavf56.1.0], xyz: latitude=40.68, longitude=-74.5, Mp4Timestamp: creation time=3547558895, modification time=3796908763, timescale=1000]
metadata = entries=[TSSE: description=null: values=[Lavf56.1.0], TCON: description=null: values=[Metal], xyz: latitude=40.68, longitude=-74.5, Mp4Timestamp: creation time=3547558895, modification time=3796908763, timescale=1000]
initializationData:
data = length 29, hash 4746B5D9
data = length 10, hash 7A0D0F2B
@ -156,7 +156,7 @@ track 1:
channelCount = 1
sampleRate = 44100
language = und
metadata = entries=[TSSE: description=null: values=[Lavf56.1.0], xyz: latitude=40.68, longitude=-74.5, Mp4Timestamp: creation time=3547558895, modification time=3796908763, timescale=1000]
metadata = entries=[TSSE: description=null: values=[Lavf56.1.0], TCON: description=null: values=[Metal], xyz: latitude=40.68, longitude=-74.5, Mp4Timestamp: creation time=3547558895, modification time=3796908763, timescale=1000]
initializationData:
data = length 2, hash 5F7
sample 0:

View File

@ -20,7 +20,7 @@ track 0:
colorInfo:
lumaBitdepth = 8
chromaBitdepth = 8
metadata = entries=[TSSE: description=null: values=[Lavf56.1.0], xyz: latitude=40.68, longitude=-74.5, Mp4Timestamp: creation time=3547558895, modification time=3796908763, timescale=1000]
metadata = entries=[TSSE: description=null: values=[Lavf56.1.0], TCON: description=null: values=[Metal], xyz: latitude=40.68, longitude=-74.5, Mp4Timestamp: creation time=3547558895, modification time=3796908763, timescale=1000]
initializationData:
data = length 29, hash 4746B5D9
data = length 10, hash 7A0D0F2B
@ -156,7 +156,7 @@ track 1:
channelCount = 1
sampleRate = 44100
language = und
metadata = entries=[TSSE: description=null: values=[Lavf56.1.0], xyz: latitude=40.68, longitude=-74.5, Mp4Timestamp: creation time=3547558895, modification time=3796908763, timescale=1000]
metadata = entries=[TSSE: description=null: values=[Lavf56.1.0], TCON: description=null: values=[Metal], xyz: latitude=40.68, longitude=-74.5, Mp4Timestamp: creation time=3547558895, modification time=3796908763, timescale=1000]
initializationData:
data = length 2, hash 5F7
sample 0:

View File

@ -20,7 +20,7 @@ track 0:
colorInfo:
lumaBitdepth = 8
chromaBitdepth = 8
metadata = entries=[TSSE: description=null: values=[Lavf56.1.0], xyz: latitude=40.68, longitude=-74.5, Mp4Timestamp: creation time=3547558895, modification time=3796908763, timescale=1000]
metadata = entries=[TSSE: description=null: values=[Lavf56.1.0], TCON: description=null: values=[Metal], xyz: latitude=40.68, longitude=-74.5, Mp4Timestamp: creation time=3547558895, modification time=3796908763, timescale=1000]
initializationData:
data = length 29, hash 4746B5D9
data = length 10, hash 7A0D0F2B
@ -156,7 +156,7 @@ track 1:
channelCount = 1
sampleRate = 44100
language = und
metadata = entries=[TSSE: description=null: values=[Lavf56.1.0], xyz: latitude=40.68, longitude=-74.5, Mp4Timestamp: creation time=3547558895, modification time=3796908763, timescale=1000]
metadata = entries=[TSSE: description=null: values=[Lavf56.1.0], TCON: description=null: values=[Metal], xyz: latitude=40.68, longitude=-74.5, Mp4Timestamp: creation time=3547558895, modification time=3796908763, timescale=1000]
initializationData:
data = length 2, hash 5F7
sample 0:

View File

@ -20,7 +20,7 @@ track 0:
colorInfo:
lumaBitdepth = 8
chromaBitdepth = 8
metadata = entries=[TSSE: description=null: values=[Lavf56.1.0], xyz: latitude=40.68, longitude=-74.5, Mp4Timestamp: creation time=3547558895, modification time=3796908763, timescale=1000]
metadata = entries=[TSSE: description=null: values=[Lavf56.1.0], TCON: description=null: values=[Metal], xyz: latitude=40.68, longitude=-74.5, Mp4Timestamp: creation time=3547558895, modification time=3796908763, timescale=1000]
initializationData:
data = length 29, hash 4746B5D9
data = length 10, hash 7A0D0F2B
@ -156,7 +156,7 @@ track 1:
channelCount = 1
sampleRate = 44100
language = und
metadata = entries=[TSSE: description=null: values=[Lavf56.1.0], xyz: latitude=40.68, longitude=-74.5, Mp4Timestamp: creation time=3547558895, modification time=3796908763, timescale=1000]
metadata = entries=[TSSE: description=null: values=[Lavf56.1.0], TCON: description=null: values=[Metal], xyz: latitude=40.68, longitude=-74.5, Mp4Timestamp: creation time=3547558895, modification time=3796908763, timescale=1000]
initializationData:
data = length 2, hash 5F7
sample 0: