History

avfilter/vf_waveform: add option to control strechness of waveform

Paul B Mahol committed 5 years ago

Commit ca788d11 parent e0de0aa2 files · +39 −1Browse files

Showing the changes to libavfilter (1 of 2 files). Show all

Unified · Split

libavfilter/vf_waveform.c+26−1
@@ -36,6 +36,12 @@ typedef struct ThreadData { · 35 unmodified lines
36 int offset_x;36 int offset_x;
37} ThreadData;37} ThreadData;
38 38
39enum FitMode {
40 FM_NONE,
41 FM_SIZE,
42 NB_FITMODES
43};
44
39enum FilterType {45enum FilterType {
40 LOWPASS,46 LOWPASS,
41 FLAT,47 FLAT,
@@ -113,6 +119,7 @@ typedef struct WaveformContext { · 71 unmodified lines
113 int rgb;119 int rgb;
114 float ftint[2];120 float ftint[2];
115 int tint[2];121 int tint[2];
122 int fitmode;
116 123
117 int (*waveform_slice)(AVFilterContext *ctx, void *arg,124 int (*waveform_slice)(AVFilterContext *ctx, void *arg,
118 int jobnr, int nb_jobs);125 int jobnr, int nb_jobs);
@@ -184,6 +191,10 @@ static const AVOption waveform_options[] = { · 65 unmodified lines
184 { "t0", "set 1st tint", OFFSET(ftint[0]), AV_OPT_TYPE_FLOAT, {.dbl=0}, -1, 1, FLAGS},191 { "t0", "set 1st tint", OFFSET(ftint[0]), AV_OPT_TYPE_FLOAT, {.dbl=0}, -1, 1, FLAGS},
185 { "tint1", "set 2nd tint", OFFSET(ftint[1]), AV_OPT_TYPE_FLOAT, {.dbl=0}, -1, 1, FLAGS},192 { "tint1", "set 2nd tint", OFFSET(ftint[1]), AV_OPT_TYPE_FLOAT, {.dbl=0}, -1, 1, FLAGS},
186 { "t1", "set 2nd tint", OFFSET(ftint[1]), AV_OPT_TYPE_FLOAT, {.dbl=0}, -1, 1, FLAGS},193 { "t1", "set 2nd tint", OFFSET(ftint[1]), AV_OPT_TYPE_FLOAT, {.dbl=0}, -1, 1, FLAGS},
194 { "fitmode", "set fit mode", OFFSET(fitmode), AV_OPT_TYPE_INT, {.i64=0}, 0, NB_FITMODES-1, FLAGS, "fitmode" },
195 { "fm", "set fit mode", OFFSET(fitmode), AV_OPT_TYPE_INT, {.i64=0}, 0, NB_FITMODES-1, FLAGS, "fitmode" },
196 { "none", NULL, 0, AV_OPT_TYPE_CONST, {.i64=FM_NONE}, 0, 0, FLAGS, "fitmode" },
197 { "size", NULL, 0, AV_OPT_TYPE_CONST, {.i64=FM_SIZE}, 0, 0, FLAGS, "fitmode" },
187 { NULL }198 { NULL }
188};199};
189 200
@@ -3357,7 +3368,20 @@ static int config_output(AVFilterLink *outlink) · 3167 unmodified lines
3357 }3368 }
3358 }3369 }
3359 3370
3360 outlink->sample_aspect_ratio = (AVRational){1,1};3371 switch (s->fitmode) {
3372 case FM_NONE:
3373 outlink->sample_aspect_ratio = (AVRational){ 1, 1 };
3374 break;
3375 case FM_SIZE:
3376 if (s->mode)
3377 outlink->sample_aspect_ratio = (AVRational){ s->size * comp, inlink->h };
3378 else
3379 outlink->sample_aspect_ratio = (AVRational){ inlink->w, s->size * comp };
3380 break;
3381 }
3382
3383 av_reduce(&outlink->sample_aspect_ratio.num, &outlink->sample_aspect_ratio.den,
3384 outlink->sample_aspect_ratio.num, outlink->sample_aspect_ratio.den, INT_MAX);
3361 3385
3362 return 0;3386 return 0;
3363}3387}
@@ -3461,6 +3485,7 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *in) · 97 unmodified lines
3461 s->graticulef(s, out);3485 s->graticulef(s, out);
3462 3486
3463 av_frame_free(&in);3487 av_frame_free(&in);
3488 out->sample_aspect_ratio = outlink->sample_aspect_ratio;
3464 return ff_filter_frame(outlink, out);3489 return ff_filter_frame(outlink, out);
3465}3490}
3466 3491

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t