SHA256
1
0
forked from jengelh/ffmpeg-4

Accepting request 928002 from home:iznogood:branches:multimedia:libs

- Update to version 4.4.1:
  * Stable bug fix release, mainly codecs and format fixes.
- Refresh patches with quilt.
- Drop patches fixed upstream:
  * ffmpeg-CVE-2021-33815.patch
  * ffmpeg-CVE-2021-38114.patch
  * ffmpeg-CVE-2021-38171.patch
  * ffmpeg-CVE-2020-22037.patch

OBS-URL: https://build.opensuse.org/request/show/928002
OBS-URL: https://build.opensuse.org/package/show/multimedia:libs/ffmpeg-4?expand=0&rev=171
This commit is contained in:
Jan Engelhardt 2021-10-28 18:25:04 +00:00 committed by Git OBS Bridge
parent 163fe1db7e
commit ed05bfc5e6
17 changed files with 69 additions and 254 deletions

View File

@ -1,7 +1,7 @@
Index: b/configure
Index: ffmpeg-4.4.1/configure
===================================================================
--- a/configure
+++ b/configure
--- ffmpeg-4.4.1.orig/configure
+++ ffmpeg-4.4.1/configure
@@ -232,6 +232,7 @@ External library support:
--enable-libdc1394 enable IIDC-1394 grabbing using libdc1394
and libraw1394 [no]
@ -18,7 +18,7 @@ Index: b/configure
openssl
libtls
"
@@ -6360,6 +6362,7 @@ enabled libdrm && require_pkg
@@ -6361,6 +6363,7 @@ enabled libdrm && require_pkg
enabled libfdk_aac && { check_pkg_config libfdk_aac fdk-aac "fdk-aac/aacenc_lib.h" aacEncOpen ||
{ require libfdk_aac fdk-aac/aacenc_lib.h aacEncOpen -lfdk-aac &&
warn "using libfdk without pkg-config"; } }
@ -26,10 +26,10 @@ Index: b/configure
flite_extralibs="-lflite_cmu_time_awb -lflite_cmu_us_awb -lflite_cmu_us_kal -lflite_cmu_us_kal16 -lflite_cmu_us_rms -lflite_cmu_us_slt -lflite_usenglish -lflite_cmulex -lflite"
enabled libflite && require libflite "flite/flite.h" flite_init $flite_extralibs
enabled fontconfig && enable libfontconfig
Index: b/libavcodec/dlopen.h
Index: ffmpeg-4.4.1/libavcodec/dlopen.h
===================================================================
--- /dev/null
+++ b/libavcodec/dlopen.h
+++ ffmpeg-4.4.1/libavcodec/dlopen.h
@@ -0,0 +1,12 @@
+#ifndef LOCALINC_DLOPEN_H
+#define LOCALINC_DLOPEN_H
@ -43,10 +43,10 @@ Index: b/libavcodec/dlopen.h
+ goto error;
+
+#endif
Index: b/libavcodec/libfdk-aacdec.c
Index: ffmpeg-4.4.1/libavcodec/libfdk-aacdec.c
===================================================================
--- a/libavcodec/libfdk-aacdec.c
+++ b/libavcodec/libfdk-aacdec.c
--- ffmpeg-4.4.1.orig/libavcodec/libfdk-aacdec.c
+++ ffmpeg-4.4.1/libavcodec/libfdk-aacdec.c
@@ -37,6 +37,54 @@
#define AAC_PCM_MAX_OUTPUT_CHANNELS AAC_PCM_OUTPUT_CHANNELS
#endif
@ -114,10 +114,10 @@ Index: b/libavcodec/libfdk-aacdec.c
s->handle = aacDecoder_Open(avctx->extradata_size ? TT_MP4_RAW : TT_MP4_ADTS, 1);
if (!s->handle) {
av_log(avctx, AV_LOG_ERROR, "Error opening decoder\n");
Index: b/libavcodec/libfdk-aacenc.c
Index: ffmpeg-4.4.1/libavcodec/libfdk-aacenc.c
===================================================================
--- a/libavcodec/libfdk-aacenc.c
+++ b/libavcodec/libfdk-aacenc.c
--- ffmpeg-4.4.1.orig/libavcodec/libfdk-aacenc.c
+++ ffmpeg-4.4.1/libavcodec/libfdk-aacenc.c
@@ -35,6 +35,48 @@
#define FDKENC_VER_AT_LEAST(vl0, vl1) 0
#endif

View File

@ -10,10 +10,10 @@ Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
libavcodec/ac3enc.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
Index: b/libavcodec/ac3enc.c
Index: ffmpeg-4.4.1/libavcodec/ac3enc.c
===================================================================
--- a/libavcodec/ac3enc.c
+++ b/libavcodec/ac3enc.c
--- ffmpeg-4.4.1.orig/libavcodec/ac3enc.c
+++ ffmpeg-4.4.1/libavcodec/ac3enc.c
@@ -2148,7 +2148,8 @@ av_cold int ff_ac3_encode_close(AVCodecC
av_freep(&block->cpl_coord_mant);
}

3
ffmpeg-4.4.1.tar.xz Normal file
View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:eadbad9e9ab30b25f5520fbfde99fae4a92a1ae3c0257a8d68569a4651e30e02
size 9557516

11
ffmpeg-4.4.1.tar.xz.asc Normal file
View File

@ -0,0 +1,11 @@
-----BEGIN PGP SIGNATURE-----
iQFMBAABCAA2FiEE/PmG6hXm4pOlZE8QtDIvBNZ2WNgFAmF1yyEYHGZmbXBlZy1k
ZXZlbEBmZm1wZWcub3JnAAoJELQyLwTWdljYVFAH/2rsL63bzeOHg8JS1TRCf3Qa
d7jaDUUYodyHwQ2Q0yTqc1O39bcI3fJiFfzVzhVmthEkacgeGAPdJO90St0TG1le
DF5jpR12hf6AbQV04ymDIrsKSCA9p/gSl0/rVdMDjXVP+2qCr0on/Ac9jMtJcY6J
mT1uiS0aVCHIAVd+hnwrjYeuLCXSiMWJZ7kgNm3+6SPbkatQ9eVNR9TJDl8SlvZf
vHEfj2tyd90mdPeWY+1Q/L/4l/5u31oVbDTQFLFtiGkokvmwXwAcYt95RbSh37lx
unQ6uJdFxVIvL4NoGskyX6DZ9eaVi4Wt1S8UO+U128qbywRX63JLABV+LdPTi3Y=
=7FsC
-----END PGP SIGNATURE-----

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:06b10a183ce5371f915c6bb15b7b1fffbe046e8275099c96affc29e17645d909
size 9557868

View File

@ -1,11 +0,0 @@
-----BEGIN PGP SIGNATURE-----
iQFMBAABCAA2FiEE/PmG6hXm4pOlZE8QtDIvBNZ2WNgFAmBvdggYHGZmbXBlZy1k
ZXZlbEBmZm1wZWcub3JnAAoJELQyLwTWdljYfHAH/jlhBNKe+Hs+MEwIma4ydes/
mn/6UigsxZ2iEkMese8zlDNC9tKJrKn5qDmCr92pq0vIbSytDMJi3hph75NoTiEf
Q27LlyaASR6ghn5h/LZID/SWFHhCKGYyqm9d70hDTFmql+DhKULxV0fILfX6MXAg
YsNYlAHbPCGn3xscJ8QIo6qjUBQM7awNx8ra303Q9Hxa9+nOLg4eGUTD97dOODQo
34Luqy0YSYiZFcIMWa7C1Ng04v9A9J9XqMcz5j3ap5AjU9hOoNPnJ7XJsFFZkKLO
hARXfkXcS3EX85dytARCSoIYU2dF8zL7zIwXAdpIRQZ93BWVuWvqJ3PUhG1Myqo=
=k2do
-----END PGP SIGNATURE-----

View File

@ -1,3 +1,15 @@
-------------------------------------------------------------------
Thu Oct 28 15:58:30 UTC 2021 - Bjørn Lie <bjorn.lie@gmail.com>
- Update to version 4.4.1:
* Stable bug fix release, mainly codecs and format fixes.
- Refresh patches with quilt.
- Drop patches fixed upstream:
* ffmpeg-CVE-2021-33815.patch
* ffmpeg-CVE-2021-38114.patch
* ffmpeg-CVE-2021-38171.patch
* ffmpeg-CVE-2020-22037.patch
-------------------------------------------------------------------
Sun Sep 26 02:44:57 UTC 2021 - Alynx Zhou <alynx.zhou@suse.com>

View File

@ -96,7 +96,7 @@
%define _major_version 4
%define _major_expected 5
Name: ffmpeg-4
Version: 4.4
Version: 4.4.1
Release: 0
Summary: Set of libraries for working with various multimedia formats
License: GPL-3.0-or-later
@ -118,10 +118,6 @@ Patch4: ffmpeg-4.2-dlopen-fdk_aac.patch
Patch5: soversion.patch
Patch8: vmaf-trim-usr-local.patch
Patch9: ffmpeg-4.4-CVE-2020-22046.patch
Patch10: ffmpeg-CVE-2021-33815.patch
Patch11: ffmpeg-CVE-2021-38114.patch
Patch12: ffmpeg-CVE-2021-38171.patch
Patch13: ffmpeg-CVE-2020-22037.patch
BuildRequires: ladspa-devel
BuildRequires: libgsm-devel
BuildRequires: libmp3lame-devel

View File

@ -1,56 +0,0 @@
diff --unified --recursive --text --new-file --color ffmpeg-4.4.old/libavcodec/frame_thread_encoder.c ffmpeg-4.4.new/libavcodec/frame_thread_encoder.c
--- ffmpeg-4.4.old/libavcodec/frame_thread_encoder.c 2021-04-09 05:28:39.000000000 +0800
+++ ffmpeg-4.4.new/libavcodec/frame_thread_encoder.c 2021-09-26 10:51:25.616140633 +0800
@@ -124,7 +124,7 @@
int ff_frame_thread_encoder_init(AVCodecContext *avctx, AVDictionary *options){
int i=0;
ThreadContext *c;
-
+ AVCodecContext *thread_avctx = NULL;
if( !(avctx->thread_type & FF_THREAD_FRAME)
|| !(avctx->codec->capabilities & AV_CODEC_CAP_FRAME_THREADS))
@@ -205,16 +205,17 @@
AVDictionary *tmp = NULL;
int ret;
void *tmpv;
- AVCodecContext *thread_avctx = avcodec_alloc_context3(avctx->codec);
+ thread_avctx = avcodec_alloc_context3(avctx->codec);
if(!thread_avctx)
goto fail;
tmpv = thread_avctx->priv_data;
*thread_avctx = *avctx;
+ thread_avctx->priv_data = tmpv;
+ thread_avctx->internal = NULL;
+ thread_avctx->hw_frames_ctx = NULL;
ret = av_opt_copy(thread_avctx, avctx);
if (ret < 0)
goto fail;
- thread_avctx->priv_data = tmpv;
- thread_avctx->internal = NULL;
if (avctx->codec->priv_class) {
int ret = av_opt_copy(thread_avctx->priv_data, avctx->priv_data);
if (ret < 0)
@@ -243,6 +244,8 @@
return 0;
fail:
+ avcodec_close(thread_avctx);
+ av_freep(&thread_avctx);
avctx->thread_count = i;
av_log(avctx, AV_LOG_ERROR, "ff_frame_thread_encoder_init failed\n");
ff_frame_thread_encoder_free(avctx);
diff --unified --recursive --text --new-file --color ffmpeg-4.4.old/libavcodec/frame_thread_encoder.h ffmpeg-4.4.new/libavcodec/frame_thread_encoder.h
--- ffmpeg-4.4.old/libavcodec/frame_thread_encoder.h 2021-04-09 05:28:39.000000000 +0800
+++ ffmpeg-4.4.new/libavcodec/frame_thread_encoder.h 2021-09-26 10:52:37.122774657 +0800
@@ -23,6 +23,10 @@
#include "avcodec.h"
+/**
+ * Initialize frame thread encoder.
+ * @note hardware encoders are not supported
+ */
int ff_frame_thread_encoder_init(AVCodecContext *avctx, AVDictionary *options);
void ff_frame_thread_encoder_free(AVCodecContext *avctx);
int ff_thread_video_encode_frame(AVCodecContext *avctx, AVPacket *pkt,

View File

@ -1,38 +0,0 @@
From 26d3c81bc5ef2f8c3f09d45eaeacfb4b1139a777 Mon Sep 17 00:00:00 2001
From: Michael Niedermayer <michael@niedermayer.cc>
Date: Tue, 25 May 2021 19:29:18 +0200
Subject: [PATCH] avcodec/exr: More strictly check dc_count
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Fixes: out of array access
Fixes: exr/deneme
Found-by: Burak Çarıı <burakcarikci@crypttech.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
---
libavcodec/exr.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/libavcodec/exr.c b/libavcodec/exr.c
index 9377a89169..4648ed7d62 100644
--- a/libavcodec/exr.c
+++ b/libavcodec/exr.c
@@ -1059,11 +1059,11 @@ static int dwa_uncompress(EXRContext *s, const uint8_t *src, int compressed_size
bytestream2_skip(&gb, ac_size);
}
- if (dc_size > 0) {
+ {
unsigned long dest_len = dc_count * 2LL;
GetByteContext agb = gb;
- if (dc_count > (6LL * td->xsize * td->ysize + 63) / 64)
+ if (dc_count != dc_w * dc_h * 3)
return AVERROR_INVALIDDATA;
av_fast_padded_malloc(&td->dc_data, &td->dc_size, FFALIGN(dest_len, 64) * 2);
--
2.32.0

View File

@ -1,63 +0,0 @@
From 7150f9575671f898382c370acae35f9087a30ba1 Mon Sep 17 00:00:00 2001
From: maryam ebr <me22bee@outlook.com>
Date: Tue, 3 Aug 2021 01:05:47 -0400
Subject: [PATCH] avcodec/dnxhddec: check and propagate function return value
Similar to CVE-2013-0868, here return value check for 'init_vlc' is needed.
crafted DNxHD data can cause unspecified impact.
Reviewed-by: Paul B Mahol <onemda@gmail.com>
Signed-off-by: James Almer <jamrial@gmail.com>
---
libavcodec/dnxhddec.c | 22 +++++++++++++++-------
1 file changed, 15 insertions(+), 7 deletions(-)
diff --git a/libavcodec/dnxhddec.c b/libavcodec/dnxhddec.c
index c3eca7becf..41c72cdce6 100644
--- a/libavcodec/dnxhddec.c
+++ b/libavcodec/dnxhddec.c
@@ -112,6 +112,7 @@ static av_cold int dnxhd_decode_init(AVCodecContext *avctx)
static int dnxhd_init_vlc(DNXHDContext *ctx, uint32_t cid, int bitdepth)
{
+ int ret;
if (cid != ctx->cid) {
const CIDEntry *cid_table = ff_dnxhd_get_cid_table(cid);
@@ -132,19 +133,26 @@ static int dnxhd_init_vlc(DNXHDContext *ctx, uint32_t cid, int bitdepth)
ff_free_vlc(&ctx->dc_vlc);
ff_free_vlc(&ctx->run_vlc);
- init_vlc(&ctx->ac_vlc, DNXHD_VLC_BITS, 257,
+ if ((ret = init_vlc(&ctx->ac_vlc, DNXHD_VLC_BITS, 257,
ctx->cid_table->ac_bits, 1, 1,
- ctx->cid_table->ac_codes, 2, 2, 0);
- init_vlc(&ctx->dc_vlc, DNXHD_DC_VLC_BITS, bitdepth > 8 ? 14 : 12,
+ ctx->cid_table->ac_codes, 2, 2, 0)) < 0)
+ goto out;
+ if ((ret = init_vlc(&ctx->dc_vlc, DNXHD_DC_VLC_BITS, bitdepth > 8 ? 14 : 12,
ctx->cid_table->dc_bits, 1, 1,
- ctx->cid_table->dc_codes, 1, 1, 0);
- init_vlc(&ctx->run_vlc, DNXHD_VLC_BITS, 62,
+ ctx->cid_table->dc_codes, 1, 1, 0)) < 0)
+ goto out;
+ if ((ret = init_vlc(&ctx->run_vlc, DNXHD_VLC_BITS, 62,
ctx->cid_table->run_bits, 1, 1,
- ctx->cid_table->run_codes, 2, 2, 0);
+ ctx->cid_table->run_codes, 2, 2, 0)) < 0)
+ goto out;
ctx->cid = cid;
}
- return 0;
+ ret = 0;
+out:
+ if (ret < 0)
+ av_log(ctx->avctx, AV_LOG_ERROR, "init_vlc failed\n");
+ return ret;
}
static int dnxhd_get_profile(int cid)
--
2.32.0

View File

@ -1,36 +0,0 @@
From 9ffa49496d1aae4cbbb387aac28a9e061a6ab0a6 Mon Sep 17 00:00:00 2001
From: maryam ebrahimzadeh <me22bee@outlook.com>
Date: Wed, 4 Aug 2021 16:15:18 -0400
Subject: [PATCH] avformat/adtsenc: return value check for init_get_bits in
adts_decode_extradata
As the second argument for init_get_bits (buf) can be crafted, a return value check for this function call is necessary.
'buf' is part of 'AVPacket pkt'.
replace init_get_bits with init_get_bits8.
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
---
libavformat/adtsenc.c | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/libavformat/adtsenc.c b/libavformat/adtsenc.c
index ba15c0a724..3924e678d9 100644
--- a/libavformat/adtsenc.c
+++ b/libavformat/adtsenc.c
@@ -53,9 +53,11 @@ static int adts_decode_extradata(AVFormatContext *s, ADTSContext *adts, const ui
GetBitContext gb;
PutBitContext pb;
MPEG4AudioConfig m4ac;
- int off;
+ int off, ret;
- init_get_bits(&gb, buf, size * 8);
+ ret = init_get_bits8(&gb, buf, size);
+ if (ret < 0)
+ return ret;
off = avpriv_mpeg4audio_get_config2(&m4ac, buf, size, 1, s);
if (off < 0)
return off;
--
2.33.0

View File

@ -2,10 +2,10 @@
libavutil/arm/timer.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
Index: ffmpeg-4.4/libavutil/arm/timer.h
Index: ffmpeg-4.4.1/libavutil/arm/timer.h
===================================================================
--- ffmpeg-4.4.orig/libavutil/arm/timer.h
+++ ffmpeg-4.4/libavutil/arm/timer.h
--- ffmpeg-4.4.1.orig/libavutil/arm/timer.h
+++ ffmpeg-4.4.1/libavutil/arm/timer.h
@@ -30,7 +30,7 @@
#define AV_READ_TIME mach_absolute_time

View File

@ -11,11 +11,11 @@ reduced codec selection list.
libavformat/matroskaenc.c | 19 +++++++++++++------
1 file changed, 13 insertions(+), 6 deletions(-)
Index: b/libavformat/matroskaenc.c
Index: ffmpeg-4.4.1/libavformat/matroskaenc.c
===================================================================
--- a/libavformat/matroskaenc.c
+++ b/libavformat/matroskaenc.c
@@ -2834,16 +2834,24 @@ static const AVClass matroska_class = {
--- ffmpeg-4.4.1.orig/libavformat/matroskaenc.c
+++ ffmpeg-4.4.1/libavformat/matroskaenc.c
@@ -2835,16 +2835,24 @@ static const AVClass matroska_class = {
.version = LIBAVUTIL_VERSION_INT,
};
@ -44,7 +44,7 @@ Index: b/libavformat/matroskaenc.c
.init = mkv_init,
.deinit = mkv_deinit,
.write_header = mkv_write_header,
@@ -2905,8 +2913,7 @@ AVOutputFormat ff_matroska_audio_muxer =
@@ -2906,8 +2914,7 @@ AVOutputFormat ff_matroska_audio_muxer =
.mime_type = "audio/x-matroska",
.extensions = "mka",
.priv_data_size = sizeof(MatroskaMuxContext),

View File

@ -10,11 +10,11 @@ Improve the error messages a bit to say what's really going on
fftools/ffmpeg_opt.c | 2 +-
3 files changed, 4 insertions(+), 4 deletions(-)
Index: ffmpeg-4.4/fftools/ffmpeg.c
Index: ffmpeg-4.4.1/fftools/ffmpeg.c
===================================================================
--- ffmpeg-4.4.orig/fftools/ffmpeg.c
+++ ffmpeg-4.4/fftools/ffmpeg.c
@@ -2951,7 +2951,7 @@ static int init_input_stream(int ist_ind
--- ffmpeg-4.4.1.orig/fftools/ffmpeg.c
+++ ffmpeg-4.4.1/fftools/ffmpeg.c
@@ -2954,7 +2954,7 @@ static int init_input_stream(int ist_ind
if (ist->decoding_needed) {
const AVCodec *codec = ist->dec;
if (!codec) {
@ -23,10 +23,10 @@ Index: ffmpeg-4.4/fftools/ffmpeg.c
avcodec_get_name(ist->dec_ctx->codec_id), ist->file_index, ist->st->index);
return AVERROR(EINVAL);
}
Index: ffmpeg-4.4/fftools/ffmpeg_filter.c
Index: ffmpeg-4.4.1/fftools/ffmpeg_filter.c
===================================================================
--- ffmpeg-4.4.orig/fftools/ffmpeg_filter.c
+++ ffmpeg-4.4/fftools/ffmpeg_filter.c
--- ffmpeg-4.4.1.orig/fftools/ffmpeg_filter.c
+++ ffmpeg-4.4.1/fftools/ffmpeg_filter.c
@@ -959,7 +959,7 @@ static int configure_input_filter(Filter
{
if (!ifilter->ist->dec) {
@ -45,10 +45,10 @@ Index: ffmpeg-4.4/fftools/ffmpeg_filter.c
avcodec_get_name(ost->st->codecpar->codec_id), ost->file_index, ost->index);
ret = AVERROR(EINVAL);
goto fail;
Index: ffmpeg-4.4/fftools/ffmpeg_opt.c
Index: ffmpeg-4.4.1/fftools/ffmpeg_opt.c
===================================================================
--- ffmpeg-4.4.orig/fftools/ffmpeg_opt.c
+++ ffmpeg-4.4/fftools/ffmpeg_opt.c
--- ffmpeg-4.4.1.orig/fftools/ffmpeg_opt.c
+++ ffmpeg-4.4.1/fftools/ffmpeg_opt.c
@@ -1400,7 +1400,7 @@ static int choose_encoder(OptionsContext
if (!ost->enc) {
av_log(NULL, AV_LOG_FATAL, "Automatic encoder selection failed for "

View File

@ -24,11 +24,11 @@ what dlopening programs have to deal with.
configure | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
Index: b/configure
Index: ffmpeg-4.4.1/configure
===================================================================
--- a/configure
+++ b/configure
@@ -3833,10 +3833,10 @@ SLIBPREF="lib"
--- ffmpeg-4.4.1.orig/configure
+++ ffmpeg-4.4.1/configure
@@ -3834,10 +3834,10 @@ SLIBPREF="lib"
SLIBSUF=".so"
SLIBNAME='$(SLIBPREF)$(FULLNAME)$(SLIBSUF)'
SLIBNAME_WITH_VERSION='$(SLIBNAME).$(LIBVERSION)'

View File

@ -2,10 +2,10 @@
libavfilter/vf_libvmaf.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
Index: ffmpeg-4.4/libavfilter/vf_libvmaf.c
Index: ffmpeg-4.4.1/libavfilter/vf_libvmaf.c
===================================================================
--- ffmpeg-4.4.orig/libavfilter/vf_libvmaf.c
+++ ffmpeg-4.4/libavfilter/vf_libvmaf.c
--- ffmpeg-4.4.1.orig/libavfilter/vf_libvmaf.c
+++ ffmpeg-4.4.1/libavfilter/vf_libvmaf.c
@@ -72,7 +72,7 @@ typedef struct LIBVMAFContext {
#define FLAGS AV_OPT_FLAG_FILTERING_PARAM|AV_OPT_FLAG_VIDEO_PARAM