Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in / Register
Toggle navigation
F
ffmpeg.wasm-core
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Linshizhi
ffmpeg.wasm-core
Commits
946f9535
Commit
946f9535
authored
Oct 27, 2013
by
Anton Khirnov
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
lavc: make rc_qmod_* into private options of mpegvideo encoders
parent
a6e4ce9f
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
19 additions
and
7 deletions
+19
-7
avcodec.h
libavcodec/avcodec.h
+3
-1
mpegvideo.h
libavcodec/mpegvideo.h
+7
-1
mpegvideo_enc.c
libavcodec/mpegvideo_enc.c
+4
-0
options_table.h
libavcodec/options_table.h
+2
-2
ratecontrol.c
libavcodec/ratecontrol.c
+3
-3
No files found.
libavcodec/avcodec.h
View file @
946f9535
...
...
@@ -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
...
...
libavcodec/mpegvideo.h
View file @
946f9535
...
...
@@ -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
[];
...
...
libavcodec/mpegvideo_enc.c
View file @
946f9535
...
...
@@ -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
...
...
libavcodec/options_table.h
View file @
946f9535
...
...
@@ -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: "
...
...
libavcodec/ratecontrol.c
View file @
946f9535
...
...
@@ -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
)
{
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment