Commit fafbc7c8 authored by Michael Niedermayer's avatar Michael Niedermayer

mpeg4 b frame + adaptive quantization assertion failure fix

Originally committed as revision 2779 to svn://svn.ffmpeg.org/ffmpeg/trunk
parent 3a1fa447
...@@ -3412,13 +3412,20 @@ static void encode_mb(MpegEncContext *s, int motion_x, int motion_y) ...@@ -3412,13 +3412,20 @@ static void encode_mb(MpegEncContext *s, int motion_x, int motion_y)
if(!(s->flags&CODEC_FLAG_QP_RD)){ if(!(s->flags&CODEC_FLAG_QP_RD)){
s->dquant= s->qscale - last_qp; s->dquant= s->qscale - last_qp;
if(s->out_format==FMT_H263) if(s->out_format==FMT_H263){
s->dquant= clip(s->dquant, -2, 2); //FIXME RD s->dquant= clip(s->dquant, -2, 2); //FIXME RD
if(s->codec_id==CODEC_ID_MPEG4){ if(s->codec_id==CODEC_ID_MPEG4){
if(!s->mb_intra){ if(!s->mb_intra){
if((s->mv_dir&MV_DIRECT) || s->mv_type==MV_TYPE_8X8) if(s->pict_type == B_TYPE){
s->dquant=0; if(s->dquant&1)
s->dquant= (s->dquant/2)*2;
if(s->mv_dir&MV_DIRECT)
s->dquant= 0;
}
if(s->mv_type==MV_TYPE_8X8)
s->dquant=0;
}
} }
} }
} }
...@@ -3969,6 +3976,7 @@ static int mb_var_thread(AVCodecContext *c, void *arg){ ...@@ -3969,6 +3976,7 @@ static int mb_var_thread(AVCodecContext *c, void *arg){
s->mb_var_sum_temp += varc; s->mb_var_sum_temp += varc;
} }
} }
return 0;
} }
static void write_slice_end(MpegEncContext *s){ static void write_slice_end(MpegEncContext *s){
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment