mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-12-23 12:43:46 +02:00
mpegvideo_enc: add chroma/luma_elim_threshold private options.
Deprecate corresponding AVCodecContext fields.
This commit is contained in:
parent
af3d804f9f
commit
63efd83ae1
@ -1439,19 +1439,21 @@ typedef struct AVCodecContext {
|
|||||||
|
|
||||||
int b_frame_strategy;
|
int b_frame_strategy;
|
||||||
|
|
||||||
|
#if FF_API_MPV_GLOBAL_OPTS
|
||||||
/**
|
/**
|
||||||
* luma single coefficient elimination threshold
|
* luma single coefficient elimination threshold
|
||||||
* - encoding: Set by user.
|
* - encoding: Set by user.
|
||||||
* - decoding: unused
|
* - decoding: unused
|
||||||
*/
|
*/
|
||||||
int luma_elim_threshold;
|
attribute_deprecated int luma_elim_threshold;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* chroma single coeff elimination threshold
|
* chroma single coeff elimination threshold
|
||||||
* - encoding: Set by user.
|
* - encoding: Set by user.
|
||||||
* - decoding: unused
|
* - decoding: unused
|
||||||
*/
|
*/
|
||||||
int chroma_elim_threshold;
|
attribute_deprecated int chroma_elim_threshold;
|
||||||
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* qscale offset between IP and B-frames
|
* qscale offset between IP and B-frames
|
||||||
|
@ -711,7 +711,11 @@ typedef struct MpegEncContext {
|
|||||||
{ "skip_rd", "RD optimal MB level residual skipping", 0, AV_OPT_TYPE_CONST, { FF_MPV_FLAG_SKIP_RD }, 0, 0, FF_MPV_OPT_FLAGS, "mpv_flags" },\
|
{ "skip_rd", "RD optimal MB level residual skipping", 0, AV_OPT_TYPE_CONST, { FF_MPV_FLAG_SKIP_RD }, 0, 0, FF_MPV_OPT_FLAGS, "mpv_flags" },\
|
||||||
{ "strict_gop", "Strictly enforce gop size", 0, AV_OPT_TYPE_CONST, { FF_MPV_FLAG_STRICT_GOP }, 0, 0, FF_MPV_OPT_FLAGS, "mpv_flags" },\
|
{ "strict_gop", "Strictly enforce gop size", 0, AV_OPT_TYPE_CONST, { FF_MPV_FLAG_STRICT_GOP }, 0, 0, FF_MPV_OPT_FLAGS, "mpv_flags" },\
|
||||||
{ "qp_rd", "Use rate distortion optimization for qp selection", 0, AV_OPT_TYPE_CONST, { FF_MPV_FLAG_QP_RD }, 0, 0, FF_MPV_OPT_FLAGS, "mpv_flags" },\
|
{ "qp_rd", "Use rate distortion optimization for qp selection", 0, AV_OPT_TYPE_CONST, { FF_MPV_FLAG_QP_RD }, 0, 0, FF_MPV_OPT_FLAGS, "mpv_flags" },\
|
||||||
{ "cbp_rd", "use rate distortion optimization for CBP", 0, AV_OPT_TYPE_CONST, { FF_MPV_FLAG_CBP_RD }, 0, 0, FF_MPV_OPT_FLAGS, "mpv_flags" },
|
{ "cbp_rd", "use rate distortion optimization for CBP", 0, AV_OPT_TYPE_CONST, { FF_MPV_FLAG_CBP_RD }, 0, 0, FF_MPV_OPT_FLAGS, "mpv_flags" },\
|
||||||
|
{ "luma_elim_threshold", "single coefficient elimination threshold for luminance (negative values also consider dc coefficient)",\
|
||||||
|
FF_MPV_OFFSET(luma_elim_threshold), AV_OPT_TYPE_INT, { 0 }, INT_MIN, INT_MAX, FF_MPV_OPT_FLAGS },\
|
||||||
|
{ "chroma_elim_threshold", "single coefficient elimination threshold for chrominance (negative values also consider dc coefficient)",\
|
||||||
|
FF_MPV_OFFSET(chroma_elim_threshold), AV_OPT_TYPE_INT, { 0 }, INT_MIN, INT_MAX, FF_MPV_OPT_FLAGS },
|
||||||
|
|
||||||
extern const AVOption ff_mpv_generic_options[];
|
extern const AVOption ff_mpv_generic_options[];
|
||||||
|
|
||||||
|
@ -353,8 +353,12 @@ av_cold int ff_MPV_encode_init(AVCodecContext *avctx)
|
|||||||
s->flags2 = avctx->flags2;
|
s->flags2 = avctx->flags2;
|
||||||
s->max_b_frames = avctx->max_b_frames;
|
s->max_b_frames = avctx->max_b_frames;
|
||||||
s->codec_id = avctx->codec->id;
|
s->codec_id = avctx->codec->id;
|
||||||
s->luma_elim_threshold = avctx->luma_elim_threshold;
|
#if FF_API_MPV_GLOBAL_OPTS
|
||||||
s->chroma_elim_threshold = avctx->chroma_elim_threshold;
|
if (avctx->luma_elim_threshold)
|
||||||
|
s->luma_elim_threshold = avctx->luma_elim_threshold;
|
||||||
|
if (avctx->chroma_elim_threshold)
|
||||||
|
s->chroma_elim_threshold = avctx->chroma_elim_threshold;
|
||||||
|
#endif
|
||||||
s->strict_std_compliance = avctx->strict_std_compliance;
|
s->strict_std_compliance = avctx->strict_std_compliance;
|
||||||
s->quarter_sample = (avctx->flags & CODEC_FLAG_QPEL) != 0;
|
s->quarter_sample = (avctx->flags & CODEC_FLAG_QPEL) != 0;
|
||||||
s->mpeg_quant = avctx->mpeg_quant;
|
s->mpeg_quant = avctx->mpeg_quant;
|
||||||
|
@ -169,8 +169,10 @@ static const AVOption options[]={
|
|||||||
{"dc_clip", NULL, 0, AV_OPT_TYPE_CONST, {.dbl = FF_BUG_DC_CLIP }, INT_MIN, INT_MAX, V|D, "bug"},
|
{"dc_clip", NULL, 0, AV_OPT_TYPE_CONST, {.dbl = FF_BUG_DC_CLIP }, INT_MIN, INT_MAX, V|D, "bug"},
|
||||||
{"ms", "workaround various bugs in microsofts broken decoders", 0, AV_OPT_TYPE_CONST, {.dbl = FF_BUG_MS }, INT_MIN, INT_MAX, V|D, "bug"},
|
{"ms", "workaround various bugs in microsofts broken decoders", 0, AV_OPT_TYPE_CONST, {.dbl = FF_BUG_MS }, INT_MIN, INT_MAX, V|D, "bug"},
|
||||||
{"trunc", "trancated frames", 0, AV_OPT_TYPE_CONST, {.dbl = FF_BUG_TRUNCATED}, INT_MIN, INT_MAX, V|D, "bug"},
|
{"trunc", "trancated frames", 0, AV_OPT_TYPE_CONST, {.dbl = FF_BUG_TRUNCATED}, INT_MIN, INT_MAX, V|D, "bug"},
|
||||||
|
#if FF_API_MPV_GLOBAL_OPTS
|
||||||
{"lelim", "single coefficient elimination threshold for luminance (negative values also consider dc coefficient)", OFFSET(luma_elim_threshold), AV_OPT_TYPE_INT, {.dbl = DEFAULT }, INT_MIN, INT_MAX, V|E},
|
{"lelim", "single coefficient elimination threshold for luminance (negative values also consider dc coefficient)", OFFSET(luma_elim_threshold), AV_OPT_TYPE_INT, {.dbl = DEFAULT }, INT_MIN, INT_MAX, V|E},
|
||||||
{"celim", "single coefficient elimination threshold for chrominance (negative values also consider dc coefficient)", OFFSET(chroma_elim_threshold), AV_OPT_TYPE_INT, {.dbl = DEFAULT }, INT_MIN, INT_MAX, V|E},
|
{"celim", "single coefficient elimination threshold for chrominance (negative values also consider dc coefficient)", OFFSET(chroma_elim_threshold), AV_OPT_TYPE_INT, {.dbl = DEFAULT }, INT_MIN, INT_MAX, V|E},
|
||||||
|
#endif
|
||||||
{"strict", "how strictly to follow the standards", OFFSET(strict_std_compliance), AV_OPT_TYPE_INT, {.dbl = DEFAULT }, INT_MIN, INT_MAX, A|V|D|E, "strict"},
|
{"strict", "how strictly to follow the standards", OFFSET(strict_std_compliance), AV_OPT_TYPE_INT, {.dbl = DEFAULT }, INT_MIN, INT_MAX, A|V|D|E, "strict"},
|
||||||
{"very", "strictly conform to a older more strict version of the spec or reference software", 0, AV_OPT_TYPE_CONST, {.dbl = FF_COMPLIANCE_VERY_STRICT }, INT_MIN, INT_MAX, V|D|E, "strict"},
|
{"very", "strictly conform to a older more strict version of the spec or reference software", 0, AV_OPT_TYPE_CONST, {.dbl = FF_COMPLIANCE_VERY_STRICT }, INT_MIN, INT_MAX, V|D|E, "strict"},
|
||||||
{"strict", "strictly conform to all the things in the spec no matter what consequences", 0, AV_OPT_TYPE_CONST, {.dbl = FF_COMPLIANCE_STRICT }, INT_MIN, INT_MAX, V|D|E, "strict"},
|
{"strict", "strictly conform to all the things in the spec no matter what consequences", 0, AV_OPT_TYPE_CONST, {.dbl = FF_COMPLIANCE_STRICT }, INT_MIN, INT_MAX, V|D|E, "strict"},
|
||||||
|
@ -332,8 +332,6 @@ static int ffm_read_header(AVFormatContext *s)
|
|||||||
codec->dct_algo = avio_rb32(pb);
|
codec->dct_algo = avio_rb32(pb);
|
||||||
codec->strict_std_compliance = avio_rb32(pb);
|
codec->strict_std_compliance = avio_rb32(pb);
|
||||||
codec->max_b_frames = avio_rb32(pb);
|
codec->max_b_frames = avio_rb32(pb);
|
||||||
codec->luma_elim_threshold = avio_rb32(pb);
|
|
||||||
codec->chroma_elim_threshold = avio_rb32(pb);
|
|
||||||
codec->mpeg_quant = avio_rb32(pb);
|
codec->mpeg_quant = avio_rb32(pb);
|
||||||
codec->intra_dc_precision = avio_rb32(pb);
|
codec->intra_dc_precision = avio_rb32(pb);
|
||||||
codec->me_method = avio_rb32(pb);
|
codec->me_method = avio_rb32(pb);
|
||||||
|
@ -144,8 +144,6 @@ static int ffm_write_header(AVFormatContext *s)
|
|||||||
avio_wb32(pb, codec->dct_algo);
|
avio_wb32(pb, codec->dct_algo);
|
||||||
avio_wb32(pb, codec->strict_std_compliance);
|
avio_wb32(pb, codec->strict_std_compliance);
|
||||||
avio_wb32(pb, codec->max_b_frames);
|
avio_wb32(pb, codec->max_b_frames);
|
||||||
avio_wb32(pb, codec->luma_elim_threshold);
|
|
||||||
avio_wb32(pb, codec->chroma_elim_threshold);
|
|
||||||
avio_wb32(pb, codec->mpeg_quant);
|
avio_wb32(pb, codec->mpeg_quant);
|
||||||
avio_wb32(pb, codec->intra_dc_precision);
|
avio_wb32(pb, codec->intra_dc_precision);
|
||||||
avio_wb32(pb, codec->me_method);
|
avio_wb32(pb, codec->me_method);
|
||||||
|
@ -1,3 +1,3 @@
|
|||||||
c963591a7f9a08d48e0f988640795690 *./tests/data/lavf/lavf.ffm
|
8a95fa3db8e6082ed24e963e40ec1526 *./tests/data/lavf/lavf.ffm
|
||||||
376832 ./tests/data/lavf/lavf.ffm
|
376832 ./tests/data/lavf/lavf.ffm
|
||||||
./tests/data/lavf/lavf.ffm CRC=0x88f58ba1
|
./tests/data/lavf/lavf.ffm CRC=0x88f58ba1
|
||||||
|
Loading…
Reference in New Issue
Block a user