gzip is a stream protocol, with bounded state
on
Gzip on a PCI card
·
· Score: 1
from memory, gzip takes in a byte at a time, and outputs a bitstream of huffman-like variable width tokens. As each input token (0..255 and EOF (say 256)) is applied to the engine sequentially, it is possibly replaced by a compound output token (numbered 257...2^N-1) encoding an already-seen sequence (old-output-token, new-input-token).
The 32KB blocking is mainly to simplify resync, IIRC.
There is *no* lookahead in gzip, just that one pending output token, and memory of past input.
Bzip2 OTOH analyzes the entire block (default 900kB) before outputting a single bit, and thus can do a better job with changing pattern space.
Go explore gzip and friends -- they're beautiful. The trick is to modify the encoder's state (learning a better encoding for a sequence) only *after* that token has been emitted, so the decoder learns exactly the same lesson as the encoder has, just by watching the token stream. No metadata has to be passed between the machines.
*Really* simple in hardware (for sufficiently complex values of 'simple')
I've been meaning to try this for months. this discussion prodded me to re-find a good discussion of vga-->tv converters. See... http://www.sput.webster.nl/hardware/tv-x.html
again, it's to the european SCART RGB input, but i recall (probably incorrectly) that the signal levels therein are pretty well universal, it's just a matter of digging inside your tv for the right place to inject them -- the rgb+sync typically originate on a generic tuner/decoder board + run to a tube-specific deflection board. but you might have to go back a few years in teev technology to the sort which actually have separate boards -- look for marked r/g/b/hsync/vsync test points
from memory, gzip takes in a byte at a time, and outputs a bitstream of huffman-like variable width tokens. As each input token (0..255 and EOF (say 256)) is applied to the engine sequentially, it is possibly replaced by a compound output token (numbered 257...2^N-1) encoding an already-seen sequence (old-output-token, new-input-token).
The 32KB blocking is mainly to simplify resync, IIRC.
There is *no* lookahead in gzip, just that one pending output token, and memory of past input.
Bzip2 OTOH analyzes the entire block (default 900kB) before outputting a single bit, and thus can do a better job with changing pattern space.
Go explore gzip and friends -- they're beautiful.
The trick is to modify the encoder's state (learning a better encoding for a sequence) only *after* that token has been emitted, so the decoder learns exactly the same lesson as the encoder has, just by watching the token stream.
No metadata has to be passed between the machines.
*Really* simple in hardware (for sufficiently complex values of 'simple')
I've been meaning to try this for months. ...
this discussion prodded me to re-find a good discussion of vga-->tv converters. See
http://www.sput.webster.nl/hardware/tv-x.html
again, it's to the european SCART RGB input, but i recall (probably incorrectly) that the signal levels therein are pretty well universal, it's just a matter of digging inside your tv for the right place to inject them -- the rgb+sync typically originate on a generic tuner/decoder board + run to a tube-specific deflection board.
but you might have to go back a few years in teev technology to the sort which actually have separate boards -- look for marked r/g/b/hsync/vsync test points