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 08:53:05 +0000 (09:53 +0100)
commit10639eb88972bf89656af694b8bf8c4b41255c69
tree1ffdadec021fa53d59c3009b581d19c6947b8da6
parentfa2a526f04b1f51201fbb837fa430f93609938e8
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