Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mpc-hc/FFmpeg.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul B Mahol <onemda@gmail.com>2016-08-05 13:14:38 +0300
committerPaul B Mahol <onemda@gmail.com>2016-08-05 13:18:56 +0300
commit04a8bbca9289a4ee203f90bb8d48166bf53015e6 (patch)
treeef36720c639a0426f0663dcd8c30330e142e5e88 /libavfilter/avf_showspectrum.c
parent6803a298f4338c19c3032d2417c6e857eb6d95be (diff)
avfilter/avf_showspectrum: add color rotation feature
Mostly useful with channel color scheme.
Diffstat (limited to 'libavfilter/avf_showspectrum.c')
-rw-r--r--libavfilter/avf_showspectrum.c15
1 files changed, 11 insertions, 4 deletions
diff --git a/libavfilter/avf_showspectrum.c b/libavfilter/avf_showspectrum.c
index 6be97af529..648901f4bb 100644
--- a/libavfilter/avf_showspectrum.c
+++ b/libavfilter/avf_showspectrum.c
@@ -61,6 +61,7 @@ typedef struct {
int color_mode; ///< display color scheme
int scale;
float saturation; ///< color saturation multiplier
+ float rotation; ///< color rotation
int data;
int xpos; ///< x position (current column)
FFTContext *fft; ///< Fast Fourier Transform context
@@ -140,6 +141,7 @@ static const AVOption showspectrum_options[] = {
{ "data", "set data mode", OFFSET(data), AV_OPT_TYPE_INT, {.i64 = 0}, 0, NB_DMODES-1, FLAGS, "data" },
{ "magnitude", NULL, 0, AV_OPT_TYPE_CONST, {.i64=D_MAGNITUDE}, 0, 0, FLAGS, "data" },
{ "phase", NULL, 0, AV_OPT_TYPE_CONST, {.i64=D_PHASE}, 0, 0, FLAGS, "data" },
+ { "rotation", "color rotation", OFFSET(rotation), AV_OPT_TYPE_FLOAT, {.dbl = 0}, -1, 1, FLAGS },
{ NULL }
};
@@ -542,13 +544,17 @@ static void color_range(ShowSpectrumContext *s, int ch,
if (s->color_mode == CHANNEL) {
if (s->nb_display_channels > 1) {
- *uf *= 0.5 * sin((2 * M_PI * ch) / s->nb_display_channels);
- *vf *= 0.5 * cos((2 * M_PI * ch) / s->nb_display_channels);
+ *uf *= 0.5 * sin((2 * M_PI * ch) / s->nb_display_channels + M_PI * s->rotation);
+ *vf *= 0.5 * cos((2 * M_PI * ch) / s->nb_display_channels + M_PI * s->rotation);
} else {
- *uf = 0.0f;
- *vf = 0.0f;
+ *uf *= 0.5 * sin(M_PI * s->rotation);
+ *vf *= 0.5 * cos(M_PI * s->rotation + M_PI_2);
}
+ } else {
+ *uf += *uf * sin(M_PI * s->rotation);
+ *vf += *vf * cos(M_PI * s->rotation + M_PI_2);
}
+
*uf *= s->saturation;
*vf *= s->saturation;
}
@@ -913,6 +919,7 @@ static const AVOption showspectrumpic_options[] = {
{ "horizontal", NULL, 0, AV_OPT_TYPE_CONST, {.i64=HORIZONTAL}, 0, 0, FLAGS, "orientation" },
{ "gain", "set scale gain", OFFSET(gain), AV_OPT_TYPE_FLOAT, {.dbl = 1}, 0, 128, FLAGS },
{ "legend", "draw legend", OFFSET(legend), AV_OPT_TYPE_BOOL, {.i64 = 1}, 0, 1, FLAGS },
+ { "rotation", "color rotation", OFFSET(rotation), AV_OPT_TYPE_FLOAT, {.dbl = 0}, -1, 1, FLAGS },
{ NULL }
};