Archive for the ‘Screen Codecs’ Category

A Work for the Weekend

Tuesday, September 5th, 2006

I got free Monday so I decided to spend some time on any small codec and took VMware codec used by VMware emulator to capture screen output. As Alex discovered, this is merely recorded session of RFB protocol (used in VNC applications) but slightly mangled.
My further investigation show that bytes 1-2 in big-endian order contain number of rectangles updated and if that value is equal to 8 then the first chunk is ServerInitialization struct with marker ‘WMVi’ inserted before pixel format data. Otherwise frame may contain one or several FramebufferUpdate messages with standard HexTile encoding.
I’ve committed decoder to FFmpeg and I hope to find more samples and clarify some details about it (there are seven markers from ‘WMVd’ to ‘WMVh’ but what they mark is known only for ‘WMVi’, palette mode is not tested too).
OOPS, I’ve just discovered three more samples at MPHQ and they are not decoded correctly, so I have some more work to do.

DosBox

Saturday, March 4th, 2006

I think there is no need to introduce DosBox. And to make it even more usable DosBox developer niknamed Harekiet added screen output recording capability with his own codec ZMBV – Zip Motion Blocks Video.

This codec employs intraframes and motion compensation (and XOR’ing instead of substracting/adding difference). ZLib is used for packing. For more detailed description go
here
.

For now, 8-bit, 16-bit and 32-bit depths are supported by codec as for recording. And FFmpeg decoder is already available – I could not miss that codec and not port it.

VMWare Codec

Thursday, October 13th, 2005

Recent VMWare virtual machines are able to capture their screen output and store it into AVI packed with their own codec. A quick study showed that this codec stores captured image in special type blocks, most of them are labeled WMVx (maybe VMW spelled backwards, but who knows 😉 ). Every block type has its own function to handle it. Blocks with labels WMVi or 0x00000005 can be found in almost every frame.