diff options
Diffstat (limited to 'ffmpeg/libavcodec/ratecontrol.c')
| -rw-r--r-- | ffmpeg/libavcodec/ratecontrol.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/ffmpeg/libavcodec/ratecontrol.c b/ffmpeg/libavcodec/ratecontrol.c index 5860423..7db248e 100644 --- a/ffmpeg/libavcodec/ratecontrol.c +++ b/ffmpeg/libavcodec/ratecontrol.c @@ -25,6 +25,7 @@ * Rate control for video encoders. */ +#include "libavutil/attributes.h" #include "avcodec.h" #include "ratecontrol.h" #include "mpegvideo.h" @@ -83,7 +84,7 @@ static inline double bits2qp(RateControlEntry *rce, double bits) return rce->qscale * (double)(rce->i_tex_bits + rce->p_tex_bits + 1) / bits; } -int ff_rate_control_init(MpegEncContext *s) +av_cold int ff_rate_control_init(MpegEncContext *s) { RateControlContext *rcc = &s->rc_context; int i, res; @@ -296,7 +297,7 @@ int ff_rate_control_init(MpegEncContext *s) return 0; } -void ff_rate_control_uninit(MpegEncContext *s) +av_cold void ff_rate_control_uninit(MpegEncContext *s) { RateControlContext *rcc = &s->rc_context; emms_c(); @@ -327,6 +328,9 @@ int ff_vbv_update(MpegEncContext *s, int frame_size) rcc->buffer_index -= frame_size; if (rcc->buffer_index < 0) { av_log(s->avctx, AV_LOG_ERROR, "rc buffer underflow\n"); + if (frame_size > max_rate && s->qscale == s->avctx->qmax) { + av_log(s->avctx, AV_LOG_ERROR, "max bitrate possibly too small or try trellis with large lmax or increase qmax\n"); + } rcc->buffer_index = 0; } @@ -919,7 +923,7 @@ static int init_pass2(MpegEncContext *s) double rate_factor = 0; double step; const int filter_size = (int)(a->qblur * 4) | 1; - double expected_bits; + double expected_bits = 0; // init to silence gcc warning double *qscale, *blurred_qscale, qscale_sum; /* find complexity & const_bits & decide the pict_types */ |
