diff --git a/libavfilter/af_apad.c b/libavfilter/af_apad.c
index 66738f6ae69254a46fd7928c9f07725a1580b3ee..265b76a38d9332ac56a31d24e568060e6c19d547 100644
--- a/libavfilter/af_apad.c
+++ b/libavfilter/af_apad.c
@@ -89,7 +89,7 @@ static int request_frame(AVFilterLink *outlink)
 
     ret = ff_request_frame(ctx->inputs[0]);
 
-    if (ret == AVERROR_EOF) {
+    if (ret == AVERROR_EOF && !ctx->is_disabled) {
         int n_out = apad->packet_size;
         AVFrame *outsamplesref;
 
@@ -131,6 +131,7 @@ static const AVFilterPad apad_inputs[] = {
         .name         = "default",
         .type         = AVMEDIA_TYPE_AUDIO,
         .filter_frame = filter_frame,
+        .passthrough_filter_frame = filter_frame,
     },
     { NULL },
 };
@@ -152,4 +153,5 @@ AVFilter avfilter_af_apad = {
     .inputs        = apad_inputs,
     .outputs       = apad_outputs,
     .priv_class    = &apad_class,
+    .flags         = AVFILTER_FLAG_SUPPORT_TIMELINE,
 };