mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2025-06-04 05:57:49 +02:00
avfilter/avf_avectorscope: add swap and mirror options
Signed-off-by: Paul B Mahol <onemda@gmail.com>
This commit is contained in:
parent
37810bee78
commit
afd2bf54c3
@ -17232,6 +17232,26 @@ Cubic root.
|
|||||||
Logarithmic.
|
Logarithmic.
|
||||||
@end table
|
@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
|
@end table
|
||||||
|
|
||||||
@subsection Examples
|
@subsection Examples
|
||||||
|
@ -65,6 +65,8 @@ typedef struct AudioVectorScopeContext {
|
|||||||
int contrast[4];
|
int contrast[4];
|
||||||
int fade[4];
|
int fade[4];
|
||||||
double zoom;
|
double zoom;
|
||||||
|
int swap;
|
||||||
|
int mirror;
|
||||||
unsigned prev_x, prev_y;
|
unsigned prev_x, prev_y;
|
||||||
AVRational frame_rate;
|
AVRational frame_rate;
|
||||||
} AudioVectorScopeContext;
|
} AudioVectorScopeContext;
|
||||||
@ -99,6 +101,12 @@ static const AVOption avectorscope_options[] = {
|
|||||||
{ "sqrt", "square root", 0, AV_OPT_TYPE_CONST, {.i64=SQRT}, 0, 0, FLAGS, "scale" },
|
{ "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" },
|
{ "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" },
|
{ "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 }
|
{ NULL }
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -316,6 +324,15 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *insamples)
|
|||||||
break;
|
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) {
|
if (s->mode == LISSAJOUS) {
|
||||||
x = ((src[1] - src[0]) * zoom / 2 + 1) * hw;
|
x = ((src[1] - src[0]) * zoom / 2 + 1) * hw;
|
||||||
y = (1.0 - (src[0] + src[1]) * zoom / 2) * hh;
|
y = (1.0 - (src[0] + src[1]) * zoom / 2) * hh;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user