# HG changeset patch # User michael # Date 1074988053 0 # Node ID 3906ddbaffec8b1d33c584c7eaf21e8ac501b614 # Parent 43a856190778812cf46e4d2bba43cc23802fb8d9 optimization & bugfix extracted from the 4k line diff between ffmpeg 0.4.7 and http://www.alicestreet.com/ffh263.html the other parts of the diff where 1. spelling fixes (rejected as only a small part of it could be applied automatically) 2. cosmetics (reindention, function reordering, var renaming, ...) with bugs (rejected) 3. rtp related stuff (rejetced as it breaks several codecs) 4. some changes to the intra/inter decission & scene change detection (quality tests needed first) diff -r 43a856190778 -r 3906ddbaffec h263.c --- a/h263.c Sat Jan 24 22:22:42 2004 +0000 +++ b/h263.c Sat Jan 24 23:47:33 2004 +0000 @@ -1130,6 +1130,8 @@ s->misc_bits++; s->last_bits++; } + s->skip_count++; + return; } put_bits(&s->pb, 1, 0); /* mb coded */ @@ -2032,7 +2034,7 @@ if (level == 128) //FIXME check rv10 put_bits(&s->pb, 8, 0xff); else - put_bits(&s->pb, 8, level & 0xff); + put_bits(&s->pb, 8, level); i = 1; } else { i = 0; @@ -2102,7 +2104,7 @@ assert(slevel != 0); - if(slevel < 128 && slevel > -128) + if(level < 128) put_bits(&s->pb, 8, slevel & 0xff); else{ put_bits(&s->pb, 8, 128); @@ -2110,8 +2112,7 @@ put_bits(&s->pb, 6, (slevel>>5)&0x3f); } }else{ - if(slevel < 64 && slevel > -64) { - /* 7-bit level */ + if(level < 64) { // 7-bit level put_bits(&s->pb, 1, 0); put_bits(&s->pb, 1, last); put_bits(&s->pb, 6, run); diff -r 43a856190778 -r 3906ddbaffec mpegvideo.c --- a/mpegvideo.c Sat Jan 24 22:22:42 2004 +0000 +++ b/mpegvideo.c Sat Jan 24 23:47:33 2004 +0000 @@ -3834,9 +3834,9 @@ s->me.dia_size= s->avctx->pre_dia_size; for(mb_y=s->mb_height-1; mb_y >=0 ; mb_y--) { + s->mb_y = mb_y; for(mb_x=s->mb_width-1; mb_x >=0 ; mb_x--) { s->mb_x = mb_x; - s->mb_y = mb_y; ff_pre_estimate_p_frame_motion(s, mb_x, mb_y); } } @@ -3846,13 +3846,13 @@ s->me.dia_size= s->avctx->dia_size; for(mb_y=0; mb_y < s->mb_height; mb_y++) { + s->mb_y = mb_y; s->block_index[0]= s->block_wrap[0]*(mb_y*2 + 1) - 1; s->block_index[1]= s->block_wrap[0]*(mb_y*2 + 1); s->block_index[2]= s->block_wrap[0]*(mb_y*2 + 2) - 1; s->block_index[3]= s->block_wrap[0]*(mb_y*2 + 2); for(mb_x=0; mb_x < s->mb_width; mb_x++) { s->mb_x = mb_x; - s->mb_y = mb_y; s->block_index[0]+=2; s->block_index[1]+=2; s->block_index[2]+=2; @@ -3867,9 +3867,6 @@ } }else /* if(s->pict_type == I_TYPE) */{ /* I-Frame */ - //FIXME do we need to zero them? - memset(s->current_picture.motion_val[0][0], 0, sizeof(int16_t)*(s->mb_width*2 + 2)*(s->mb_height*2 + 2)*2); - memset(s->p_mv_table , 0, sizeof(int16_t)*(s->mb_stride)*s->mb_height*2); for(i=0; imb_stride*s->mb_height; i++) s->mb_type[i]= CANDIDATE_MB_TYPE_INTRA; @@ -4026,6 +4023,8 @@ break; case FMT_H264: break; + default: + assert(0); } bits= get_bit_count(&s->pb); s->header_bits= bits - s->last_bits;