codecparsers: vc1: fix bitplanes decoding (DIFF6 or NORM6 residual bytes).
authorGwenole Beauchesne <gwenole.beauchesne@intel.com>
Thu, 24 Jan 2013 17:14:28 +0000 (18:14 +0100)
committerGwenole Beauchesne <gwenole.beauchesne@intel.com>
Fri, 25 Jan 2013 09:28:15 +0000 (10:28 +0100)
commitaeb898b4777feb736cace4971c199304f84880ba
treefbe042246d3afcd1f4c764b2d5ca94b75a5e81f0
parent63e3344ac5e1970202ab153c9bffd899c1b9cd76
codecparsers: vc1: fix bitplanes decoding (DIFF6 or NORM6 residual bytes).

Fix parsing of residual bytes. This is a two-step process. First,
remaining colums of full vertical resolution (<height>) need to be
processed. Next, remaining bytes in the first row can be processed,
while taking into account the fact that we may have filled in the
first columns already. So, this is not full horizontal resolution.

The following figure helps in understanding the expected order of
operations, for a 8x5 MBs bitplane.

    5 5 6 6 6 6 6 6
    5 5 1 1 1 2 2 2
    5 5 1 1 1 2 2 2
    5 5 3 3 3 4 4 4
    5 5 3 3 3 4 4 4

So, after tiles 1 to 4 are decoded, vertical tile 5 needs to be
processed (2x5 MBs) and then the horizontal tile 6 (6x1 MBs).

https://bugzilla.gnome.org/show_bug.cgi?id=692461

Signed-off-by: Gwenole Beauchesne <gwenole.beauchesne@intel.com>
gst-libs/gst/codecparsers/gstvc1parser.c