On Some Screen Codecs, including TSCC2

Two days ago I’ve heard about the release of new screen codec from TechSmith. Since TSCC was the first codec I’ve REd (even without looking at decoder) I could not resist and looked at it.

This codec is completely different from its predecessor. While TSCC was simple deflate+RLE, this one operates on blocks. It splits frame into slices 16×8, which are split into 4×4 blocks in YUV 4:4:4 format and 16-240 range. And those blocks are coded with DCT-like transform and quantised with one of two possible quantisers. Pretty easy, isn’t it? Oh, and internally codec is called “Dora”.

And looks like DCT is what some more advanced screen codecs use (and they are usually not lossless anymore).

For example, Micro$oft has about five screen codecs (maybe more):

  1. M$ Camcorder Video (CGDI) — somebody had rather stupid idea “ooh, let’s simply record GDI events and store them into frame”. Including commands for drawing text (and damned be you if your system fonts differ) and such. That’s the reason why we never get a decoder for it.
  2. M$ Screen 1 (WMV 7 Screen, MSS1) — palettised codec that employed classical arithmetic coding and modelling and coded frame by recursive sub-partitioning and pixel prediction for image areas.
  3. M$ Screen 2 (WMV 9 Screen, MSS2) — hybrid codec with enhanced coding method from Screen Codec 1, 16-bit RLE and coding some image areas with WMV 9. (And it was not REd by me BTW).
  4. M$ ATC Screen (MSA1) — internally it’s still known as MSS3. This codec operates in YUV 4:2:0 and uses range coder and modelling for coding macroblocks as solid fill, vector-quantised image, Haar wavelet or DCT.
  5. M$ Expression.Encoder Screen (aka Titanium Screen, MTS2) — this codec uses variable-length codes and only two coding methods left: DCT (exactly as in MSA1) and vector quantising which looks like a mix of MSA1 and MSS1.

I really should end it and move to something else…

6 Responses to “On Some Screen Codecs, including TSCC2”

  1. Peter says:

    It seems screen codecs are now favouring the yuv colorspace. I wonder if thats because software user interfaces now use lots of natural video elements (like fades, blends, soft edges ala aero) and thats what people are recording more of.

  2. compn says:

    i wonder if CDGI can be decoded by utilizing wine library? otherwise i think it is an example of a ‘lost’ codec, one that wont be playable ever again? well maybe it still works in virtualization and win98.

  3. compn says:

    i’d like to figure out this codec, since i cant find any info on it at all.
    http://www28.tok2.com/home/ami/movie/MOVIE001.avi SUVF / 0x46565553, 352×288

  4. Kostya says:

    @compn: at the first glance looks like yet another MJPEG with external Huffman table

  5. ami_stuff says:

    Great work with RE of TSC2, however I have found out that your reimplementation of decoder have some problems with files encoded with less than 100% quality (please look at the bugtracker for the bug report)

    btw. probably this old (lossless) screen codec should be easy to RE:

    http://wiki.multimedia.cx/index.php?title=LEAD_Screen_Capture

  6. Kostya says:

    @ami_stuff
    working on TSC2 bugfixing
    As for LEAD Screen — probably it’s harder to find decoder and samples.