[FFmpeg-cvslog] libvpx: check if CQ level is in correct bounds

slhck git at videolan.org
Mon Feb 25 20:51:20 CET 2013


ffmpeg | branch: master | slhck <werner.robitza at gmail.com> | Mon Feb 25 19:23:55 2013 +0100| [bfcc38ef4815229e0aa9d8417611e0f666bb4fc7] | committer: Michael Niedermayer

libvpx: check if CQ level is in correct bounds

Check whether CQ level is within qmin..qmax and abort on error. If this isn't properly
set, encoding will fail at the first frame.

Signed-off-by: Michael Niedermayer <michaelni at gmx.at>

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=bfcc38ef4815229e0aa9d8417611e0f666bb4fc7
---

 libavcodec/libvpxenc.c |   10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/libavcodec/libvpxenc.c b/libavcodec/libvpxenc.c
index ed038ab..04ea031 100644
--- a/libavcodec/libvpxenc.c
+++ b/libavcodec/libvpxenc.c
@@ -289,6 +289,16 @@ static av_cold int vpx_init(AVCodecContext *avctx,
         enccfg.rc_min_quantizer = avctx->qmin;
     if (avctx->qmax > 0)
         enccfg.rc_max_quantizer = avctx->qmax;
+
+    if (enccfg.rc_end_usage == VPX_CQ) {
+        if (ctx->crf < enccfg.rc_min_quantizer || ctx->crf > enccfg.rc_max_quantizer) {
+                av_log(avctx, AV_LOG_ERROR,
+                       "CQ level must be between minimum and maximum quantizer value (%d-%d)\n",
+                       enccfg.rc_min_quantizer, enccfg.rc_max_quantizer);
+                return AVERROR(EINVAL);
+        }
+    }
+
     enccfg.rc_dropframe_thresh = avctx->frame_skip_threshold;
 
     //0-100 (0 => CBR, 100 => VBR)



More information about the ffmpeg-cvslog mailing list