diff options
author | Paul B Mahol <onemda@gmail.com> | 2023-07-19 23:16:54 +0200 |
---|---|---|
committer | Paul B Mahol <onemda@gmail.com> | 2023-07-19 23:42:03 +0200 |
commit | 72390c7d809fd636497ba1e3552930c0938c6a44 (patch) | |
tree | 6303d9ac7935e5189fc2344dba7ba52f92a65f0e | |
parent | 5d8879208cd76e76ae5d093b207787979bea0cb1 (diff) | |
download | ffmpeg-72390c7d809fd636497ba1e3552930c0938c6a44.tar.gz |
avfilter/vf_pseudocolor: add heat preset
-rw-r--r-- | doc/filters.texi | 1 | ||||
-rw-r--r-- | libavfilter/vf_pseudocolor.c | 22 |
2 files changed, 23 insertions, 0 deletions
diff --git a/doc/filters.texi b/doc/filters.texi index c6d331d12a..6f3f666c95 100644 --- a/doc/filters.texi +++ b/doc/filters.texi @@ -19707,6 +19707,7 @@ Available LUTs: @item total @item spectral @item cool +@item heat @end table @item opacity diff --git a/libavfilter/vf_pseudocolor.c b/libavfilter/vf_pseudocolor.c index 8475d4f4df..5b6cd5e70a 100644 --- a/libavfilter/vf_pseudocolor.c +++ b/libavfilter/vf_pseudocolor.c @@ -69,6 +69,7 @@ enum Curves { SOLAR, SPECTRAL, COOL, + HEAT, NB_CURVES, }; @@ -89,6 +90,7 @@ enum Presets { PRESET_TOTAL, PRESET_SPECTRAL, PRESET_COOL, + PRESET_HEAT, NB_PRESETS, }; @@ -150,6 +152,16 @@ static double coolfunv(double x) return 0.25 * sin(2.0 * x * M_PI) + 0.5; } +static double heatfunu(double x) +{ + return 0.25 * cos(2.0 * x * M_PI + M_PI) + 0.75; +} + +static double heatfunv(double x) +{ + return 0.25 * sin(2.0 * x * M_PI) + 0.5; +} + static const Curve curves[] = { [MAGMA] = {{ @@ -202,6 +214,14 @@ static const Curve curves[] = .offset = { 0., 0., 0 }, .yuv = 1, .fun = { coolfunu, limit, coolfunv }, }, + [HEAT] = {{ + { 0, 0, 0, 0, 0, 0, 1./256, 0 }, + { 0, 0, 0, 0, 0, 0, 1./256, 0 }, + { 0, 0, 0, 0, 0, 0, 1./256, 0 }, + }, + .offset = { 0., 0., 0 }, + .yuv = 1, + .fun = { heatfunu, limit, heatfunv }, }, }; static const Preset presets[] = @@ -222,6 +242,7 @@ static const Preset presets[] = [PRESET_SOLAR] = { 1, &full_range, &curves[SOLAR], NULL }, [PRESET_SPECTRAL]= { 1, &full_range, &curves[SPECTRAL],NULL }, [PRESET_COOL] = { 1, &full_range, &curves[COOL], NULL }, + [PRESET_HEAT]= { 1, &full_range, &curves[HEAT],NULL }, }; typedef struct PseudoColorContext { @@ -278,6 +299,7 @@ static const AVOption pseudocolor_options[] = { { "total", NULL, 0, AV_OPT_TYPE_CONST, {.i64=PRESET_TOTAL}, .flags=FLAGS, "preset" }, { "spectral", NULL, 0, AV_OPT_TYPE_CONST, {.i64=PRESET_SPECTRAL},.flags = FLAGS, "preset" }, { "cool", NULL, 0, AV_OPT_TYPE_CONST, {.i64=PRESET_COOL}, .flags = FLAGS, "preset" }, + { "heat", NULL, 0, AV_OPT_TYPE_CONST, {.i64=PRESET_HEAT}, .flags = FLAGS, "preset" }, { "opacity", "set pseudocolor opacity",OFFSET(opacity), AV_OPT_TYPE_FLOAT, {.dbl=1}, 0, 1, .flags = FLAGS }, { NULL } }; |