If I haven’t REd a codec that doesn’t mean I haven’t looked at them at all.
So today I want to talk a bit about some un-REd codecs and what peculiarities they have.
Looks like that all interesting codecs can be divided into three groups: screen codecs, intermediate codecs and speech codecs.
Since I don’t understand the latter group I shan’t give details on it.
Screen codecs
We have lots of them and they can be divided into two categories: simple and monsters.
Simple codecs usually employ some standard data compression library (zlib, FastLZ, LZO or LZF) or Huffman coding with standard median prediction and interframe difference.
I.e. boring, let’s talk about monsters.
- Windows Media Video 9 Screen (aka MSS2) — combines palettised regions coded like in its predecessor with WMV9-coded regions.
- M$ Expressions Encoder Screen (aka Titanium Screen codec) — it uses variable-length codes and codes frames with one of two methods. One of them is DCT exactly the same as in M$ ATC Screen codec.
- MSU Screen Lossless Codec — this one seems simply code R,G,B values with some arithmetic coder and lots of context modeling and prediction.
- Go2Meeting codecs — a good demonstration of the fact that the best strategy against REing is employing shitty coding monkey.
Version 4 of decoder was monolithic 8 MB .dll file, version 4 is 15 MB already, all in “fine” C++.
There are two compression methods known.
Version 2 employs some weird arithmetic coder substitution (suspiciously like ELS-coder by Wm.D. Withers).
Version 3 employs libjpeg and zlib for coding image blocks somehow, frame data doesn’t look like it at all.
Intermediate codecs
Cineform — looks like they use Huffman coding and wavelets and it codes 10-bit video.
Fruit Intermediate Codec — looks a lot like its successor (ProRes) but with different bitstream format and fixed coding scheme instead of adaptive ones.
BitJazz SheerVideo — the main problem with it is that most of the codec code performs conversion between any of couple dozens of formats (8- and 10-bit YUV and RGB packed in any possible way). Actual decompression code gets lost somewhere.
Nice summary Kostya. Another screen streaming codec of interest is ‘PCoIP’. The bitstream is encapsulated in an AES-128 or Salsa20 tunnel. Its rumoured to combine several algorithms to support lossless/high-frequency regions, and natural video regions.
@Name: that sounds more like remote desktop protocol than codec (i.e. more like full VNC and not VMnc). But if you provide a link I might look at it.
Also M$ ATC Screen uses range coder and models to code solid blocks, images with prediction and even DCT coefficients.