39 for (j = 0; j < k; j++) {
40 for (
i = 0;
i < k;
i++)
41 srcY[
i] = ((srcY[
i] - 128) >> 1) + 128;
47 int k,
int uvlinesize)
50 for (j = 0; j < k; j++) {
51 for (
i = 0;
i < k;
i++) {
52 srcU[
i] = ((srcU[
i] - 128) >> 1) + 128;
53 srcV[
i] = ((srcV[
i] - 128) >> 1) + 128;
61 const uint8_t *lut1,
const uint8_t *lut2,
66 for (j = 0; j < k; j += 2) {
67 for (
i = 0;
i < k;
i++)
68 srcY[
i] = lut1[srcY[
i]];
74 for (
i = 0;
i < k;
i++)
75 srcY[
i] = lut2[srcY[
i]];
81 const uint8_t *lut1,
const uint8_t *lut2,
82 int k,
int uvlinesize)
86 for (j = 0; j < k; j += 2) {
87 for (
i = 0;
i < k;
i++) {
88 srcU[
i] = lut1[srcU[
i]];
89 srcV[
i] = lut1[srcV[
i]];
97 for (
i = 0;
i < k;
i++) {
98 srcU[
i] = lut2[srcU[
i]];
99 srcV[
i] = lut2[srcV[
i]];
106 static const uint8_t
popcount4[16] = { 0, 1, 1, 2, 1, 2, 2, 3, 1, 2, 2, 3, 2, 3, 3, 4 };
115 static const uint8_t index2[16] = { 0, 0, 0, 0x23, 0, 0x13, 0x03, 0, 0, 0x12, 0x02, 0, 0x01, 0, 0, 0 };
121 *tx =
median4(
s->mv[dir][0][0],
s->mv[dir][1][0],
s->mv[dir][2][0],
s->mv[dir][3][0]);
122 *ty =
median4(
s->mv[dir][0][1],
s->mv[dir][1][1],
s->mv[dir][2][1],
s->mv[dir][3][1]);
125 *tx =
mid_pred(
s->mv[dir][idx < 2][0],
s->mv[dir][1 + (idx < 4)][0],
s->mv[dir][2 + (idx < 8)][0]);
126 *ty =
mid_pred(
s->mv[dir][idx < 2][1],
s->mv[dir][1 + (idx < 4)][1],
s->mv[dir][2 + (idx < 8)][1]);
129 *tx =
mid_pred(
s->mv[dir][idx > 0xd][0],
s->mv[dir][1 + (idx > 0xb)][0],
s->mv[dir][2 + (idx > 0x7)][0]);
130 *ty =
mid_pred(
s->mv[dir][idx > 0xd][1],
s->mv[dir][1 + (idx > 0xb)][1],
s->mv[dir][2 + (idx > 0x7)][1]);
133 *tx = (
s->mv[dir][index2[idx] >> 4][0] +
s->mv[dir][index2[idx] & 0xf][0]) / 2;
134 *ty = (
s->mv[dir][index2[idx] >> 4][1] +
s->mv[dir][index2[idx] & 0xf][1]) / 2;
143 int idx = !v->
mb_type[0][
s->block_index[0]] |
144 (!v->
mb_type[0][
s->block_index[1]] << 1) |
145 (!v->
mb_type[0][
s->block_index[2]] << 2) |
146 (!v->
mb_type[0][
s->block_index[3]] << 3);
147 static const uint8_t index2[16] = { 0, 0, 0, 0x01, 0, 0x02, 0x12, 0, 0, 0x03, 0x13, 0, 0x23, 0, 0, 0 };
150 switch (valid_count) {
152 *tx =
median4(
s->mv[dir][0][0],
s->mv[dir][1][0],
s->mv[dir][2][0],
s->mv[dir][3][0]);
153 *ty =
median4(
s->mv[dir][0][1],
s->mv[dir][1][1],
s->mv[dir][2][1],
s->mv[dir][3][1]);
156 *tx =
mid_pred(
s->mv[dir][idx > 0xd][0],
s->mv[dir][1 + (idx > 0xb)][0],
s->mv[dir][2 + (idx > 0x7)][0]);
157 *ty =
mid_pred(
s->mv[dir][idx > 0xd][1],
s->mv[dir][1 + (idx > 0xb)][1],
s->mv[dir][2 + (idx > 0x7)][1]);
160 *tx = (
s->mv[dir][index2[idx] >> 4][0] +
s->mv[dir][index2[idx] & 0xf][0]) / 2;
161 *ty = (
s->mv[dir][index2[idx] >> 4][1] +
s->mv[dir][index2[idx] & 0xf][1]) / 2;
176 uint8_t *srcY, *srcU, *srcV;
177 int dxy,
mx,
my, uvmx, uvmy, src_x, src_y, uvsrc_x, uvsrc_y;
180 const uint8_t (*luty)[256], (*lutuv)[256];
183 int linesize, uvlinesize;
190 linesize =
s->cur_pic.ptr->f->linesize[0];
191 uvlinesize =
s->cur_pic.ptr->f->linesize[1];
193 mx =
s->mv[dir][0][0];
194 my =
s->mv[dir][0][1];
198 for (
i = 0;
i < 4;
i++) {
204 uvmx = (
mx + ((
mx & 3) == 3)) >> 1;
205 uvmy = (
my + ((
my & 3) == 3)) >> 1;
217 uvmx = uvmx + ((uvmx < 0) ? (uvmx & 1) : -(uvmx & 1));
218 uvmy = uvmy + ((uvmy < 0) ? (uvmy & 1) : -(uvmy & 1));
222 srcY =
s->cur_pic.data[0];
223 srcU =
s->cur_pic.data[1];
224 srcV =
s->cur_pic.data[2];
230 srcY =
s->last_pic.data[0];
231 srcU =
s->last_pic.data[1];
232 srcV =
s->last_pic.data[2];
239 srcY =
s->next_pic.data[0];
240 srcU =
s->next_pic.data[1];
241 srcV =
s->next_pic.data[2];
248 if (!srcY || !srcU) {
253 src_x =
s->mb_x * 16 + (
mx >> 2);
254 src_y =
s->mb_y * 16 + (
my >> 2);
255 uvsrc_x =
s->mb_x * 8 + (uvmx >> 2);
256 uvsrc_y =
s->mb_y * 8 + (uvmy >> 2);
259 src_x =
av_clip( src_x, -16,
s->mb_width * 16);
260 src_y =
av_clip( src_y, -16,
s->mb_height * 16);
261 uvsrc_x =
av_clip(uvsrc_x, -8,
s->mb_width * 8);
262 uvsrc_y =
av_clip(uvsrc_y, -8,
s->mb_height * 8);
264 src_x =
av_clip( src_x, -17,
s->avctx->coded_width);
265 uvsrc_x =
av_clip(uvsrc_x, -8,
s->avctx->coded_width >> 1);
267 src_y =
av_clip(src_y, -18 + (src_y & 1),
s->avctx->coded_height + (src_y & 1));
268 uvsrc_y =
av_clip(uvsrc_y, -8 + (uvsrc_y & 1), (
s->avctx->coded_height >> 1) + (uvsrc_y & 1));
270 src_y =
av_clip(src_y, -18,
s->avctx->coded_height + 1);
271 uvsrc_y =
av_clip(uvsrc_y, -8,
s->avctx->coded_height >> 1);
275 srcY += src_y *
s->linesize + src_x;
276 srcU += uvsrc_y *
s->uvlinesize + uvsrc_x;
277 srcV += uvsrc_y *
s->uvlinesize + uvsrc_x;
287 srcU =
s->sc.edge_emu_buffer + 18 *
s->linesize;
288 srcV =
s->sc.edge_emu_buffer + 18 *
s->linesize;
292 ||
s->h_edge_pos < 22 || v_edge_pos < 22
293 || (
unsigned)(src_x -
s->mspel) >
s->h_edge_pos - (
mx&3) - 16 -
s->mspel * 3
294 || (
unsigned)(src_y - 1) > v_edge_pos - (
my&3) - 16 - 3) {
295 uint8_t *ubuf =
s->sc.edge_emu_buffer + 19 *
s->linesize;
296 uint8_t *vbuf = ubuf + 9 *
s->uvlinesize;
297 const int k = 17 +
s->mspel * 2;
299 srcY -=
s->mspel * (1 +
s->linesize);
301 s->vdsp.emulated_edge_mc(
s->sc.edge_emu_buffer,
312 s->vdsp.emulated_edge_mc(
s->sc.edge_emu_buffer + linesize,
319 src_y -
s->mspel + 1 >> 1,
323 s->vdsp.emulated_edge_mc(
s->sc.edge_emu_buffer,
334 srcY =
s->sc.edge_emu_buffer;
336 s->vdsp.emulated_edge_mc(ubuf,
346 s->vdsp.emulated_edge_mc(vbuf,
357 s->vdsp.emulated_edge_mc(ubuf + uvlinesize,
367 s->vdsp.emulated_edge_mc(vbuf + uvlinesize,
379 s->vdsp.emulated_edge_mc(ubuf,
389 s->vdsp.emulated_edge_mc(vbuf,
418 srcY +=
s->mspel * (1 +
s->linesize);
422 dxy = ((
my & 3) << 2) | (
mx & 3);
425 dxy = (
my & 2) | ((
mx & 2) >> 1);
427 s->hdsp.put_pixels_tab[0][dxy](
s->dest[0], srcY,
s->linesize, 16);
429 s->hdsp.put_no_rnd_pixels_tab[0][dxy](
s->dest[0], srcY,
s->linesize, 16);
435 uvmx = (uvmx & 3) << 1;
436 uvmy = (uvmy & 3) << 1;
456 int dxy,
mx,
my, src_x, src_y;
460 const uint8_t (*luty)[256];
470 linesize =
s->cur_pic.ptr->f->linesize[0];
472 mx =
s->mv[dir][n][0];
473 my =
s->mv[dir][n][1];
477 srcY =
s->cur_pic.data[0];
482 srcY =
s->last_pic.data[0];
488 srcY =
s->next_pic.data[0];
506 &
s->cur_pic.motion_val[1][
s->block_index[0] + v->
blocks_off][0],
507 &
s->cur_pic.motion_val[1][
s->block_index[0] + v->
blocks_off][1]);
508 int k,
f = opp_count > 2;
509 for (k = 0; k < 4; k++)
515 int width =
s->avctx->coded_width;
516 int height =
s->avctx->coded_height >> 1;
518 s->cur_pic.motion_val[1][
s->block_index[n] + v->
blocks_off][0] =
mx;
519 s->cur_pic.motion_val[1][
s->block_index[n] + v->
blocks_off][1] =
my;
521 qx = (
s->mb_x * 16) + (
mx >> 2);
522 qy = (
s->mb_y * 8) + (
my >> 3);
535 off = ((n > 1) ?
s->linesize : 0) + (n & 1) * 8;
537 off =
s->linesize * 4 * (n & 2) + (n & 1) * 8;
539 src_x =
s->mb_x * 16 + (n & 1) * 8 + (
mx >> 2);
541 src_y =
s->mb_y * 16 + (n & 2) * 4 + (
my >> 2);
543 src_y =
s->mb_y * 16 + ((n > 1) ? 1 : 0) + (
my >> 2);
546 src_x =
av_clip(src_x, -16,
s->mb_width * 16);
547 src_y =
av_clip(src_y, -16,
s->mb_height * 16);
549 src_x =
av_clip(src_x, -17,
s->avctx->coded_width);
551 src_y =
av_clip(src_y, -18 + (src_y & 1),
s->avctx->coded_height + (src_y & 1));
553 src_y =
av_clip(src_y, -18,
s->avctx->coded_height + 1);
556 srcY += src_y *
s->linesize + src_x;
561 ||
s->h_edge_pos < 13 || v_edge_pos < 23
562 || (
unsigned)(src_x -
s->mspel) >
s->h_edge_pos - (
mx & 3) - 8 -
s->mspel * 2
563 || (
unsigned)(src_y - (
s->mspel << fieldmv)) > v_edge_pos - (
my & 3) - ((8 +
s->mspel * 2) << fieldmv)) {
564 const int k = 9 +
s->mspel * 2;
566 srcY -=
s->mspel * (1 + (
s->linesize << fieldmv));
569 s->vdsp.emulated_edge_mc(
s->sc.edge_emu_buffer,
580 s->vdsp.emulated_edge_mc(
s->sc.edge_emu_buffer + linesize,
587 src_y -
s->mspel + 1 >> 1,
591 s->vdsp.emulated_edge_mc(
s->sc.edge_emu_buffer,
599 src_y - (
s->mspel << fieldmv),
602 srcY =
s->sc.edge_emu_buffer;
612 k,
s->linesize << fieldmv);
614 srcY +=
s->mspel * (1 + (
s->linesize << fieldmv));
618 dxy = ((
my & 3) << 2) | (
mx & 3);
624 dxy = (
my & 2) | ((
mx & 2) >> 1);
626 s->hdsp.put_pixels_tab[1][dxy](
s->dest[0] + off, srcY,
s->linesize, 8);
628 s->hdsp.put_no_rnd_pixels_tab[1][dxy](
s->dest[0] + off, srcY,
s->linesize, 8);
638 uint8_t *srcU, *srcV;
639 int uvmx, uvmy, uvsrc_x, uvsrc_y;
643 const uint8_t (*lutuv)[256];
657 s->cur_pic.motion_val[1][
s->block_index[0] + v->
blocks_off][0] = 0;
658 s->cur_pic.motion_val[1][
s->block_index[0] + v->
blocks_off][1] = 0;
669 s->cur_pic.motion_val[1][
s->block_index[0] + v->
blocks_off][0] = tx;
670 s->cur_pic.motion_val[1][
s->block_index[0] + v->
blocks_off][1] = ty;
672 uvlinesize =
s->cur_pic.ptr->f->linesize[1];
674 uvmx = (tx + ((tx & 3) == 3)) >> 1;
675 uvmy = (ty + ((ty & 3) == 3)) >> 1;
681 uvmx = uvmx + ((uvmx < 0) ? (uvmx & 1) : -(uvmx & 1));
682 uvmy = uvmy + ((uvmy < 0) ? (uvmy & 1) : -(uvmy & 1));
686 uvmy += 2 - 4 * chroma_ref_type;
688 uvsrc_x =
s->mb_x * 8 + (uvmx >> 2);
689 uvsrc_y =
s->mb_y * 8 + (uvmy >> 2);
692 uvsrc_x =
av_clip(uvsrc_x, -8,
s->mb_width * 8);
693 uvsrc_y =
av_clip(uvsrc_y, -8,
s->mb_height * 8);
695 uvsrc_x =
av_clip(uvsrc_x, -8,
s->avctx->coded_width >> 1);
696 uvsrc_y =
av_clip(uvsrc_y, -8,
s->avctx->coded_height >> 1);
701 srcU =
s->cur_pic.data[1];
702 srcV =
s->cur_pic.data[2];
707 srcU =
s->last_pic.data[1];
708 srcV =
s->last_pic.data[2];
714 srcU =
s->next_pic.data[1];
715 srcV =
s->next_pic.data[2];
726 srcU += uvsrc_y *
s->uvlinesize + uvsrc_x;
727 srcV += uvsrc_y *
s->uvlinesize + uvsrc_x;
730 if (chroma_ref_type) {
737 ||
s->h_edge_pos < 18 || v_edge_pos < 18
738 || (
unsigned)uvsrc_x > (
s->h_edge_pos >> 1) - 9
739 || (
unsigned)uvsrc_y > (v_edge_pos >> 1) - 9) {
741 s->vdsp.emulated_edge_mc(
s->sc.edge_emu_buffer,
751 s->vdsp.emulated_edge_mc(
s->sc.edge_emu_buffer + 16,
762 s->vdsp.emulated_edge_mc(
s->sc.edge_emu_buffer + uvlinesize,
772 s->vdsp.emulated_edge_mc(
s->sc.edge_emu_buffer + 16 + uvlinesize,
784 s->vdsp.emulated_edge_mc(
s->sc.edge_emu_buffer,
791 v->
field_mode ? 2 * uvsrc_y + chroma_ref_type : uvsrc_y,
794 s->vdsp.emulated_edge_mc(
s->sc.edge_emu_buffer + 16,
801 v->
field_mode ? 2 * uvsrc_y + chroma_ref_type : uvsrc_y,
805 srcU =
s->sc.edge_emu_buffer;
806 srcV =
s->sc.edge_emu_buffer + 16;
815 lutuv[v->
field_mode ? chroma_ref_type : ((0 + uvsrc_y) & 1)],
816 lutuv[v->
field_mode ? chroma_ref_type : ((1 + uvsrc_y) & 1)],
822 uvmx = (uvmx & 3) << 1;
823 uvmy = (uvmy & 3) << 1;
843 uint8_t *srcU, *srcV;
844 int uvsrc_x, uvsrc_y;
845 int uvmx_field[4], uvmy_field[4];
848 static const uint8_t s_rndtblfield[16] = { 0, 0, 1, 2, 4, 4, 5, 6, 2, 2, 3, 8, 6, 6, 7, 12 };
849 int v_dist = fieldmv ? 1 : 4;
850 int v_edge_pos =
s->v_edge_pos >> 1;
854 const uint8_t (*lutuv)[256];
859 uvlinesize =
s->cur_pic.ptr->f->linesize[1];
861 for (
i = 0;
i < 4;
i++) {
862 int d =
i < 2 ? dir: dir2;
864 uvmx_field[
i] = (tx + ((tx & 3) == 3)) >> 1;
867 uvmy_field[
i] = (ty >> 4) * 8 + s_rndtblfield[ty & 0xF];
869 uvmy_field[
i] = (ty + ((ty & 3) == 3)) >> 1;
872 for (
i = 0;
i < 4;
i++) {
873 off = (
i & 1) * 4 + ((
i & 2) ? v_dist *
s->uvlinesize : 0);
874 uvsrc_x =
s->mb_x * 8 + (
i & 1) * 4 + (uvmx_field[
i] >> 2);
875 uvsrc_y =
s->mb_y * 8 + ((
i & 2) ? v_dist : 0) + (uvmy_field[
i] >> 2);
877 uvsrc_x =
av_clip(uvsrc_x, -8,
s->avctx->coded_width >> 1);
879 uvsrc_y =
av_clip(uvsrc_y, -8 + (uvsrc_y & 1), (
s->avctx->coded_height >> 1) + (uvsrc_y & 1));
881 uvsrc_y =
av_clip(uvsrc_y, -8,
s->avctx->coded_height >> 1);
882 if (
i < 2 ? dir : dir2) {
883 srcU =
s->next_pic.data[1];
884 srcV =
s->next_pic.data[2];
889 srcU =
s->last_pic.data[1];
890 srcV =
s->last_pic.data[2];
897 srcU += uvsrc_y *
s->uvlinesize + uvsrc_x;
898 srcV += uvsrc_y *
s->uvlinesize + uvsrc_x;
899 uvmx_field[
i] = (uvmx_field[
i] & 3) << 1;
900 uvmy_field[
i] = (uvmy_field[
i] & 3) << 1;
903 ||
s->h_edge_pos < 10 || v_edge_pos < (5 << fieldmv)
904 || (unsigned)uvsrc_x > (
s->h_edge_pos >> 1) - 5
905 || (unsigned)uvsrc_y > v_edge_pos - (5 << fieldmv)) {
907 s->vdsp.emulated_edge_mc(
s->sc.edge_emu_buffer,
912 (5 << fieldmv) + 1 >> 1,
917 s->vdsp.emulated_edge_mc(
s->sc.edge_emu_buffer + 16,
922 (5 << fieldmv) + 1 >> 1,
928 s->vdsp.emulated_edge_mc(
s->sc.edge_emu_buffer + uvlinesize,
938 s->vdsp.emulated_edge_mc(
s->sc.edge_emu_buffer + 16 + uvlinesize,
950 s->vdsp.emulated_edge_mc(
s->sc.edge_emu_buffer,
960 s->vdsp.emulated_edge_mc(
s->sc.edge_emu_buffer + 16,
971 srcU =
s->sc.edge_emu_buffer;
972 srcV =
s->sc.edge_emu_buffer + 16;
977 lutuv[(uvsrc_y + (0 << fieldmv)) & 1],
978 lutuv[(uvsrc_y + (1 << fieldmv)) & 1],
979 5,
s->uvlinesize << fieldmv);
1008 uint8_t *srcY, *srcU, *srcV;
1009 int dxy,
mx,
my, uvmx, uvmy, src_x, src_y, uvsrc_x, uvsrc_y;
1013 int linesize, uvlinesize;
1018 linesize =
s->cur_pic.ptr->f->linesize[0];
1019 uvlinesize =
s->cur_pic.ptr->f->linesize[1];
1021 mx =
s->mv[1][0][0];
1022 my =
s->mv[1][0][1];
1023 uvmx = (
mx + ((
mx & 3) == 3)) >> 1;
1024 uvmy = (
my + ((
my & 3) == 3)) >> 1;
1030 uvmx = uvmx + ((uvmx < 0) ? -(uvmx & 1) : (uvmx & 1));
1031 uvmy = uvmy + ((uvmy < 0) ? -(uvmy & 1) : (uvmy & 1));
1033 srcY =
s->next_pic.data[0];
1034 srcU =
s->next_pic.data[1];
1035 srcV =
s->next_pic.data[2];
1037 src_x =
s->mb_x * 16 + (
mx >> 2);
1038 src_y =
s->mb_y * 16 + (
my >> 2);
1039 uvsrc_x =
s->mb_x * 8 + (uvmx >> 2);
1040 uvsrc_y =
s->mb_y * 8 + (uvmy >> 2);
1043 src_x =
av_clip( src_x, -16,
s->mb_width * 16);
1044 src_y =
av_clip( src_y, -16,
s->mb_height * 16);
1045 uvsrc_x =
av_clip(uvsrc_x, -8,
s->mb_width * 8);
1046 uvsrc_y =
av_clip(uvsrc_y, -8,
s->mb_height * 8);
1048 src_x =
av_clip( src_x, -17,
s->avctx->coded_width);
1049 uvsrc_x =
av_clip(uvsrc_x, -8,
s->avctx->coded_width >> 1);
1051 src_y =
av_clip(src_y, -18 + (src_y & 1),
s->avctx->coded_height + (src_y & 1));
1052 uvsrc_y =
av_clip(uvsrc_y, -8 + (uvsrc_y & 1), (
s->avctx->coded_height >> 1) + (uvsrc_y & 1));
1054 src_y =
av_clip(src_y, -18,
s->avctx->coded_height + 1);
1055 uvsrc_y =
av_clip(uvsrc_y, -8,
s->avctx->coded_height >> 1);
1059 srcY += src_y *
s->linesize + src_x;
1060 srcU += uvsrc_y *
s->uvlinesize + uvsrc_x;
1061 srcV += uvsrc_y *
s->uvlinesize + uvsrc_x;
1071 srcU =
s->sc.edge_emu_buffer + 18 *
s->linesize;
1072 srcV =
s->sc.edge_emu_buffer + 18 *
s->linesize;
1075 if (v->
rangeredfrm ||
s->h_edge_pos < 22 || v_edge_pos < 22 || use_ic
1076 || (
unsigned)(src_x - 1) >
s->h_edge_pos - (
mx & 3) - 16 - 3
1077 || (
unsigned)(src_y - 1) > v_edge_pos - (
my & 3) - 16 - 3) {
1078 uint8_t *ubuf =
s->sc.edge_emu_buffer + 19 *
s->linesize;
1079 uint8_t *vbuf = ubuf + 9 *
s->uvlinesize;
1080 const int k = 17 +
s->mspel * 2;
1082 srcY -=
s->mspel * (1 +
s->linesize);
1084 s->vdsp.emulated_edge_mc(
s->sc.edge_emu_buffer,
1093 s->v_edge_pos >> 1);
1095 s->vdsp.emulated_edge_mc(
s->sc.edge_emu_buffer + linesize,
1102 src_y -
s->mspel + 1 >> 1,
1104 s->v_edge_pos >> 1);
1106 s->vdsp.emulated_edge_mc(
s->sc.edge_emu_buffer,
1117 srcY =
s->sc.edge_emu_buffer;
1119 s->vdsp.emulated_edge_mc(ubuf,
1128 s->v_edge_pos >> 2);
1129 s->vdsp.emulated_edge_mc(vbuf,
1138 s->v_edge_pos >> 2);
1140 s->vdsp.emulated_edge_mc(ubuf + uvlinesize,
1149 s->v_edge_pos >> 2);
1150 s->vdsp.emulated_edge_mc(vbuf + uvlinesize,
1159 s->v_edge_pos >> 2);
1162 s->vdsp.emulated_edge_mc(ubuf,
1171 s->v_edge_pos >> 1);
1172 s->vdsp.emulated_edge_mc(vbuf,
1181 s->v_edge_pos >> 1);
1192 const uint8_t (*luty )[256] = v->
next_luty;
1203 srcY +=
s->mspel * (1 +
s->linesize);
1207 dxy = ((
my & 3) << 2) | (
mx & 3);
1210 dxy = (
my & 2) | ((
mx & 2) >> 1);
1213 s->hdsp.avg_pixels_tab[0][dxy](
s->dest[0], srcY,
s->linesize, 16);
1215 s->hdsp.avg_no_rnd_pixels_tab[dxy](
s->dest[0], srcY,
s->linesize, 16);
1221 uvmx = (uvmx & 3) << 1;
1222 uvmy = (uvmy & 3) << 1;