annotate rv40dsp.c @ 12530:63edd10ad4bc libavcodec tip

Try to fix crashes introduced by r25218 r25218 made assumptions about the existence of past reference frames that weren't necessarily true.
author darkshikari
date Tue, 28 Sep 2010 09:06:22 +0000
parents 7dd2a45249a9
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
8232
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
1 /*
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
2 * RV40 decoder motion compensation functions
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
3 * Copyright (c) 2008 Konstantin Shishkov
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
4 *
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
5 * This file is part of FFmpeg.
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
6 *
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
7 * FFmpeg is free software; you can redistribute it and/or
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
8 * modify it under the terms of the GNU Lesser General Public
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
9 * License as published by the Free Software Foundation; either
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
10 * version 2.1 of the License, or (at your option) any later version.
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
11 *
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
12 * FFmpeg is distributed in the hope that it will be useful,
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
15 * Lesser General Public License for more details.
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
16 *
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
17 * You should have received a copy of the GNU Lesser General Public
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
18 * License along with FFmpeg; if not, write to the Free Software
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
19 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
20 */
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
21
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
22 /**
11644
7dd2a45249a9 Remove explicit filename from Doxygen @file commands.
diego
parents: 8718
diff changeset
23 * @file
8232
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
24 * RV40 decoder motion compensation functions
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
25 */
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
26
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
27 #include "avcodec.h"
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
28 #include "dsputil.h"
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
29
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
30 #define RV40_LOWPASS(OPNAME, OP) \
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
31 static av_unused void OPNAME ## rv40_qpel8_h_lowpass(uint8_t *dst, uint8_t *src, int dstStride, int srcStride,\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
32 const int h, const int C1, const int C2, const int SHIFT){\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
33 uint8_t *cm = ff_cropTbl + MAX_NEG_CROP;\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
34 int i;\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
35 for(i=0; i<h; i++)\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
36 {\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
37 OP(dst[0], (src[-2] + src[ 3] - 5*(src[-1]+src[2]) + src[0]*C1 + src[1]*C2 + (1<<(SHIFT-1))) >> SHIFT);\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
38 OP(dst[1], (src[-1] + src[ 4] - 5*(src[ 0]+src[3]) + src[1]*C1 + src[2]*C2 + (1<<(SHIFT-1))) >> SHIFT);\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
39 OP(dst[2], (src[ 0] + src[ 5] - 5*(src[ 1]+src[4]) + src[2]*C1 + src[3]*C2 + (1<<(SHIFT-1))) >> SHIFT);\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
40 OP(dst[3], (src[ 1] + src[ 6] - 5*(src[ 2]+src[5]) + src[3]*C1 + src[4]*C2 + (1<<(SHIFT-1))) >> SHIFT);\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
41 OP(dst[4], (src[ 2] + src[ 7] - 5*(src[ 3]+src[6]) + src[4]*C1 + src[5]*C2 + (1<<(SHIFT-1))) >> SHIFT);\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
42 OP(dst[5], (src[ 3] + src[ 8] - 5*(src[ 4]+src[7]) + src[5]*C1 + src[6]*C2 + (1<<(SHIFT-1))) >> SHIFT);\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
43 OP(dst[6], (src[ 4] + src[ 9] - 5*(src[ 5]+src[8]) + src[6]*C1 + src[7]*C2 + (1<<(SHIFT-1))) >> SHIFT);\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
44 OP(dst[7], (src[ 5] + src[10] - 5*(src[ 6]+src[9]) + src[7]*C1 + src[8]*C2 + (1<<(SHIFT-1))) >> SHIFT);\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
45 dst+=dstStride;\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
46 src+=srcStride;\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
47 }\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
48 }\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
49 \
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
50 static void OPNAME ## rv40_qpel8_v_lowpass(uint8_t *dst, uint8_t *src, int dstStride, int srcStride,\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
51 const int w, const int C1, const int C2, const int SHIFT){\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
52 uint8_t *cm = ff_cropTbl + MAX_NEG_CROP;\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
53 int i;\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
54 for(i=0; i<w; i++)\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
55 {\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
56 const int srcB = src[-2*srcStride];\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
57 const int srcA = src[-1*srcStride];\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
58 const int src0 = src[0 *srcStride];\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
59 const int src1 = src[1 *srcStride];\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
60 const int src2 = src[2 *srcStride];\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
61 const int src3 = src[3 *srcStride];\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
62 const int src4 = src[4 *srcStride];\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
63 const int src5 = src[5 *srcStride];\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
64 const int src6 = src[6 *srcStride];\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
65 const int src7 = src[7 *srcStride];\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
66 const int src8 = src[8 *srcStride];\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
67 const int src9 = src[9 *srcStride];\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
68 const int src10= src[10*srcStride];\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
69 OP(dst[0*dstStride], (srcB + src3 - 5*(srcA+src2) + src0*C1 + src1*C2 + (1<<(SHIFT-1))) >> SHIFT);\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
70 OP(dst[1*dstStride], (srcA + src4 - 5*(src0+src3) + src1*C1 + src2*C2 + (1<<(SHIFT-1))) >> SHIFT);\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
71 OP(dst[2*dstStride], (src0 + src5 - 5*(src1+src4) + src2*C1 + src3*C2 + (1<<(SHIFT-1))) >> SHIFT);\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
72 OP(dst[3*dstStride], (src1 + src6 - 5*(src2+src5) + src3*C1 + src4*C2 + (1<<(SHIFT-1))) >> SHIFT);\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
73 OP(dst[4*dstStride], (src2 + src7 - 5*(src3+src6) + src4*C1 + src5*C2 + (1<<(SHIFT-1))) >> SHIFT);\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
74 OP(dst[5*dstStride], (src3 + src8 - 5*(src4+src7) + src5*C1 + src6*C2 + (1<<(SHIFT-1))) >> SHIFT);\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
75 OP(dst[6*dstStride], (src4 + src9 - 5*(src5+src8) + src6*C1 + src7*C2 + (1<<(SHIFT-1))) >> SHIFT);\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
76 OP(dst[7*dstStride], (src5 + src10 - 5*(src6+src9) + src7*C1 + src8*C2 + (1<<(SHIFT-1))) >> SHIFT);\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
77 dst++;\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
78 src++;\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
79 }\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
80 }\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
81 \
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
82 static void OPNAME ## rv40_qpel16_v_lowpass(uint8_t *dst, uint8_t *src, int dstStride, int srcStride,\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
83 const int w, const int C1, const int C2, const int SHIFT){\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
84 OPNAME ## rv40_qpel8_v_lowpass(dst , src , dstStride, srcStride, 8, C1, C2, SHIFT);\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
85 OPNAME ## rv40_qpel8_v_lowpass(dst+8, src+8, dstStride, srcStride, 8, C1, C2, SHIFT);\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
86 src += 8*srcStride;\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
87 dst += 8*dstStride;\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
88 OPNAME ## rv40_qpel8_v_lowpass(dst , src , dstStride, srcStride, w-8, C1, C2, SHIFT);\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
89 OPNAME ## rv40_qpel8_v_lowpass(dst+8, src+8, dstStride, srcStride, w-8, C1, C2, SHIFT);\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
90 }\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
91 \
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
92 static void OPNAME ## rv40_qpel16_h_lowpass(uint8_t *dst, uint8_t *src, int dstStride, int srcStride,\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
93 const int h, const int C1, const int C2, const int SHIFT){\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
94 OPNAME ## rv40_qpel8_h_lowpass(dst , src , dstStride, srcStride, 8, C1, C2, SHIFT);\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
95 OPNAME ## rv40_qpel8_h_lowpass(dst+8, src+8, dstStride, srcStride, 8, C1, C2, SHIFT);\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
96 src += 8*srcStride;\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
97 dst += 8*dstStride;\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
98 OPNAME ## rv40_qpel8_h_lowpass(dst , src , dstStride, srcStride, h-8, C1, C2, SHIFT);\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
99 OPNAME ## rv40_qpel8_h_lowpass(dst+8, src+8, dstStride, srcStride, h-8, C1, C2, SHIFT);\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
100 }\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
101 \
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
102
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
103 #define RV40_MC(OPNAME, SIZE) \
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
104 static void OPNAME ## rv40_qpel ## SIZE ## _mc10_c(uint8_t *dst, uint8_t *src, int stride){\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
105 OPNAME ## rv40_qpel ## SIZE ## _h_lowpass(dst, src, stride, stride, SIZE, 52, 20, 6);\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
106 }\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
107 \
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
108 static void OPNAME ## rv40_qpel ## SIZE ## _mc20_c(uint8_t *dst, uint8_t *src, int stride){\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
109 OPNAME ## rv40_qpel ## SIZE ## _h_lowpass(dst, src, stride, stride, SIZE, 20, 20, 5);\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
110 }\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
111 \
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
112 static void OPNAME ## rv40_qpel ## SIZE ## _mc30_c(uint8_t *dst, uint8_t *src, int stride){\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
113 OPNAME ## rv40_qpel ## SIZE ## _h_lowpass(dst, src, stride, stride, SIZE, 20, 52, 6);\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
114 }\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
115 \
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
116 static void OPNAME ## rv40_qpel ## SIZE ## _mc01_c(uint8_t *dst, uint8_t *src, int stride){\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
117 OPNAME ## rv40_qpel ## SIZE ## _v_lowpass(dst, src, stride, stride, SIZE, 52, 20, 6);\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
118 }\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
119 \
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
120 static void OPNAME ## rv40_qpel ## SIZE ## _mc11_c(uint8_t *dst, uint8_t *src, int stride){\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
121 uint8_t full[SIZE*(SIZE+5)];\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
122 uint8_t * const full_mid= full + SIZE*2;\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
123 put_rv40_qpel ## SIZE ## _h_lowpass(full, src - 2*stride, SIZE, stride, SIZE+5, 52, 20, 6);\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
124 OPNAME ## rv40_qpel ## SIZE ## _v_lowpass(dst, full_mid, stride, SIZE, SIZE, 52, 20, 6);\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
125 }\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
126 \
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
127 static void OPNAME ## rv40_qpel ## SIZE ## _mc21_c(uint8_t *dst, uint8_t *src, int stride){\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
128 uint8_t full[SIZE*(SIZE+5)];\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
129 uint8_t * const full_mid= full + SIZE*2;\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
130 put_rv40_qpel ## SIZE ## _h_lowpass(full, src - 2*stride, SIZE, stride, SIZE+5, 20, 20, 5);\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
131 OPNAME ## rv40_qpel ## SIZE ## _v_lowpass(dst, full_mid, stride, SIZE, SIZE, 52, 20, 6);\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
132 }\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
133 \
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
134 static void OPNAME ## rv40_qpel ## SIZE ## _mc31_c(uint8_t *dst, uint8_t *src, int stride){\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
135 uint8_t full[SIZE*(SIZE+5)];\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
136 uint8_t * const full_mid= full + SIZE*2;\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
137 put_rv40_qpel ## SIZE ## _h_lowpass(full, src - 2*stride, SIZE, stride, SIZE+5, 20, 52, 6);\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
138 OPNAME ## rv40_qpel ## SIZE ## _v_lowpass(dst, full_mid, stride, SIZE, SIZE, 52, 20, 6);\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
139 }\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
140 \
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
141 static void OPNAME ## rv40_qpel ## SIZE ## _mc02_c(uint8_t *dst, uint8_t *src, int stride){\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
142 OPNAME ## rv40_qpel ## SIZE ## _v_lowpass(dst, src, stride, stride, SIZE, 20, 20, 5);\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
143 }\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
144 \
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
145 static void OPNAME ## rv40_qpel ## SIZE ## _mc12_c(uint8_t *dst, uint8_t *src, int stride){\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
146 uint8_t full[SIZE*(SIZE+5)];\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
147 uint8_t * const full_mid= full + SIZE*2;\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
148 put_rv40_qpel ## SIZE ## _h_lowpass(full, src - 2*stride, SIZE, stride, SIZE+5, 52, 20, 6);\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
149 OPNAME ## rv40_qpel ## SIZE ## _v_lowpass(dst, full_mid, stride, SIZE, SIZE, 20, 20, 5);\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
150 }\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
151 \
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
152 static void OPNAME ## rv40_qpel ## SIZE ## _mc22_c(uint8_t *dst, uint8_t *src, int stride){\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
153 uint8_t full[SIZE*(SIZE+5)];\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
154 uint8_t * const full_mid= full + SIZE*2;\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
155 put_rv40_qpel ## SIZE ## _h_lowpass(full, src - 2*stride, SIZE, stride, SIZE+5, 20, 20, 5);\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
156 OPNAME ## rv40_qpel ## SIZE ## _v_lowpass(dst, full_mid, stride, SIZE, SIZE, 20, 20, 5);\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
157 }\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
158 \
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
159 static void OPNAME ## rv40_qpel ## SIZE ## _mc32_c(uint8_t *dst, uint8_t *src, int stride){\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
160 uint8_t full[SIZE*(SIZE+5)];\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
161 uint8_t * const full_mid= full + SIZE*2;\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
162 put_rv40_qpel ## SIZE ## _h_lowpass(full, src - 2*stride, SIZE, stride, SIZE+5, 20, 52, 6);\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
163 OPNAME ## rv40_qpel ## SIZE ## _v_lowpass(dst, full_mid, stride, SIZE, SIZE, 20, 20, 5);\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
164 }\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
165 \
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
166 static void OPNAME ## rv40_qpel ## SIZE ## _mc03_c(uint8_t *dst, uint8_t *src, int stride){\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
167 OPNAME ## rv40_qpel ## SIZE ## _v_lowpass(dst, src, stride, stride, SIZE, 20, 52, 6);\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
168 }\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
169 \
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
170 static void OPNAME ## rv40_qpel ## SIZE ## _mc13_c(uint8_t *dst, uint8_t *src, int stride){\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
171 uint8_t full[SIZE*(SIZE+5)];\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
172 uint8_t * const full_mid= full + SIZE*2;\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
173 put_rv40_qpel ## SIZE ## _h_lowpass(full, src - 2*stride, SIZE, stride, SIZE+5, 52, 20, 6);\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
174 OPNAME ## rv40_qpel ## SIZE ## _v_lowpass(dst, full_mid, stride, SIZE, SIZE, 20, 52, 6);\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
175 }\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
176 \
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
177 static void OPNAME ## rv40_qpel ## SIZE ## _mc23_c(uint8_t *dst, uint8_t *src, int stride){\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
178 uint8_t full[SIZE*(SIZE+5)];\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
179 uint8_t * const full_mid= full + SIZE*2;\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
180 put_rv40_qpel ## SIZE ## _h_lowpass(full, src - 2*stride, SIZE, stride, SIZE+5, 20, 20, 5);\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
181 OPNAME ## rv40_qpel ## SIZE ## _v_lowpass(dst, full_mid, stride, SIZE, SIZE, 20, 52, 6);\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
182 }\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
183 \
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
184
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
185 #define op_avg(a, b) a = (((a)+cm[b]+1)>>1)
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
186 #define op_put(a, b) a = cm[b]
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
187
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
188 RV40_LOWPASS(put_ , op_put)
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
189 RV40_LOWPASS(avg_ , op_avg)
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
190
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
191 #undef op_avg
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
192 #undef op_put
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
193
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
194 RV40_MC(put_, 8)
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
195 RV40_MC(put_, 16)
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
196 RV40_MC(avg_, 8)
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
197 RV40_MC(avg_, 16)
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
198
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
199 static const int rv40_bias[4][4] = {
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
200 { 0, 16, 32, 16 },
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
201 { 32, 28, 32, 28 },
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
202 { 0, 32, 16, 32 },
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
203 { 32, 28, 32, 28 }
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
204 };
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
205
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
206 #define RV40_CHROMA_MC(OPNAME, OP)\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
207 static void OPNAME ## rv40_chroma_mc4_c(uint8_t *dst/*align 8*/, uint8_t *src/*align 1*/, int stride, int h, int x, int y){\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
208 const int A=(8-x)*(8-y);\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
209 const int B=( x)*(8-y);\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
210 const int C=(8-x)*( y);\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
211 const int D=( x)*( y);\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
212 int i;\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
213 int bias = rv40_bias[y>>1][x>>1];\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
214 \
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
215 assert(x<8 && y<8 && x>=0 && y>=0);\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
216 \
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
217 if(D){\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
218 for(i=0; i<h; i++){\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
219 OP(dst[0], (A*src[0] + B*src[1] + C*src[stride+0] + D*src[stride+1] + bias));\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
220 OP(dst[1], (A*src[1] + B*src[2] + C*src[stride+1] + D*src[stride+2] + bias));\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
221 OP(dst[2], (A*src[2] + B*src[3] + C*src[stride+2] + D*src[stride+3] + bias));\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
222 OP(dst[3], (A*src[3] + B*src[4] + C*src[stride+3] + D*src[stride+4] + bias));\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
223 dst+= stride;\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
224 src+= stride;\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
225 }\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
226 }else{\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
227 const int E= B+C;\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
228 const int step= C ? stride : 1;\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
229 for(i=0; i<h; i++){\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
230 OP(dst[0], (A*src[0] + E*src[step+0] + bias));\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
231 OP(dst[1], (A*src[1] + E*src[step+1] + bias));\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
232 OP(dst[2], (A*src[2] + E*src[step+2] + bias));\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
233 OP(dst[3], (A*src[3] + E*src[step+3] + bias));\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
234 dst+= stride;\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
235 src+= stride;\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
236 }\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
237 }\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
238 }\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
239 \
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
240 static void OPNAME ## rv40_chroma_mc8_c(uint8_t *dst/*align 8*/, uint8_t *src/*align 1*/, int stride, int h, int x, int y){\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
241 const int A=(8-x)*(8-y);\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
242 const int B=( x)*(8-y);\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
243 const int C=(8-x)*( y);\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
244 const int D=( x)*( y);\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
245 int i;\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
246 int bias = rv40_bias[y>>1][x>>1];\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
247 \
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
248 assert(x<8 && y<8 && x>=0 && y>=0);\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
249 \
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
250 if(D){\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
251 for(i=0; i<h; i++){\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
252 OP(dst[0], (A*src[0] + B*src[1] + C*src[stride+0] + D*src[stride+1] + bias));\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
253 OP(dst[1], (A*src[1] + B*src[2] + C*src[stride+1] + D*src[stride+2] + bias));\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
254 OP(dst[2], (A*src[2] + B*src[3] + C*src[stride+2] + D*src[stride+3] + bias));\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
255 OP(dst[3], (A*src[3] + B*src[4] + C*src[stride+3] + D*src[stride+4] + bias));\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
256 OP(dst[4], (A*src[4] + B*src[5] + C*src[stride+4] + D*src[stride+5] + bias));\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
257 OP(dst[5], (A*src[5] + B*src[6] + C*src[stride+5] + D*src[stride+6] + bias));\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
258 OP(dst[6], (A*src[6] + B*src[7] + C*src[stride+6] + D*src[stride+7] + bias));\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
259 OP(dst[7], (A*src[7] + B*src[8] + C*src[stride+7] + D*src[stride+8] + bias));\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
260 dst+= stride;\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
261 src+= stride;\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
262 }\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
263 }else{\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
264 const int E= B+C;\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
265 const int step= C ? stride : 1;\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
266 for(i=0; i<h; i++){\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
267 OP(dst[0], (A*src[0] + E*src[step+0] + bias));\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
268 OP(dst[1], (A*src[1] + E*src[step+1] + bias));\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
269 OP(dst[2], (A*src[2] + E*src[step+2] + bias));\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
270 OP(dst[3], (A*src[3] + E*src[step+3] + bias));\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
271 OP(dst[4], (A*src[4] + E*src[step+4] + bias));\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
272 OP(dst[5], (A*src[5] + E*src[step+5] + bias));\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
273 OP(dst[6], (A*src[6] + E*src[step+6] + bias));\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
274 OP(dst[7], (A*src[7] + E*src[step+7] + bias));\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
275 dst+= stride;\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
276 src+= stride;\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
277 }\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
278 }\
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
279 }
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
280
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
281 #define op_avg(a, b) a = (((a)+((b)>>6)+1)>>1)
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
282 #define op_put(a, b) a = ((b)>>6)
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
283
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
284 RV40_CHROMA_MC(put_, op_put)
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
285 RV40_CHROMA_MC(avg_, op_avg)
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
286
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
287 void ff_rv40dsp_init(DSPContext* c, AVCodecContext *avctx) {
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
288 c->put_rv40_qpel_pixels_tab[0][ 0] = c->put_h264_qpel_pixels_tab[0][0];
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
289 c->put_rv40_qpel_pixels_tab[0][ 1] = put_rv40_qpel16_mc10_c;
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
290 c->put_rv40_qpel_pixels_tab[0][ 2] = put_rv40_qpel16_mc20_c;
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
291 c->put_rv40_qpel_pixels_tab[0][ 3] = put_rv40_qpel16_mc30_c;
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
292 c->put_rv40_qpel_pixels_tab[0][ 4] = put_rv40_qpel16_mc01_c;
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
293 c->put_rv40_qpel_pixels_tab[0][ 5] = put_rv40_qpel16_mc11_c;
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
294 c->put_rv40_qpel_pixels_tab[0][ 6] = put_rv40_qpel16_mc21_c;
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
295 c->put_rv40_qpel_pixels_tab[0][ 7] = put_rv40_qpel16_mc31_c;
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
296 c->put_rv40_qpel_pixels_tab[0][ 8] = put_rv40_qpel16_mc02_c;
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
297 c->put_rv40_qpel_pixels_tab[0][ 9] = put_rv40_qpel16_mc12_c;
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
298 c->put_rv40_qpel_pixels_tab[0][10] = put_rv40_qpel16_mc22_c;
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
299 c->put_rv40_qpel_pixels_tab[0][11] = put_rv40_qpel16_mc32_c;
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
300 c->put_rv40_qpel_pixels_tab[0][12] = put_rv40_qpel16_mc03_c;
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
301 c->put_rv40_qpel_pixels_tab[0][13] = put_rv40_qpel16_mc13_c;
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
302 c->put_rv40_qpel_pixels_tab[0][14] = put_rv40_qpel16_mc23_c;
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
303 c->avg_rv40_qpel_pixels_tab[0][ 0] = c->avg_h264_qpel_pixels_tab[0][0];
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
304 c->avg_rv40_qpel_pixels_tab[0][ 1] = avg_rv40_qpel16_mc10_c;
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
305 c->avg_rv40_qpel_pixels_tab[0][ 2] = avg_rv40_qpel16_mc20_c;
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
306 c->avg_rv40_qpel_pixels_tab[0][ 3] = avg_rv40_qpel16_mc30_c;
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
307 c->avg_rv40_qpel_pixels_tab[0][ 4] = avg_rv40_qpel16_mc01_c;
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
308 c->avg_rv40_qpel_pixels_tab[0][ 5] = avg_rv40_qpel16_mc11_c;
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
309 c->avg_rv40_qpel_pixels_tab[0][ 6] = avg_rv40_qpel16_mc21_c;
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
310 c->avg_rv40_qpel_pixels_tab[0][ 7] = avg_rv40_qpel16_mc31_c;
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
311 c->avg_rv40_qpel_pixels_tab[0][ 8] = avg_rv40_qpel16_mc02_c;
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
312 c->avg_rv40_qpel_pixels_tab[0][ 9] = avg_rv40_qpel16_mc12_c;
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
313 c->avg_rv40_qpel_pixels_tab[0][10] = avg_rv40_qpel16_mc22_c;
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
314 c->avg_rv40_qpel_pixels_tab[0][11] = avg_rv40_qpel16_mc32_c;
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
315 c->avg_rv40_qpel_pixels_tab[0][12] = avg_rv40_qpel16_mc03_c;
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
316 c->avg_rv40_qpel_pixels_tab[0][13] = avg_rv40_qpel16_mc13_c;
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
317 c->avg_rv40_qpel_pixels_tab[0][14] = avg_rv40_qpel16_mc23_c;
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
318 c->put_rv40_qpel_pixels_tab[1][ 0] = c->put_h264_qpel_pixels_tab[1][0];
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
319 c->put_rv40_qpel_pixels_tab[1][ 1] = put_rv40_qpel8_mc10_c;
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
320 c->put_rv40_qpel_pixels_tab[1][ 2] = put_rv40_qpel8_mc20_c;
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
321 c->put_rv40_qpel_pixels_tab[1][ 3] = put_rv40_qpel8_mc30_c;
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
322 c->put_rv40_qpel_pixels_tab[1][ 4] = put_rv40_qpel8_mc01_c;
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
323 c->put_rv40_qpel_pixels_tab[1][ 5] = put_rv40_qpel8_mc11_c;
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
324 c->put_rv40_qpel_pixels_tab[1][ 6] = put_rv40_qpel8_mc21_c;
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
325 c->put_rv40_qpel_pixels_tab[1][ 7] = put_rv40_qpel8_mc31_c;
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
326 c->put_rv40_qpel_pixels_tab[1][ 8] = put_rv40_qpel8_mc02_c;
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
327 c->put_rv40_qpel_pixels_tab[1][ 9] = put_rv40_qpel8_mc12_c;
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
328 c->put_rv40_qpel_pixels_tab[1][10] = put_rv40_qpel8_mc22_c;
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
329 c->put_rv40_qpel_pixels_tab[1][11] = put_rv40_qpel8_mc32_c;
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
330 c->put_rv40_qpel_pixels_tab[1][12] = put_rv40_qpel8_mc03_c;
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
331 c->put_rv40_qpel_pixels_tab[1][13] = put_rv40_qpel8_mc13_c;
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
332 c->put_rv40_qpel_pixels_tab[1][14] = put_rv40_qpel8_mc23_c;
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
333 c->avg_rv40_qpel_pixels_tab[1][ 0] = c->avg_h264_qpel_pixels_tab[1][0];
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
334 c->avg_rv40_qpel_pixels_tab[1][ 1] = avg_rv40_qpel8_mc10_c;
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
335 c->avg_rv40_qpel_pixels_tab[1][ 2] = avg_rv40_qpel8_mc20_c;
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
336 c->avg_rv40_qpel_pixels_tab[1][ 3] = avg_rv40_qpel8_mc30_c;
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
337 c->avg_rv40_qpel_pixels_tab[1][ 4] = avg_rv40_qpel8_mc01_c;
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
338 c->avg_rv40_qpel_pixels_tab[1][ 5] = avg_rv40_qpel8_mc11_c;
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
339 c->avg_rv40_qpel_pixels_tab[1][ 6] = avg_rv40_qpel8_mc21_c;
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
340 c->avg_rv40_qpel_pixels_tab[1][ 7] = avg_rv40_qpel8_mc31_c;
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
341 c->avg_rv40_qpel_pixels_tab[1][ 8] = avg_rv40_qpel8_mc02_c;
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
342 c->avg_rv40_qpel_pixels_tab[1][ 9] = avg_rv40_qpel8_mc12_c;
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
343 c->avg_rv40_qpel_pixels_tab[1][10] = avg_rv40_qpel8_mc22_c;
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
344 c->avg_rv40_qpel_pixels_tab[1][11] = avg_rv40_qpel8_mc32_c;
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
345 c->avg_rv40_qpel_pixels_tab[1][12] = avg_rv40_qpel8_mc03_c;
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
346 c->avg_rv40_qpel_pixels_tab[1][13] = avg_rv40_qpel8_mc13_c;
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
347 c->avg_rv40_qpel_pixels_tab[1][14] = avg_rv40_qpel8_mc23_c;
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
348
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
349 c->put_rv40_chroma_pixels_tab[0]= put_rv40_chroma_mc8_c;
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
350 c->put_rv40_chroma_pixels_tab[1]= put_rv40_chroma_mc4_c;
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
351 c->avg_rv40_chroma_pixels_tab[0]= avg_rv40_chroma_mc8_c;
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
352 c->avg_rv40_chroma_pixels_tab[1]= avg_rv40_chroma_mc4_c;
520a6e56b8c0 RV40 MC functions
kostya
parents:
diff changeset
353 }