diff options
author | Michael Niedermayer <michael@niedermayer.cc> | 2015-12-18 19:52:35 +0300 |
---|---|---|
committer | Michael Niedermayer <michael@niedermayer.cc> | 2015-12-18 20:08:00 +0300 |
commit | 1c878474fb1db011dc78a55616520703aedce1ce (patch) | |
tree | 5fe348ab1f86e65a99f7ec658ed8ae7dd6e2c2e3 | |
parent | 91b4afd58d7858bfbee10d3e115418f3a9543720 (diff) |
avcodec/ffv1enc: unbreak -coder option
This fixes a segfault caused by moving the coder option and changing its semantics
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
-rw-r--r-- | libavcodec/ffv1.h | 1 | ||||
-rw-r--r-- | libavcodec/ffv1enc.c | 11 |
2 files changed, 10 insertions, 2 deletions
diff --git a/libavcodec/ffv1.h b/libavcodec/ffv1.h index c7fed3f3a5..7cb97f4f58 100644 --- a/libavcodec/ffv1.h +++ b/libavcodec/ffv1.h @@ -56,6 +56,7 @@ #define AC_GOLOMB_RICE 0 #define AC_RANGE_DEFAULT_TAB 1 #define AC_RANGE_CUSTOM_TAB 2 +#define AC_RANGE_DEFAULT_TAB_FORCE -2 typedef struct VlcState { int16_t drift; diff --git a/libavcodec/ffv1enc.c b/libavcodec/ffv1enc.c index 6b5c4b24f3..e4d5ac6708 100644 --- a/libavcodec/ffv1enc.c +++ b/libavcodec/ffv1enc.c @@ -704,8 +704,13 @@ static av_cold int encode_init(AVCodecContext *avctx) FF_DISABLE_DEPRECATION_WARNINGS if (avctx->coder_type != -1) s->ac = avctx->coder_type > 0 ? AC_RANGE_CUSTOM_TAB : AC_GOLOMB_RICE; + else FF_ENABLE_DEPRECATION_WARNINGS #endif + if (s->ac == 1) // Compatbility with common command line usage + s->ac = AC_RANGE_CUSTOM_TAB; + else if (s->ac == AC_RANGE_DEFAULT_TAB_FORCE) + s->ac = AC_RANGE_DEFAULT_TAB; s->plane_count = 3; switch(avctx->pix_fmt) { @@ -1352,13 +1357,15 @@ static av_cold int encode_close(AVCodecContext *avctx) static const AVOption options[] = { { "slicecrc", "Protect slices with CRCs", OFFSET(ec), AV_OPT_TYPE_BOOL, { .i64 = -1 }, -1, 1, VE }, { "coder", "Coder type", OFFSET(ac), AV_OPT_TYPE_INT, - { .i64 = AC_GOLOMB_RICE }, 0, 2, VE, "coder" }, + { .i64 = 0 }, -2, 2, VE, "coder" }, { "rice", "Golomb rice", 0, AV_OPT_TYPE_CONST, { .i64 = AC_GOLOMB_RICE }, INT_MIN, INT_MAX, VE, "coder" }, { "range_def", "Range with default table", 0, AV_OPT_TYPE_CONST, - { .i64 = AC_RANGE_DEFAULT_TAB }, INT_MIN, INT_MAX, VE, "coder" }, + { .i64 = AC_RANGE_DEFAULT_TAB_FORCE }, INT_MIN, INT_MAX, VE, "coder" }, { "range_tab", "Range with custom table", 0, AV_OPT_TYPE_CONST, { .i64 = AC_RANGE_CUSTOM_TAB }, INT_MIN, INT_MAX, VE, "coder" }, + { "ac", "Range with custom table (the ac option exists for compatibility and is deprecated)", 0, AV_OPT_TYPE_CONST, + { .i64 = 1 }, INT_MIN, INT_MAX, VE, "coder" }, { NULL } }; |