doc: Regenerate after nes and new ansisvg
@ -124,6 +124,7 @@ mpeg_pes_packet,
|
||||
mpeg_spu,
|
||||
mpeg_ts,
|
||||
[msgpack](doc/formats.md#msgpack),
|
||||
[nes](doc/formats.md#nes),
|
||||
ogg,
|
||||
ogg_page,
|
||||
[opentimestamps](doc/formats.md#opentimestamps),
|
||||
|
88
doc/demo.svg
@ -28,49 +28,47 @@
|
||||
.fa15 { fill: #ffffff; }
|
||||
</style>
|
||||
<rect width="100%" height="100%" x="0" y="0" style="fill: #000000"/>
|
||||
<g x="0">
|
||||
<text y="0.5em"><tspan class="fa15"># Overview of mp3 file</tspan></text>
|
||||
<text y="1.5em"><tspan>$ fq . file.mp3</tspan></text>
|
||||
<text y="2.5em"><tspan> │</tspan><tspan class="underline fa3">00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f</tspan><tspan>│</tspan><tspan class="underline fa3">0123456789abcdef</tspan><tspan>│.{}: file.mp3 (mp3)</tspan></text>
|
||||
<text y="3.5em"><tspan class="fa3">0x000</tspan><tspan>│49 44 33 </tspan><tspan class="bold">04 </tspan><tspan class="fa8">00 00 00 00 </tspan><tspan class="bold">15 </tspan><tspan>39 54 53 53 45 </tspan><tspan class="fa8">00 00</tspan><tspan>│ID3</tspan><tspan class="bold">.</tspan><tspan class="fa8">....</tspan><tspan class="bold">.</tspan><tspan>9TSSE</tspan><tspan class="fa8">..</tspan><tspan>│ </tspan><tspan class="fa12">headers</tspan><tspan>[</tspan><tspan class="fa6">0</tspan><tspan>:</tspan><tspan class="fa6">1</tspan><tspan>]:</tspan></text>
|
||||
<text y="4.5em"><tspan class="fa3">* </tspan><tspan>│until 0xac2.7 (2755) │ │</tspan></text>
|
||||
<text y="5.5em"><tspan class="fa3">0xac0</tspan><tspan>│ </tspan><tspan class="bold">ff fb </tspan><tspan>40 </tspan><tspan class="bold">c0 </tspan><tspan class="fa8">00 00 00 00 00 00 00 00 00</tspan><tspan>│ </tspan><tspan class="bold">..</tspan><tspan>@</tspan><tspan class="bold">.</tspan><tspan class="fa8">.........</tspan><tspan>│ </tspan><tspan class="fa12">frames</tspan><tspan>[</tspan><tspan class="fa6">0</tspan><tspan>:</tspan><tspan class="fa6">3</tspan><tspan>]:</tspan></text>
|
||||
<text y="6.5em"><tspan class="fa3">0xad0</tspan><tspan>│</tspan><tspan class="fa8">00 00 00 00 00 00 00 00 </tspan><tspan>49 6e 66 6f </tspan><tspan class="fa8">00 00 00 </tspan><tspan class="bold">0f</tspan><tspan>│</tspan><tspan class="fa8">........</tspan><tspan>Info</tspan><tspan class="fa8">...</tspan><tspan class="bold">.</tspan><tspan>│</tspan></text>
|
||||
<text y="7.5em"><tspan class="fa3">* </tspan><tspan>│until 0xd19.7 (end) (599) │ │</tspan></text>
|
||||
<text y="8.5em"><tspan> │ │ │ </tspan><tspan class="fa12">footers</tspan><tspan>[</tspan><tspan class="fa6">0</tspan><tspan>:</tspan><tspan class="fa6">0</tspan><tspan>]:</tspan></text>
|
||||
<text y="10.5em"><tspan class="fa15"># Show header of first ID3v2 tag inside mp3 file</tspan></text>
|
||||
<text y="11.5em"><tspan>$ fq '.headers[0].header' file.mp3</tspan></text>
|
||||
<text y="12.5em"><tspan> │</tspan><tspan class="underline fa3">00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f</tspan><tspan>│</tspan><tspan class="underline fa3">0123456789abcdef</tspan><tspan>│.</tspan><tspan class="fa12">headers</tspan><tspan>[</tspan><tspan class="fa6">0</tspan><tspan>].</tspan><tspan class="fa12">header</tspan><tspan>{}:</tspan></text>
|
||||
<text y="13.5em"><tspan class="fa3">0x0</tspan><tspan>│49 44 33 │ID3 │ </tspan><tspan class="fa12">magic</tspan><tspan>: </tspan><tspan class="fa2">"ID3" </tspan><tspan>(valid)</tspan></text>
|
||||
<text y="14.5em"><tspan class="fa3">0x0</tspan><tspan>│ </tspan><tspan class="bold">04 </tspan><tspan>│ </tspan><tspan class="bold">. </tspan><tspan>│ </tspan><tspan class="fa12">version</tspan><tspan>: </tspan><tspan class="fa6">4 </tspan><tspan>(valid)</tspan></text>
|
||||
<text y="15.5em"><tspan class="fa3">0x0</tspan><tspan>│ </tspan><tspan class="fa8">00 </tspan><tspan>│ </tspan><tspan class="fa8">. </tspan><tspan>│ </tspan><tspan class="fa12">revision</tspan><tspan>: </tspan><tspan class="fa6">0</tspan></text>
|
||||
<text y="16.5em"><tspan class="fa3">0x0</tspan><tspan>│ </tspan><tspan class="fa8">00 </tspan><tspan>│ </tspan><tspan class="fa8">. </tspan><tspan>│ </tspan><tspan class="fa12">flags</tspan><tspan>{}:</tspan></text>
|
||||
<text y="17.5em"><tspan class="fa3">0x0</tspan><tspan>│ </tspan><tspan class="fa8">00 00 </tspan><tspan class="bold">15 </tspan><tspan>39 │ </tspan><tspan class="fa8">..</tspan><tspan class="bold">.</tspan><tspan>9 │ </tspan><tspan class="fa12">size</tspan><tspan>: </tspan><tspan class="fa6">2745</tspan></text>
|
||||
<text y="19.5em"><tspan class="fa15"># Show encoder software used</tspan></text>
|
||||
<text y="20.5em"><tspan>$ fq -r '.frames[0].tag.encoder | tovalue' file.mp3</tspan></text>
|
||||
<text y="21.5em"><tspan>Lavc58.13</tspan></text>
|
||||
<text y="23.5em"><tspan class="fa15"># Decode at two offsets as mp3_frame and show bitrate</tspan></text>
|
||||
<text y="24.5em"><tspan>$ fq -d bytes '.[0xb79,0xc49:] | mp3_frame.header.bitrate' file.mp3</tspan></text>
|
||||
<text y="25.5em"><tspan> │</tspan><tspan class="underline fa3">00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f</tspan><tspan>│</tspan><tspan class="underline fa3">0123456789abcdef</tspan><tspan>│</tspan></text>
|
||||
<text y="26.5em"><tspan class="fa3">0xb70</tspan><tspan>│ 50 │ P │.</tspan><tspan class="fa12">header</tspan><tspan>.</tspan><tspan class="fa12">bitrate</tspan><tspan>: </tspan><tspan class="fa6">64000 </tspan><tspan>(</tspan><tspan class="fa6">5</tspan><tspan>)</tspan></text>
|
||||
<text y="27.5em"><tspan> │</tspan><tspan class="underline fa3">00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f</tspan><tspan>│</tspan><tspan class="underline fa3">0123456789abcdef</tspan><tspan>│</tspan></text>
|
||||
<text y="28.5em"><tspan class="fa3">0xc40</tspan><tspan>│ 52 │ R │.</tspan><tspan class="fa12">header</tspan><tspan>.</tspan><tspan class="fa12">bitrate</tspan><tspan>: </tspan><tspan class="fa6">64000 </tspan><tspan>(</tspan><tspan class="fa6">5</tspan><tspan>)</tspan></text>
|
||||
<text y="30.5em"><tspan class="fa15"># Extract PNG file</tspan></text>
|
||||
<text y="31.5em"><tspan>$ fq '.headers[].frames[] | select(.id == "APIC")?.picture | tobits' file.mp3 >file.png</tspan></text>
|
||||
<text y="32.5em"><tspan>$ file file.png</tspan></text>
|
||||
<text y="33.5em"><tspan>file.png: PNG image data, 320 x 240, 8-bit/color RGB, non-interlaced</tspan></text>
|
||||
<text y="35.5em"><tspan class="fa15"># Resolution of embedded PNG cover art as YAML</tspan></text>
|
||||
<text y="36.5em"><tspan>$ fq -r '.headers[0].frames[] | grep_by(.id == "APIC") | grep_by(.type == "IHDR") | {res: {width, height}} | to_yaml' file.mp3</tspan></text>
|
||||
<text y="37.5em"><tspan>res:</tspan></text>
|
||||
<text y="38.5em"><tspan> height: 240</tspan></text>
|
||||
<text y="39.5em"><tspan> width: 320</tspan></text>
|
||||
<text y="41.5em"><tspan class="fa15"># Add query parameter to URL</tspan></text>
|
||||
<text y="42.5em"><tspan>$ echo 'http://host?a=b' | fq -Rr 'from_url | .query.b = "a b c" | to_url'</tspan></text>
|
||||
<text y="43.5em"><tspan>http://host?a=b&b=a+b+c</tspan></text>
|
||||
<text y="45.5em"><tspan class="fa15"># Extract JSON and base64 encoded query parameter p</tspan></text>
|
||||
<text y="46.5em"><tspan>$ echo 'https://host?p=eyJhIjoiaGVsbG8ifQ%3D%3D' | fq -R 'from_url.query.p | from_base64 | fromjson'</tspan></text>
|
||||
<text y="47.5em"><tspan>{</tspan></text>
|
||||
<text y="48.5em"><tspan> </tspan><tspan class="fa12">"a"</tspan><tspan>: </tspan><tspan class="fa2">"hello"</tspan></text>
|
||||
<text y="49.5em"><tspan>}</tspan></text>
|
||||
</g>
|
||||
<text x="0ch" y="0.5em"><tspan class="fa15"># Overview of mp3 file</tspan></text>
|
||||
<text x="0ch" y="1.5em"><tspan>$ fq . file.mp3</tspan></text>
|
||||
<text x="0ch" y="2.5em"><tspan> │</tspan><tspan class="underline fa3">00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f</tspan><tspan>│</tspan><tspan class="underline fa3">0123456789abcdef</tspan><tspan>│.{}: file.mp3 (mp3)</tspan></text>
|
||||
<text x="0ch" y="3.5em"><tspan class="fa3">0x000</tspan><tspan>│49 44 33 </tspan><tspan class="bold">04 </tspan><tspan class="fa8">00 00 00 00 </tspan><tspan class="bold">15 </tspan><tspan>39 54 53 53 45 </tspan><tspan class="fa8">00 00</tspan><tspan>│ID3</tspan><tspan class="bold">.</tspan><tspan class="fa8">....</tspan><tspan class="bold">.</tspan><tspan>9TSSE</tspan><tspan class="fa8">..</tspan><tspan>│ </tspan><tspan class="fa12">headers</tspan><tspan>[</tspan><tspan class="fa6">0</tspan><tspan>:</tspan><tspan class="fa6">1</tspan><tspan>]:</tspan></text>
|
||||
<text x="0ch" y="4.5em"><tspan class="fa3">* </tspan><tspan>│until 0xac2.7 (2755) │ │</tspan></text>
|
||||
<text x="0ch" y="5.5em"><tspan class="fa3">0xac0</tspan><tspan>│ </tspan><tspan class="bold">ff fb </tspan><tspan>40 </tspan><tspan class="bold">c0 </tspan><tspan class="fa8">00 00 00 00 00 00 00 00 00</tspan><tspan>│ </tspan><tspan class="bold">..</tspan><tspan>@</tspan><tspan class="bold">.</tspan><tspan class="fa8">.........</tspan><tspan>│ </tspan><tspan class="fa12">frames</tspan><tspan>[</tspan><tspan class="fa6">0</tspan><tspan>:</tspan><tspan class="fa6">3</tspan><tspan>]:</tspan></text>
|
||||
<text x="0ch" y="6.5em"><tspan class="fa3">0xad0</tspan><tspan>│</tspan><tspan class="fa8">00 00 00 00 00 00 00 00 </tspan><tspan>49 6e 66 6f </tspan><tspan class="fa8">00 00 00 </tspan><tspan class="bold">0f</tspan><tspan>│</tspan><tspan class="fa8">........</tspan><tspan>Info</tspan><tspan class="fa8">...</tspan><tspan class="bold">.</tspan><tspan>│</tspan></text>
|
||||
<text x="0ch" y="7.5em"><tspan class="fa3">* </tspan><tspan>│until 0xd19.7 (end) (599) │ │</tspan></text>
|
||||
<text x="0ch" y="8.5em"><tspan> │ │ │ </tspan><tspan class="fa12">footers</tspan><tspan>[</tspan><tspan class="fa6">0</tspan><tspan>:</tspan><tspan class="fa6">0</tspan><tspan>]:</tspan></text>
|
||||
<text x="0ch" y="10.5em"><tspan class="fa15"># Show header of first ID3v2 tag inside mp3 file</tspan></text>
|
||||
<text x="0ch" y="11.5em"><tspan>$ fq '.headers[0].header' file.mp3</tspan></text>
|
||||
<text x="0ch" y="12.5em"><tspan> │</tspan><tspan class="underline fa3">00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f</tspan><tspan>│</tspan><tspan class="underline fa3">0123456789abcdef</tspan><tspan>│.</tspan><tspan class="fa12">headers</tspan><tspan>[</tspan><tspan class="fa6">0</tspan><tspan>].</tspan><tspan class="fa12">header</tspan><tspan>{}:</tspan></text>
|
||||
<text x="0ch" y="13.5em"><tspan class="fa3">0x0</tspan><tspan>│49 44 33 │ID3 │ </tspan><tspan class="fa12">magic</tspan><tspan>: </tspan><tspan class="fa2">"ID3" </tspan><tspan>(valid)</tspan></text>
|
||||
<text x="0ch" y="14.5em"><tspan class="fa3">0x0</tspan><tspan>│ </tspan><tspan class="bold">04 </tspan><tspan>│ </tspan><tspan class="bold">. </tspan><tspan>│ </tspan><tspan class="fa12">version</tspan><tspan>: </tspan><tspan class="fa6">4 </tspan><tspan>(valid)</tspan></text>
|
||||
<text x="0ch" y="15.5em"><tspan class="fa3">0x0</tspan><tspan>│ </tspan><tspan class="fa8">00 </tspan><tspan>│ </tspan><tspan class="fa8">. </tspan><tspan>│ </tspan><tspan class="fa12">revision</tspan><tspan>: </tspan><tspan class="fa6">0</tspan></text>
|
||||
<text x="0ch" y="16.5em"><tspan class="fa3">0x0</tspan><tspan>│ </tspan><tspan class="fa8">00 </tspan><tspan>│ </tspan><tspan class="fa8">. </tspan><tspan>│ </tspan><tspan class="fa12">flags</tspan><tspan>{}:</tspan></text>
|
||||
<text x="0ch" y="17.5em"><tspan class="fa3">0x0</tspan><tspan>│ </tspan><tspan class="fa8">00 00 </tspan><tspan class="bold">15 </tspan><tspan>39 │ </tspan><tspan class="fa8">..</tspan><tspan class="bold">.</tspan><tspan>9 │ </tspan><tspan class="fa12">size</tspan><tspan>: </tspan><tspan class="fa6">2745</tspan></text>
|
||||
<text x="0ch" y="19.5em"><tspan class="fa15"># Show encoder software used</tspan></text>
|
||||
<text x="0ch" y="20.5em"><tspan>$ fq -r '.frames[0].tag.encoder | tovalue' file.mp3</tspan></text>
|
||||
<text x="0ch" y="21.5em"><tspan>Lavc58.13</tspan></text>
|
||||
<text x="0ch" y="23.5em"><tspan class="fa15"># Decode at two offsets as mp3_frame and show bitrate</tspan></text>
|
||||
<text x="0ch" y="24.5em"><tspan>$ fq -d bytes '.[0xb79,0xc49:] | mp3_frame.header.bitrate' file.mp3</tspan></text>
|
||||
<text x="0ch" y="25.5em"><tspan> │</tspan><tspan class="underline fa3">00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f</tspan><tspan>│</tspan><tspan class="underline fa3">0123456789abcdef</tspan><tspan>│</tspan></text>
|
||||
<text x="0ch" y="26.5em"><tspan class="fa3">0xb70</tspan><tspan>│ 50 │ P │.</tspan><tspan class="fa12">header</tspan><tspan>.</tspan><tspan class="fa12">bitrate</tspan><tspan>: </tspan><tspan class="fa6">64000 </tspan><tspan>(</tspan><tspan class="fa6">5</tspan><tspan>)</tspan></text>
|
||||
<text x="0ch" y="27.5em"><tspan> │</tspan><tspan class="underline fa3">00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f</tspan><tspan>│</tspan><tspan class="underline fa3">0123456789abcdef</tspan><tspan>│</tspan></text>
|
||||
<text x="0ch" y="28.5em"><tspan class="fa3">0xc40</tspan><tspan>│ 52 │ R │.</tspan><tspan class="fa12">header</tspan><tspan>.</tspan><tspan class="fa12">bitrate</tspan><tspan>: </tspan><tspan class="fa6">64000 </tspan><tspan>(</tspan><tspan class="fa6">5</tspan><tspan>)</tspan></text>
|
||||
<text x="0ch" y="30.5em"><tspan class="fa15"># Extract PNG file</tspan></text>
|
||||
<text x="0ch" y="31.5em"><tspan>$ fq '.headers[].frames[] | select(.id == "APIC")?.picture | tobits' file.mp3 >file.png</tspan></text>
|
||||
<text x="0ch" y="32.5em"><tspan>$ file file.png</tspan></text>
|
||||
<text x="0ch" y="33.5em"><tspan>file.png: PNG image data, 320 x 240, 8-bit/color RGB, non-interlaced</tspan></text>
|
||||
<text x="0ch" y="35.5em"><tspan class="fa15"># Resolution of embedded PNG cover art as YAML</tspan></text>
|
||||
<text x="0ch" y="36.5em"><tspan>$ fq -r '.headers[0].frames[] | grep_by(.id == "APIC") | grep_by(.type == "IHDR") | {res: {width, height}} | to_yaml' file.mp3</tspan></text>
|
||||
<text x="0ch" y="37.5em"><tspan>res:</tspan></text>
|
||||
<text x="0ch" y="38.5em"><tspan> height: 240</tspan></text>
|
||||
<text x="0ch" y="39.5em"><tspan> width: 320</tspan></text>
|
||||
<text x="0ch" y="41.5em"><tspan class="fa15"># Add query parameter to URL</tspan></text>
|
||||
<text x="0ch" y="42.5em"><tspan>$ echo 'http://host?a=b' | fq -Rr 'from_url | .query.b = "a b c" | to_url'</tspan></text>
|
||||
<text x="0ch" y="43.5em"><tspan>http://host?a=b&b=a+b+c</tspan></text>
|
||||
<text x="0ch" y="45.5em"><tspan class="fa15"># Extract JSON and base64 encoded query parameter p</tspan></text>
|
||||
<text x="0ch" y="46.5em"><tspan>$ echo 'https://host?p=eyJhIjoiaGVsbG8ifQ%3D%3D' | fq -R 'from_url.query.p | from_base64 | fromjson'</tspan></text>
|
||||
<text x="0ch" y="47.5em"><tspan>{</tspan></text>
|
||||
<text x="0ch" y="48.5em"><tspan> </tspan><tspan class="fa12">"a"</tspan><tspan>: </tspan><tspan class="fa2">"hello"</tspan></text>
|
||||
<text x="0ch" y="49.5em"><tspan>}</tspan></text>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 8.4 KiB After Width: | Height: | Size: 8.7 KiB |
@ -27,16 +27,14 @@
|
||||
.fa12 { fill: #5555ff; }
|
||||
</style>
|
||||
<rect width="100%" height="100%" x="0" y="0" style="fill: #000000"/>
|
||||
<g x="0">
|
||||
<text y="0.5em"><tspan>$ fq 'first(grep_by(.type == "elst"))' file.mp4</tspan></text>
|
||||
<text y="1.5em"><tspan> │</tspan><tspan class="underline fa3">00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f</tspan><tspan>│</tspan><tspan class="underline fa3">0123456789abcdef</tspan><tspan>│.</tspan><tspan class="fa12">boxes</tspan><tspan>[</tspan><tspan class="fa6">3</tspan><tspan>].</tspan><tspan class="fa12">boxes</tspan><tspan>[</tspan><tspan class="fa6">1</tspan><tspan>].</tspan><tspan class="fa12">boxes</tspan><tspan>[</tspan><tspan class="fa6">1</tspan><tspan>].</tspan><tspan class="fa12">boxes</tspan><tspan>[</tspan><tspan class="fa6">0</tspan><tspan>]{}: box</tspan></text>
|
||||
<text y="2.5em"><tspan class="fa3">0xd60</tspan><tspan>│ </tspan><tspan class="fa8">00 00 00 </tspan><tspan class="bold">1c </tspan><tspan>│ </tspan><tspan class="fa8">...</tspan><tspan class="bold">. </tspan><tspan>│ </tspan><tspan class="fa12">size</tspan><tspan>: </tspan><tspan class="fa6">28</tspan></text>
|
||||
<text y="3.5em"><tspan class="fa3">0xd60</tspan><tspan>│ 65 6c 73 74 │ elst │ </tspan><tspan class="fa12">type</tspan><tspan>: </tspan><tspan class="fa2">"elst" </tspan><tspan>(An edit list)</tspan></text>
|
||||
<text y="4.5em"><tspan class="fa3">0xd60</tspan><tspan>│ </tspan><tspan class="fa8">00 </tspan><tspan>│ </tspan><tspan class="fa8">. </tspan><tspan>│ </tspan><tspan class="fa12">version</tspan><tspan>: </tspan><tspan class="fa6">0</tspan></text>
|
||||
<text y="5.5em"><tspan class="fa3">0xd60</tspan><tspan>│ </tspan><tspan class="fa8">00 00</tspan><tspan>│ </tspan><tspan class="fa8">..</tspan><tspan>│ </tspan><tspan class="fa12">flags</tspan><tspan>: </tspan><tspan class="fa6">0</tspan></text>
|
||||
<text y="6.5em"><tspan class="fa3">0xd70</tspan><tspan>│</tspan><tspan class="fa8">00 </tspan><tspan>│</tspan><tspan class="fa8">. </tspan><tspan>│</tspan></text>
|
||||
<text y="7.5em"><tspan class="fa3">0xd70</tspan><tspan>│ </tspan><tspan class="fa8">00 00 00 </tspan><tspan class="bold">01 </tspan><tspan>│ </tspan><tspan class="fa8">...</tspan><tspan class="bold">. </tspan><tspan>│ </tspan><tspan class="fa12">entry_count</tspan><tspan>: </tspan><tspan class="fa6">1</tspan></text>
|
||||
<text y="8.5em"><tspan class="fa3">0xd70</tspan><tspan>│ </tspan><tspan class="fa8">00 00 00 </tspan><tspan>28 </tspan><tspan class="fa8">00 00 00 00 00 </tspan><tspan class="bold">01 </tspan><tspan class="fa8">00</tspan><tspan>│ </tspan><tspan class="fa8">...</tspan><tspan>(</tspan><tspan class="fa8">.....</tspan><tspan class="bold">.</tspan><tspan class="fa8">.</tspan><tspan>│ </tspan><tspan class="fa12">entries</tspan><tspan>[</tspan><tspan class="fa6">0</tspan><tspan>:</tspan><tspan class="fa6">1</tspan><tspan>]:</tspan></text>
|
||||
<text y="9.5em"><tspan class="fa3">0xd80</tspan><tspan>│</tspan><tspan class="fa8">00 </tspan><tspan>│</tspan><tspan class="fa8">. </tspan><tspan>│</tspan></text>
|
||||
</g>
|
||||
<text x="0ch" y="0.5em"><tspan>$ fq 'first(grep_by(.type == "elst"))' file.mp4</tspan></text>
|
||||
<text x="0ch" y="1.5em"><tspan> │</tspan><tspan class="underline fa3">00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f</tspan><tspan>│</tspan><tspan class="underline fa3">0123456789abcdef</tspan><tspan>│.</tspan><tspan class="fa12">boxes</tspan><tspan>[</tspan><tspan class="fa6">3</tspan><tspan>].</tspan><tspan class="fa12">boxes</tspan><tspan>[</tspan><tspan class="fa6">1</tspan><tspan>].</tspan><tspan class="fa12">boxes</tspan><tspan>[</tspan><tspan class="fa6">1</tspan><tspan>].</tspan><tspan class="fa12">boxes</tspan><tspan>[</tspan><tspan class="fa6">0</tspan><tspan>]{}: box</tspan></text>
|
||||
<text x="0ch" y="2.5em"><tspan class="fa3">0xd60</tspan><tspan>│ </tspan><tspan class="fa8">00 00 00 </tspan><tspan class="bold">1c </tspan><tspan>│ </tspan><tspan class="fa8">...</tspan><tspan class="bold">. </tspan><tspan>│ </tspan><tspan class="fa12">size</tspan><tspan>: </tspan><tspan class="fa6">28</tspan></text>
|
||||
<text x="0ch" y="3.5em"><tspan class="fa3">0xd60</tspan><tspan>│ 65 6c 73 74 │ elst │ </tspan><tspan class="fa12">type</tspan><tspan>: </tspan><tspan class="fa2">"elst" </tspan><tspan>(An edit list)</tspan></text>
|
||||
<text x="0ch" y="4.5em"><tspan class="fa3">0xd60</tspan><tspan>│ </tspan><tspan class="fa8">00 </tspan><tspan>│ </tspan><tspan class="fa8">. </tspan><tspan>│ </tspan><tspan class="fa12">version</tspan><tspan>: </tspan><tspan class="fa6">0</tspan></text>
|
||||
<text x="0ch" y="5.5em"><tspan class="fa3">0xd60</tspan><tspan>│ </tspan><tspan class="fa8">00 00</tspan><tspan>│ </tspan><tspan class="fa8">..</tspan><tspan>│ </tspan><tspan class="fa12">flags</tspan><tspan>: </tspan><tspan class="fa6">0</tspan></text>
|
||||
<text x="0ch" y="6.5em"><tspan class="fa3">0xd70</tspan><tspan>│</tspan><tspan class="fa8">00 </tspan><tspan>│</tspan><tspan class="fa8">. </tspan><tspan>│</tspan></text>
|
||||
<text x="0ch" y="7.5em"><tspan class="fa3">0xd70</tspan><tspan>│ </tspan><tspan class="fa8">00 00 00 </tspan><tspan class="bold">01 </tspan><tspan>│ </tspan><tspan class="fa8">...</tspan><tspan class="bold">. </tspan><tspan>│ </tspan><tspan class="fa12">entry_count</tspan><tspan>: </tspan><tspan class="fa6">1</tspan></text>
|
||||
<text x="0ch" y="8.5em"><tspan class="fa3">0xd70</tspan><tspan>│ </tspan><tspan class="fa8">00 00 00 </tspan><tspan>28 </tspan><tspan class="fa8">00 00 00 00 00 </tspan><tspan class="bold">01 </tspan><tspan class="fa8">00</tspan><tspan>│ </tspan><tspan class="fa8">...</tspan><tspan>(</tspan><tspan class="fa8">.....</tspan><tspan class="bold">.</tspan><tspan class="fa8">.</tspan><tspan>│ </tspan><tspan class="fa12">entries</tspan><tspan>[</tspan><tspan class="fa6">0</tspan><tspan>:</tspan><tspan class="fa6">1</tspan><tspan>]:</tspan></text>
|
||||
<text x="0ch" y="9.5em"><tspan class="fa3">0xd80</tspan><tspan>│</tspan><tspan class="fa8">00 </tspan><tspan>│</tspan><tspan class="fa8">. </tspan><tspan>│</tspan></text>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 4.1 KiB After Width: | Height: | Size: 4.2 KiB |
@ -27,20 +27,18 @@
|
||||
.fa12 { fill: #5555ff; }
|
||||
</style>
|
||||
<rect width="100%" height="100%" x="0" y="0" style="fill: #000000"/>
|
||||
<g x="0">
|
||||
<text y="0.5em"><tspan>$ fq 'first(grep_by(.type == "elst")) | d' file.mp4</tspan></text>
|
||||
<text y="1.5em"><tspan> │</tspan><tspan class="underline fa3">00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f</tspan><tspan>│</tspan><tspan class="underline fa3">0123456789abcdef</tspan><tspan>│.</tspan><tspan class="fa12">boxes</tspan><tspan>[</tspan><tspan class="fa6">3</tspan><tspan>].</tspan><tspan class="fa12">boxes</tspan><tspan>[</tspan><tspan class="fa6">1</tspan><tspan>].</tspan><tspan class="fa12">boxes</tspan><tspan>[</tspan><tspan class="fa6">1</tspan><tspan>].</tspan><tspan class="fa12">boxes</tspan><tspan>[</tspan><tspan class="fa6">0</tspan><tspan>]{}: box</tspan></text>
|
||||
<text y="2.5em"><tspan class="fa3">0xd60</tspan><tspan>│ </tspan><tspan class="fa8">00 00 00 </tspan><tspan class="bold">1c </tspan><tspan>│ </tspan><tspan class="fa8">...</tspan><tspan class="bold">. </tspan><tspan>│ </tspan><tspan class="fa12">size</tspan><tspan>: </tspan><tspan class="fa6">28</tspan></text>
|
||||
<text y="3.5em"><tspan class="fa3">0xd60</tspan><tspan>│ 65 6c 73 74 │ elst │ </tspan><tspan class="fa12">type</tspan><tspan>: </tspan><tspan class="fa2">"elst" </tspan><tspan>(An edit list)</tspan></text>
|
||||
<text y="4.5em"><tspan class="fa3">0xd60</tspan><tspan>│ </tspan><tspan class="fa8">00 </tspan><tspan>│ </tspan><tspan class="fa8">. </tspan><tspan>│ </tspan><tspan class="fa12">version</tspan><tspan>: </tspan><tspan class="fa6">0</tspan></text>
|
||||
<text y="5.5em"><tspan class="fa3">0xd60</tspan><tspan>│ </tspan><tspan class="fa8">00 00</tspan><tspan>│ </tspan><tspan class="fa8">..</tspan><tspan>│ </tspan><tspan class="fa12">flags</tspan><tspan>: </tspan><tspan class="fa6">0</tspan></text>
|
||||
<text y="6.5em"><tspan class="fa3">0xd70</tspan><tspan>│</tspan><tspan class="fa8">00 </tspan><tspan>│</tspan><tspan class="fa8">. </tspan><tspan>│</tspan></text>
|
||||
<text y="7.5em"><tspan class="fa3">0xd70</tspan><tspan>│ </tspan><tspan class="fa8">00 00 00 </tspan><tspan class="bold">01 </tspan><tspan>│ </tspan><tspan class="fa8">...</tspan><tspan class="bold">. </tspan><tspan>│ </tspan><tspan class="fa12">entry_count</tspan><tspan>: </tspan><tspan class="fa6">1</tspan></text>
|
||||
<text y="8.5em"><tspan> │ │ │ </tspan><tspan class="fa12">entries</tspan><tspan>[</tspan><tspan class="fa6">0</tspan><tspan>:</tspan><tspan class="fa6">1</tspan><tspan>]:</tspan></text>
|
||||
<text y="9.5em"><tspan> │ │ │ [</tspan><tspan class="fa6">0</tspan><tspan>]{}: entry</tspan></text>
|
||||
<text y="10.5em"><tspan class="fa3">0xd70</tspan><tspan>│ </tspan><tspan class="fa8">00 00 00 </tspan><tspan>28 │ </tspan><tspan class="fa8">...</tspan><tspan>( │ </tspan><tspan class="fa12">segment_duration</tspan><tspan>: </tspan><tspan class="fa6">40</tspan></text>
|
||||
<text y="11.5em"><tspan class="fa3">0xd70</tspan><tspan>│ </tspan><tspan class="fa8">00 00 00 00 </tspan><tspan>│ </tspan><tspan class="fa8">.... </tspan><tspan>│ </tspan><tspan class="fa12">media_time</tspan><tspan>: </tspan><tspan class="fa6">0</tspan></text>
|
||||
<text y="12.5em"><tspan class="fa3">0xd70</tspan><tspan>│ </tspan><tspan class="fa8">00 </tspan><tspan class="bold">01 </tspan><tspan class="fa8">00</tspan><tspan>│ </tspan><tspan class="fa8">.</tspan><tspan class="bold">.</tspan><tspan class="fa8">.</tspan><tspan>│ </tspan><tspan class="fa12">media_rate</tspan><tspan>: </tspan><tspan class="fa6">1</tspan></text>
|
||||
<text y="13.5em"><tspan class="fa3">0xd80</tspan><tspan>│</tspan><tspan class="fa8">00 </tspan><tspan>│</tspan><tspan class="fa8">. </tspan><tspan>│</tspan></text>
|
||||
</g>
|
||||
<text x="0ch" y="0.5em"><tspan>$ fq 'first(grep_by(.type == "elst")) | d' file.mp4</tspan></text>
|
||||
<text x="0ch" y="1.5em"><tspan> │</tspan><tspan class="underline fa3">00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f</tspan><tspan>│</tspan><tspan class="underline fa3">0123456789abcdef</tspan><tspan>│.</tspan><tspan class="fa12">boxes</tspan><tspan>[</tspan><tspan class="fa6">3</tspan><tspan>].</tspan><tspan class="fa12">boxes</tspan><tspan>[</tspan><tspan class="fa6">1</tspan><tspan>].</tspan><tspan class="fa12">boxes</tspan><tspan>[</tspan><tspan class="fa6">1</tspan><tspan>].</tspan><tspan class="fa12">boxes</tspan><tspan>[</tspan><tspan class="fa6">0</tspan><tspan>]{}: box</tspan></text>
|
||||
<text x="0ch" y="2.5em"><tspan class="fa3">0xd60</tspan><tspan>│ </tspan><tspan class="fa8">00 00 00 </tspan><tspan class="bold">1c </tspan><tspan>│ </tspan><tspan class="fa8">...</tspan><tspan class="bold">. </tspan><tspan>│ </tspan><tspan class="fa12">size</tspan><tspan>: </tspan><tspan class="fa6">28</tspan></text>
|
||||
<text x="0ch" y="3.5em"><tspan class="fa3">0xd60</tspan><tspan>│ 65 6c 73 74 │ elst │ </tspan><tspan class="fa12">type</tspan><tspan>: </tspan><tspan class="fa2">"elst" </tspan><tspan>(An edit list)</tspan></text>
|
||||
<text x="0ch" y="4.5em"><tspan class="fa3">0xd60</tspan><tspan>│ </tspan><tspan class="fa8">00 </tspan><tspan>│ </tspan><tspan class="fa8">. </tspan><tspan>│ </tspan><tspan class="fa12">version</tspan><tspan>: </tspan><tspan class="fa6">0</tspan></text>
|
||||
<text x="0ch" y="5.5em"><tspan class="fa3">0xd60</tspan><tspan>│ </tspan><tspan class="fa8">00 00</tspan><tspan>│ </tspan><tspan class="fa8">..</tspan><tspan>│ </tspan><tspan class="fa12">flags</tspan><tspan>: </tspan><tspan class="fa6">0</tspan></text>
|
||||
<text x="0ch" y="6.5em"><tspan class="fa3">0xd70</tspan><tspan>│</tspan><tspan class="fa8">00 </tspan><tspan>│</tspan><tspan class="fa8">. </tspan><tspan>│</tspan></text>
|
||||
<text x="0ch" y="7.5em"><tspan class="fa3">0xd70</tspan><tspan>│ </tspan><tspan class="fa8">00 00 00 </tspan><tspan class="bold">01 </tspan><tspan>│ </tspan><tspan class="fa8">...</tspan><tspan class="bold">. </tspan><tspan>│ </tspan><tspan class="fa12">entry_count</tspan><tspan>: </tspan><tspan class="fa6">1</tspan></text>
|
||||
<text x="0ch" y="8.5em"><tspan> │ │ │ </tspan><tspan class="fa12">entries</tspan><tspan>[</tspan><tspan class="fa6">0</tspan><tspan>:</tspan><tspan class="fa6">1</tspan><tspan>]:</tspan></text>
|
||||
<text x="0ch" y="9.5em"><tspan> │ │ │ [</tspan><tspan class="fa6">0</tspan><tspan>]{}: entry</tspan></text>
|
||||
<text x="0ch" y="10.5em"><tspan class="fa3">0xd70</tspan><tspan>│ </tspan><tspan class="fa8">00 00 00 </tspan><tspan>28 │ </tspan><tspan class="fa8">...</tspan><tspan>( │ </tspan><tspan class="fa12">segment_duration</tspan><tspan>: </tspan><tspan class="fa6">40</tspan></text>
|
||||
<text x="0ch" y="11.5em"><tspan class="fa3">0xd70</tspan><tspan>│ </tspan><tspan class="fa8">00 00 00 00 </tspan><tspan>│ </tspan><tspan class="fa8">.... </tspan><tspan>│ </tspan><tspan class="fa12">media_time</tspan><tspan>: </tspan><tspan class="fa6">0</tspan></text>
|
||||
<text x="0ch" y="12.5em"><tspan class="fa3">0xd70</tspan><tspan>│ </tspan><tspan class="fa8">00 </tspan><tspan class="bold">01 </tspan><tspan class="fa8">00</tspan><tspan>│ </tspan><tspan class="fa8">.</tspan><tspan class="bold">.</tspan><tspan class="fa8">.</tspan><tspan>│ </tspan><tspan class="fa12">media_rate</tspan><tspan>: </tspan><tspan class="fa6">1</tspan></text>
|
||||
<text x="0ch" y="13.5em"><tspan class="fa3">0xd80</tspan><tspan>│</tspan><tspan class="fa8">00 </tspan><tspan>│</tspan><tspan class="fa8">. </tspan><tspan>│</tspan></text>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 5.1 KiB After Width: | Height: | Size: 5.2 KiB |
@ -27,20 +27,18 @@
|
||||
.fa12 { fill: #5555ff; }
|
||||
</style>
|
||||
<rect width="100%" height="100%" x="0" y="0" style="fill: #000000"/>
|
||||
<g x="0">
|
||||
<text y="0.5em"><tspan>$ fq 'first(grep_by(.type == "elst")) | dv' file.mp4</tspan></text>
|
||||
<text y="1.5em"><tspan> │</tspan><tspan class="underline fa3">00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f</tspan><tspan>│</tspan><tspan class="underline fa3">0123456789abcdef</tspan><tspan>│.</tspan><tspan class="fa12">boxes</tspan><tspan>[</tspan><tspan class="fa6">3</tspan><tspan>].</tspan><tspan class="fa12">boxes</tspan><tspan>[</tspan><tspan class="fa6">1</tspan><tspan>].</tspan><tspan class="fa12">boxes</tspan><tspan>[</tspan><tspan class="fa6">1</tspan><tspan>].</tspan><tspan class="fa12">boxes</tspan><tspan>[</tspan><tspan class="fa6">0</tspan><tspan>]{}: box 0xd65-0xd81 (28)</tspan></text>
|
||||
<text y="2.5em"><tspan class="fa3">0xd60</tspan><tspan>│ </tspan><tspan class="fa8">00 00 00 </tspan><tspan class="bold">1c </tspan><tspan>│ </tspan><tspan class="fa8">...</tspan><tspan class="bold">. </tspan><tspan>│ </tspan><tspan class="fa12">size</tspan><tspan>: </tspan><tspan class="fa6">28 </tspan><tspan>0xd65-0xd69 (4)</tspan></text>
|
||||
<text y="3.5em"><tspan class="fa3">0xd60</tspan><tspan>│ 65 6c 73 74 │ elst │ </tspan><tspan class="fa12">type</tspan><tspan>: </tspan><tspan class="fa2">"elst" </tspan><tspan>(An edit list) 0xd69-0xd6d (4)</tspan></text>
|
||||
<text y="4.5em"><tspan class="fa3">0xd60</tspan><tspan>│ </tspan><tspan class="fa8">00 </tspan><tspan>│ </tspan><tspan class="fa8">. </tspan><tspan>│ </tspan><tspan class="fa12">version</tspan><tspan>: </tspan><tspan class="fa6">0 </tspan><tspan>0xd6d-0xd6e (1)</tspan></text>
|
||||
<text y="5.5em"><tspan class="fa3">0xd60</tspan><tspan>│ </tspan><tspan class="fa8">00 00</tspan><tspan>│ </tspan><tspan class="fa8">..</tspan><tspan>│ </tspan><tspan class="fa12">flags</tspan><tspan>: </tspan><tspan class="fa6">0 </tspan><tspan>0xd6e-0xd71 (3)</tspan></text>
|
||||
<text y="6.5em"><tspan class="fa3">0xd70</tspan><tspan>│</tspan><tspan class="fa8">00 </tspan><tspan>│</tspan><tspan class="fa8">. </tspan><tspan>│</tspan></text>
|
||||
<text y="7.5em"><tspan class="fa3">0xd70</tspan><tspan>│ </tspan><tspan class="fa8">00 00 00 </tspan><tspan class="bold">01 </tspan><tspan>│ </tspan><tspan class="fa8">...</tspan><tspan class="bold">. </tspan><tspan>│ </tspan><tspan class="fa12">entry_count</tspan><tspan>: </tspan><tspan class="fa6">1 </tspan><tspan>0xd71-0xd75 (4)</tspan></text>
|
||||
<text y="8.5em"><tspan> │ │ │ </tspan><tspan class="fa12">entries</tspan><tspan>[</tspan><tspan class="fa6">0</tspan><tspan>:</tspan><tspan class="fa6">1</tspan><tspan>]: 0xd75-0xd81 (12)</tspan></text>
|
||||
<text y="9.5em"><tspan> │ │ │ [</tspan><tspan class="fa6">0</tspan><tspan>]{}: entry 0xd75-0xd81 (12)</tspan></text>
|
||||
<text y="10.5em"><tspan class="fa3">0xd70</tspan><tspan>│ </tspan><tspan class="fa8">00 00 00 </tspan><tspan>28 │ </tspan><tspan class="fa8">...</tspan><tspan>( │ </tspan><tspan class="fa12">segment_duration</tspan><tspan>: </tspan><tspan class="fa6">40 </tspan><tspan>0xd75-0xd79 (4)</tspan></text>
|
||||
<text y="11.5em"><tspan class="fa3">0xd70</tspan><tspan>│ </tspan><tspan class="fa8">00 00 00 00 </tspan><tspan>│ </tspan><tspan class="fa8">.... </tspan><tspan>│ </tspan><tspan class="fa12">media_time</tspan><tspan>: </tspan><tspan class="fa6">0 </tspan><tspan>0xd79-0xd7d (4)</tspan></text>
|
||||
<text y="12.5em"><tspan class="fa3">0xd70</tspan><tspan>│ </tspan><tspan class="fa8">00 </tspan><tspan class="bold">01 </tspan><tspan class="fa8">00</tspan><tspan>│ </tspan><tspan class="fa8">.</tspan><tspan class="bold">.</tspan><tspan class="fa8">.</tspan><tspan>│ </tspan><tspan class="fa12">media_rate</tspan><tspan>: </tspan><tspan class="fa6">1 </tspan><tspan>0xd7d-0xd81 (4)</tspan></text>
|
||||
<text y="13.5em"><tspan class="fa3">0xd80</tspan><tspan>│</tspan><tspan class="fa8">00 </tspan><tspan>│</tspan><tspan class="fa8">. </tspan><tspan>│</tspan></text>
|
||||
</g>
|
||||
<text x="0ch" y="0.5em"><tspan>$ fq 'first(grep_by(.type == "elst")) | dv' file.mp4</tspan></text>
|
||||
<text x="0ch" y="1.5em"><tspan> │</tspan><tspan class="underline fa3">00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f</tspan><tspan>│</tspan><tspan class="underline fa3">0123456789abcdef</tspan><tspan>│.</tspan><tspan class="fa12">boxes</tspan><tspan>[</tspan><tspan class="fa6">3</tspan><tspan>].</tspan><tspan class="fa12">boxes</tspan><tspan>[</tspan><tspan class="fa6">1</tspan><tspan>].</tspan><tspan class="fa12">boxes</tspan><tspan>[</tspan><tspan class="fa6">1</tspan><tspan>].</tspan><tspan class="fa12">boxes</tspan><tspan>[</tspan><tspan class="fa6">0</tspan><tspan>]{}: box 0xd65-0xd81 (28)</tspan></text>
|
||||
<text x="0ch" y="2.5em"><tspan class="fa3">0xd60</tspan><tspan>│ </tspan><tspan class="fa8">00 00 00 </tspan><tspan class="bold">1c </tspan><tspan>│ </tspan><tspan class="fa8">...</tspan><tspan class="bold">. </tspan><tspan>│ </tspan><tspan class="fa12">size</tspan><tspan>: </tspan><tspan class="fa6">28 </tspan><tspan>0xd65-0xd69 (4)</tspan></text>
|
||||
<text x="0ch" y="3.5em"><tspan class="fa3">0xd60</tspan><tspan>│ 65 6c 73 74 │ elst │ </tspan><tspan class="fa12">type</tspan><tspan>: </tspan><tspan class="fa2">"elst" </tspan><tspan>(An edit list) 0xd69-0xd6d (4)</tspan></text>
|
||||
<text x="0ch" y="4.5em"><tspan class="fa3">0xd60</tspan><tspan>│ </tspan><tspan class="fa8">00 </tspan><tspan>│ </tspan><tspan class="fa8">. </tspan><tspan>│ </tspan><tspan class="fa12">version</tspan><tspan>: </tspan><tspan class="fa6">0 </tspan><tspan>0xd6d-0xd6e (1)</tspan></text>
|
||||
<text x="0ch" y="5.5em"><tspan class="fa3">0xd60</tspan><tspan>│ </tspan><tspan class="fa8">00 00</tspan><tspan>│ </tspan><tspan class="fa8">..</tspan><tspan>│ </tspan><tspan class="fa12">flags</tspan><tspan>: </tspan><tspan class="fa6">0 </tspan><tspan>0xd6e-0xd71 (3)</tspan></text>
|
||||
<text x="0ch" y="6.5em"><tspan class="fa3">0xd70</tspan><tspan>│</tspan><tspan class="fa8">00 </tspan><tspan>│</tspan><tspan class="fa8">. </tspan><tspan>│</tspan></text>
|
||||
<text x="0ch" y="7.5em"><tspan class="fa3">0xd70</tspan><tspan>│ </tspan><tspan class="fa8">00 00 00 </tspan><tspan class="bold">01 </tspan><tspan>│ </tspan><tspan class="fa8">...</tspan><tspan class="bold">. </tspan><tspan>│ </tspan><tspan class="fa12">entry_count</tspan><tspan>: </tspan><tspan class="fa6">1 </tspan><tspan>0xd71-0xd75 (4)</tspan></text>
|
||||
<text x="0ch" y="8.5em"><tspan> │ │ │ </tspan><tspan class="fa12">entries</tspan><tspan>[</tspan><tspan class="fa6">0</tspan><tspan>:</tspan><tspan class="fa6">1</tspan><tspan>]: 0xd75-0xd81 (12)</tspan></text>
|
||||
<text x="0ch" y="9.5em"><tspan> │ │ │ [</tspan><tspan class="fa6">0</tspan><tspan>]{}: entry 0xd75-0xd81 (12)</tspan></text>
|
||||
<text x="0ch" y="10.5em"><tspan class="fa3">0xd70</tspan><tspan>│ </tspan><tspan class="fa8">00 00 00 </tspan><tspan>28 │ </tspan><tspan class="fa8">...</tspan><tspan>( │ </tspan><tspan class="fa12">segment_duration</tspan><tspan>: </tspan><tspan class="fa6">40 </tspan><tspan>0xd75-0xd79 (4)</tspan></text>
|
||||
<text x="0ch" y="11.5em"><tspan class="fa3">0xd70</tspan><tspan>│ </tspan><tspan class="fa8">00 00 00 00 </tspan><tspan>│ </tspan><tspan class="fa8">.... </tspan><tspan>│ </tspan><tspan class="fa12">media_time</tspan><tspan>: </tspan><tspan class="fa6">0 </tspan><tspan>0xd79-0xd7d (4)</tspan></text>
|
||||
<text x="0ch" y="12.5em"><tspan class="fa3">0xd70</tspan><tspan>│ </tspan><tspan class="fa8">00 </tspan><tspan class="bold">01 </tspan><tspan class="fa8">00</tspan><tspan>│ </tspan><tspan class="fa8">.</tspan><tspan class="bold">.</tspan><tspan class="fa8">.</tspan><tspan>│ </tspan><tspan class="fa12">media_rate</tspan><tspan>: </tspan><tspan class="fa6">1 </tspan><tspan>0xd7d-0xd81 (4)</tspan></text>
|
||||
<text x="0ch" y="13.5em"><tspan class="fa3">0xd80</tspan><tspan>│</tspan><tspan class="fa8">00 </tspan><tspan>│</tspan><tspan class="fa8">. </tspan><tspan>│</tspan></text>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 5.3 KiB After Width: | Height: | Size: 5.4 KiB |
@ -26,22 +26,20 @@
|
||||
.fa12 { fill: #5555ff; }
|
||||
</style>
|
||||
<rect width="100%" height="100%" x="0" y="0" style="fill: #000000"/>
|
||||
<g x="0">
|
||||
<text y="0.5em"><tspan>$ fq '.frames[1].header | dv' file.mp3</tspan></text>
|
||||
<text y="1.5em"><tspan> │</tspan><tspan class="underline fa3">00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f</tspan><tspan>│</tspan><tspan class="underline fa3">0123456789abcdef</tspan><tspan>│.</tspan><tspan class="fa12">frames</tspan><tspan>[</tspan><tspan class="fa6">1</tspan><tspan>].</tspan><tspan class="fa12">header</tspan><tspan>{}: 0xb79-0xb7d (4)</tspan></text>
|
||||
<text y="2.5em"><tspan class="fa3">0xb70</tspan><tspan>│ </tspan><tspan class="bold">ff fb </tspan><tspan>│ </tspan><tspan class="bold">.. </tspan><tspan>│ </tspan><tspan class="fa12">sync</tspan><tspan>: </tspan><tspan class="fa6">0b11111111111 </tspan><tspan>(valid) 0xb79-0xb7a.3 (1.3)</tspan></text>
|
||||
<text y="3.5em"><tspan class="fa3">0xb70</tspan><tspan>│ </tspan><tspan class="bold">fb </tspan><tspan>│ </tspan><tspan class="bold">. </tspan><tspan>│ </tspan><tspan class="fa12">mpeg_version</tspan><tspan>: </tspan><tspan class="fa2">"1" </tspan><tspan>(</tspan><tspan class="fa6">3</tspan><tspan>) (MPEG Version 1) 0xb7a.3-0xb7a.5 (0.2)</tspan></text>
|
||||
<text y="4.5em"><tspan class="fa3">0xb70</tspan><tspan>│ </tspan><tspan class="bold">fb </tspan><tspan>│ </tspan><tspan class="bold">. </tspan><tspan>│ </tspan><tspan class="fa12">layer</tspan><tspan>: </tspan><tspan class="fa6">3 </tspan><tspan>(</tspan><tspan class="fa6">1</tspan><tspan>) (MPEG Layer 3) 0xb7a.5-0xb7a.7 (0.2)</tspan></text>
|
||||
<text y="5.5em"><tspan> │ │ │ </tspan><tspan class="fa12">sample_count</tspan><tspan>: </tspan><tspan class="fa6">1152</tspan></text>
|
||||
<text y="6.5em"><tspan class="fa3">0xb70</tspan><tspan>│ </tspan><tspan class="bold">fb </tspan><tspan>│ </tspan><tspan class="bold">. </tspan><tspan>│ </tspan><tspan class="fa12">protection_absent</tspan><tspan>: </tspan><tspan class="fa3">true </tspan><tspan>(No CRC) 0xb7a.7-0xb7b (0.1)</tspan></text>
|
||||
<text y="7.5em"><tspan class="fa3">0xb70</tspan><tspan>│ 50 │ P │ </tspan><tspan class="fa12">bitrate</tspan><tspan>: </tspan><tspan class="fa6">64000 </tspan><tspan>(</tspan><tspan class="fa6">5</tspan><tspan>) 0xb7b-0xb7b.4 (0.4)</tspan></text>
|
||||
<text y="8.5em"><tspan class="fa3">0xb70</tspan><tspan>│ 50 │ P │ </tspan><tspan class="fa12">sample_rate</tspan><tspan>: </tspan><tspan class="fa6">44100 </tspan><tspan>(</tspan><tspan class="fa6">0</tspan><tspan>) 0xb7b.4-0xb7b.6 (0.2)</tspan></text>
|
||||
<text y="9.5em"><tspan class="fa3">0xb70</tspan><tspan>│ 50 │ P │ </tspan><tspan class="fa12">padding</tspan><tspan>: </tspan><tspan class="fa2">"not_padded" </tspan><tspan>(</tspan><tspan class="fa6">0b0</tspan><tspan>) 0xb7b.6-0xb7b.7 (0.1)</tspan></text>
|
||||
<text y="10.5em"><tspan class="fa3">0xb70</tspan><tspan>│ 50 │ P │ </tspan><tspan class="fa12">private</tspan><tspan>: </tspan><tspan class="fa6">0 </tspan><tspan>0xb7b.7-0xb7c (0.1)</tspan></text>
|
||||
<text y="11.5em"><tspan class="fa3">0xb70</tspan><tspan>│ </tspan><tspan class="bold">c4 </tspan><tspan>│ </tspan><tspan class="bold">. </tspan><tspan>│ </tspan><tspan class="fa12">channels</tspan><tspan>: </tspan><tspan class="fa2">"mono" </tspan><tspan>(</tspan><tspan class="fa6">0b11</tspan><tspan>) 0xb7c-0xb7c.2 (0.2)</tspan></text>
|
||||
<text y="12.5em"><tspan class="fa3">0xb70</tspan><tspan>│ </tspan><tspan class="bold">c4 </tspan><tspan>│ </tspan><tspan class="bold">. </tspan><tspan>│ </tspan><tspan class="fa12">channel_mode</tspan><tspan>: </tspan><tspan class="fa2">"none" </tspan><tspan>(</tspan><tspan class="fa6">0b0</tspan><tspan>) 0xb7c.2-0xb7c.4 (0.2)</tspan></text>
|
||||
<text y="13.5em"><tspan class="fa3">0xb70</tspan><tspan>│ </tspan><tspan class="bold">c4 </tspan><tspan>│ </tspan><tspan class="bold">. </tspan><tspan>│ </tspan><tspan class="fa12">copyright</tspan><tspan>: </tspan><tspan class="fa6">0 </tspan><tspan>0xb7c.4-0xb7c.5 (0.1)</tspan></text>
|
||||
<text y="14.5em"><tspan class="fa3">0xb70</tspan><tspan>│ </tspan><tspan class="bold">c4 </tspan><tspan>│ </tspan><tspan class="bold">. </tspan><tspan>│ </tspan><tspan class="fa12">original</tspan><tspan>: </tspan><tspan class="fa6">1 </tspan><tspan>0xb7c.5-0xb7c.6 (0.1)</tspan></text>
|
||||
<text y="15.5em"><tspan class="fa3">0xb70</tspan><tspan>│ </tspan><tspan class="bold">c4 </tspan><tspan>│ </tspan><tspan class="bold">. </tspan><tspan>│ </tspan><tspan class="fa12">emphasis</tspan><tspan>: </tspan><tspan class="fa2">"none" </tspan><tspan>(</tspan><tspan class="fa6">0b0</tspan><tspan>) 0xb7c.6-0xb7d (0.2)</tspan></text>
|
||||
</g>
|
||||
<text x="0ch" y="0.5em"><tspan>$ fq '.frames[1].header | dv' file.mp3</tspan></text>
|
||||
<text x="0ch" y="1.5em"><tspan> │</tspan><tspan class="underline fa3">00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f</tspan><tspan>│</tspan><tspan class="underline fa3">0123456789abcdef</tspan><tspan>│.</tspan><tspan class="fa12">frames</tspan><tspan>[</tspan><tspan class="fa6">1</tspan><tspan>].</tspan><tspan class="fa12">header</tspan><tspan>{}: 0xb79-0xb7d (4)</tspan></text>
|
||||
<text x="0ch" y="2.5em"><tspan class="fa3">0xb70</tspan><tspan>│ </tspan><tspan class="bold">ff fb </tspan><tspan>│ </tspan><tspan class="bold">.. </tspan><tspan>│ </tspan><tspan class="fa12">sync</tspan><tspan>: </tspan><tspan class="fa6">0b11111111111 </tspan><tspan>(valid) 0xb79-0xb7a.3 (1.3)</tspan></text>
|
||||
<text x="0ch" y="3.5em"><tspan class="fa3">0xb70</tspan><tspan>│ </tspan><tspan class="bold">fb </tspan><tspan>│ </tspan><tspan class="bold">. </tspan><tspan>│ </tspan><tspan class="fa12">mpeg_version</tspan><tspan>: </tspan><tspan class="fa2">"1" </tspan><tspan>(</tspan><tspan class="fa6">3</tspan><tspan>) (MPEG Version 1) 0xb7a.3-0xb7a.5 (0.2)</tspan></text>
|
||||
<text x="0ch" y="4.5em"><tspan class="fa3">0xb70</tspan><tspan>│ </tspan><tspan class="bold">fb </tspan><tspan>│ </tspan><tspan class="bold">. </tspan><tspan>│ </tspan><tspan class="fa12">layer</tspan><tspan>: </tspan><tspan class="fa6">3 </tspan><tspan>(</tspan><tspan class="fa6">1</tspan><tspan>) (MPEG Layer 3) 0xb7a.5-0xb7a.7 (0.2)</tspan></text>
|
||||
<text x="0ch" y="5.5em"><tspan> │ │ │ </tspan><tspan class="fa12">sample_count</tspan><tspan>: </tspan><tspan class="fa6">1152</tspan></text>
|
||||
<text x="0ch" y="6.5em"><tspan class="fa3">0xb70</tspan><tspan>│ </tspan><tspan class="bold">fb </tspan><tspan>│ </tspan><tspan class="bold">. </tspan><tspan>│ </tspan><tspan class="fa12">protection_absent</tspan><tspan>: </tspan><tspan class="fa3">true </tspan><tspan>(No CRC) 0xb7a.7-0xb7b (0.1)</tspan></text>
|
||||
<text x="0ch" y="7.5em"><tspan class="fa3">0xb70</tspan><tspan>│ 50 │ P │ </tspan><tspan class="fa12">bitrate</tspan><tspan>: </tspan><tspan class="fa6">64000 </tspan><tspan>(</tspan><tspan class="fa6">5</tspan><tspan>) 0xb7b-0xb7b.4 (0.4)</tspan></text>
|
||||
<text x="0ch" y="8.5em"><tspan class="fa3">0xb70</tspan><tspan>│ 50 │ P │ </tspan><tspan class="fa12">sample_rate</tspan><tspan>: </tspan><tspan class="fa6">44100 </tspan><tspan>(</tspan><tspan class="fa6">0</tspan><tspan>) 0xb7b.4-0xb7b.6 (0.2)</tspan></text>
|
||||
<text x="0ch" y="9.5em"><tspan class="fa3">0xb70</tspan><tspan>│ 50 │ P │ </tspan><tspan class="fa12">padding</tspan><tspan>: </tspan><tspan class="fa2">"not_padded" </tspan><tspan>(</tspan><tspan class="fa6">0b0</tspan><tspan>) 0xb7b.6-0xb7b.7 (0.1)</tspan></text>
|
||||
<text x="0ch" y="10.5em"><tspan class="fa3">0xb70</tspan><tspan>│ 50 │ P │ </tspan><tspan class="fa12">private</tspan><tspan>: </tspan><tspan class="fa6">0 </tspan><tspan>0xb7b.7-0xb7c (0.1)</tspan></text>
|
||||
<text x="0ch" y="11.5em"><tspan class="fa3">0xb70</tspan><tspan>│ </tspan><tspan class="bold">c4 </tspan><tspan>│ </tspan><tspan class="bold">. </tspan><tspan>│ </tspan><tspan class="fa12">channels</tspan><tspan>: </tspan><tspan class="fa2">"mono" </tspan><tspan>(</tspan><tspan class="fa6">0b11</tspan><tspan>) 0xb7c-0xb7c.2 (0.2)</tspan></text>
|
||||
<text x="0ch" y="12.5em"><tspan class="fa3">0xb70</tspan><tspan>│ </tspan><tspan class="bold">c4 </tspan><tspan>│ </tspan><tspan class="bold">. </tspan><tspan>│ </tspan><tspan class="fa12">channel_mode</tspan><tspan>: </tspan><tspan class="fa2">"none" </tspan><tspan>(</tspan><tspan class="fa6">0b0</tspan><tspan>) 0xb7c.2-0xb7c.4 (0.2)</tspan></text>
|
||||
<text x="0ch" y="13.5em"><tspan class="fa3">0xb70</tspan><tspan>│ </tspan><tspan class="bold">c4 </tspan><tspan>│ </tspan><tspan class="bold">. </tspan><tspan>│ </tspan><tspan class="fa12">copyright</tspan><tspan>: </tspan><tspan class="fa6">0 </tspan><tspan>0xb7c.4-0xb7c.5 (0.1)</tspan></text>
|
||||
<text x="0ch" y="14.5em"><tspan class="fa3">0xb70</tspan><tspan>│ </tspan><tspan class="bold">c4 </tspan><tspan>│ </tspan><tspan class="bold">. </tspan><tspan>│ </tspan><tspan class="fa12">original</tspan><tspan>: </tspan><tspan class="fa6">1 </tspan><tspan>0xb7c.5-0xb7c.6 (0.1)</tspan></text>
|
||||
<text x="0ch" y="15.5em"><tspan class="fa3">0xb70</tspan><tspan>│ </tspan><tspan class="bold">c4 </tspan><tspan>│ </tspan><tspan class="bold">. </tspan><tspan>│ </tspan><tspan class="fa12">emphasis</tspan><tspan>: </tspan><tspan class="fa2">"none" </tspan><tspan>(</tspan><tspan class="fa6">0b0</tspan><tspan>) 0xb7c.6-0xb7d (0.2)</tspan></text>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 6.1 KiB After Width: | Height: | Size: 6.2 KiB |
@ -17,10 +17,8 @@
|
||||
.fa2 { fill: #00bb00; }
|
||||
</style>
|
||||
<rect width="100%" height="100%" x="0" y="0" style="fill: #000000"/>
|
||||
<g x="0">
|
||||
<text y="0.5em"><tspan>$ fq -n '"hello"'</tspan></text>
|
||||
<text y="1.5em"><tspan class="fa2">"hello"</tspan></text>
|
||||
<text y="3.5em"><tspan>$ fq -n '"hello" | d'</tspan></text>
|
||||
<text y="4.5em"><tspan class="fa2">"hello"</tspan></text>
|
||||
</g>
|
||||
<text x="0ch" y="0.5em"><tspan>$ fq -n '"hello"'</tspan></text>
|
||||
<text x="0ch" y="1.5em"><tspan class="fa2">"hello"</tspan></text>
|
||||
<text x="0ch" y="3.5em"><tspan>$ fq -n '"hello" | d'</tspan></text>
|
||||
<text x="0ch" y="4.5em"><tspan class="fa2">"hello"</tspan></text>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 929 B After Width: | Height: | Size: 946 B |
@ -94,6 +94,7 @@
|
||||
|`mpeg_spu` |Sub Picture Unit (DVD subtitle) |<sub></sub>|
|
||||
|`mpeg_ts` |MPEG Transport Stream |<sub></sub>|
|
||||
|[`msgpack`](#msgpack) |MessagePack |<sub></sub>|
|
||||
|[`nes`](#nes) |iNES/NES 2.0 cartridge ROM format |<sub></sub>|
|
||||
|`ogg` |OGG file |<sub>`ogg_page` `vorbis_packet` `opus_packet` `flac_metadatablock` `flac_frame`</sub>|
|
||||
|`ogg_page` |OGG page |<sub></sub>|
|
||||
|[`opentimestamps`](#opentimestamps) |OpenTimestamps file |<sub></sub>|
|
||||
@ -135,7 +136,7 @@
|
||||
|`ip_packet` |Group |<sub>`icmp` `icmpv6` `tcp_segment` `udp_datagram`</sub>|
|
||||
|`link_frame` |Group |<sub>`bsd_loopback_frame` `ether8023_frame` `ipv4_packet` `ipv6_packet` `sll2_packet` `sll_packet`</sub>|
|
||||
|`mp3_frame_tags` |Group |<sub>`mp3_frame_vbri` `mp3_frame_xing`</sub>|
|
||||
|`probe` |Group |<sub>`adts` `aiff` `apple_bookmark` `ar` `avi` `avro_ocf` `bitcoin_blkdat` `bplist` `bzip2` `caff` `elf` `fit` `flac` `gif` `gzip` `html` `jpeg` `json` `jsonl` `leveldb_table` `luajit` `macho` `macho_fat` `matroska` `moc3` `mp3` `mp4` `mpeg_ts` `ogg` `opentimestamps` `pcap` `pcapng` `png` `tar` `tiff` `toml` `tzif` `wasm` `wav` `webp` `xml` `yaml` `zip`</sub>|
|
||||
|`probe` |Group |<sub>`adts` `aiff` `apple_bookmark` `ar` `avi` `avro_ocf` `bitcoin_blkdat` `bplist` `bzip2` `caff` `elf` `fit` `flac` `gif` `gzip` `html` `jpeg` `json` `jsonl` `leveldb_table` `luajit` `macho` `macho_fat` `matroska` `moc3` `mp3` `mp4` `mpeg_ts` `nes` `ogg` `opentimestamps` `pcap` `pcapng` `png` `tar` `tiff` `toml` `tzif` `wasm` `wav` `webp` `xml` `yaml` `zip`</sub>|
|
||||
|`tcp_stream` |Group |<sub>`dns_tcp` `rtmp` `tls`</sub>|
|
||||
|`udp_payload` |Group |<sub>`dns`</sub>|
|
||||
|
||||
@ -940,6 +941,42 @@ $ fq -d msgpack torepr file.msgpack
|
||||
### References
|
||||
- https://github.com/msgpack/msgpack/blob/master/spec.md
|
||||
|
||||
## nes
|
||||
|
||||
### Limitations
|
||||
|
||||
- `prg_rom`, `chr_rom` and `trainer` fields may contain data that is just random
|
||||
junk from the memory chips, since they are of a fixed size.
|
||||
- The `nes_toasm` function outputs ALL opcodes, including the unofficial ones,
|
||||
which means that none of the regular assemblers can recompile it.
|
||||
- The `nes_tokitty` function works on tiles in `chr_rom` but only outputs a Kitty
|
||||
graphics compatible string. You need to manually `printf` that string to get
|
||||
Kitty (or another compatible terminal) to output the graphics.
|
||||
|
||||
### Decompile PRG ROM
|
||||
```
|
||||
$ fq -r '.prg_rom[] | nes_toasm' file.nes
|
||||
```
|
||||
|
||||
### Print out first CHR ROM tile in Kitty (or Konsole, wayst, WezTerm) at size 5
|
||||
```
|
||||
$ printf $(fq -r -d nes '.chr_rom[0] | nes_tokitty(5)' file.nes)
|
||||
```
|
||||
|
||||
### Print out all CHR ROM tiles in Kitty (with Bash) at size 5
|
||||
```
|
||||
$ for line in $(fq -r '.chr_rom[] | nes_tokitty(5)' file.nes);do printf "%b%s" "$line";done
|
||||
```
|
||||
|
||||
### Authors
|
||||
- Mikael Lofjärd mikael.lofjard@gmail.com, original author
|
||||
|
||||
### References
|
||||
- https://www.nesdev.org/wiki/INES
|
||||
- https://www.nesdev.org/wiki/NES_2.0
|
||||
- https://www.nesdev.org/wiki/CPU
|
||||
- https://bugzmanov.github.io/nes_ebook/chapter_6_3.html
|
||||
|
||||
## opentimestamps
|
||||
|
||||
### View a full OpenTimestamps file
|
||||
|
1132
doc/formats.svg
Before Width: | Height: | Size: 154 KiB After Width: | Height: | Size: 155 KiB |