History

avfilter/af_biquads: make commands work reliably within biquad filter

Previously changing single coefficient would give unexpected results.

Paul B Mahol committed 6 years ago

Commit 2ddd6af1 parent 40ce4ad1 file · +15 −6Browse files

Unified · Split

libavfilter/af_biquads.c+15−6
@@ -127,6 +127,9 @@ typedef struct BiquadsContext { · 126 unmodified lines
127 double a0, a1, a2;127 double a0, a1, a2;
128 double b0, b1, b2;128 double b0, b1, b2;
129 129
130 double oa0, oa1, oa2;
131 double ob0, ob1, ob2;
132
130 ChanCache *cache;133 ChanCache *cache;
131 int block_align;134 int block_align;
132 135
@@ -480,6 +483,12 @@ static int config_filter(AVFilterLink *outlink, int reset) · 347 unmodified lines
480 483
481 switch (s->filter_type) {484 switch (s->filter_type) {
482 case biquad:485 case biquad:
486 s->a0 = s->oa0;
487 s->a1 = s->oa1;
488 s->a2 = s->oa2;
489 s->b0 = s->ob0;
490 s->b1 = s->ob1;
491 s->b2 = s->ob2;
483 break;492 break;
484 case equalizer:493 case equalizer:
485 s->a0 = 1 + alpha / A;494 s->a0 = 1 + alpha / A;
@@ -1154,12 +1163,12 @@ DEFINE_BIQUAD_FILTER(highshelf, "Apply a high shelf filter."); · 668 unmodified lines
1154#endif /* CONFIG_HIGHSHELF_FILTER */1163#endif /* CONFIG_HIGHSHELF_FILTER */
1155#if CONFIG_BIQUAD_FILTER1164#if CONFIG_BIQUAD_FILTER
1156static const AVOption biquad_options[] = {1165static const AVOption biquad_options[] = {
1157 {"a0", NULL, OFFSET(a0), AV_OPT_TYPE_DOUBLE, {.dbl=1}, INT32_MIN, INT32_MAX, FLAGS},1166 {"a0", NULL, OFFSET(oa0), AV_OPT_TYPE_DOUBLE, {.dbl=1}, INT32_MIN, INT32_MAX, FLAGS},
1158 {"a1", NULL, OFFSET(a1), AV_OPT_TYPE_DOUBLE, {.dbl=0}, INT32_MIN, INT32_MAX, FLAGS},1167 {"a1", NULL, OFFSET(oa1), AV_OPT_TYPE_DOUBLE, {.dbl=0}, INT32_MIN, INT32_MAX, FLAGS},
1159 {"a2", NULL, OFFSET(a2), AV_OPT_TYPE_DOUBLE, {.dbl=0}, INT32_MIN, INT32_MAX, FLAGS},1168 {"a2", NULL, OFFSET(oa2), AV_OPT_TYPE_DOUBLE, {.dbl=0}, INT32_MIN, INT32_MAX, FLAGS},
1160 {"b0", NULL, OFFSET(b0), AV_OPT_TYPE_DOUBLE, {.dbl=0}, INT32_MIN, INT32_MAX, FLAGS},1169 {"b0", NULL, OFFSET(ob0), AV_OPT_TYPE_DOUBLE, {.dbl=0}, INT32_MIN, INT32_MAX, FLAGS},
1161 {"b1", NULL, OFFSET(b1), AV_OPT_TYPE_DOUBLE, {.dbl=0}, INT32_MIN, INT32_MAX, FLAGS},1170 {"b1", NULL, OFFSET(ob1), AV_OPT_TYPE_DOUBLE, {.dbl=0}, INT32_MIN, INT32_MAX, FLAGS},
1162 {"b2", NULL, OFFSET(b2), AV_OPT_TYPE_DOUBLE, {.dbl=0}, INT32_MIN, INT32_MAX, FLAGS},1171 {"b2", NULL, OFFSET(ob2), AV_OPT_TYPE_DOUBLE, {.dbl=0}, INT32_MIN, INT32_MAX, FLAGS},
1163 {"mix", "set mix", OFFSET(mix), AV_OPT_TYPE_DOUBLE, {.dbl=1}, 0, 1, FLAGS},1172 {"mix", "set mix", OFFSET(mix), AV_OPT_TYPE_DOUBLE, {.dbl=1}, 0, 1, FLAGS},
1164 {"m", "set mix", OFFSET(mix), AV_OPT_TYPE_DOUBLE, {.dbl=1}, 0, 1, FLAGS},1173 {"m", "set mix", OFFSET(mix), AV_OPT_TYPE_DOUBLE, {.dbl=1}, 0, 1, FLAGS},
1165 {"channels", "set channels to filter", OFFSET(channels), AV_OPT_TYPE_CHANNEL_LAYOUT, {.i64=-1}, INT64_MIN, INT64_MAX, FLAGS},1174 {"channels", "set channels to filter", OFFSET(channels), AV_OPT_TYPE_CHANNEL_LAYOUT, {.i64=-1}, INT64_MIN, INT64_MAX, FLAGS},

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