comparison vc1.c @ 3371:a922021d6455 libavcodec

Slightly reworked MC code, it gives better picture.
author kostya
date Fri, 30 Jun 2006 03:19:31 +0000
parents ad7215e207f8
children a1c2e1603be9
comparison
equal deleted inserted replaced
3370:ad7215e207f8 3371:a922021d6455
921 srcY = s->last_picture.data[0]; 921 srcY = s->last_picture.data[0];
922 srcU = s->last_picture.data[1]; 922 srcU = s->last_picture.data[1];
923 srcV = s->last_picture.data[2]; 923 srcV = s->last_picture.data[2];
924 924
925 if(v->fastuvmc) { // XXX: 8.3.5.4.5 specifies something different 925 if(v->fastuvmc) { // XXX: 8.3.5.4.5 specifies something different
926 uvmx = (uvmx + 1) >> 1; 926 uvmx = (uvmx + 1) & ~1;
927 uvmy = (uvmy + 1) >> 1; 927 uvmy = (uvmy + 1) & ~1;
928 } 928 }
929 929
930 src_x = s->mb_x * 16 + (mx >> 2); 930 src_x = s->mb_x * 16 + (mx >> 2);
931 src_y = s->mb_y * 16 + (my >> 2); 931 src_y = s->mb_y * 16 + (my >> 2);
932 uvsrc_x = s->mb_x * 8 + (uvmx >> 2); 932 uvsrc_x = s->mb_x * 8 + (uvmx >> 2);
957 } 957 }
958 958
959 if(!s->quarter_sample) { // hpel mc 959 if(!s->quarter_sample) { // hpel mc
960 mx >>= 1; 960 mx >>= 1;
961 my >>= 1; 961 my >>= 1;
962 uvmx >>= 1;
963 uvmy >>= 1;
964 dxy = ((my & 1) << 1) | (mx & 1); 962 dxy = ((my & 1) << 1) | (mx & 1);
965 uvdxy = 0; 963 uvdxy = 0;
966 964
967 dsp->put_no_rnd_pixels_tab[0][dxy](s->dest[0], srcY, s->linesize, 16); 965 dsp->put_no_rnd_pixels_tab[0][dxy](s->dest[0], srcY, s->linesize, 16);
968 } else { 966 } else {
969 dxy = ((my & 3) << 2) | (mx & 3); 967 dxy = ((my & 3) << 2) | (mx & 3);
970 uvdxy = ((uvmy & 1) << 1) | (uvmx & 1); 968 uvdxy = ((uvmy & 1) << 1) | (uvmx & 1);
971 969
972 dsp->put_no_rnd_qpel_pixels_tab[0][dxy](s->dest[0], srcY, s->linesize); 970 dsp->put_no_rnd_qpel_pixels_tab[0][dxy](s->dest[0], srcY, s->linesize);
973 } 971 }
974 dsp->put_mspel_pixels_tab[uvdxy](s->dest[1], srcU, s->uvlinesize); 972 dsp->put_no_rnd_pixels_tab[1][uvdxy](s->dest[1], srcU, s->uvlinesize, 8);
975 dsp->put_mspel_pixels_tab[uvdxy](s->dest[2], srcV, s->uvlinesize); 973 dsp->put_no_rnd_pixels_tab[1][uvdxy](s->dest[2], srcV, s->uvlinesize, 8);
974 // dsp->put_mspel_pixels_tab[uvdxy](s->dest[1], srcU, s->uvlinesize);
975 // dsp->put_mspel_pixels_tab[uvdxy](s->dest[2], srcV, s->uvlinesize);
976 } 976 }
977 977
978 /** 978 /**
979 * Decode Simple/Main Profiles sequence header 979 * Decode Simple/Main Profiles sequence header
980 * @see Figure 7-8, p16-17 980 * @see Figure 7-8, p16-17