# HG changeset patch # User michaelni # Date 1033578459 0 # Node ID 6cba3b6196f0eede7209ea92e86ad48d5f760200 # Parent 2ec5bd9f7116528032cb13134360cd2c6859b82a optimization diff -r 2ec5bd9f7116 -r 6cba3b6196f0 h263dec.c --- a/h263dec.c Wed Oct 02 16:36:43 2002 +0000 +++ b/h263dec.c Wed Oct 02 17:07:39 2002 +0000 @@ -362,7 +362,12 @@ h = s->height - y; if (h > 16) h = 16; - offset = y * s->linesize; + + if(s->pict_type==B_TYPE) + offset = 0; + else + offset = y * s->linesize; + if(s->pict_type==B_TYPE || (!s->has_b_frames)){ src_ptr[0] = s->current_picture[0] + offset; src_ptr[1] = s->current_picture[1] + (offset >> 2); diff -r 2ec5bd9f7116 -r 6cba3b6196f0 mpeg12.c --- a/mpeg12.c Wed Oct 02 16:36:43 2002 +0000 +++ b/mpeg12.c Wed Oct 02 17:07:39 2002 +0000 @@ -1604,7 +1604,10 @@ h = s->height - y; if (h > 16) h = 16; - offset = y * s->linesize; + if(s->pict_type==B_TYPE) + offset = 0; + else + offset = y * s->linesize; if(s->pict_type==B_TYPE || (!s->has_b_frames)){ src_ptr[0] = s->current_picture[0] + offset; src_ptr[1] = s->current_picture[1] + (offset >> 2); diff -r 2ec5bd9f7116 -r 6cba3b6196f0 mpegvideo.c --- a/mpegvideo.c Wed Oct 02 16:36:43 2002 +0000 +++ b/mpegvideo.c Wed Oct 02 17:07:39 2002 +0000 @@ -1684,9 +1684,15 @@ } } - dest_y = s->current_picture [0] + (mb_y * 16* s->linesize ) + mb_x * 16; - dest_cb = s->current_picture[1] + (mb_y * 8 * s->uvlinesize) + mb_x * 8; - dest_cr = s->current_picture[2] + (mb_y * 8 * s->uvlinesize) + mb_x * 8; + if(s->pict_type==B_TYPE && s->avctx->draw_horiz_band){ + dest_y = s->current_picture [0] + mb_x * 16; + dest_cb = s->current_picture[1] + mb_x * 8; + dest_cr = s->current_picture[2] + mb_x * 8; + }else{ + dest_y = s->current_picture [0] + (mb_y * 16* s->linesize ) + mb_x * 16; + dest_cb = s->current_picture[1] + (mb_y * 8 * s->uvlinesize) + mb_x * 8; + dest_cr = s->current_picture[2] + (mb_y * 8 * s->uvlinesize) + mb_x * 8; + } if (s->interlaced_dct) { dct_linesize = s->linesize * 2;