diff options
author | Paul B Mahol <onemda@gmail.com> | 2022-03-02 16:59:18 +0100 |
---|---|---|
committer | Paul B Mahol <onemda@gmail.com> | 2022-03-03 09:57:53 +0100 |
commit | 59520f068da89006d527f044a6560235260bcc6c (patch) | |
tree | a8dc2d779eabf5c1bb2f6358f551f4b9d4757bd1 /libavfilter/vf_colorchannelmixer.c | |
parent | 835446a8e10bf402a2731bbf5db7c282fff8c4f8 (diff) |
avfilter/vf_colorchannelmixer: add float formats support
Diffstat (limited to 'libavfilter/vf_colorchannelmixer.c')
-rw-r--r-- | libavfilter/vf_colorchannelmixer.c | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/libavfilter/vf_colorchannelmixer.c b/libavfilter/vf_colorchannelmixer.c index b32e0a9d0e..88dd7451dc 100644 --- a/libavfilter/vf_colorchannelmixer.c +++ b/libavfilter/vf_colorchannelmixer.c @@ -77,6 +77,10 @@ static void preservel(float *r, float *g, float *b, float lin, float lout, float #define DEPTH 16 #include "colorchannelmixer_template.c" +#undef DEPTH +#define DEPTH 32 +#include "colorchannelmixer_template.c" + #define OFFSET(x) offsetof(ColorChannelMixerContext, x) #define FLAGS AV_OPT_FLAG_FILTERING_PARAM|AV_OPT_FLAG_VIDEO_PARAM|AV_OPT_FLAG_RUNTIME_PARAM @@ -125,6 +129,7 @@ static const enum AVPixelFormat pix_fmts[] = { AV_PIX_FMT_GBRP12, AV_PIX_FMT_GBRAP12, AV_PIX_FMT_GBRP14, AV_PIX_FMT_GBRP16, AV_PIX_FMT_GBRAP16, + AV_PIX_FMT_GBRPF32, AV_PIX_FMT_GBRAPF32, AV_PIX_FMT_NONE }; @@ -278,6 +283,26 @@ static int filter_slice_rgb0_pl(AVFilterContext *ctx, void *arg, int jobnr, int return filter_slice_rgba_packed_8(ctx, arg, jobnr, nb_jobs, -1, 4, 1, 8); } +static int filter_slice_gbrp32(AVFilterContext *ctx, void *arg, int jobnr, int nb_jobs) +{ + return filter_slice_rgba_planar_32(ctx, arg, jobnr, nb_jobs, 0, 1, 0); +} + +static int filter_slice_gbrap32(AVFilterContext *ctx, void *arg, int jobnr, int nb_jobs) +{ + return filter_slice_rgba_planar_32(ctx, arg, jobnr, nb_jobs, 1, 1, 0); +} + +static int filter_slice_gbrp32_pl(AVFilterContext *ctx, void *arg, int jobnr, int nb_jobs) +{ + return filter_slice_rgba_planar_32(ctx, arg, jobnr, nb_jobs, 0, 1, 1); +} + +static int filter_slice_gbrap32_pl(AVFilterContext *ctx, void *arg, int jobnr, int nb_jobs) +{ + return filter_slice_rgba_planar_32(ctx, arg, jobnr, nb_jobs, 1, 1, 1); +} + static int config_output(AVFilterLink *outlink) { AVFilterContext *ctx = outlink->src; @@ -391,6 +416,14 @@ static int config_output(AVFilterLink *outlink) s->filter_slice[0] = filter_slice_gbrap16; s->filter_slice[1] = filter_slice_gbrap16_pl; break; + case AV_PIX_FMT_GBRPF32: + s->filter_slice[0] = filter_slice_gbrp32; + s->filter_slice[1] = filter_slice_gbrp32_pl; + break; + case AV_PIX_FMT_GBRAPF32: + s->filter_slice[0] = filter_slice_gbrap32; + s->filter_slice[1] = filter_slice_gbrap32_pl; + break; } return 0; |