summaryrefslogtreecommitdiff
path: root/libavcodec/libvpxenc.c
diff options
context:
space:
mode:
authorLuca Barbato <lu_zero@gentoo.org>2011-09-30 12:15:59 +0200
committerAnton Khirnov <anton@khirnov.net>2011-10-01 07:16:56 +0200
commit6450f26c9ac90bda7c7e58ff75020d0dd2ed0aa2 (patch)
tree5c110b0990221e41f85c9ce93f0002ad2f54e0a1 /libavcodec/libvpxenc.c
parente3eb015ba47ace8aff8db18e80d20704e7306b66 (diff)
libvpxenc: use libvpx's own defaults for some parameters
Specifically, qmin/qmax, gop_size and keyint_min. Fixes bug 47. Signed-off-by: Anton Khirnov <anton@khirnov.net>
Diffstat (limited to 'libavcodec/libvpxenc.c')
-rw-r--r--libavcodec/libvpxenc.c21
1 files changed, 16 insertions, 5 deletions
diff --git a/libavcodec/libvpxenc.c b/libavcodec/libvpxenc.c
index 1ff997eff6..524c53d533 100644
--- a/libavcodec/libvpxenc.c
+++ b/libavcodec/libvpxenc.c
@@ -249,9 +249,10 @@ static av_cold int vp8_init(AVCodecContext *avctx)
enccfg.rc_end_usage = VPX_CBR;
enccfg.rc_target_bitrate = av_rescale_rnd(avctx->bit_rate, 1, 1000,
AV_ROUND_NEAR_INF);
-
- enccfg.rc_min_quantizer = avctx->qmin;
- enccfg.rc_max_quantizer = avctx->qmax;
+ if (avctx->qmin > 0)
+ enccfg.rc_min_quantizer = avctx->qmin;
+ if (avctx->qmax > 0)
+ enccfg.rc_max_quantizer = avctx->qmax;
enccfg.rc_dropframe_thresh = avctx->frame_skip_threshold;
//0-100 (0 => CBR, 100 => VBR)
@@ -271,9 +272,10 @@ static av_cold int vp8_init(AVCodecContext *avctx)
enccfg.rc_buf_optimal_sz = enccfg.rc_buf_sz * 5 / 6;
//_enc_init() will balk if kf_min_dist differs from max w/VPX_KF_AUTO
- if (avctx->keyint_min == avctx->gop_size)
+ if (avctx->keyint_min >= 0 && avctx->keyint_min == avctx->gop_size)
enccfg.kf_min_dist = avctx->keyint_min;
- enccfg.kf_max_dist = avctx->gop_size;
+ if (avctx->gop_size >= 0)
+ enccfg.kf_max_dist = avctx->gop_size;
if (enccfg.g_pass == VPX_RC_FIRST_PASS)
enccfg.g_lag_in_frames = 0;
@@ -552,6 +554,14 @@ static const AVClass class = {
.version = LIBAVUTIL_VERSION_INT,
};
+static const AVCodecDefault defaults[] = {
+ { "qmin", "-1" },
+ { "qmax", "-1" },
+ { "g", "-1" },
+ { "keyint_min", "-1" },
+ { NULL },
+};
+
AVCodec ff_libvpx_encoder = {
.name = "libvpx",
.type = AVMEDIA_TYPE_VIDEO,
@@ -564,4 +574,5 @@ AVCodec ff_libvpx_encoder = {
.pix_fmts = (const enum PixelFormat[]){PIX_FMT_YUV420P, PIX_FMT_NONE},
.long_name = NULL_IF_CONFIG_SMALL("libvpx VP8"),
.priv_class = &class,
+ .defaults = defaults,
};