diff --git a/doc/APIchanges b/doc/APIchanges
index 8837b0db7e842859b51af1434a8149d5d5980c6a..3a435afe7199d1d69565cf683ac7ed00ea7ce34a 100644
--- a/doc/APIchanges
+++ b/doc/APIchanges
@@ -170,6 +170,7 @@ API changes, most recent first:
   Add avfilter_init_str(), deprecate avfilter_init_filter().
   Add avfilter_init_dict().
   Add AVFilter.flags field and AVFILTER_FLAG_DYNAMIC_{INPUTS,OUTPUTS} flags.
+  Add avfilter_pad_count() for counting filter inputs/outputs.
 
 2013-xx-xx - lavfi 3.7.0 - avfilter.h
   Add AVFilter.priv_class for exporting filter options through the AVOptions API
diff --git a/libavfilter/avfilter.c b/libavfilter/avfilter.c
index d912a42a557ab92c589b288f39eb7f4846c1d970..e03b6f2f61fd8405dd6b3fe299d9ab248785f329 100644
--- a/libavfilter/avfilter.c
+++ b/libavfilter/avfilter.c
@@ -436,7 +436,7 @@ void avfilter_uninit(void)
     next_registered_avfilter_idx = 0;
 }
 
-static int pad_count(const AVFilterPad *pads)
+int avfilter_pad_count(const AVFilterPad *pads)
 {
     int count;
 
@@ -515,7 +515,7 @@ AVFilterContext *ff_filter_alloc(const AVFilter *filter, const char *inst_name)
         av_opt_set_defaults(ret->priv);
     }
 
-    ret->nb_inputs = pad_count(filter->inputs);
+    ret->nb_inputs = avfilter_pad_count(filter->inputs);
     if (ret->nb_inputs ) {
         ret->input_pads   = av_malloc(sizeof(AVFilterPad) * ret->nb_inputs);
         if (!ret->input_pads)
@@ -526,7 +526,7 @@ AVFilterContext *ff_filter_alloc(const AVFilter *filter, const char *inst_name)
             goto err;
     }
 
-    ret->nb_outputs = pad_count(filter->outputs);
+    ret->nb_outputs = avfilter_pad_count(filter->outputs);
     if (ret->nb_outputs) {
         ret->output_pads  = av_malloc(sizeof(AVFilterPad) * ret->nb_outputs);
         if (!ret->output_pads)
diff --git a/libavfilter/avfilter.h b/libavfilter/avfilter.h
index 8dad5dc0418f406c649032f2ebb42ce1879a168e..4bc97554fee648aac61f25dedb4e17032aeb9612 100644
--- a/libavfilter/avfilter.h
+++ b/libavfilter/avfilter.h
@@ -388,6 +388,12 @@ struct AVFilterPad {
 };
 #endif
 
+/**
+ * Get the number of elements in a NULL-terminated array of AVFilterPads (e.g.
+ * AVFilter.inputs/outputs).
+ */
+int avfilter_pad_count(const AVFilterPad *pads);
+
 /**
  * Get the name of an AVFilterPad.
  *