summaryrefslogtreecommitdiff
path: root/ffmpeg/libavcodec/ratecontrol.c
diff options
context:
space:
mode:
authorTim Redfern <tim@eclectronics.org>2013-12-29 12:19:38 +0000
committerTim Redfern <tim@eclectronics.org>2013-12-29 12:19:38 +0000
commitf7813a5324be39d13ab536c245d15dfc602a7849 (patch)
treefad99148b88823d34a5df2f0a25881a002eb291b /ffmpeg/libavcodec/ratecontrol.c
parentb7a5a477b8ff4d4e3028b9dfb9a9df0a41463f92 (diff)
basic type mechanism working
Diffstat (limited to 'ffmpeg/libavcodec/ratecontrol.c')
-rw-r--r--ffmpeg/libavcodec/ratecontrol.c10
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 */