aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Niedermayer <michaelni@gmx.at>2004-01-24 23:47:33 +0000
committerMichael Niedermayer <michaelni@gmx.at>2004-01-24 23:47:33 +0000
commit65a24d0b393a8c871ba4cab64da65659165e4dcd (patch)
tree83ce010b5329947febb23d2bc9dab6efb998d36c
parent7a62e94a269d9b8993f5987d1a0895bc348c52a8 (diff)
downloadffmpeg-65a24d0b393a8c871ba4cab64da65659165e4dcd.tar.gz
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) Originally committed as revision 2721 to svn://svn.ffmpeg.org/ffmpeg/trunk
-rw-r--r--libavcodec/h263.c9
-rw-r--r--libavcodec/mpegvideo.c9
2 files changed, 9 insertions, 9 deletions
diff --git a/libavcodec/h263.c b/libavcodec/h263.c
index 374c2d3cff..1a07b528bb 100644
--- a/libavcodec/h263.c
+++ b/libavcodec/h263.c
@@ -1130,6 +1130,8 @@ void h263_encode_mb(MpegEncContext * s,
s->misc_bits++;
s->last_bits++;
}
+ s->skip_count++;
+
return;
}
put_bits(&s->pb, 1, 0); /* mb coded */
@@ -2032,7 +2034,7 @@ static void h263_encode_block(MpegEncContext * s, DCTELEM * block, int n)
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 @@ static void h263_encode_block(MpegEncContext * s, DCTELEM * block, int n)
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 @@ static void h263_encode_block(MpegEncContext * s, DCTELEM * block, int n)
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 --git a/libavcodec/mpegvideo.c b/libavcodec/mpegvideo.c
index ec29e4d8bf..b6720e0c88 100644
--- a/libavcodec/mpegvideo.c
+++ b/libavcodec/mpegvideo.c
@@ -3834,9 +3834,9 @@ static void encode_picture(MpegEncContext *s, int picture_number)
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 @@ static void encode_picture(MpegEncContext *s, int picture_number)
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 @@ static void encode_picture(MpegEncContext *s, int picture_number)
}
}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; i<s->mb_stride*s->mb_height; i++)
s->mb_type[i]= CANDIDATE_MB_TYPE_INTRA;
@@ -4026,6 +4023,8 @@ static void encode_picture(MpegEncContext *s, int picture_number)
break;
case FMT_H264:
break;
+ default:
+ assert(0);
}
bits= get_bit_count(&s->pb);
s->header_bits= bits - s->last_bits;