Mercurial > libavcodec.hg
changeset 361:dc2fb310008d libavcodec
MV visualisation support
author | michaelni |
---|---|
date | Sun, 05 May 2002 01:39:07 +0000 |
parents | 71792167020c |
children | 1ee4ba4ca783 |
files | h263dec.c |
diffstat | 1 files changed, 34 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/h263dec.c Sun May 05 01:37:07 2002 +0000 +++ b/h263dec.c Sun May 05 01:39:07 2002 +0000 @@ -260,7 +260,40 @@ } MPV_frame_end(s); - +#if 0 //dirty show MVs, we should export the MV tables and write a filter to show them +{ + int mb_y; + s->has_b_frames=1; + for(mb_y=0; mb_y<s->mb_height; mb_y++){ + int mb_x; + int y= mb_y*16; + for(mb_x=0; mb_x<s->mb_width; mb_x++){ + int x= mb_x*16; + uint8_t *ptr= s->last_picture[0]; + int xy= 1 + mb_x*2 + (mb_y*2 + 1)*(s->mb_width*2 + 2); + int mx= (s->motion_val[xy][0]>>1) + x; + int my= (s->motion_val[xy][1]>>1) + y; + int i; + int max; + + if(mx<0) mx=0; + if(my<0) my=0; + if(mx>=s->width) mx= s->width -1; + if(my>=s->height) my= s->height-1; + max= ABS(mx-x); + if(ABS(my-y) > max) max= ABS(my-y); + /* the ugliest linedrawing routine ... */ + for(i=0; i<max; i++){ + int x1= x + (mx-x)*i/max; + int y1= y + (my-y)*i/max; + ptr[y1*s->linesize + x1]+=100; + } + s->mbskip_table[mb_x + mb_y*s->mb_width]=0; + } + } + +} +#endif if(s->pict_type==B_TYPE || (!s->has_b_frames)){ pict->data[0] = s->current_picture[0]; pict->data[1] = s->current_picture[1];