-
-
Notifications
You must be signed in to change notification settings - Fork 0
Home
Brendan G Bohannon edited this page Dec 10, 2021
·
14 revisions
Welcome to the bgbtech_misc wiki!
Mostly still familiarizing myself with all this.
BTIC1x Family Codecs:
-
BTIC1G
- Older/Simpler byte-oriented low-complexity incremental codec.
- Main use case is streaming video from robots.
- It is more intended for low complexity rather than bitrate or quality.
- It is mostly intended for incremental video streaming from ARM-based robot controllers.
-
BTIC1H
- Intended as a reasonably low-complexity image/video codec for fast encode/decode.
- It isn't intended for the best possible bitrate or image quality.
- It was originally mostly intended as a replacement for BTIC1G in the same basic use-case.
- However, the design seems to also work passably for screen-capture and other things.
-
BTIC4B
- Similar in premise to BTIC1H, but uses 8x8 blocks.
- This reduces per-block overhead, allowing for higher speeds than BTIC1H.
- May achieve speeds high enough for 4K decoding in a single CPU thread on a modern CPU.
- In some cases may also achieve high enough throughput to encode 4K in faster than real time (multithread).
-
BTIC5A
- Experimental "extra lightweight" codec (byte-based).
- Conceptually Similar in premise to MS-CRAM, but gets better compression.
- Uses a dynamic index-color palette.
- Optional LZ post-compressor stage (RP2).
-
BTIC5B
- Intended to improve quality over BTIC5A, while still being fairly lightweight.
- Replaces the palette with differential encodings within the RGB555 space.
- Still uses a byte-oriented design, but switches over to using a pattern table and differential endpoints.
- Intent is to be usable for video playback on a 50MHz BJX2 core or similar.
- This was a problem for 1H and 4B, which were a bit heavyweight for this.
- Single-threaded decode speeds on my PC can reach into Gpx/s territory.
- Optional LZ post-compressor stage (RP2 or ULZ).
- Intended to improve quality over BTIC5A, while still being fairly lightweight.
-
BTAC1C
- Modified MS-IMA-ADPCM
- Generally fairly effective.
- Adds predictive filters to allow improved audio quality.
- Adds a joint-stereo mode to allow stereo at lower bitrates than normal ADPCM.
-
BTAC2B
- Possible fancier design (update: never did anything with this).
- BTLZA / BTLZH
- An extended form of Deflate supporting larger windows and matches.
- It is a backwards-compatible binary superset of Deflate.
- It was intended as a compromise between Deflate and LZMA.
- Speed closer to Deflate, but compression closer to LZMA.
- Thus far mostly used in Huffman only mode (BTLZH).
- Conceptually, which term is used depends on whether or not AC is used.
-
FeLZ32
- Speed oriented DWORD-based LZ77 format.
- Can have a faster decode speed than LZ4 at the expense of worse compression.
- The cost to compression depends a bit on payload, generally with binary formats faring better.
- Intended mostly for use-cases where encode/decode needs to happen quickly.
-
BtRP2
- RP2 is a simple Byte-Oriented LZ77 format.
- It is able to (typically) get slightly better compression at similar decode speeds if compared with LZ4.
-
TKuLZ
- Intended to be a relatively simple and fast Huffman coded LZ77 variant.
- It aims to be simpler and faster to decode than Deflate based designs.
- It limits symbols to 12 bits, which is good for speed at a slight cost to compression.