---
 libavcodec/avcodec.h       | 4 +++-
 libavcodec/mpegvideo.h     | 8 +++++++-
 libavcodec/mpegvideo_enc.c | 4 ++++
 libavcodec/options_table.h | 4 ++--
 libavcodec/ratecontrol.c   | 6 +++---
 5 files changed, 19 insertions(+), 7 deletions(-)

diff --git a/libavcodec/avcodec.h b/libavcodec/avcodec.h
index 504ffb7..9c531fb 100644
--- a/libavcodec/avcodec.h
+++ b/libavcodec/avcodec.h
@@ -2096,10 +2096,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 56e9242..e96671b 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 5c327ea..952a34a 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 e7cddf3..234c5ae 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 fcc5c60..92438b4 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) {
-- 
2.0.0

_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel

Reply via email to