lavfi: mark filters with dynamic number of inputs or outputs with special flags
authorAnton Khirnov <anton@khirnov.net>
Thu, 28 Mar 2013 07:51:36 +0000 (08:51 +0100)
committerAnton Khirnov <anton@khirnov.net>
Thu, 11 Apr 2013 18:42:41 +0000 (20:42 +0200)
This will be useful in avtools in the following commits.
Any other caller might also want to know this information.

doc/APIchanges
libavfilter/af_amix.c
libavfilter/af_channelsplit.c
libavfilter/af_join.c
libavfilter/avfilter.h
libavfilter/split.c

index 35c49f6ddd07a9247cd8d0741096437e93d44b6e..87a472b679a10585732a32de70488e2c10a6ac98 100644 (file)
@@ -22,6 +22,7 @@ API changes, most recent first:
   filter.
   Add avfilter_init_str(), deprecate avfilter_init_filter().
   Add avfilter_init_dict().
+  Add AVFilter.flags field and AVFILTER_FLAG_DYNAMIC_{INPUTS,OUTPUTS} flags.
 
 2013-xx-xx - lavfi 3.7.0 - avfilter.h
   Add AVFilter.priv_class for exporting filter options through the AVOptions API
index f7f003b6b1e45766708d0325d038a3e1bcac4684..6bc74585c708822fc80c6f75f28433ab9ab79e55 100644 (file)
@@ -562,4 +562,6 @@ AVFilter avfilter_af_amix = {
 
     .inputs    = NULL,
     .outputs   = avfilter_af_amix_outputs,
+
+    .flags     = AVFILTER_FLAG_DYNAMIC_INPUTS,
 };
index fcdc34eca002385c029973722ace1c3c7debb7f6..fde5985bf39623ea002bda017e669ed413dca236 100644 (file)
@@ -149,4 +149,6 @@ AVFilter avfilter_af_channelsplit = {
 
     .inputs  = avfilter_af_channelsplit_inputs,
     .outputs = NULL,
+
+    .flags   = AVFILTER_FLAG_DYNAMIC_OUTPUTS,
 };
index a06812ed32f464467f5c0e862bcf9a8f49e3d05d..02bc8c8f141c5b18bc8ead1564e0fdade9c8d2fe 100644 (file)
@@ -522,4 +522,6 @@ AVFilter avfilter_af_join = {
 
     .inputs  = NULL,
     .outputs = avfilter_af_join_outputs,
+
+    .flags   = AVFILTER_FLAG_DYNAMIC_INPUTS,
 };
index dffb2e56d9192898d45511301d8a021f535f6126..dd29ec0564aa2acc8b789ef4fe1e2fa6db45bc0b 100644 (file)
@@ -372,6 +372,19 @@ const char *avfilter_pad_get_name(const AVFilterPad *pads, int pad_idx);
  */
 enum AVMediaType avfilter_pad_get_type(const AVFilterPad *pads, int pad_idx);
 
+/**
+ * The number of the filter inputs is not determined just by AVFilter.inputs.
+ * The filter might add additional inputs during initialization depending on the
+ * options supplied to it.
+ */
+#define AVFILTER_FLAG_DYNAMIC_INPUTS        (1 << 0)
+/**
+ * The number of the filter outputs is not determined just by AVFilter.outputs.
+ * The filter might add additional outputs during initialization depending on
+ * the options supplied to it.
+ */
+#define AVFILTER_FLAG_DYNAMIC_OUTPUTS       (1 << 1)
+
 /**
  * Filter definition. This defines the pads a filter contains, and all the
  * callback functions used to interact with the filter.
@@ -394,6 +407,11 @@ typedef struct AVFilter {
      */
     const AVClass *priv_class;
 
+    /**
+     * A combination of AVFILTER_FLAG_*
+     */
+    int flags;
+
     /*****************************************************************
      * All fields below this line are not part of the public API. They
      * may not be used outside of libavfilter and can be changed and
index 7e8b4cc24fd189935ca4e2a0f0dc5b02f0732bbb..8c03de5b171c2349b4014dda8538c1e61ce2b529 100644 (file)
@@ -129,6 +129,8 @@ AVFilter avfilter_vf_split = {
 
     .inputs    = avfilter_vf_split_inputs,
     .outputs   = NULL,
+
+    .flags     = AVFILTER_FLAG_DYNAMIC_OUTPUTS,
 };
 
 static const AVFilterPad avfilter_af_asplit_inputs[] = {
@@ -153,4 +155,6 @@ AVFilter avfilter_af_asplit = {
 
     .inputs  = avfilter_af_asplit_inputs,
     .outputs = NULL,
+
+    .flags   = AVFILTER_FLAG_DYNAMIC_OUTPUTS,
 };