comparison vc1.c @ 9437:8aa2e86549cd libavcodec

VC1: Do qpel when needed for both MVs in a B frame
author conrad
date Tue, 14 Apr 2009 19:26:33 +0000
parents 25b3650b4db5
children ef3a7b711cc0
comparison
equal deleted inserted replaced
9436:dfed6a243bab 9437:8aa2e86549cd
1902 } 1902 }
1903 } 1903 }
1904 srcY += s->mspel * (1 + s->linesize); 1904 srcY += s->mspel * (1 + s->linesize);
1905 } 1905 }
1906 1906
1907 mx >>= 1; 1907 if(s->mspel) {
1908 my >>= 1; 1908 dxy = ((my & 3) << 2) | (mx & 3);
1909 dxy = ((my & 1) << 1) | (mx & 1); 1909 dsp->avg_vc1_mspel_pixels_tab[dxy](s->dest[0] , srcY , s->linesize, v->rnd);
1910 1910 dsp->avg_vc1_mspel_pixels_tab[dxy](s->dest[0] + 8, srcY + 8, s->linesize, v->rnd);
1911 dsp->avg_pixels_tab[0][dxy](s->dest[0], srcY, s->linesize, 16); 1911 srcY += s->linesize * 8;
1912 dsp->avg_vc1_mspel_pixels_tab[dxy](s->dest[0] + 8 * s->linesize , srcY , s->linesize, v->rnd);
1913 dsp->avg_vc1_mspel_pixels_tab[dxy](s->dest[0] + 8 * s->linesize + 8, srcY + 8, s->linesize, v->rnd);
1914 } else { // hpel mc
1915 dxy = (my & 2) | ((mx & 2) >> 1);
1916
1917 if(!v->rnd)
1918 dsp->avg_pixels_tab[0][dxy](s->dest[0], srcY, s->linesize, 16);
1919 else
1920 dsp->avg_no_rnd_pixels_tab[0][dxy](s->dest[0], srcY, s->linesize, 16);
1921 }
1912 1922
1913 if(s->flags & CODEC_FLAG_GRAY) return; 1923 if(s->flags & CODEC_FLAG_GRAY) return;
1914 /* Chroma MC always uses qpel blilinear */ 1924 /* Chroma MC always uses qpel blilinear */
1915 uvdxy = ((uvmy & 3) << 2) | (uvmx & 3); 1925 uvdxy = ((uvmy & 3) << 2) | (uvmx & 3);
1916 uvmx = (uvmx&3)<<1; 1926 uvmx = (uvmx&3)<<1;