[FFmpeg-devel] [PATCH] RV40 Decoder - 2/3 - MC functions

Michael Niedermayer michaelni
Thu Nov 27 21:14:48 CET 2008


On Thu, Nov 27, 2008 at 09:25:08AM +0200, Kostya wrote:
> $subj
> 
> I've decided not to taint H.264 chroma MC with the idiocy from RV40,
> so here are all functions in a single file.

[...]
> #define RV40_LOWPASS(OPNAME, OP) \
> static av_unused void OPNAME ## rv40_qpel8_h_lowpass(uint8_t *dst, uint8_t *src, int dstStride, int srcStride,\
>                                                      const int h, const int C1, const int C2, const int C3){\
>     uint8_t *cm = ff_cropTbl + MAX_NEG_CROP;\
>     int i;\
>     for(i=0; i<h; i++)\
>     {\
>         OP(dst[0], (src[-2] + src[ 3] - 5*(src[-1]+src[2]) + src[0]*C1 + src[1]*C2 + (1<<(C3-1))) >> C3);\
>         OP(dst[1], (src[-1] + src[ 4] - 5*(src[ 0]+src[3]) + src[1]*C1 + src[2]*C2 + (1<<(C3-1))) >> C3);\
>         OP(dst[2], (src[ 0] + src[ 5] - 5*(src[ 1]+src[4]) + src[2]*C1 + src[3]*C2 + (1<<(C3-1))) >> C3);\
>         OP(dst[3], (src[ 1] + src[ 6] - 5*(src[ 2]+src[5]) + src[3]*C1 + src[4]*C2 + (1<<(C3-1))) >> C3);\
>         OP(dst[4], (src[ 2] + src[ 7] - 5*(src[ 3]+src[6]) + src[4]*C1 + src[5]*C2 + (1<<(C3-1))) >> C3);\
>         OP(dst[5], (src[ 3] + src[ 8] - 5*(src[ 4]+src[7]) + src[5]*C1 + src[6]*C2 + (1<<(C3-1))) >> C3);\
>         OP(dst[6], (src[ 4] + src[ 9] - 5*(src[ 5]+src[8]) + src[6]*C1 + src[7]*C2 + (1<<(C3-1))) >> C3);\
>         OP(dst[7], (src[ 5] + src[10] - 5*(src[ 6]+src[9]) + src[7]*C1 + src[8]*C2 + (1<<(C3-1))) >> C3);\
>         dst+=dstStride;\
>         src+=srcStride;\
>     }\
> }\

please rename C3 to SHIFT or something like that
also in the other functions ...

[...]


> \
> static void OPNAME ## rv40_qpel8_hv_lowpass(uint8_t *dst, uint8_t *src, int dstStride, int srcStride){\
>     const int h=8;\
>     uint8_t *cm = ff_cropTbl + MAX_NEG_CROP;\
>     int i;\
>     for(i=0; i<h; i++)\
>     {\
>         OP(dst[0], (src[0] + src[1] + src[0 + srcStride] + src[1 + srcStride] + 2) >> 2);\
>         OP(dst[1], (src[1] + src[2] + src[1 + srcStride] + src[2 + srcStride] + 2) >> 2);\
>         OP(dst[2], (src[2] + src[3] + src[2 + srcStride] + src[3 + srcStride] + 2) >> 2);\
>         OP(dst[3], (src[3] + src[4] + src[3 + srcStride] + src[4 + srcStride] + 2) >> 2);\
>         OP(dst[4], (src[4] + src[5] + src[4 + srcStride] + src[5 + srcStride] + 2) >> 2);\
>         OP(dst[5], (src[5] + src[6] + src[5 + srcStride] + src[6 + srcStride] + 2) >> 2);\
>         OP(dst[6], (src[6] + src[7] + src[6 + srcStride] + src[7 + srcStride] + 2) >> 2);\
>         OP(dst[7], (src[7] + src[8] + src[7 + srcStride] + src[8 + srcStride] + 2) >> 2);\
>         dst+=dstStride;\
>         src+=srcStride;\
>     }\
> }\

duplicate of the hv code from mpeg1/2 ...


[...]
-- 
Michael     GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB

When you are offended at any man's fault, turn to yourself and study your
own failings. Then you will forget your anger. -- Epictetus
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: Digital signature
URL: <http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/attachments/20081127/4a262329/attachment.pgp>



More information about the ffmpeg-devel mailing list