1
1
mirror of https://github.com/wader/fq.git synced 2024-12-27 15:42:07 +03:00

mp4: Fix field name typo for sample_composition_time_offsets_present

This commit is contained in:
Mattias Wadman 2021-09-02 18:02:04 +02:00
parent c7d45ff1e0
commit 08018825cb
15 changed files with 55 additions and 55 deletions

View File

@ -87,7 +87,7 @@ For more usage details see [usage.md](doc/usage.md).
[./formats_list.jq]: sh-start
aac_frame, adts, adts_frame, apev2, av1_ccr, av1_frame, av1_obu, avc_annexb, avc_au, avc_dcr, avc_nalu, avc_pps, avc_sei, avc_sps, bzip2, dns, elf, exif, flac, flac_frame, flac_metadatablock, flac_picture, gif, gzip, hevc_annexb, hevc_au, hevc_dcr, hevc_nalu, icc_profile, id3v1, id3v11, id3v2, jpeg, json, matroska, mp3, mp3_frame, mp4, mpeg_asc, mpeg_es, mpeg_pes, mpeg_pes_packet, mpeg_spu, mpeg_ts, ogg, ogg_page, opus_packet, png, protobuf, protobuf_widevine, raw, tar, tiff, vorbis_comment, vorbis_packet, vp8_frame, vp9_cfm, vp9_frame, vpx_ccr, wav, webp, xing
aac_frame, adts, adts_frame, apev2, av1_ccr, av1_frame, av1_obu, avc_annexb, avc_au, avc_dcr, avc_nalu, avc_pps, avc_sei, avc_sps, bzip2, dns, elf, exif, flac, flac_frame, flac_metadatablock, flac_picture, gif, gzip, hevc_annexb, hevc_au, hevc_dcr, hevc_nalu, icc_profile, id3v1, id3v11, id3v2, jpeg, json, matroska, mp3, mp3_frame, mp4, mpeg_asc, mpeg_es, mpeg_pes, mpeg_pes_packet, mpeg_spu, mpeg_ts, ogg, ogg_page, opus_packet, png, protobuf, protobuf_widevine, pssh_playready, raw, tar, tiff, vorbis_comment, vorbis_packet, vp8_frame, vp9_cfm, vp9_frame, vpx_ccr, wav, webp, xing
[#]: sh-end

View File

@ -166,7 +166,7 @@ To add own functions you can use `init.fq` that will be read from
|`matroska` |Matroska&nbsp;file |<sub>`aac_frame` `av1_ccr` `av1_frame` `avc_au` `avc_dcr` `flac_frame` `flac_metadatablock` `hevc_au` `hevc_dcr` `image` `mp3_frame` `mpeg_asc` `mpeg_pes_packet` `mpeg_spu` `opus_packet` `vorbis_packet` `vp8_frame` `vp9_cfm` `vp9_frame`</sub>|
|`mp3` |MP3&nbsp;file |<sub>`id3v2` `id3v1` `id3v11` `apev2` `mp3_frame`</sub>|
|`mp3_frame` |MPEG&nbsp;audio&nbsp;layer&nbsp;3&nbsp;frame |<sub>`xing`</sub>|
|`mp4` |MPEG-4&nbsp;file&nbsp;and&nbsp;similar |<sub>`aac_frame` `av1_ccr` `av1_frame` `flac_frame` `flac_metadatablock` `id3v2` `image` `jpeg` `mp3_frame` `avc_au` `avc_dcr` `mpeg_es` `hevc_au` `hevc_dcr` `mpeg_pes_packet` `opus_packet` `protobuf_widevine` `vorbis_packet` `vp9_frame` `vpx_ccr`</sub>|
|`mp4` |MPEG-4&nbsp;file&nbsp;and&nbsp;similar |<sub>`aac_frame` `av1_ccr` `av1_frame` `flac_frame` `flac_metadatablock` `id3v2` `image` `jpeg` `mp3_frame` `avc_au` `avc_dcr` `mpeg_es` `hevc_au` `hevc_dcr` `mpeg_pes_packet` `opus_packet` `protobuf_widevine` `pssh_playready` `vorbis_packet` `vp9_frame` `vpx_ccr`</sub>|
|`mpeg_asc` |MPEG-4&nbsp;Audio&nbsp;Specific&nbsp;Config |<sub></sub>|
|`mpeg_es` |MPEG&nbsp;Elementary&nbsp;Stream |<sub>`mpeg_asc` `vorbis_packet`</sub>|
|`mpeg_pes` |MPEG&nbsp;Packetized&nbsp;elementary&nbsp;stream |<sub>`mpeg_pes_packet` `mpeg_spu`</sub>|
@ -179,6 +179,7 @@ To add own functions you can use `init.fq` that will be read from
|`png` |Portable&nbsp;Network&nbsp;Graphics&nbsp;file |<sub>`icc_profile` `exif`</sub>|
|`protobuf` |Protobuf |<sub></sub>|
|`protobuf_widevine` |Widevine&nbsp;protobuf |<sub>`protobuf`</sub>|
|`pssh_playready` |PlayReady&nbsp;PSSH |<sub></sub>|
|`raw` |Raw&nbsp;bits |<sub></sub>|
|`tar` |Tar&nbsp;archive |<sub>`probe`</sub>|
|`tiff` |Tag&nbsp;Image&nbsp;File&nbsp;Format |<sub>`icc_profile`</sub>|

View File

@ -770,7 +770,7 @@ func init() {
dataOffsetPresent := false
d.FieldStructFn("flags", func(d *decode.D) {
d.FieldU12("unused0")
sampleCompositionTimeOffsetsPresent = d.FieldBool("sample_composition_time_sffsets_present")
sampleCompositionTimeOffsetsPresent = d.FieldBool("sample_composition_time_offsets_present")
sampleFlagsPresent = d.FieldBool("sample_flags_present")
sampleSizePresent = d.FieldBool("sample_size_present")
sampleDurationPresent = d.FieldBool("sample_duration_present")
@ -1004,8 +1004,14 @@ func init() {
}
},
"sinf": decodeBoxes,
"frma": func(_ *decodeContext, d *decode.D) {
d.FieldUTF8("format", 4)
"frma": func(ctx *decodeContext, d *decode.D) {
format := d.FieldUTF8("format", 4)
// set to original data format
// TODO: how to handle multiple descriptors? track current?
if ctx.currentTrack != nil && len(ctx.currentTrack.sampleDescriptions) > 0 {
ctx.currentTrack.sampleDescriptions[0].originalFormat = format
}
},
"schm": func(_ *decodeContext, d *decode.D) {
d.FieldU8("version")

View File

@ -100,7 +100,8 @@ type moof struct {
}
type sampleDescription struct {
dataFormat string
dataFormat string
originalFormat string
}
type track struct {
@ -203,8 +204,14 @@ func mp4Decode(d *decode.D, in interface{}) interface{} {
d.FieldStructFn("track", func(d *decode.D) {
// TODO: handle progressive/fragmented mp4 differently somehow?
if t.moofs == nil && len(t.sampleDescriptions) > 0 {
d.FieldStrFn("data_format", func() (string, string) { return t.sampleDescriptions[0].dataFormat, "" })
trackSdDataFormat := "unknown"
if len(t.sampleDescriptions) > 0 {
sd := t.sampleDescriptions[0]
trackSdDataFormat = sd.dataFormat
if sd.originalFormat != "" {
trackSdDataFormat = sd.originalFormat
}
}
d.FieldArrayFn("samples", func(d *decode.D) {
@ -231,12 +238,7 @@ func mp4Decode(d *decode.D, in interface{}) interface{} {
}
sampleSize := t.stsz[sampleNr]
dataFormat := "unknown"
if len(t.sampleDescriptions) > 0 {
dataFormat = t.sampleDescriptions[0].dataFormat
}
decodeSampleRange(d, t, dataFormat, "sample", int64(sampleOffset)*8, int64(sampleSize)*8, t.decodeOpts...)
decodeSampleRange(d, t, trackSdDataFormat, "sample", int64(sampleOffset)*8, int64(sampleSize)*8, t.decodeOpts...)
// log.Printf("%s %d/%d %d/%d sample=%d/%d chunk=%d size=%d %d-%d\n", t.dataFormat, stscIndex, len(t.stsc), i, stscEntry.samplesPerChunk, sampleNr, len(t.stsz), chunkNr, sampleSize, sampleOffset, sampleOffset+uint64(sampleSize))
@ -256,12 +258,13 @@ func mp4Decode(d *decode.D, in interface{}) interface{} {
for _, sz := range m.samplesSizes {
// log.Printf("moof sample %s %d-%d\n", t.dataFormat, sampleOffset, int64(sz))
dataFormat := "unknown"
if len(t.sampleDescriptions) > 0 {
dataFormat = t.sampleDescriptions[0].dataFormat
}
dataFormat := trackSdDataFormat
if m.defaultSampleDescriptionIndex != 0 && int(m.defaultSampleDescriptionIndex-1) < len(t.sampleDescriptions) {
dataFormat = t.sampleDescriptions[m.defaultSampleDescriptionIndex-1].dataFormat
sd := t.sampleDescriptions[m.defaultSampleDescriptionIndex-1]
dataFormat = sd.dataFormat
if sd.originalFormat != "" {
dataFormat = sd.originalFormat
}
}
// log.Printf("moof %#+v dataFormat: %#+v\n", m, dataFormat)

View File

@ -353,8 +353,8 @@ $ fq -d mp4 verbose /aac.mp4
0x580| 00 00 01 | ... | flags: 1 0x589-0x58b.7 (3)
0x580| 00 00 00 00| ....| reserved: 0 0x58c-0x58f.7 (4)
0x590|4c 61 76 66 35 38 2e 34 35 2e 31 30 30| |Lavf58.45.100| | data: "Lavf58.45.100" 0x590-0x59c.7 (13)
| | | tracks: [1] 0x2c-0x59c.7 (1393)
| | | [0]: track {} 0x2c-0x59c.7 (1393)
| | | tracks: [1] 0x2c-0x291.7 (614)
| | | [0]: track {} 0x2c-0x291.7 (614)
| | | samples: [4] 0x2c-0x291.7 (614)
| | | [0]: sample {} (aac_frame) 0x2c-0xf8.7 (205)
| | | elements: [3] 0x2c-0x40.7 (21)
@ -430,4 +430,3 @@ $ fq -d mp4 verbose /aac.mp4
0x290|b4 |. |
0x290|b4 |. | [1]: byte_align 00 0x290.6-0x290.7 (0.2)
0x290| 70 | p | data: 70 0x291-0x291.7 (1)
| | | data_format: "mp4a" 0x59d-NA (0)

View File

@ -301,8 +301,8 @@ $ fq -d mp4 verbose /av1.mp4
0x14a0| 00 00 00 00 | .... | reserved: 0 0x14a1-0x14a4.7 (4)
0x14a0| 4c 61 76 66 35 38 2e 34 35 2e 31| Lavf58.45.1| data: "Lavf58.45.100" 0x14a5-0x14b1.7 (13)
0x14b0|30 30| |00| |
| | | tracks: [1] 0x2c-0x14b1.7 (5254)
| | | [0]: track {} 0x2c-0x14b1.7 (5254)
| | | tracks: [1] 0x2c-0x11bf.7 (4500)
| | | [0]: track {} 0x2c-0x11bf.7 (4500)
| | | samples: [1] 0x2c-0x11bf.7 (4500)
| | | [0]: sample {} (av1_frame) 0x2c-0x11bf.7 (4500)
| | | frame: [3] 0x2c-0x11bf.7 (4500)
@ -336,4 +336,3 @@ $ fq -d mp4 verbose /av1.mp4
0x0040| f0 22| ."| size: 4464 0x4e-0x4f.7 (2)
0x0050|f6 0a 4f ae f3 fe ec e7 30 4f 3f 13 9c 75 c9 6a|..O.....0O?..u.j| data: f60a4faef3feece7304f3f139c75c96a... 0x50-0x11bf.7 (4464)
* |until 0x11bf.7 (4464) | |
| | | data_format: "av01" 0x14b2-NA (0)

View File

@ -389,8 +389,8 @@ $ fq -d mp4 verbose /avc.mp4
0x0de0| 00 00 00 00 | .... | reserved: 0 0xde2-0xde5.7 (4)
0x0de0| 4c 61 76 66 35 38 2e 34 35 2e| Lavf58.45.| data: "Lavf58.45.100" 0xde6-0xdf2.7 (13)
0x0df0|31 30 30| |100| |
| | | tracks: [1] 0x30-0xdf2.7 (3523)
| | | [0]: track {} 0x30-0xdf2.7 (3523)
| | | tracks: [1] 0x30-0xaef.7 (2752)
| | | [0]: track {} 0x30-0xaef.7 (2752)
| | | samples: [1] 0x30-0xaef.7 (2752)
| | | [0]: sample {} (avc_au) 0x30-0xaef.7 (2752)
| | | access_unit: [2] 0x30-0xaef.7 (2752)
@ -425,4 +425,3 @@ $ fq -d mp4 verbose /avc.mp4
0x02e0| 84 00 2b ff fe f5 db f3 2c| ..+.....,| data: 080057fffdebb7e65958ccce7bffda76... 0x2e7.1-0xaef.7 (2056.7)
0x02f0|ac 66 67 3d ff ed 3b 60 00 21 74 ff c0 cf 1f fc|.fg=..;`.!t.....|
* |until 0xaef.7 (2057) | |
| | | data_format: "avc1" 0xdf3-NA (0)

View File

@ -309,8 +309,8 @@ $ fq -d mp4 verbose /flac.mp4
0x530| 00 00 00 00 | .... | reserved: 0 0x532-0x535.7 (4)
0x530| 4c 61 76 66 35 38 2e 34 35 2e| Lavf58.45.| data: "Lavf58.45.100" 0x536-0x542.7 (13)
0x540|31 30 30| |100| |
| | | tracks: [1] 0x2c-0x542.7 (1303)
| | | [0]: track {} 0x2c-0x542.7 (1303)
| | | tracks: [1] 0x2c-0x289.7 (606)
| | | [0]: track {} 0x2c-0x289.7 (606)
| | | samples: [1] 0x2c-0x289.7 (606)
| | | [0]: sample {} (flac_frame) 0x2c-0x289.7 (606)
| | | header: {} 0x2c-0x33.7 (8)
@ -370,4 +370,3 @@ $ fq -d mp4 verbose /flac.mp4
0x280| 00 00 00 | ... | value: 0 0x285.1-0x287.1 (2.1)
0x280| 00 | . | byte_align: Correct (0x0) 0x287.2-0x287.7 (0.6)
0x280| 82 cb | .. | footer_crc: Correct (82cb) 0x288-0x289.7 (2)
| | | data_format: "fLaC" 0x543-NA (0)

View File

@ -700,7 +700,7 @@ $ fq -d mp4 verbose /fragmented.mp4
0x05e0| 00 | . | version: 0 0x5e5-0x5e5.7 (1)
| | | flags: {} 0x5e6-0x5e8.7 (3)
0x05e0| 00 00 | .. | unused0: 0 0x5e6-0x5e7.3 (1.4)
0x05e0| 00 | . | sample_composition_time_sffsets_present: false 0x5e7.4-0x5e7.4 (0.1)
0x05e0| 00 | . | sample_composition_time_offsets_present: false 0x5e7.4-0x5e7.4 (0.1)
0x05e0| 00 | . | sample_flags_present: false 0x5e7.5-0x5e7.5 (0.1)
0x05e0| 00 | . | sample_size_present: false 0x5e7.6-0x5e7.6 (0.1)
0x05e0| 00 | . | sample_duration_present: false 0x5e7.7-0x5e7.7 (0.1)
@ -753,7 +753,7 @@ $ fq -d mp4 verbose /fragmented.mp4
0x0630| 00 | . | version: 0 0x63d-0x63d.7 (1)
| | | flags: {} 0x63e-0x640.7 (3)
0x0630| 00 02| ..| unused0: 0 0x63e-0x63f.3 (1.4)
0x0630| 02| .| sample_composition_time_sffsets_present: false 0x63f.4-0x63f.4 (0.1)
0x0630| 02| .| sample_composition_time_offsets_present: false 0x63f.4-0x63f.4 (0.1)
0x0630| 02| .| sample_flags_present: false 0x63f.5-0x63f.5 (0.1)
0x0630| 02| .| sample_size_present: true 0x63f.6-0x63f.6 (0.1)
0x0630| 02| .| sample_duration_present: false 0x63f.7-0x63f.7 (0.1)
@ -822,7 +822,7 @@ $ fq -d mp4 verbose /fragmented.mp4
0x16a0| 00 | . | version: 0 0x16a8-0x16a8.7 (1)
| | | flags: {} 0x16a9-0x16ab.7 (3)
0x16a0| 00 00 | .. | unused0: 0 0x16a9-0x16aa.3 (1.4)
0x16a0| 00 | . | sample_composition_time_sffsets_present: false 0x16aa.4-0x16aa.4 (0.1)
0x16a0| 00 | . | sample_composition_time_offsets_present: false 0x16aa.4-0x16aa.4 (0.1)
0x16a0| 00 | . | sample_flags_present: false 0x16aa.5-0x16aa.5 (0.1)
0x16a0| 00 | . | sample_size_present: false 0x16aa.6-0x16aa.6 (0.1)
0x16a0| 00 | . | sample_duration_present: false 0x16aa.7-0x16aa.7 (0.1)
@ -870,7 +870,7 @@ $ fq -d mp4 verbose /fragmented.mp4
0x1700|00 |. | version: 0 0x1700-0x1700.7 (1)
| | | flags: {} 0x1701-0x1703.7 (3)
0x1700| 00 02 | .. | unused0: 0 0x1701-0x1702.3 (1.4)
0x1700| 02 | . | sample_composition_time_sffsets_present: false 0x1702.4-0x1702.4 (0.1)
0x1700| 02 | . | sample_composition_time_offsets_present: false 0x1702.4-0x1702.4 (0.1)
0x1700| 02 | . | sample_flags_present: false 0x1702.5-0x1702.5 (0.1)
0x1700| 02 | . | sample_size_present: true 0x1702.6-0x1702.6 (0.1)
0x1700| 02 | . | sample_duration_present: false 0x1702.7-0x1702.7 (0.1)
@ -942,7 +942,7 @@ $ fq -d mp4 verbose /fragmented.mp4
0x21c0| 00 | . | version: 0 0x21c9-0x21c9.7 (1)
| | | flags: {} 0x21ca-0x21cc.7 (3)
0x21c0| 00 00 | .. | unused0: 0 0x21ca-0x21cb.3 (1.4)
0x21c0| 00 | . | sample_composition_time_sffsets_present: false 0x21cb.4-0x21cb.4 (0.1)
0x21c0| 00 | . | sample_composition_time_offsets_present: false 0x21cb.4-0x21cb.4 (0.1)
0x21c0| 00 | . | sample_flags_present: false 0x21cb.5-0x21cb.5 (0.1)
0x21c0| 00 | . | sample_size_present: false 0x21cb.6-0x21cb.6 (0.1)
0x21c0| 00 | . | sample_duration_present: false 0x21cb.7-0x21cb.7 (0.1)
@ -996,7 +996,7 @@ $ fq -d mp4 verbose /fragmented.mp4
0x2220| 00 | . | version: 0 0x2221-0x2221.7 (1)
| | | flags: {} 0x2222-0x2224.7 (3)
0x2220| 00 00 | .. | unused0: 0 0x2222-0x2223.3 (1.4)
0x2220| 00 | . | sample_composition_time_sffsets_present: false 0x2223.4-0x2223.4 (0.1)
0x2220| 00 | . | sample_composition_time_offsets_present: false 0x2223.4-0x2223.4 (0.1)
0x2220| 00 | . | sample_flags_present: false 0x2223.5-0x2223.5 (0.1)
0x2220| 00 | . | sample_size_present: false 0x2223.6-0x2223.6 (0.1)
0x2220| 00 | . | sample_duration_present: false 0x2223.7-0x2223.7 (0.1)

View File

@ -397,8 +397,8 @@ $ fq -d mp4 verbose /hevc.mp4
0x1480| 00 00 00 00 | .... | reserved: 0 0x148a-0x148d.7 (4)
0x1480| 4c 61| La| data: "Lavf58.45.100" 0x148e-0x149a.7 (13)
0x1490|76 66 35 38 2e 34 35 2e 31 30 30| |vf58.45.100| |
| | | tracks: [1] 0x2c-0x149a.7 (5231)
| | | [0]: track {} 0x2c-0x149a.7 (5231)
| | | tracks: [1] 0x2c-0x880.7 (2133)
| | | [0]: track {} 0x2c-0x880.7 (2133)
| | | samples: [1] 0x2c-0x880.7 (2133)
| | | [0]: sample {} (hevc_au) 0x2c-0x880.7 (2133)
| | | access_unit: [1] 0x2c-0x880.7 (2133)
@ -412,4 +412,3 @@ $ fq -d mp4 verbose /hevc.mp4
0x0030| af 1d 20 aa 55 b7 88 a0 62 7f ff fa 2c 46| .. .U...b...,F| data: af1d20aa55b788a0627ffffa2c46fda9... 0x32-0x880.7 (2127)
0x0040|fd a9 78 83 ff fb 75 6c 0b 3f ff 94 ce 7f aa fe|..x...ul.?......|
* |until 0x880.7 (2127) | |
| | | data_format: "hev1" 0x149b-NA (0)

View File

@ -321,8 +321,8 @@ $ fq -d mp4 verbose /mp3.mp4
0x550| 00 00 00 00 | .... | reserved: 0 0x554-0x557.7 (4)
0x550| 4c 61 76 66 35 38 2e 34| Lavf58.4| data: "Lavf58.45.100" 0x558-0x564.7 (13)
0x560|35 2e 31 30 30| |5.100| |
| | | tracks: [1] 0x2c-0x564.7 (1337)
| | | [0]: track {} 0x2c-0x564.7 (1337)
| | | tracks: [1] 0x2c-0x29d.7 (626)
| | | [0]: track {} 0x2c-0x29d.7 (626)
| | | samples: [3] 0x2c-0x29d.7 (626)
| | | [0]: sample {} (mp3_frame) 0x2c-0xfb.7 (208)
| | | header: {} 0x2c-0x2f.7 (4)
@ -516,4 +516,3 @@ $ fq -d mp4 verbose /mp3.mp4
0x280| 4c 41 4d 45 33 2e 31 30 30 aa aa aa aa| LAME3.100....| other_data: 4c414d45332e313030aaaaaaaaaaaaaa... 0x283-0x29d.7 (27)
0x290|aa aa aa aa aa aa aa aa aa aa aa aa aa aa |.............. |
| | | crc_calculated: c36b 0x29e-NA (0)
| | | data_format: "mp4a" 0x565-NA (0)

View File

@ -331,8 +331,8 @@ $ fq -d mp4 verbose /mpeg2.mp4
0x2290| 00 00 00 00 | .... | reserved: 0 0x2298-0x229b.7 (4)
0x2290| 4c 61 76 66| Lavf| data: "Lavf58.45.100" 0x229c-0x22a8.7 (13)
0x22a0|35 38 2e 34 35 2e 31 30 30| |58.45.100| |
| | | tracks: [1] 0x2c-0x22a8.7 (8829)
| | | [0]: track {} 0x2c-0x22a8.7 (8829)
| | | tracks: [1] 0x2c-0x37.7 (12)
| | | [0]: track {} 0x2c-0x37.7 (12)
| | | samples: [1] 0x2c-0x37.7 (12)
| | | [0]: sample {} (mpeg_pes_packet) 0x2c-0x37.7 (12)
0x0020| 00 00 01 | ... | prefix: Correct (0x1) 0x2c-0x2e.7 (3)
@ -347,4 +347,3 @@ $ fq -d mp4 verbose /mpeg2.mp4
0x0030| 18 | . | constrained_parameters_flag: 0 0x37.5-0x37.5 (0.1)
0x0030| 18 | . | load_intra_quantizer_matrix: false 0x37.6-0x37.6 (0.1)
0x0030| 18 | . | load_non_intra_quantizer_matrix: false 0x37.7-0x37.7 (0.1)
| | | data_format: "mp4v" 0x22a9-NA (0)

View File

@ -299,8 +299,8 @@ $ fq -d mp4 verbose /opus.mp4
0x420| 00 00 00 00 | .... | reserved: 0 0x428-0x42b.7 (4)
0x420| 4c 61 76 66| Lavf| data: "Lavf58.45.100" 0x42c-0x438.7 (13)
0x430|35 38 2e 34 35 2e 31 30 30| |58.45.100| |
| | | tracks: [1] 0x2c-0x438.7 (1037)
| | | [0]: track {} 0x2c-0x438.7 (1037)
| | | tracks: [1] 0x2c-0x196.7 (363)
| | | [0]: track {} 0x2c-0x196.7 (363)
| | | samples: [3] 0x2c-0x196.7 (363)
| | | [0]: sample {} (opus_packet) 0x2c-0xa4.7 (121)
| | | type: "audio" 0x2c-NA (0)
@ -350,4 +350,3 @@ $ fq -d mp4 verbose /opus.mp4
0x110| 18| .| data: 1802cc495727d4a383e95333fe456233... 0x11f-0x196.7 (120)
0x120|02 cc 49 57 27 d4 a3 83 e9 53 33 fe 45 62 33 33|..IW'....S3.Eb33|
* |until 0x196.7 (120) | |
| | | data_format: "Opus" 0x439-NA (0)

View File

@ -359,8 +359,8 @@ $ fq -d mp4 verbose /vorbis.mp4
0x1170| 00 00 00 00 | .... | reserved: 0 0x1178-0x117b.7 (4)
0x1170| 4c 61 76 66| Lavf| data: "Lavf58.45.100" 0x117c-0x1188.7 (13)
0x1180|35 38 2e 34 35 2e 31 30 30| |58.45.100| |
| | | tracks: [1] 0x2c-0x1188.7 (4445)
| | | [0]: track {} 0x2c-0x1188.7 (4445)
| | | tracks: [1] 0x2c-0x12e.7 (259)
| | | [0]: track {} 0x2c-0x12e.7 (259)
| | | samples: [3] 0x2c-0x12e.7 (259)
| | | [0]: sample {} (vorbis_packet) 0x2c-0x2c.7 (1)
0x0020| be | . | packet_type: Audio (0) 0x2c-0x2c.7 (1)
@ -368,7 +368,6 @@ $ fq -d mp4 verbose /vorbis.mp4
0x00e0| be | . | packet_type: Audio (0) 0xe2-0xe2.7 (1)
| | | [2]: sample {} (vorbis_packet) 0x12e-0x12e.7 (1)
0x0120| be | . | packet_type: Audio (0) 0x12e-0x12e.7 (1)
| | | data_format: "mp4a" 0x1189-NA (0)
0x0410| 84 74 9a 59 aa 01 22 cc 40 86 81 d0 90 95| .t.Y..".@.....| unknown0: 84749a59aa0122cc408681d090950000... 0x412-0x10b0.7 (3231)
0x0420|00 00 02 00 00 60 84 22 0c 31 20 34 64 25 00 00|.....`.".1 4d%..|
* |until 0x10b0.7 (3231) | |

View File

@ -304,8 +304,8 @@ $ fq -d mp4 verbose /vp9.mp4
0x1830| 00 00| ..| reserved: 0 0x183e-0x1841.7 (4)
0x1840|00 00 |.. |
0x1840| 4c 61 76 66 35 38 2e 34 35 2e 31 30 30| | Lavf58.45.100|| data: "Lavf58.45.100" 0x1842-0x184e.7 (13)
| | | tracks: [1] 0x2c-0x184e.7 (6179)
| | | [0]: track {} 0x2c-0x184e.7 (6179)
| | | tracks: [1] 0x2c-0x1563.7 (5432)
| | | [0]: track {} 0x2c-0x1563.7 (5432)
| | | samples: [1] 0x2c-0x1563.7 (5432)
| | | [0]: sample {} (vp9_frame) 0x2c-0x1563.7 (5432)
0x0020| a2 | . | frame_marker: 2 0x2c-0x2c.1 (0.2)
@ -330,4 +330,3 @@ $ fq -d mp4 verbose /vp9.mp4
0x0030| f6 0a 38 24 1c 18 4a 00 0b 70 7f d9| ..8$..J..p..| data: 60a38241c184a000b707fd9f9be8fe77... 0x34.4-0x1563.7 (5423.4)
0x0040|f9 be 8f e7 71 ff 5f 97 ef c3 f9 7e 37 b0 7e ad|....q._....~7.~.|
* |until 0x1563.7 (5424) | |
| | | data_format: "vp09" 0x184f-NA (0)