[FFmpeg-devel] [PATCH] avutil/motion_vector: export subpel motion information

Clément Bœsch u at pkh.me
Sun Nov 22 11:40:24 CET 2015


On Sun, Nov 22, 2015 at 03:24:55AM +0100, Michael Niedermayer wrote:
[...]
> > diff --git a/libavcodec/snowdec.c b/libavcodec/snowdec.c
> > index 1b288dd..5eb775a 100644
> > --- a/libavcodec/snowdec.c
> > +++ b/libavcodec/snowdec.c
> > @@ -104,8 +104,11 @@ static av_always_inline void predict_slice_buffered(SnowContext *s, slice_buffer
> >              avmv->h = block_h;
> >              avmv->dst_x = block_w*mb_x - block_w/2;
> >              avmv->dst_y = block_h*mb_y - block_h/2;
> > -            avmv->src_x = avmv->dst_x + (bn->mx * s->mv_scale)/8;
> > -            avmv->src_y = avmv->dst_y + (bn->my * s->mv_scale)/8;
> > +            avmv->motion_scale = 1 << 3;
> > +            avmv->motion_x = bn->mx * s->mv_scale;
> > +            avmv->motion_y = bn->my * s->mv_scale;
> 
> > +            avmv->src_x = avmv->dst_x + avmv->motion_x / avmv->motion_scale;
> > +            avmv->src_y = avmv->dst_y + avmv->motion_y / avmv->motion_scale;
> 
> does gcc optimize these divisions out ?

i doubt it, as motion_[xy] is signed

> if not it might be better to avoid them.
> 

there is a /8 in the original code, but maybe you meant using 8 instead of
avmv->motion_scale?

or maybe you wanted to refer to mpeg where i actually switched from shift
to div?

> IIUC src_x/y are only an approximation, as the exact motion vector
> isnt an integer in fullpel units so it would be mostly cosmetic
> if x + 4 >> 8, or /8 is used

yes

mpeg used x >> n, i replaced with x / (1<<n), but i could switch back to
the original shift, or even do x+(1<<(n-1))>>n if you want some rounding.

same for snow... what would you prefer? i have no real opinion, this code
doesn't interfere with normal decoding anyway (so performance is less
relevant)

> 
> the patch should be fine either way
> 


-- 
Clément B.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 473 bytes
Desc: not available
URL: <http://ffmpeg.org/pipermail/ffmpeg-devel/attachments/20151122/f4cf1228/attachment.sig>


More information about the ffmpeg-devel mailing list