diff mbox series

[FFmpeg-devel] avfilter/vf_lut3d: support remaping negative values in the prelut

Message ID 20200905211301.81127-1-mindmark@gmail.com
State Accepted
Commit 5fcd83a244f26bcd9860e52a5bbcd53d8a8f89e6
Headers show
Series [FFmpeg-devel] avfilter/vf_lut3d: support remaping negative values in the prelut | expand

Checks

Context Check Description
andriy/default pending
andriy/make success Make finished
andriy/make_fate success Make fate finished

Commit Message

Mark Reid Sept. 5, 2020, 9:13 p.m. UTC
From: Mark Reid <mindmark@gmail.com>

---
 libavfilter/vf_lut3d.c | 8 +++-----
 1 file changed, 3 insertions(+), 5 deletions(-)

Comments

Mark Reid Sept. 5, 2020, 9:15 p.m. UTC | #1
On Sat, Sep 5, 2020 at 2:13 PM <mindmark@gmail.com> wrote:

> From: Mark Reid <mindmark@gmail.com>
>
> ---
>  libavfilter/vf_lut3d.c | 8 +++-----
>  1 file changed, 3 insertions(+), 5 deletions(-)
>
> diff --git a/libavfilter/vf_lut3d.c b/libavfilter/vf_lut3d.c
> index 6730a424ce..988f6c8b55 100644
> --- a/libavfilter/vf_lut3d.c
> +++ b/libavfilter/vf_lut3d.c
> @@ -878,18 +878,16 @@ static int parse_cinespace(AVFilterContext *ctx,
> FILE *f)
>
>                      prelut_sizes[i] = npoints;
>                      in_min[i] = FLT_MAX;
> -                    in_max[i] = FLT_MIN;
> +                    in_max[i] = -FLT_MAX;
>                      out_min[i] = FLT_MAX;
> -                    out_max[i] = FLT_MIN;
> -
> -                    last = FLT_MIN;
> +                    out_max[i] = -FLT_MAX;
>
>                      for (int j = 0; j < npoints; j++) {
>                          NEXT_FLOAT_OR_GOTO(v, end)
>                          in_min[i] = FFMIN(in_min[i], v);
>                          in_max[i] = FFMAX(in_max[i], v);
>                          in_prelut[i][j] = v;
> -                        if (v < last) {
> +                        if (j > 0 && v < last) {
>                              av_log(ctx, AV_LOG_ERROR, "Invalid file, non
> increasing prelut.\n");
>                              ret = AVERROR(ENOMEM);
>                              goto end;
> --
> 2.27.0
>
>
Sorry I meant to include this in the email.

Here is a sample cinespace lut that remaps negative values in the prelut
https://www.dropbox.com/s/7e4j7r264y0bueu/log_prelut.csp
Paul B Mahol Sept. 6, 2020, 9:27 a.m. UTC | #2
On Sat, Sep 05, 2020 at 02:13:01PM -0700, mindmark@gmail.com wrote:
> From: Mark Reid <mindmark@gmail.com>
> 
> ---
>  libavfilter/vf_lut3d.c | 8 +++-----
>  1 file changed, 3 insertions(+), 5 deletions(-)
> 
> diff --git a/libavfilter/vf_lut3d.c b/libavfilter/vf_lut3d.c
> index 6730a424ce..988f6c8b55 100644
> --- a/libavfilter/vf_lut3d.c
> +++ b/libavfilter/vf_lut3d.c
> @@ -878,18 +878,16 @@ static int parse_cinespace(AVFilterContext *ctx, FILE *f)
>  

lgtm
diff mbox series

Patch

diff --git a/libavfilter/vf_lut3d.c b/libavfilter/vf_lut3d.c
index 6730a424ce..988f6c8b55 100644
--- a/libavfilter/vf_lut3d.c
+++ b/libavfilter/vf_lut3d.c
@@ -878,18 +878,16 @@  static int parse_cinespace(AVFilterContext *ctx, FILE *f)
 
                     prelut_sizes[i] = npoints;
                     in_min[i] = FLT_MAX;
-                    in_max[i] = FLT_MIN;
+                    in_max[i] = -FLT_MAX;
                     out_min[i] = FLT_MAX;
-                    out_max[i] = FLT_MIN;
-
-                    last = FLT_MIN;
+                    out_max[i] = -FLT_MAX;
 
                     for (int j = 0; j < npoints; j++) {
                         NEXT_FLOAT_OR_GOTO(v, end)
                         in_min[i] = FFMIN(in_min[i], v);
                         in_max[i] = FFMAX(in_max[i], v);
                         in_prelut[i][j] = v;
-                        if (v < last) {
+                        if (j > 0 && v < last) {
                             av_log(ctx, AV_LOG_ERROR, "Invalid file, non increasing prelut.\n");
                             ret = AVERROR(ENOMEM);
                             goto end;