[Ffmpeg-devel] ffmpeg hanging when transcoding mpeg4
Aaron Williams
aaronw
Sat Oct 21 23:21:22 CEST 2006
I think this patch might be a little faster and should do the same
thing. This will fix a corner case where lambda is less than qscale.
In this case, it may never increment and there will be an endless
loop. With this fix, if this condition is hit it will still increase
lambda.
Patch for ffmpeg:
--- mpegvideo.c~ 2006-10-17 02:31:20.000000000 -0700
+++ mpegvideo.c 2006-10-21 14:18:33.000000000 -0700
@@ -2536,7 +2536,8 @@
int max_size= rcc->buffer_index/3;
if(put_bits_count(&s->pb) > max_size && s->qscale <
s->avctx->qmax){
- s->next_lambda= s->lambda*(s->qscale+1) / s->qscale;
+ s->next_lambda= (s->lambda >= s->qscale) ?
+ (s->lambda*(s->qscale+1) / s->qscale) :
s->lambda+1;
s->mb_skipped = 0; //done in MPV_frame_start()
if(s->pict_type==P_TYPE){ //done in encode_picture() so
we must undo it
if(s->flipflop_rounding || s->codec_id ==
CODEC_ID_H263P || s->codec_id == CODEC_ID_MPEG4)
-Aaron
More information about the ffmpeg-devel
mailing list