[FFmpeg-devel] [PATCH 2/3] VP8: Implement bicubic MC functions (put_vp8_epel*)

Jason Garrett-Glaser darkshikari
Fri Sep 17 09:25:06 CEST 2010


On Thu, Sep 16, 2010 at 8:55 PM, Clark, Rob <rob at ti.com> wrote:
> On Thu, Sep 16, 2010 at 3:42 PM, Ronald S. Bultje <rsbultje at gmail.com>wrote:
>
>> Hi,
>>
>> On Thu, Sep 16, 2010 at 2:28 PM, Rob Clark <rob at ti.com> wrote:
>> > +#define VP8_MC_FUNC(IDX, SIZE) \
>> > + ? ?dsp->put_vp8_epel_pixels_tab[IDX][0][0] = put_vp8_pixels ## SIZE ##
>> _neon; \
>> > +// ? ?dsp->put_vp8_epel_pixels_tab[IDX][0][1] = put_vp8_epel ## SIZE ##
>> _h4_neon; \
>> > +// ? ?dsp->put_vp8_epel_pixels_tab[IDX][0][2] = put_vp8_epel ## SIZE ##
>> _h6_neon; \
>> > +// ? ?dsp->put_vp8_epel_pixels_tab[IDX][1][0] = put_vp8_epel ## SIZE ##
>> _v4_neon; \
>> > +// ? ?dsp->put_vp8_epel_pixels_tab[IDX][1][1] = put_vp8_epel ## SIZE ##
>> _h4v4_neon; \
>> > +// ? ?dsp->put_vp8_epel_pixels_tab[IDX][1][2] = put_vp8_epel ## SIZE ##
>> _h6v4_neon; \
>> > +// ? ?dsp->put_vp8_epel_pixels_tab[IDX][2][0] = put_vp8_epel ## SIZE ##
>> _v6_neon; \
>> > +// ? ?dsp->put_vp8_epel_pixels_tab[IDX][2][1] = put_vp8_epel ## SIZE ##
>> _h4v6_neon; \
>> > +// ? ?dsp->put_vp8_epel_pixels_tab[IDX][2][2] = put_vp8_epel ## SIZE ##
>> _h6v6_neon
>> [..]
>> > + ? ? ? ?VP8_MC_FUNC(0, 16);
>> > + ? ? ? ?VP8_MC_FUNC(1, 8);
>> > + ? ? ? ?VP8_MC_FUNC(2, 4);
>> [..]
>> > + ? ? ? ?// XXX
>> > + ? ? ? ?dsp->put_vp8_epel_pixels_tab[0][2][0] = put_vp8_epel16_v6_neon;
>> > + ? ? ? ?dsp->put_vp8_epel_pixels_tab[0][0][2] = put_vp8_epel16_h6_neon;
>> > + ? ? ? ?dsp->put_vp8_epel_pixels_tab[0][2][2] =
>> put_vp8_epel16_h6v6_neon;
>> > + ? ? ? ?dsp->put_vp8_epel_pixels_tab[1][2][0] = put_vp8_epel8_v6_neon;
>> > + ? ? ? ?dsp->put_vp8_epel_pixels_tab[1][0][2] = put_vp8_epel8_h6_neon;
>> > + ? ? ? ?dsp->put_vp8_epel_pixels_tab[1][2][2] = put_vp8_epel8_h6v6_neon;
>> > + ? ? ? ?dsp->put_vp8_epel_pixels_tab[1][1][0] = put_vp8_epel8_v4_neon;
>> > + ? ? ? ?dsp->put_vp8_epel_pixels_tab[1][0][1] = put_vp8_epel8_h4_neon;
>> > + ? ? ? ?dsp->put_vp8_epel_pixels_tab[1][1][1] = put_vp8_epel8_h4v4_neon;
>> > + ? ? ? ?dsp->put_vp8_epel_pixels_tab[1][1][2] = put_vp8_epel8_h6v4_neon;
>> > + ? ? ? ?dsp->put_vp8_epel_pixels_tab[1][2][1] = put_vp8_epel8_h4v6_neon;
>>
>> ??
>>
>> I understand the epel16 h4 or v4 variants are missing because luma has
>> no odd mx/my values, but you could at least explain this in a comment
>> instead of leaving stuff randomly commented out and having macros that
>> do essentially nothing?
>>
>>
> oh, whoops.. I forgot to clean that up before sending the patch
>
> sorry 'bout that.. I'll send an updated patch when I get a chance (worst
> case, this weekend if I don't have time before)
>
>
>> Is a epel4 variant possible also (even if it doesn't use half of the
>> register size, using the epel8 function skeleton)?
>>
>>
> yeah, I suppose that would be a quick and dirty way to do it.. I'd have to
> double check the test vectors if any of them exercise the epel4 functions to
> confirm that there was a way to test these for correctness

They do.  In fact, the epel4s are actually a pretty significant cost
overall, primarily due to chroma.

Dark Shikari



More information about the ffmpeg-devel mailing list