summaryrefslogtreecommitdiff
path: root/libavfilter/af_adelay.c
diff options
context:
space:
mode:
authorPaul B Mahol <onemda@gmail.com>2019-10-07 18:02:50 +0200
committerPaul B Mahol <onemda@gmail.com>2019-10-07 18:10:28 +0200
commit0633d87ae6e6a63669d0877aac5a12c22778b0e8 (patch)
treec4443181a99cce388f0060475559c1cb346909a0 /libavfilter/af_adelay.c
parent9a53e0125290238db66034f67a9c41c420264c09 (diff)
avfilter/af_adelay: add option which changes how unset channels are delayed
Fixes #8032.
Diffstat (limited to 'libavfilter/af_adelay.c')
-rw-r--r--libavfilter/af_adelay.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/libavfilter/af_adelay.c b/libavfilter/af_adelay.c
index eb97039566..06e39fa6a4 100644
--- a/libavfilter/af_adelay.c
+++ b/libavfilter/af_adelay.c
@@ -36,6 +36,7 @@ typedef struct ChanDelay {
typedef struct AudioDelayContext {
const AVClass *class;
+ int all;
char *delays;
ChanDelay *chandelay;
int nb_delays;
@@ -54,6 +55,7 @@ typedef struct AudioDelayContext {
static const AVOption adelay_options[] = {
{ "delays", "set list of delays for each channel", OFFSET(delays), AV_OPT_TYPE_STRING, {.str=NULL}, 0, 0, A },
+ { "all", "use last available delay for remained channels", OFFSET(all), AV_OPT_TYPE_BOOL, {.i64=0}, 0, 1, A },
{ NULL }
};
@@ -163,6 +165,11 @@ static int config_input(AVFilterLink *inlink)
}
}
+ if (s->all) {
+ for (int j = i + 1; j < s->nb_delays; j++)
+ s->chandelay[j].delay = s->chandelay[i].delay;
+ }
+
s->padding = s->chandelay[0].delay;
for (i = 1; i < s->nb_delays; i++) {
ChanDelay *d = &s->chandelay[i];