[XviD-devel] patch: new(er) colorspace stuff

peter ross xvid-devel@xvid.org
Sun, 03 Nov 2002 16:12:21 +1100


This is a multi-part message in MIME format.

------=_NextPart_000_22d3_1645_102e
Content-Type: text/plain; format=flowed

hi,

ive just committed the new assembly colorspace asm. its not activated
yet, because i'd like someone with a extended mmx capable box to
test the code (specifically non mod16 material, and yv12->yv12).
please perform an encoding/decoding using your favorite colorspace,
and report back any success/problems. ive tested it thoroughly.

apply the attached diff to activate the new routines.

important api changes are:
* the inclusion of XVID_ENC_FRAME->stride
* XVID_ENC_FRAME->stride and XVID_DEC_STRIDE->stride now refer to
  the number of bytes per image-row.

notes:
* changes to vfw and dshow have also been commited, but commented
  out. search for 'stride' in vfw/src/codec.c or dshow/src/CXvidDecoder.cpp)
* examples have not been updated.

-- pete


_________________________________________________________________
Broadband? Dial-up? Get reliable MSN Internet Access. 
http://resourcecenter.msn.com/access/plans/default.asp

------=_NextPart_000_22d3_1645_102e
Content-Type: application/x-gzip-compressed; name="colorspace.diff.gz"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="colorspace.diff.gz"

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
5M8hEo8fPrkAI/0GKHuWKzCO2gn4fTjFT06myzaOFlPy5+Rwegu9QkuSV5DI
4t2NcGe3+FkLn3UuxymB7qaGpXSWY/y44C+iAPfSTqm30nc+JUCv1Ofy+PWU
iEVOWKzfi8r0fPUhU5oDegyPVXlBWqh5D8EksUEPXZ+Y9bYpUzwV2VFs2wtx
Ozz11GODZGzvgWmB9yvNq6zYSd8qKzaZnsPTmJMhGjMCDJHhFzrQNvHf1XlC
a56gdbhCqy7QQ/BFZ4rQNSpf0PfHGEuP6ccc2tv2onwifyP4ACw7OCg3Dybi
IdKfapPlreIfp1Oj6W2Qk6JzBrTNVneGa9Fup5Y97NSVUyJpTgzj/HrIuhWH
2ftbt52pWt3PurVZtuWjZbuyZQvSQ31+U5W5ZKg3jd5V8eOj7fpouz7arl/U
di0fbVfVEikfbVfTdi0fbVe37Vp+l7arcr8EPXT3y3/Tg6UvwRUT+vE7ZsgJ
K+6HHwjoDz8Ydhw9rSr3TgJLDpTotpytZOksabUSxZzT3g8un1ALmEm3oT3l
Vl33+B+8VNp2hIKan8zGa4D69PIj/Ynt8w0DOGQIsjwHwhrk9XvZgxw2aA3q
cG57EEBKi5A9fO82CregUUiY8N5hGcp8AL0sRA3UaiVChP1sRQHergbutxgh
GXazEbb9jn9i1vWw3kC/0ozNITQ1ISvU7At+44+2ZygsP4FC2H4aJo8RqEN1
Ni9E8N5mJWpvUKxFrcywGNXigOEIIA3j0UKk23JSSCKzCV0MR2I1HJgUBxNJ
sbu2c2IE1Re+l9snR1Abqwm6czYi5/d1VpPClBUiayFihZlRSG+SpZptP6Mm
67uMgbIbWt5rptnGxvfKe57mxisCDuOVBIdZQSC8xsPJBX1LgkHeUYG8wwKt
MC6QZ2Cg71wCPcYG6jM40OqjA4WHh1M63PZH4LKp99qKwVJ2p1CkrR+0IqSX
vbcuIwxjC6ll752rCVDa+krv+BextLAsJ+hJbpKx4jA+iRcxyWbDHOc5Soi7
nNwrzxzb9soZPWLOKteWyrW7NjmFH0e4dh3T+nrtOvTumtZe4LqH5rvpXfeq
Sx5sWtKjAmBjvWUfsbw+0uUUjxxO8cjlFI9cTvHI5RSPrE7xyO4UD2y1t+1Y
lMTzZcr0gbbXf5JdFZ/O8yxXB30dzq5UzV3Eh+WJ6b+ryQbs3M9kA7bGehyJ
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
Xa36qxmq/wdd0yLX2E8BAA==


------=_NextPart_000_22d3_1645_102e--