aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPaul B Mahol <onemda@gmail.com>2023-07-19 23:16:54 +0200
committerPaul B Mahol <onemda@gmail.com>2023-07-19 23:42:03 +0200
commit72390c7d809fd636497ba1e3552930c0938c6a44 (patch)
tree6303d9ac7935e5189fc2344dba7ba52f92a65f0e
parent5d8879208cd76e76ae5d093b207787979bea0cb1 (diff)
downloadffmpeg-72390c7d809fd636497ba1e3552930c0938c6a44.tar.gz
avfilter/vf_pseudocolor: add heat preset
-rw-r--r--doc/filters.texi1
-rw-r--r--libavfilter/vf_pseudocolor.c22
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 }
};