Mercurial > libavcodec.hg
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 |