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