[FFmpeg-devel] [PATCH 1/3] lavc/libsvtav1: Enable svtav1-params like x264-params in libx264
mypopy at gmail.com
mypopy at gmail.com
Mon Jul 5 13:49:11 EEST 2021
On Sun, Jul 4, 2021 at 8:16 PM Lynne <dev at lynne.ee> wrote:
>
> 4 Jul 2021, 03:40 by mypopydev at gmail.com:
>
> > From: Jun Zhao <barryjzhao at tencent.com>
> >
> > Enabled the svtav1-params, then we can set all the params
> >
>
> The whole purpose of the params field was to give it off to the encoder
> and have it do its own parsing, such that we wouldn't have to keep up
> adding more and more options.
> But svt-av1 cannot parse a generic option field on its own, so no, add
> those as separate options rather than a generic text field.
>
Will split the options as the comments, thx
>
> > Signed-off-by: Jun Zhao <barryjzhao at tencent.com>
> > ---
> > libavcodec/libsvtav1.c | 337 +++++++++++++++++++++++++++++++++++++++++
> > 1 file changed, 337 insertions(+)
> >
> > diff --git a/libavcodec/libsvtav1.c b/libavcodec/libsvtav1.c
> > index fabc4e6428..9d72a35f6c 100644
> > --- a/libavcodec/libsvtav1.c
> > +++ b/libavcodec/libsvtav1.c
> > @@ -71,6 +71,8 @@ typedef struct SvtContext {
> >
> > int tile_columns;
> > int tile_rows;
> > +
> > + AVDictionary *svt_av1_params;
> > } SvtContext;
> >
> > static const struct {
> > @@ -146,11 +148,334 @@ static int alloc_buffer(EbSvtAv1EncConfiguration *config, SvtContext *svt_enc)
> >
> > }
> >
> > +static void set_asm_type(EbSvtAv1EncConfiguration *p, const char *value)
> > +{
> > + const struct {
> > + const char *name;
> > + CPU_FLAGS flags;
> > + } param_maps[] = {
> > + {"c", 0},
> > + {"0", 0},
> > +
> > + {"mmx", (CPU_FLAGS_MMX << 1) - 1},
> > + {"1", (CPU_FLAGS_MMX << 1) - 1},
> > +
> > + {"sse", (CPU_FLAGS_SSE << 1) - 1},
> > + {"2", (CPU_FLAGS_SSE << 1) - 1},
> > +
> > + {"sse2", (CPU_FLAGS_SSE2 << 1) - 1},
> > + {"3", (CPU_FLAGS_SSE2 << 1) - 1},
> > +
> > + {"sse3", (CPU_FLAGS_SSE3 << 1) - 1},
> > + {"4", (CPU_FLAGS_SSE3 << 1) - 1},
> > +
> > + {"ssse3", (CPU_FLAGS_SSSE3 << 1) - 1},
> > + {"5", (CPU_FLAGS_SSSE3 << 1) - 1},
> > +
> > + {"sse4_1", (CPU_FLAGS_SSE4_1 << 1) - 1},
> > + {"6", (CPU_FLAGS_SSE4_1 << 1) - 1},
> > +
> > + {"sse4_2", (CPU_FLAGS_SSE4_2 << 1) - 1},
> > + {"7", (CPU_FLAGS_SSE4_2 << 1) - 1},
> > +
> > + {"avx", (CPU_FLAGS_AVX << 1) - 1},
> > + {"8", (CPU_FLAGS_AVX << 1) - 1},
> > +
> > + {"avx2", (CPU_FLAGS_AVX2 << 1) - 1},
> > + {"9", (CPU_FLAGS_AVX2 << 1) - 1},
> > +
> > + {"avx512", (CPU_FLAGS_AVX512VL << 1) - 1},
> > + {"10", (CPU_FLAGS_AVX512VL << 1) - 1},
> > +
> > + {"max", CPU_FLAGS_ALL},
> > + {"11", CPU_FLAGS_ALL},
> > + };
> >
>
> We already have a generic way to set up cpuflags, you should use that
> instead of adding another field.
Good suggestion!
More information about the ffmpeg-devel
mailing list