From 36e8287c2b762b61c9756bddfe3efbd37ab7df5b Mon Sep 17 00:00:00 2001 From: Mattias Wadman Date: Sun, 17 Mar 2024 13:45:30 +0100 Subject: [PATCH] doc: Regenerate after nes and new ansisvg --- README.md | 1 + doc/demo.svg | 88 ++- doc/display_decode_value.svg | 22 +- doc/display_decode_value_d.svg | 30 +- doc/display_decode_value_dv.svg | 30 +- doc/display_decode_value_dv2.svg | 34 +- doc/display_json.svg | 10 +- doc/formats.md | 39 +- doc/formats.svg | 1132 +++++++++++++++--------------- 9 files changed, 718 insertions(+), 668 deletions(-) diff --git a/README.md b/README.md index 6db3d167..b5d4cdb0 100644 --- a/README.md +++ b/README.md @@ -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), diff --git a/doc/demo.svg b/doc/demo.svg index df653a2e..c08bc364 100644 --- a/doc/demo.svg +++ b/doc/demo.svg @@ -28,49 +28,47 @@ .fa15 { fill: #ffffff; } - -# Overview of mp3 file -$ fq . file.mp3 -00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f0123456789abcdef│.{}: file.mp3 (mp3) -0x000│49 44 33 04 00 00 00 00 15 39 54 53 53 45 00 00│ID3......9TSSE..headers[0:1]: -* │until 0xac2.7 (2755) │ │ -0xac0ff fb 40 c0 00 00 00 00 00 00 00 00 00..@..........frames[0:3]: -0xad000 00 00 00 00 00 00 00 49 6e 66 6f 00 00 00 0f........Info.... -* │until 0xd19.7 (end) (599) │ │ - │ │ │ footers[0:0]: -# Show header of first ID3v2 tag inside mp3 file -$ fq '.headers[0].header' file.mp3 -00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f0123456789abcdef│.headers[0].header{}: -0x0│49 44 33 │ID3 │ magic: "ID3" (valid) -0x004 . version: 4 (valid) -0x000 . revision: 0 -0x000 . flags{}: -0x000 00 15 39 │ ...9 │ size: 2745 -# Show encoder software used -$ fq -r '.frames[0].tag.encoder | tovalue' file.mp3 -Lavc58.13 -# Decode at two offsets as mp3_frame and show bitrate -$ fq -d bytes '.[0xb79,0xc49:] | mp3_frame.header.bitrate' file.mp3 -00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f0123456789abcdef -0xb70│ 50 │ P │.header.bitrate: 64000 (5) -00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f0123456789abcdef -0xc40│ 52 │ R │.header.bitrate: 64000 (5) -# Extract PNG file -$ fq '.headers[].frames[] | select(.id == "APIC")?.picture | tobits' file.mp3 >file.png -$ file file.png -file.png: PNG image data, 320 x 240, 8-bit/color RGB, non-interlaced -# Resolution of embedded PNG cover art as YAML -$ fq -r '.headers[0].frames[] | grep_by(.id == "APIC") | grep_by(.type == "IHDR") | {res: {width, height}} | to_yaml' file.mp3 -res: - height: 240 - width: 320 -# Add query parameter to URL -$ echo 'http://host?a=b' | fq -Rr 'from_url | .query.b = "a b c" | to_url' -http://host?a=b&b=a+b+c -# Extract JSON and base64 encoded query parameter p -$ echo 'https://host?p=eyJhIjoiaGVsbG8ifQ%3D%3D' | fq -R 'from_url.query.p | from_base64 | fromjson' -{ - "a": "hello" -} - +# Overview of mp3 file +$ fq . file.mp3 +00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f0123456789abcdef│.{}: file.mp3 (mp3) +0x000│49 44 33 04 00 00 00 00 15 39 54 53 53 45 00 00│ID3......9TSSE..headers[0:1]: +* │until 0xac2.7 (2755) │ │ +0xac0ff fb 40 c0 00 00 00 00 00 00 00 00 00..@..........frames[0:3]: +0xad000 00 00 00 00 00 00 00 49 6e 66 6f 00 00 00 0f........Info.... +* │until 0xd19.7 (end) (599) │ │ + │ │ │ footers[0:0]: +# Show header of first ID3v2 tag inside mp3 file +$ fq '.headers[0].header' file.mp3 +00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f0123456789abcdef│.headers[0].header{}: +0x0│49 44 33 │ID3 │ magic: "ID3" (valid) +0x004 . version: 4 (valid) +0x000 . revision: 0 +0x000 . flags{}: +0x000 00 15 39 │ ...9 │ size: 2745 +# Show encoder software used +$ fq -r '.frames[0].tag.encoder | tovalue' file.mp3 +Lavc58.13 +# Decode at two offsets as mp3_frame and show bitrate +$ fq -d bytes '.[0xb79,0xc49:] | mp3_frame.header.bitrate' file.mp3 +00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f0123456789abcdef +0xb70│ 50 │ P │.header.bitrate: 64000 (5) +00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f0123456789abcdef +0xc40│ 52 │ R │.header.bitrate: 64000 (5) +# Extract PNG file +$ fq '.headers[].frames[] | select(.id == "APIC")?.picture | tobits' file.mp3 >file.png +$ file file.png +file.png: PNG image data, 320 x 240, 8-bit/color RGB, non-interlaced +# Resolution of embedded PNG cover art as YAML +$ fq -r '.headers[0].frames[] | grep_by(.id == "APIC") | grep_by(.type == "IHDR") | {res: {width, height}} | to_yaml' file.mp3 +res: + height: 240 + width: 320 +# Add query parameter to URL +$ echo 'http://host?a=b' | fq -Rr 'from_url | .query.b = "a b c" | to_url' +http://host?a=b&b=a+b+c +# Extract JSON and base64 encoded query parameter p +$ echo 'https://host?p=eyJhIjoiaGVsbG8ifQ%3D%3D' | fq -R 'from_url.query.p | from_base64 | fromjson' +{ + "a": "hello" +} diff --git a/doc/display_decode_value.svg b/doc/display_decode_value.svg index a1edf540..e3973a41 100644 --- a/doc/display_decode_value.svg +++ b/doc/display_decode_value.svg @@ -27,16 +27,14 @@ .fa12 { fill: #5555ff; } - -$ fq 'first(grep_by(.type == "elst"))' file.mp4 -00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f0123456789abcdef│.boxes[3].boxes[1].boxes[1].boxes[0]{}: box -0xd6000 00 00 1c .... size: 28 -0xd60│ 65 6c 73 74 │ elst │ type: "elst" (An edit list) -0xd6000 . version: 0 -0xd6000 00..flags: 0 -0xd7000 . -0xd7000 00 00 01 .... entry_count: 1 -0xd7000 00 00 28 00 00 00 00 00 01 00...(.......entries[0:1]: -0xd8000 . - +$ fq 'first(grep_by(.type == "elst"))' file.mp4 +00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f0123456789abcdef│.boxes[3].boxes[1].boxes[1].boxes[0]{}: box +0xd6000 00 00 1c .... size: 28 +0xd60│ 65 6c 73 74 │ elst │ type: "elst" (An edit list) +0xd6000 . version: 0 +0xd6000 00..flags: 0 +0xd7000 . +0xd7000 00 00 01 .... entry_count: 1 +0xd7000 00 00 28 00 00 00 00 00 01 00...(.......entries[0:1]: +0xd8000 . diff --git a/doc/display_decode_value_d.svg b/doc/display_decode_value_d.svg index b0632cda..d999bb89 100644 --- a/doc/display_decode_value_d.svg +++ b/doc/display_decode_value_d.svg @@ -27,20 +27,18 @@ .fa12 { fill: #5555ff; } - -$ fq 'first(grep_by(.type == "elst")) | d' file.mp4 -00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f0123456789abcdef│.boxes[3].boxes[1].boxes[1].boxes[0]{}: box -0xd6000 00 00 1c .... size: 28 -0xd60│ 65 6c 73 74 │ elst │ type: "elst" (An edit list) -0xd6000 . version: 0 -0xd6000 00..flags: 0 -0xd7000 . -0xd7000 00 00 01 .... entry_count: 1 - │ │ │ entries[0:1]: - │ │ │ [0]{}: entry -0xd7000 00 00 28 │ ...( │ segment_duration: 40 -0xd7000 00 00 00 .... media_time: 0 -0xd7000 01 00...media_rate: 1 -0xd8000 . - +$ fq 'first(grep_by(.type == "elst")) | d' file.mp4 +00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f0123456789abcdef│.boxes[3].boxes[1].boxes[1].boxes[0]{}: box +0xd6000 00 00 1c .... size: 28 +0xd60│ 65 6c 73 74 │ elst │ type: "elst" (An edit list) +0xd6000 . version: 0 +0xd6000 00..flags: 0 +0xd7000 . +0xd7000 00 00 01 .... entry_count: 1 + │ │ │ entries[0:1]: + │ │ │ [0]{}: entry +0xd7000 00 00 28 │ ...( │ segment_duration: 40 +0xd7000 00 00 00 .... media_time: 0 +0xd7000 01 00...media_rate: 1 +0xd8000 . diff --git a/doc/display_decode_value_dv.svg b/doc/display_decode_value_dv.svg index 2b76dade..78a758fb 100644 --- a/doc/display_decode_value_dv.svg +++ b/doc/display_decode_value_dv.svg @@ -27,20 +27,18 @@ .fa12 { fill: #5555ff; } - -$ fq 'first(grep_by(.type == "elst")) | dv' file.mp4 -00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f0123456789abcdef│.boxes[3].boxes[1].boxes[1].boxes[0]{}: box 0xd65-0xd81 (28) -0xd6000 00 00 1c .... size: 28 0xd65-0xd69 (4) -0xd60│ 65 6c 73 74 │ elst │ type: "elst" (An edit list) 0xd69-0xd6d (4) -0xd6000 . version: 0 0xd6d-0xd6e (1) -0xd6000 00..flags: 0 0xd6e-0xd71 (3) -0xd7000 . -0xd7000 00 00 01 .... entry_count: 1 0xd71-0xd75 (4) - │ │ │ entries[0:1]: 0xd75-0xd81 (12) - │ │ │ [0]{}: entry 0xd75-0xd81 (12) -0xd7000 00 00 28 │ ...( │ segment_duration: 40 0xd75-0xd79 (4) -0xd7000 00 00 00 .... media_time: 0 0xd79-0xd7d (4) -0xd7000 01 00...media_rate: 1 0xd7d-0xd81 (4) -0xd8000 . - +$ fq 'first(grep_by(.type == "elst")) | dv' file.mp4 +00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f0123456789abcdef│.boxes[3].boxes[1].boxes[1].boxes[0]{}: box 0xd65-0xd81 (28) +0xd6000 00 00 1c .... size: 28 0xd65-0xd69 (4) +0xd60│ 65 6c 73 74 │ elst │ type: "elst" (An edit list) 0xd69-0xd6d (4) +0xd6000 . version: 0 0xd6d-0xd6e (1) +0xd6000 00..flags: 0 0xd6e-0xd71 (3) +0xd7000 . +0xd7000 00 00 01 .... entry_count: 1 0xd71-0xd75 (4) + │ │ │ entries[0:1]: 0xd75-0xd81 (12) + │ │ │ [0]{}: entry 0xd75-0xd81 (12) +0xd7000 00 00 28 │ ...( │ segment_duration: 40 0xd75-0xd79 (4) +0xd7000 00 00 00 .... media_time: 0 0xd79-0xd7d (4) +0xd7000 01 00...media_rate: 1 0xd7d-0xd81 (4) +0xd8000 . diff --git a/doc/display_decode_value_dv2.svg b/doc/display_decode_value_dv2.svg index e38a599a..8b99a6f3 100644 --- a/doc/display_decode_value_dv2.svg +++ b/doc/display_decode_value_dv2.svg @@ -26,22 +26,20 @@ .fa12 { fill: #5555ff; } - -$ fq '.frames[1].header | dv' file.mp3 -00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f0123456789abcdef│.frames[1].header{}: 0xb79-0xb7d (4) -0xb70ff fb .. sync: 0b11111111111 (valid) 0xb79-0xb7a.3 (1.3) -0xb70fb . mpeg_version: "1" (3) (MPEG Version 1) 0xb7a.3-0xb7a.5 (0.2) -0xb70fb . layer: 3 (1) (MPEG Layer 3) 0xb7a.5-0xb7a.7 (0.2) - │ │ │ sample_count: 1152 -0xb70fb . protection_absent: true (No CRC) 0xb7a.7-0xb7b (0.1) -0xb70│ 50 │ P │ bitrate: 64000 (5) 0xb7b-0xb7b.4 (0.4) -0xb70│ 50 │ P │ sample_rate: 44100 (0) 0xb7b.4-0xb7b.6 (0.2) -0xb70│ 50 │ P │ padding: "not_padded" (0b0) 0xb7b.6-0xb7b.7 (0.1) -0xb70│ 50 │ P │ private: 0 0xb7b.7-0xb7c (0.1) -0xb70c4 . channels: "mono" (0b11) 0xb7c-0xb7c.2 (0.2) -0xb70c4 . channel_mode: "none" (0b0) 0xb7c.2-0xb7c.4 (0.2) -0xb70c4 . copyright: 0 0xb7c.4-0xb7c.5 (0.1) -0xb70c4 . original: 1 0xb7c.5-0xb7c.6 (0.1) -0xb70c4 . emphasis: "none" (0b0) 0xb7c.6-0xb7d (0.2) - +$ fq '.frames[1].header | dv' file.mp3 +00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f0123456789abcdef│.frames[1].header{}: 0xb79-0xb7d (4) +0xb70ff fb .. sync: 0b11111111111 (valid) 0xb79-0xb7a.3 (1.3) +0xb70fb . mpeg_version: "1" (3) (MPEG Version 1) 0xb7a.3-0xb7a.5 (0.2) +0xb70fb . layer: 3 (1) (MPEG Layer 3) 0xb7a.5-0xb7a.7 (0.2) + │ │ │ sample_count: 1152 +0xb70fb . protection_absent: true (No CRC) 0xb7a.7-0xb7b (0.1) +0xb70│ 50 │ P │ bitrate: 64000 (5) 0xb7b-0xb7b.4 (0.4) +0xb70│ 50 │ P │ sample_rate: 44100 (0) 0xb7b.4-0xb7b.6 (0.2) +0xb70│ 50 │ P │ padding: "not_padded" (0b0) 0xb7b.6-0xb7b.7 (0.1) +0xb70│ 50 │ P │ private: 0 0xb7b.7-0xb7c (0.1) +0xb70c4 . channels: "mono" (0b11) 0xb7c-0xb7c.2 (0.2) +0xb70c4 . channel_mode: "none" (0b0) 0xb7c.2-0xb7c.4 (0.2) +0xb70c4 . copyright: 0 0xb7c.4-0xb7c.5 (0.1) +0xb70c4 . original: 1 0xb7c.5-0xb7c.6 (0.1) +0xb70c4 . emphasis: "none" (0b0) 0xb7c.6-0xb7d (0.2) diff --git a/doc/display_json.svg b/doc/display_json.svg index bc7d9eb9..85fa7111 100644 --- a/doc/display_json.svg +++ b/doc/display_json.svg @@ -17,10 +17,8 @@ .fa2 { fill: #00bb00; } - -$ fq -n '"hello"' -"hello" -$ fq -n '"hello" | d' -"hello" - +$ fq -n '"hello"' +"hello" +$ fq -n '"hello" | d' +"hello" diff --git a/doc/formats.md b/doc/formats.md index 04671be7..6809d896 100644 --- a/doc/formats.md +++ b/doc/formats.md @@ -94,6 +94,7 @@ |`mpeg_spu` |Sub Picture Unit (DVD subtitle) || |`mpeg_ts` |MPEG Transport Stream || |[`msgpack`](#msgpack) |MessagePack || +|[`nes`](#nes) |iNES/NES 2.0 cartridge ROM format || |`ogg` |OGG file |`ogg_page` `vorbis_packet` `opus_packet` `flac_metadatablock` `flac_frame`| |`ogg_page` |OGG page || |[`opentimestamps`](#opentimestamps) |OpenTimestamps file || @@ -135,7 +136,7 @@ |`ip_packet` |Group |`icmp` `icmpv6` `tcp_segment` `udp_datagram`| |`link_frame` |Group |`bsd_loopback_frame` `ether8023_frame` `ipv4_packet` `ipv6_packet` `sll2_packet` `sll_packet`| |`mp3_frame_tags` |Group |`mp3_frame_vbri` `mp3_frame_xing`| -|`probe` |Group |`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`| +|`probe` |Group |`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`| |`tcp_stream` |Group |`dns_tcp` `rtmp` `tls`| |`udp_payload` |Group |`dns`| @@ -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 diff --git a/doc/formats.svg b/doc/formats.svg index d4d8cba2..b33fe634 100644 --- a/doc/formats.svg +++ b/doc/formats.svg @@ -4,18 +4,18 @@ - + formats - + adts - -adts - -adts_frame + +adts + +adts_frame @@ -28,7 +28,7 @@ adts:e->adts_frame:n - + @@ -46,22 +46,22 @@ apev2 - -apev2 - -image + +apev2 + +image image - -image + +image apev2:e->image:n - - + + @@ -74,10 +74,10 @@ icc_profile - + image->jpeg:n - - + + @@ -134,10 +134,10 @@ vpx_ccr - + image->mp4:n - - + + @@ -150,56 +150,56 @@ exif - + image->png:n - - + + tiff - -tiff - -icc_profile + +tiff + +icc_profile - + image->tiff:n - - + + webp - -webp - -exif - -vp8_frame - -icc_profile - -xml + +webp + +exif + +vp8_frame + +icc_profile + +xml - + image->webp:n - - + + - + gif - -gif + +gif - + image->gif:n - - + + @@ -212,25 +212,25 @@ probe - -probe + +probe ar:e->probe:n - - + + probe->adts:n - - + + probe->ar:n - + @@ -250,7 +250,7 @@ probe->avi:n - + @@ -264,36 +264,36 @@ probe->bitcoin_blkdat:n - + bzip2 - -bzip2 - -probe + +bzip2 + +probe probe->bzip2:n - - + + caff - -caff - -probe + +caff + +probe probe->caff:n - - + + @@ -306,44 +306,44 @@ flac_frame - + probe->flac:n - + gzip - -gzip - -probe + +gzip + +probe - + probe->gzip:n - - + + - + probe->jpeg:n - - + + macho_fat - -macho_fat - -macho + +macho_fat + +macho - + probe->macho_fat:n - - + + @@ -352,9 +352,9 @@ macho - + probe->macho:n - + @@ -402,44 +402,44 @@ vp9_frame - + probe->matroska:n - + mp3 - -mp3 - -id3v2 - -id3v1 - -id3v11 - -apev2 - -mp3_frame + +mp3 + +id3v2 + +id3v1 + +id3v11 + +apev2 + +mp3_frame - + probe->mp3:n - - + + - + probe->mp4:n - + - + probe->png:n - - + + @@ -458,90 +458,90 @@ flac_frame - + probe->ogg:n - + pcap - -pcap - -link_frame - -tcp_stream - -ipv4_packet + +pcap + +link_frame + +tcp_stream + +ipv4_packet - + probe->pcap:n - - + + pcapng - -pcapng - -link_frame - -tcp_stream - -ipv4_packet + +pcapng + +link_frame + +tcp_stream + +ipv4_packet - + probe->pcapng:n - - + + tar - -tar - -probe + +tar + +probe - + probe->tar:n - - + + - + probe->tiff:n - - + + wav - -wav - -id3v2 - -id3v1 - -id3v11 + +wav + +id3v2 + +id3v1 + +id3v11 - + probe->wav:n - - + + - + probe->webp:n - - + + @@ -550,234 +550,258 @@ xml - + probe->xml:n - - + + zip - -zip - -probe + +zip + +probe - + probe->zip:n - - + + aiff - -aiff + +aiff probe->aiff:n - - + + apple_bookmark - -apple_bookmark + +apple_bookmark probe->apple_bookmark:n - - + + avro_ocf - -avro_ocf + +avro_ocf probe->avro_ocf:n - - + + bplist - -bplist + +bplist probe->bplist:n - - + + elf - -elf + +elf probe->elf:n - - + + + + + +fit + +fit + + + +probe->fit:n + + - + probe->gif:n - - + + - + html - -html + +html - + probe->html:n - - + + - + json - -json + +json - + probe->json:n - - + + - + jsonl - -jsonl + +jsonl - + probe->jsonl:n - - + + - + leveldb_table - -leveldb_table + +leveldb_table - + probe->leveldb_table:n - - + + - + luajit - -luajit + +luajit - + probe->luajit:n - - + + - + moc3 - -moc3 + +moc3 - + probe->moc3:n - - + + - + mpeg_ts - -mpeg_ts + +mpeg_ts - + probe->mpeg_ts:n - - + + + + + +nes + +nes + + + +probe->nes:n + + - + opentimestamps - -opentimestamps + +opentimestamps - + probe->opentimestamps:n - - + + - + toml - -toml + +toml - + probe->toml:n - - + + - + tzif - -tzif + +tzif - + probe->tzif:n - - + + - + wasm - -wasm + +wasm - + probe->wasm:n - - + + - + yaml - -yaml + +yaml - + probe->yaml:n - - + + @@ -790,14 +814,14 @@ av1_obu - -av1_obu + +av1_obu av1_frame:e->av1_obu:n - - + + @@ -1008,76 +1032,76 @@ bsd_loopback_frame - -bsd_loopback_frame - -inet_packet + +bsd_loopback_frame + +inet_packet inet_packet - -inet_packet + +inet_packet bsd_loopback_frame:e->inet_packet:n - - + + ipv4_packet - -ipv4_packet - -ip_packet + +ipv4_packet + +ip_packet - + inet_packet->ipv4_packet:n - - + + ipv6_packet - -ipv6_packet - -ip_packet + +ipv6_packet + +ip_packet - + inet_packet->ipv6_packet:n - - + + bzip2:e->probe:n - - + + caff:e->probe:n - - + + ether8023_frame - -ether8023_frame - -inet_packet + +ether8023_frame + +inet_packet ether8023_frame:e->inet_packet:n - - + + @@ -1160,8 +1184,8 @@ flac_picture:e->image:n - - + + @@ -1172,8 +1196,8 @@ gzip:e->probe:n - - + + @@ -1250,76 +1274,76 @@ id3v2:e->image:n - - + + ip_packet - -ip_packet + +ip_packet ipv4_packet:e->ip_packet:n - - + + udp_datagram - -udp_datagram - -udp_payload + +udp_datagram + +udp_payload - + ip_packet->udp_datagram:n - - + + - + icmp - -icmp + +icmp - + ip_packet->icmp:n - - + + - + icmpv6 - -icmpv6 + +icmpv6 - + ip_packet->icmpv6:n - - + + - + tcp_segment - -tcp_segment + +tcp_segment - + ip_packet->tcp_segment:n - - + + ipv6_packet:e->ip_packet:n - - + + @@ -1348,7 +1372,7 @@ macho_fat:e->macho:n - + @@ -1360,8 +1384,8 @@ matroska:e->image:n - - + + @@ -1420,8 +1444,8 @@ matroska:e->av1_ccr:n - - + + @@ -1432,8 +1456,8 @@ matroska:e->mpeg_asc:n - - + + @@ -1444,20 +1468,20 @@ matroska:e->mpeg_pes_packet:n - - + + mpeg_spu - -mpeg_spu + +mpeg_spu matroska:e->mpeg_spu:n - - + + @@ -1476,16 +1500,16 @@ vorbis_packet - -vorbis_packet - -vorbis_comment + +vorbis_packet + +vorbis_comment matroska:e->vorbis_packet:n - - + + @@ -1496,8 +1520,8 @@ matroska:e->vp8_frame:n - - + + @@ -1526,77 +1550,77 @@ opus_packet:e->vorbis_comment:n - - + + vorbis_packet:e->vorbis_comment:n - - + + mp3:e->apev2:n - - + + mp3:e->mp3_frame:n - + mp3:e->id3v2:n - - + + id3v1 - -id3v1 + +id3v1 mp3:e->id3v1:n - - + + id3v11 - -id3v11 + +id3v11 mp3:e->id3v11:n - - + + - + mp3_frame_vbri mp3_frame_vbri - + mp3_frame_tags->mp3_frame_vbri:n - + mp3_frame_xing mp3_frame_xing - + mp3_frame_tags->mp3_frame_xing:n @@ -1610,8 +1634,8 @@ mp4:e->image:n - - + + @@ -1664,8 +1688,8 @@ mp4:e->id3v2:n - - + + @@ -1676,20 +1700,20 @@ mp4:e->icc_profile:n - + mp4:e->av1_ccr:n - - + + mp4:e->mpeg_pes_packet:n - - + + @@ -1700,8 +1724,8 @@ mp4:e->vorbis_packet:n - - + + @@ -1740,8 +1764,8 @@ mp4:e->prores_frame:n - - + + @@ -1754,8 +1778,8 @@ mp4:e->protobuf_widevine:n - - + + @@ -1790,8 +1814,8 @@ mpeg_es:e->vorbis_packet:n - - + + @@ -1820,24 +1844,24 @@ mpeg_pes - -mpeg_pes - -mpeg_pes_packet - -mpeg_spu + +mpeg_pes + +mpeg_pes_packet + +mpeg_spu mpeg_pes:e->mpeg_pes_packet:n - - + + mpeg_pes:e->mpeg_spu:n - - + + @@ -1860,8 +1884,8 @@ ogg:e->vorbis_packet:n - - + + @@ -1878,354 +1902,354 @@ pcap:e->ipv4_packet:n - - + + link_frame - -link_frame + +link_frame pcap:e->link_frame:n - - + + tcp_stream - -tcp_stream + +tcp_stream pcap:e->tcp_stream:n - - + + link_frame->bsd_loopback_frame:n - - + + link_frame->ether8023_frame:n - - + + - + link_frame->ipv4_packet:n - - + + - + link_frame->ipv6_packet:n - - + + sll2_packet - -sll2_packet - -inet_packet + +sll2_packet + +inet_packet - + link_frame->sll2_packet:n - - + + sll_packet - -sll_packet - -inet_packet + +sll_packet + +inet_packet - + link_frame->sll_packet:n - - + + rtmp - -rtmp - -amf0 - -mpeg_asc + +rtmp + +amf0 + +mpeg_asc - + tcp_stream->rtmp:n - - + + tls - -tls - -asn1_ber + +tls + +asn1_ber - + tcp_stream->tls:n - - + + dns_tcp - -dns_tcp + +dns_tcp tcp_stream->dns_tcp:n - - + + pcapng:e->ipv4_packet:n - - + + pcapng:e->link_frame:n - - + + pcapng:e->tcp_stream:n - - + + rtmp:e->mpeg_asc:n - - + + amf0 - -amf0 + +amf0 rtmp:e->amf0:n - - + + sll2_packet:e->inet_packet:n - - + + sll_packet:e->inet_packet:n - - + + tar:e->probe:n - - + + tiff:e->icc_profile:n - - + + asn1_ber - -asn1_ber + +asn1_ber tls:e->asn1_ber:n - - + + udp_payload - -udp_payload + +udp_payload udp_datagram:e->udp_payload:n - - + + dns - -dns + +dns udp_payload->dns:n - - + + wav:e->id3v2:n - - + + wav:e->id3v1:n - - + + wav:e->id3v11:n - - + + webp:e->exif:n - + webp:e->icc_profile:n - + webp:e->vp8_frame:n - - + + webp:e->xml:n - - + + zip:e->probe:n - - + + - + bencode - -bencode + +bencode - + bits - -bits + +bits - + bson - -bson + +bson - + bytes - -bytes + +bytes - + cbor - -cbor + +cbor - + csv - -csv + +csv - + fairplay_spc - -fairplay_spc + +fairplay_spc - + leveldb_descriptor - -leveldb_descriptor + +leveldb_descriptor - + leveldb_log - -leveldb_log + +leveldb_log - + markdown - -markdown + +markdown - + msgpack - -msgpack + +msgpack - + pg_btree - -pg_btree + +pg_btree - + pg_control - -pg_control + +pg_control - + pg_heap - -pg_heap + +pg_heap