[Mp4-tech] [video] interlaced chrominance bug in MS reference?
Sven.Siggelkow sci-worx.com
Sven.Siggelkow sci-worx.com
Wed Feb 2 11:53:09 ESTEDT 2005
Hi there,
I'm wondering whether we've found a bug in the MS reference SW which is
not reported yet in "list of problems" (n6363 version). The chrominance
MV calculation in case of interlaced involves div2round which is clearly
defined in the standard:
Div2Round(x) = (x >> 1) | (x & 1) )
However the MS reference SW (microsoft-v2.5-040207-NTU) seems to run
through another implementation in mc.cpp mvLookupUV:
xRefUV1 = ((dx & 3) ? ((dx >> 1) | 1) : (dx>>1));
yRefUV1 = ((dy & 6) ? ((dy >> 1) | 2) : (dy>>1));
Probably the vertical has its own factor 2 treatment but looking at the
following example it is illogical, e.g. a value of 2 would become 3,
i.e. BIGGER after this function:
MS "x" implementation looks ok
halfpel vectors: x00 -> x0
x01 -> x1
x10 -> x1
x11 -> x1
MS "y" implementation is strange
halfpel vectors: x00x -> x00
x01x -> x11 <= THIS SEEMS WRONG I'D ASSUME x10 !
x10x -> x10
x11x -> x11
--
Dr. Sven Siggelkow
Senior Design Engineer
More information about the Mp4-tech
mailing list