[theora-dev] Macroblock Coding Issues

Mike Melanson melanson at pcisys.net
Mon May 5 08:51:28 PDT 2003

        So I have almost completed a new VP3 decoder implementation. In
the course of doing so, I have encountered something odd about macroblock

        As a quick overview, VP3 has a notion of fragments (8x8 pixels)
and superblocks (32x32 pixels, 4x4 fragments). These apply to each
individual plane (e.g., a 64x64 video will have 4 Y superblocks and 1+1 C
superblocks, 64 Y fragments and 16+16 C fragments). VP3 also has a notion
of macroblocks which are the same as MPEG. I.e., 1 macroblock encompasses
4 Y fragments and 1+1 C fragments.

        IOW, 1 macroblock applies to all 3 planes, whereas one fragment or
superblock applies to 1 and only 1 plane. The confusion comes in the fact
that when VP3 initializes, it allocates enough space for macroblocks to
cover each of the 3 planes (notion that macroblock applies to 1 plane).

        When VP3 is unpacking the block coding information and discovers
that a particular fragment is coded, it sets the "macroblock coded" flag
corresponding to that fragment. It does this for the C planes as well,
using space allocated for the C macroblock arrays, even though a C plane
should match up with a Y plane macroblock.

        However, when unpacking coding modes and motion vectors, VP3 only
uses the first segment of "MB coded" flags (for the Y plane) and marks the
C plane fragments according to those flags.

        This strikes me as a discrepancy in the VP3 coding method and
possibly even a bug. Any clarifications?


	-Mike Melanson

--- >8 ----
List archives:  http://www.xiph.org/archives/
Ogg project homepage: http://www.xiph.org/ogg/
To unsubscribe from this list, send a message to 'theora-dev-request at xiph.org'
containing only the word 'unsubscribe' in the body.  No subject is needed.
Unsubscribe messages sent to the list will be ignored/filtered.

More information about the Theora-dev mailing list