diff --git a/libavcodec/h263.c b/libavcodec/h263.c index 7e3fec51819480a48dc03f73462a3b71d61b144d..2694f9680890a3839fd198d6ed0658f41b4f860d 100644 --- a/libavcodec/h263.c +++ b/libavcodec/h263.c @@ -359,8 +359,13 @@ void mpeg4_encode_mb(MpegEncContext * s, uint8_t *p_pic= s->new_picture[0] + offset; s->mb_skiped=1; for(i=0; imax_b_frames; i++){ - uint8_t *b_pic= s->coded_order[i+1].picture[0] + offset; - int diff= pix_abs16x16(p_pic, b_pic, s->linesize); + uint8_t *b_pic; + int diff; + + if(s->coded_order[i+1].pict_type!=B_TYPE) break; + + b_pic= s->coded_order[i+1].picture[0] + offset; + diff= pix_abs16x16(p_pic, b_pic, s->linesize); if(diff>s->qscale*70){ s->mb_skiped=0; break; diff --git a/libavcodec/mpegvideo.c b/libavcodec/mpegvideo.c index ec1c0f9f05c78b04253a381477d4c8297a912ac3..c1a2cf746a708b52954665d0889c35aabdd7411b 100644 --- a/libavcodec/mpegvideo.c +++ b/libavcodec/mpegvideo.c @@ -645,6 +645,7 @@ void reorder_input(MpegEncContext *s, AVPicture *pict) s->coded_order[j]= s->coded_order[j+1]; } s->coded_order[j].picture[0]= s->coded_order[j].picture[1]= s->coded_order[j].picture[2]= NULL; //catch uninitalized buffers + s->coded_order[j].pict_type=0; switch(s->input_pict_type){ default: