Final info about WMV3/VC-1 variants.

Known fourccs:

  • WMV3
  • WMVP
  • WVP2
  • WMVA
  • WVC1

Known meaning of flags:

  • RES_SM: really that’s two flags, RES_SM&2 indicated 411 interlaced mode and RES_SM&1 indicates sprite mode(or so it seems). These flags are mostly used by WMVP and WVP2
  • RES_X8: I-frames may be packed with X8 algo. This also means that each I-frame has additional bit in frame header signalling if current frame should be encoded with X8 or with standard encoding scheme. Used in WMV3 Complex Profile.
  • RES_FASTTX: still unknown, somehow interferes with motion compensation (at least it does not affect bitstream)
  • RES_TRANSTAB: each macroblock should have its own DC/AC table index, not one global stored in the frame header.
  • RES_RTM: Old version of WMV3 with different P-frame coding mode

X8 frames use their own Huffman codes (code lengths are stored as nibbles somewhere in bitstream) and also blocks looks like to be decoded in this way:

for(y=0;y

for(x=0;x< mb_width*2;x++){

decode luma block

if( x & y & 1)

decode both chroma blocks

}

}

2 Responses to “Final info about WMV3/VC-1 variants.”

  1. matteo says:

    what movie is this http://www.jhepple.com/SampleMovies/niceday.wmv?
    Why your decoder can’t play this? is some weir 4CC you said before?

  2. Kostya says:

    It is RES_RTM case – old WMV3 with unknown (for now) P-frame coding mode. I’ll RE it when I have enough time.