aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAnton Khirnov <anton@khirnov.net>2013-10-27 13:51:16 +0100
committerAnton Khirnov <anton@khirnov.net>2014-10-18 05:23:05 +0200
commit946f95354ba76ef73c9b66889d86ab5fba4fb486 (patch)
treef196ef72b5216f5db587f4cc0d5c501d7e154478
parenta6e4ce9fd50897dc6d9c2ada4b6b8090de7de5bf (diff)
downloadffmpeg-946f95354ba76ef73c9b66889d86ab5fba4fb486.tar.gz
lavc: make rc_qmod_* into private options of mpegvideo encoders
-rw-r--r--libavcodec/avcodec.h4
-rw-r--r--libavcodec/mpegvideo.h8
-rw-r--r--libavcodec/mpegvideo_enc.c4
-rw-r--r--libavcodec/options_table.h4
-rw-r--r--libavcodec/ratecontrol.c6
5 files changed, 19 insertions, 7 deletions
diff --git a/libavcodec/avcodec.h b/libavcodec/avcodec.h
index aabad332b5..c025c5c3dc 100644
--- a/libavcodec/avcodec.h
+++ b/libavcodec/avcodec.h
@@ -2088,10 +2088,12 @@ typedef struct AVCodecContext {
*/
attribute_deprecated
float rc_qsquish;
-#endif
+ attribute_deprecated
float rc_qmod_amp;
+ attribute_deprecated
int rc_qmod_freq;
+#endif
/**
* decoder bitstream buffer size
diff --git a/libavcodec/mpegvideo.h b/libavcodec/mpegvideo.h
index 56e9242942..e96671be14 100644
--- a/libavcodec/mpegvideo.h
+++ b/libavcodec/mpegvideo.h
@@ -28,6 +28,8 @@
#ifndef AVCODEC_MPEGVIDEO_H
#define AVCODEC_MPEGVIDEO_H
+#include <float.h>
+
#include "avcodec.h"
#include "blockdsp.h"
#include "error_resilience.h"
@@ -633,6 +635,8 @@ typedef struct MpegEncContext {
* 0-> clipping, 1-> use a nice continuous function to limit qscale wthin qmin/qmax.
*/
float rc_qsquish;
+ float rc_qmod_amp;
+ int rc_qmod_freq;
/* temp buffers for rate control */
float *cplx_tab, *bits_tab;
@@ -680,7 +684,9 @@ typedef struct MpegEncContext {
{ "error_rate", "Simulate errors in the bitstream to test error concealment.", \
FF_MPV_OFFSET(error_rate), AV_OPT_TYPE_INT, { .i64 = 0 }, 0, INT_MAX, FF_MPV_OPT_FLAGS },\
{"qsquish", "how to keep quantizer between qmin and qmax (0 = clip, 1 = use differentiable function)", \
- FF_MPV_OFFSET(rc_qsquish), AV_OPT_TYPE_FLOAT, {.dbl = 0 }, 0, 99, FF_MPV_OPT_FLAGS},
+ FF_MPV_OFFSET(rc_qsquish), AV_OPT_TYPE_FLOAT, {.dbl = 0 }, 0, 99, FF_MPV_OPT_FLAGS}, \
+{"rc_qmod_amp", "experimental quantizer modulation", FF_MPV_OFFSET(rc_qmod_amp), AV_OPT_TYPE_FLOAT, {.dbl = 0 }, -FLT_MAX, FLT_MAX, FF_MPV_OPT_FLAGS}, \
+{"rc_qmod_freq", "experimental quantizer modulation", FF_MPV_OFFSET(rc_qmod_freq), AV_OPT_TYPE_INT, {.i64 = 0 }, INT_MIN, INT_MAX, FF_MPV_OPT_FLAGS},
extern const AVOption ff_mpv_generic_options[];
diff --git a/libavcodec/mpegvideo_enc.c b/libavcodec/mpegvideo_enc.c
index 5c327eaf44..952a34a8c3 100644
--- a/libavcodec/mpegvideo_enc.c
+++ b/libavcodec/mpegvideo_enc.c
@@ -826,6 +826,10 @@ av_cold int ff_mpv_encode_init(AVCodecContext *avctx)
FF_DISABLE_DEPRECATION_WARNINGS
if (avctx->rc_qsquish != 0.0)
s->rc_qsquish = avctx->rc_qsquish;
+ if (avctx->rc_qmod_amp != 0.0)
+ s->rc_qmod_amp = avctx->rc_qmod_amp;
+ if (avctx->rc_qmod_freq)
+ s->rc_qmod_freq = avctx->rc_qmod_freq;
FF_ENABLE_DEPRECATION_WARNINGS
#endif
diff --git a/libavcodec/options_table.h b/libavcodec/options_table.h
index e9393fc908..ef89e7a8cd 100644
--- a/libavcodec/options_table.h
+++ b/libavcodec/options_table.h
@@ -165,9 +165,9 @@ static const AVOption avcodec_options[] = {
{"mpeg_quant", "use MPEG quantizers instead of H.263", OFFSET(mpeg_quant), AV_OPT_TYPE_INT, {.i64 = DEFAULT }, INT_MIN, INT_MAX, V|E},
#if FF_API_MPV_OPT
{"qsquish", "deprecated, use encoder private options instead", OFFSET(rc_qsquish), AV_OPT_TYPE_FLOAT, {.dbl = DEFAULT }, 0, 99, V|E},
+{"rc_qmod_amp", "deprecated, use encoder private options instead", OFFSET(rc_qmod_amp), AV_OPT_TYPE_FLOAT, {.dbl = DEFAULT }, -FLT_MAX, FLT_MAX, V|E},
+{"rc_qmod_freq", "deprecated, use encoder private options instead", OFFSET(rc_qmod_freq), AV_OPT_TYPE_INT, {.i64 = DEFAULT }, INT_MIN, INT_MAX, V|E},
#endif
-{"rc_qmod_amp", "experimental quantizer modulation", OFFSET(rc_qmod_amp), AV_OPT_TYPE_FLOAT, {.dbl = DEFAULT }, -FLT_MAX, FLT_MAX, V|E},
-{"rc_qmod_freq", "experimental quantizer modulation", OFFSET(rc_qmod_freq), AV_OPT_TYPE_INT, {.i64 = DEFAULT }, INT_MIN, INT_MAX, V|E},
{"rc_override_count", NULL, OFFSET(rc_override_count), AV_OPT_TYPE_INT, {.i64 = DEFAULT }, INT_MIN, INT_MAX},
{"rc_eq", "Set rate control equation. When computing the expression, besides the standard functions "
"defined in the section 'Expression Evaluation', the following functions are available: "
diff --git a/libavcodec/ratecontrol.c b/libavcodec/ratecontrol.c
index fcc5c6030a..92438b46f0 100644
--- a/libavcodec/ratecontrol.c
+++ b/libavcodec/ratecontrol.c
@@ -500,10 +500,10 @@ static double modify_qscale(MpegEncContext *s, RateControlEntry *rce,
get_qminmax(&qmin, &qmax, s, pict_type);
/* modulation */
- if (s->avctx->rc_qmod_freq &&
- frame_num % s->avctx->rc_qmod_freq == 0 &&
+ if (s->rc_qmod_freq &&
+ frame_num % s->rc_qmod_freq == 0 &&
pict_type == AV_PICTURE_TYPE_P)
- q *= s->avctx->rc_qmod_amp;
+ q *= s->rc_qmod_amp;
/* buffer overflow/underflow protection */
if (buffer_size) {