Browse Source

avfilter/avf_avectorscope: add swap and mirror options

Signed-off-by: Paul B Mahol <onemda@gmail.com>
tags/n4.0
Paul B Mahol 7 years ago
parent
commit
afd2bf54c3
2 changed files with 37 additions and 0 deletions
  1. +20
    -0
      doc/filters.texi
  2. +17
    -0
      libavfilter/avf_avectorscope.c

+ 20
- 0
doc/filters.texi View File

@@ -17232,6 +17232,26 @@ Cubic root.
Logarithmic.
@end table

@item swap
Swap left channel axis with right channel axis.

@item mirror
Mirror axis.

@table @samp
@item none
No mirror.

@item x
Mirror only x axis.

@item y
Mirror only y axis.

@item xy
Mirror both axis.
@end table

@end table

@subsection Examples


+ 17
- 0
libavfilter/avf_avectorscope.c View File

@@ -65,6 +65,8 @@ typedef struct AudioVectorScopeContext {
int contrast[4];
int fade[4];
double zoom;
int swap;
int mirror;
unsigned prev_x, prev_y;
AVRational frame_rate;
} AudioVectorScopeContext;
@@ -99,6 +101,12 @@ static const AVOption avectorscope_options[] = {
{ "sqrt", "square root", 0, AV_OPT_TYPE_CONST, {.i64=SQRT}, 0, 0, FLAGS, "scale" },
{ "cbrt", "cube root", 0, AV_OPT_TYPE_CONST, {.i64=CBRT}, 0, 0, FLAGS, "scale" },
{ "log", "logarithmic", 0, AV_OPT_TYPE_CONST, {.i64=LOG}, 0, 0, FLAGS, "scale" },
{ "swap", "swap x axis with y axis", OFFSET(swap), AV_OPT_TYPE_BOOL, {.i64=1}, 0, 1, FLAGS },
{ "mirror", "mirror axis", OFFSET(mirror), AV_OPT_TYPE_INT, {.i64=2}, 0, 3, FLAGS, "mirror" },
{ "none", "no mirror", 0, AV_OPT_TYPE_CONST, {.i64=0}, 0, 0, FLAGS, "mirror" },
{ "x", "mirror x", 0, AV_OPT_TYPE_CONST, {.i64=1}, 0, 0, FLAGS, "mirror" },
{ "y", "mirror y", 0, AV_OPT_TYPE_CONST, {.i64=2}, 0, 0, FLAGS, "mirror" },
{ "xy", "mirror both", 0, AV_OPT_TYPE_CONST, {.i64=3}, 0, 0, FLAGS, "mirror" },
{ NULL }
};

@@ -316,6 +324,15 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *insamples)
break;
}

if (s->mirror & 1)
src[0] = -src[0];

if (s->mirror & 2)
src[1] = -src[1];

if (s->swap)
FFSWAP(float, src[0], src[1]);;

if (s->mode == LISSAJOUS) {
x = ((src[1] - src[0]) * zoom / 2 + 1) * hw;
y = (1.0 - (src[0] + src[1]) * zoom / 2) * hh;


Loading…
Cancel
Save