Mercurial > libavcodec.hg
comparison vc1.c @ 4258:4d2f162506e3 libavcodec
10e6l FastUVMC was done right but in the wrong place
author | kostya |
---|---|
date | Sat, 02 Dec 2006 12:55:29 +0000 |
parents | c2224aefb923 |
children | d6f83e2f8804 |
comparison
equal
deleted
inserted
replaced
4257:ac98478e056d | 4258:4d2f162506e3 |
---|---|
788 s->current_picture.motion_val[1][s->block_index[0]][0] = mx; | 788 s->current_picture.motion_val[1][s->block_index[0]][0] = mx; |
789 s->current_picture.motion_val[1][s->block_index[0]][1] = my; | 789 s->current_picture.motion_val[1][s->block_index[0]][1] = my; |
790 } | 790 } |
791 uvmx = (mx + ((mx & 3) == 3)) >> 1; | 791 uvmx = (mx + ((mx & 3) == 3)) >> 1; |
792 uvmy = (my + ((my & 3) == 3)) >> 1; | 792 uvmy = (my + ((my & 3) == 3)) >> 1; |
793 if(v->fastuvmc) { | |
794 uvmx = uvmx + ((uvmx<0)?(uvmx&1):-(uvmx&1)); | |
795 uvmy = uvmy + ((uvmy<0)?(uvmy&1):-(uvmy&1)); | |
796 } | |
793 if(!dir) { | 797 if(!dir) { |
794 srcY = s->last_picture.data[0]; | 798 srcY = s->last_picture.data[0]; |
795 srcU = s->last_picture.data[1]; | 799 srcU = s->last_picture.data[1]; |
796 srcV = s->last_picture.data[2]; | 800 srcV = s->last_picture.data[2]; |
797 } else { | 801 } else { |
874 src += s->uvlinesize; | 878 src += s->uvlinesize; |
875 src2 += s->uvlinesize; | 879 src2 += s->uvlinesize; |
876 } | 880 } |
877 } | 881 } |
878 srcY += s->mspel * (1 + s->linesize); | 882 srcY += s->mspel * (1 + s->linesize); |
879 } | |
880 | |
881 if(v->fastuvmc) { | |
882 uvmx = uvmx + ((uvmx<0)?-(uvmx&1):(uvmx&1)); | |
883 uvmy = uvmy + ((uvmy<0)?-(uvmy&1):(uvmy&1)); | |
884 } | 883 } |
885 | 884 |
886 if(s->mspel) { | 885 if(s->mspel) { |
887 dxy = ((my & 3) << 2) | (mx & 3); | 886 dxy = ((my & 3) << 2) | (mx & 3); |
888 dsp->put_vc1_mspel_pixels_tab[dxy](s->dest[0] , srcY , s->linesize, v->rnd); | 887 dsp->put_vc1_mspel_pixels_tab[dxy](s->dest[0] , srcY , s->linesize, v->rnd); |
1050 | 1049 |
1051 s->current_picture.motion_val[1][s->block_index[0]][0] = tx; | 1050 s->current_picture.motion_val[1][s->block_index[0]][0] = tx; |
1052 s->current_picture.motion_val[1][s->block_index[0]][1] = ty; | 1051 s->current_picture.motion_val[1][s->block_index[0]][1] = ty; |
1053 uvmx = (tx + ((tx&3) == 3)) >> 1; | 1052 uvmx = (tx + ((tx&3) == 3)) >> 1; |
1054 uvmy = (ty + ((ty&3) == 3)) >> 1; | 1053 uvmy = (ty + ((ty&3) == 3)) >> 1; |
1054 if(v->fastuvmc) { | |
1055 uvmx = uvmx + ((uvmx<0)?(uvmx&1):-(uvmx&1)); | |
1056 uvmy = uvmy + ((uvmy<0)?(uvmy&1):-(uvmy&1)); | |
1057 } | |
1055 | 1058 |
1056 uvsrc_x = s->mb_x * 8 + (uvmx >> 2); | 1059 uvsrc_x = s->mb_x * 8 + (uvmx >> 2); |
1057 uvsrc_y = s->mb_y * 8 + (uvmy >> 2); | 1060 uvsrc_y = s->mb_y * 8 + (uvmy >> 2); |
1058 | 1061 |
1059 uvsrc_x = clip(uvsrc_x, -8, s->mb_width * 8); | 1062 uvsrc_x = clip(uvsrc_x, -8, s->mb_width * 8); |
1098 } | 1101 } |
1099 src += s->uvlinesize; | 1102 src += s->uvlinesize; |
1100 src2 += s->uvlinesize; | 1103 src2 += s->uvlinesize; |
1101 } | 1104 } |
1102 } | 1105 } |
1103 } | |
1104 | |
1105 if(v->fastuvmc) { | |
1106 uvmx = uvmx + ((uvmx<0)?-(uvmx&1):(uvmx&1)); | |
1107 uvmy = uvmy + ((uvmy<0)?-(uvmy&1):(uvmy&1)); | |
1108 } | 1106 } |
1109 | 1107 |
1110 /* Chroma MC always uses qpel bilinear */ | 1108 /* Chroma MC always uses qpel bilinear */ |
1111 uvdxy = ((uvmy & 3) << 2) | (uvmx & 3); | 1109 uvdxy = ((uvmy & 3) << 2) | (uvmx & 3); |
1112 uvmx = (uvmx&3)<<1; | 1110 uvmx = (uvmx&3)<<1; |
2059 | 2057 |
2060 mx = s->mv[1][0][0]; | 2058 mx = s->mv[1][0][0]; |
2061 my = s->mv[1][0][1]; | 2059 my = s->mv[1][0][1]; |
2062 uvmx = (mx + ((mx & 3) == 3)) >> 1; | 2060 uvmx = (mx + ((mx & 3) == 3)) >> 1; |
2063 uvmy = (my + ((my & 3) == 3)) >> 1; | 2061 uvmy = (my + ((my & 3) == 3)) >> 1; |
2062 if(v->fastuvmc) { | |
2063 uvmx = uvmx + ((uvmx<0)?-(uvmx&1):(uvmx&1)); | |
2064 uvmy = uvmy + ((uvmy<0)?-(uvmy&1):(uvmy&1)); | |
2065 } | |
2064 srcY = s->next_picture.data[0]; | 2066 srcY = s->next_picture.data[0]; |
2065 srcU = s->next_picture.data[1]; | 2067 srcU = s->next_picture.data[1]; |
2066 srcV = s->next_picture.data[2]; | 2068 srcV = s->next_picture.data[2]; |
2067 | 2069 |
2068 src_x = s->mb_x * 16 + (mx >> 2); | 2070 src_x = s->mb_x * 16 + (mx >> 2); |
2119 src += s->uvlinesize; | 2121 src += s->uvlinesize; |
2120 src2 += s->uvlinesize; | 2122 src2 += s->uvlinesize; |
2121 } | 2123 } |
2122 } | 2124 } |
2123 srcY += s->mspel * (1 + s->linesize); | 2125 srcY += s->mspel * (1 + s->linesize); |
2124 } | |
2125 | |
2126 if(v->fastuvmc) { | |
2127 uvmx = uvmx + ((uvmx<0)?-(uvmx&1):(uvmx&1)); | |
2128 uvmy = uvmy + ((uvmy<0)?-(uvmy&1):(uvmy&1)); | |
2129 } | 2126 } |
2130 | 2127 |
2131 mx >>= 1; | 2128 mx >>= 1; |
2132 my >>= 1; | 2129 my >>= 1; |
2133 dxy = ((my & 1) << 1) | (mx & 1); | 2130 dxy = ((my & 1) << 1) | (mx & 1); |