1
1
mirror of https://github.com/wader/fq.git synced 2024-08-16 15:30:36 +03:00

doc: Regenerate after nes and new ansisvg

This commit is contained in:
Mattias Wadman 2024-03-17 13:45:30 +01:00
parent 8855d7addf
commit 36e8287c2b
9 changed files with 718 additions and 668 deletions

View File

@ -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),

View File

@ -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 &#39;.headers[0].header&#39; 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">&#34;ID3&#34; </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 &#39;.frames[0].tag.encoder | tovalue&#39; 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 &#39;.[0xb79,0xc49:] | mp3_frame.header.bitrate&#39; 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 &#39;.headers[].frames[] | select(.id == &#34;APIC&#34;)?.picture | tobits&#39; file.mp3 &gt;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 &#39;.headers[0].frames[] | grep_by(.id == &#34;APIC&#34;) | grep_by(.type == &#34;IHDR&#34;) | {res: {width, height}} | to_yaml&#39; 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 &#39;http://host?a=b&#39; | fq -Rr &#39;from_url | .query.b = &#34;a b c&#34; | to_url&#39;</tspan></text>
<text y="43.5em"><tspan>http://host?a=b&amp;b=a&#43;b&#43;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 &#39;https://host?p=eyJhIjoiaGVsbG8ifQ%3D%3D&#39; | fq -R &#39;from_url.query.p | from_base64 | fromjson&#39;</tspan></text>
<text y="47.5em"><tspan>{</tspan></text>
<text y="48.5em"><tspan> </tspan><tspan class="fa12">&#34;a&#34;</tspan><tspan>: </tspan><tspan class="fa2">&#34;hello&#34;</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 &#39;.headers[0].header&#39; 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">&#34;ID3&#34; </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 &#39;.frames[0].tag.encoder | tovalue&#39; 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 &#39;.[0xb79,0xc49:] | mp3_frame.header.bitrate&#39; 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 &#39;.headers[].frames[] | select(.id == &#34;APIC&#34;)?.picture | tobits&#39; file.mp3 &gt;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 &#39;.headers[0].frames[] | grep_by(.id == &#34;APIC&#34;) | grep_by(.type == &#34;IHDR&#34;) | {res: {width, height}} | to_yaml&#39; 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 &#39;http://host?a=b&#39; | fq -Rr &#39;from_url | .query.b = &#34;a b c&#34; | to_url&#39;</tspan></text>
<text x="0ch" y="43.5em"><tspan>http://host?a=b&amp;b=a&#43;b&#43;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 &#39;https://host?p=eyJhIjoiaGVsbG8ifQ%3D%3D&#39; | fq -R &#39;from_url.query.p | from_base64 | fromjson&#39;</tspan></text>
<text x="0ch" y="47.5em"><tspan>{</tspan></text>
<text x="0ch" y="48.5em"><tspan> </tspan><tspan class="fa12">&#34;a&#34;</tspan><tspan>: </tspan><tspan class="fa2">&#34;hello&#34;</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

View File

@ -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 &#39;first(grep_by(.type == &#34;elst&#34;))&#39; 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">&#34;elst&#34; </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 &#39;first(grep_by(.type == &#34;elst&#34;))&#39; 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">&#34;elst&#34; </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

View File

@ -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 &#39;first(grep_by(.type == &#34;elst&#34;)) | d&#39; 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">&#34;elst&#34; </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 &#39;first(grep_by(.type == &#34;elst&#34;)) | d&#39; 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">&#34;elst&#34; </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

View File

@ -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 &#39;first(grep_by(.type == &#34;elst&#34;)) | dv&#39; 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">&#34;elst&#34; </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 &#39;first(grep_by(.type == &#34;elst&#34;)) | dv&#39; 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">&#34;elst&#34; </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

View File

@ -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 &#39;.frames[1].header | dv&#39; 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">&#34;1&#34; </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">&#34;not_padded&#34; </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">&#34;mono&#34; </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">&#34;none&#34; </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">&#34;none&#34; </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 &#39;.frames[1].header | dv&#39; 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">&#34;1&#34; </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">&#34;not_padded&#34; </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">&#34;mono&#34; </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">&#34;none&#34; </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">&#34;none&#34; </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

View File

@ -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 &#39;&#34;hello&#34;&#39;</tspan></text>
<text y="1.5em"><tspan class="fa2">&#34;hello&#34;</tspan></text>
<text y="3.5em"><tspan>$ fq -n &#39;&#34;hello&#34; | d&#39;</tspan></text>
<text y="4.5em"><tspan class="fa2">&#34;hello&#34;</tspan></text>
</g>
<text x="0ch" y="0.5em"><tspan>$ fq -n &#39;&#34;hello&#34;&#39;</tspan></text>
<text x="0ch" y="1.5em"><tspan class="fa2">&#34;hello&#34;</tspan></text>
<text x="0ch" y="3.5em"><tspan>$ fq -n &#39;&#34;hello&#34; | d&#39;</tspan></text>
<text x="0ch" y="4.5em"><tspan class="fa2">&#34;hello&#34;</tspan></text>
</svg>

Before

Width:  |  Height:  |  Size: 929 B

After

Width:  |  Height:  |  Size: 946 B

View File

@ -94,6 +94,7 @@
|`mpeg_spu` |Sub&nbsp;Picture&nbsp;Unit&nbsp;(DVD&nbsp;subtitle) |<sub></sub>|
|`mpeg_ts` |MPEG&nbsp;Transport&nbsp;Stream |<sub></sub>|
|[`msgpack`](#msgpack) |MessagePack |<sub></sub>|
|[`nes`](#nes) |iNES/NES&nbsp;2.0&nbsp;cartridge&nbsp;ROM&nbsp;format |<sub></sub>|
|`ogg` |OGG&nbsp;file |<sub>`ogg_page` `vorbis_packet` `opus_packet` `flac_metadatablock` `flac_frame`</sub>|
|`ogg_page` |OGG&nbsp;page |<sub></sub>|
|[`opentimestamps`](#opentimestamps) |OpenTimestamps&nbsp;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

File diff suppressed because it is too large Load Diff

Before

Width:  |  Height:  |  Size: 154 KiB

After

Width:  |  Height:  |  Size: 155 KiB