diff options
author | Muhammad Faiz <mfcc64@gmail.com> | 2015-01-17 22:52:11 +0700 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2015-01-18 05:15:15 +0100 |
commit | eba5cb2028f162f2850ba83713601349619e6da1 (patch) | |
tree | b58a5c1c70dad6b36710103b5f7e4f69942e2b3b /libavfilter/avf_showcqt.c | |
parent | dff6c9250ba8de073955ce223276ca88ddd3ae8b (diff) | |
download | ffmpeg-eba5cb2028f162f2850ba83713601349619e6da1.tar.gz |
avfilter/showcqt: add gamma2 option
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
Diffstat (limited to 'libavfilter/avf_showcqt.c')
-rw-r--r-- | libavfilter/avf_showcqt.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/libavfilter/avf_showcqt.c b/libavfilter/avf_showcqt.c index e650f74759..b8605ece97 100644 --- a/libavfilter/avf_showcqt.c +++ b/libavfilter/avf_showcqt.c @@ -90,6 +90,7 @@ typedef struct { float coeffclamp; /* lower coeffclamp, more precise, higher coeffclamp, faster */ int fullhd; /* if true, output video is at full HD resolution, otherwise it will be halved */ float gamma; /* lower gamma, more contrast, higher gamma, more range */ + float gamma2; /* gamma of bargraph */ int fps; /* the required fps is so strict, so it's enough to be int, but 24000/1001 etc cannot be encoded */ int count; /* fps * count = transform rate */ } ShowCQTContext; @@ -103,6 +104,7 @@ static const AVOption showcqt_options[] = { { "timeclamp", "set timeclamp", OFFSET(timeclamp), AV_OPT_TYPE_DOUBLE, { .dbl = 0.17 }, 0.1, 1.0, FLAGS }, { "coeffclamp", "set coeffclamp", OFFSET(coeffclamp), AV_OPT_TYPE_FLOAT, { .dbl = 1 }, 0.1, 10, FLAGS }, { "gamma", "set gamma", OFFSET(gamma), AV_OPT_TYPE_FLOAT, { .dbl = 3 }, 1, 7, FLAGS }, + { "gamma2", "set gamma of bargraph", OFFSET(gamma2), AV_OPT_TYPE_FLOAT, { .dbl = 1 }, 1, 7, FLAGS }, { "fullhd", "set full HD resolution", OFFSET(fullhd), AV_OPT_TYPE_INT, { .i64 = 1 }, 0, 1, FLAGS }, { "fps", "set video fps", OFFSET(fps), AV_OPT_TYPE_INT, { .i64 = 25 }, 10, 100, FLAGS }, { "count", "set number of transform per frame", OFFSET(count), AV_OPT_TYPE_INT, { .i64 = 6 }, 1, 30, FLAGS }, @@ -566,6 +568,7 @@ static int plot_cqt(AVFilterLink *inlink) for (x = 0; x < VIDEO_WIDTH; x++) { int u; float g = 1.0f / s->gamma; + float g2 = 1.0f / s->gamma2; FFTComplex l = {0,0}; FFTComplex r = {0,0}; @@ -581,7 +584,7 @@ static int plot_cqt(AVFilterLink *inlink) result[x][0] = l.re * l.re + l.im * l.im; result[x][2] = r.re * r.re + r.im * r.im; result[x][1] = 0.5f * (result[x][0] + result[x][2]); - result[x][3] = result[x][1]; + result[x][3] = (g2 == 1.0f) ? result[x][1] : powf(result[x][1], g2); result[x][0] = 255.0f * powf(FFMIN(1.0f,result[x][0]), g); result[x][1] = 255.0f * powf(FFMIN(1.0f,result[x][1]), g); result[x][2] = 255.0f * powf(FFMIN(1.0f,result[x][2]), g); |