diff mbox series

[FFmpeg-devel,3/7] lavfi/avfilter: move AVFilterContext.command_queue to FFFilterContext

Message ID 20241003193127.15818-3-anton@khirnov.net
State New
Headers show
Series [FFmpeg-devel,1/7] lavfi/avfilter: move AVFilterContext.ready to FFFilterContext | expand

Checks

Context Check Description
yinshiyou/make_loongarch64 success Make finished
yinshiyou/make_fate_loongarch64 success Make fate finished
andriy/make_x86 success Make finished
andriy/make_fate_x86 success Make fate finished

Commit Message

Anton Khirnov Oct. 3, 2024, 7:31 p.m. UTC
It is private to generic filtering code.
---
 libavfilter/avfilter.c          | 13 +++++++------
 libavfilter/avfilter.h          |  4 ++++
 libavfilter/avfilter_internal.h |  2 ++
 libavfilter/avfiltergraph.c     |  3 ++-
 4 files changed, 15 insertions(+), 7 deletions(-)
diff mbox series

Patch

diff --git a/libavfilter/avfilter.c b/libavfilter/avfilter.c
index dfb30002b1..86bf7773e1 100644
--- a/libavfilter/avfilter.c
+++ b/libavfilter/avfilter.c
@@ -80,10 +80,11 @@  static void tlog_ref(void *ctx, AVFrame *ref, int end)
 
 static void command_queue_pop(AVFilterContext *filter)
 {
-    AVFilterCommand *c= filter->command_queue;
+    FFFilterContext *ctxi = fffilterctx(filter);
+    AVFilterCommand *c    = ctxi->command_queue;
     av_freep(&c->arg);
     av_freep(&c->command);
-    filter->command_queue= c->next;
+    ctxi->command_queue = c->next;
     av_free(c);
 }
 
@@ -828,9 +829,8 @@  void avfilter_free(AVFilterContext *filter)
     av_freep(&filter->inputs);
     av_freep(&filter->outputs);
     av_freep(&filter->priv);
-    while(filter->command_queue){
+    while (ctxi->command_queue)
         command_queue_pop(filter);
-    }
     av_opt_free(filter);
     av_expr_free(ctxi->enable);
     ctxi->enable = NULL;
@@ -1545,7 +1545,8 @@  int ff_inlink_make_frame_writable(AVFilterLink *link, AVFrame **rframe)
 
 int ff_inlink_process_commands(AVFilterLink *link, const AVFrame *frame)
 {
-    AVFilterCommand *cmd = link->dst->command_queue;
+    FFFilterContext *ctxi = fffilterctx(link->dst);
+    AVFilterCommand *cmd  = ctxi->command_queue;
 
     while(cmd && cmd->time <= frame->pts * av_q2d(link->time_base)){
         av_log(link->dst, AV_LOG_DEBUG,
@@ -1553,7 +1554,7 @@  int ff_inlink_process_commands(AVFilterLink *link, const AVFrame *frame)
                cmd->time, cmd->command, cmd->arg);
         avfilter_process_command(link->dst, cmd->command, cmd->arg, 0, 0, cmd->flags);
         command_queue_pop(link->dst);
-        cmd= link->dst->command_queue;
+        cmd = ctxi->command_queue;
     }
     return 0;
 }
diff --git a/libavfilter/avfilter.h b/libavfilter/avfilter.h
index 22dccf9118..a255d71700 100644
--- a/libavfilter/avfilter.h
+++ b/libavfilter/avfilter.h
@@ -498,7 +498,11 @@  struct AVFilterContext {
      */
     int nb_threads;
 
+#if FF_API_CONTEXT_PUBLIC
+    ///< @deprecated unused
+    attribute_deprecated
     struct AVFilterCommand *command_queue;
+#endif
 
     char *enable_str;               ///< enable expression string
 #if FF_API_CONTEXT_PUBLIC
diff --git a/libavfilter/avfilter_internal.h b/libavfilter/avfilter_internal.h
index 38c7c5b53e..c2a2378d61 100644
--- a/libavfilter/avfilter_internal.h
+++ b/libavfilter/avfilter_internal.h
@@ -114,6 +114,8 @@  typedef struct FFFilterContext {
     struct AVExpr *enable;
     ///< variable values for the enable expression
     double *var_values;
+
+    struct AVFilterCommand *command_queue;
 } FFFilterContext;
 
 static inline FFFilterContext *fffilterctx(AVFilterContext *ctx)
diff --git a/libavfilter/avfiltergraph.c b/libavfilter/avfiltergraph.c
index 7bc7700743..c6472876bf 100644
--- a/libavfilter/avfiltergraph.c
+++ b/libavfilter/avfiltergraph.c
@@ -1348,8 +1348,9 @@  int avfilter_graph_queue_command(AVFilterGraph *graph, const char *target, const
 
     for (i = 0; i < graph->nb_filters; i++) {
         AVFilterContext *filter = graph->filters[i];
+        FFFilterContext *ctxi   = fffilterctx(filter);
         if(filter && (!strcmp(target, "all") || !strcmp(target, filter->name) || !strcmp(target, filter->filter->name))){
-            AVFilterCommand **queue = &filter->command_queue, *next;
+            AVFilterCommand **queue = &ctxi->command_queue, *next;
             while (*queue && (*queue)->time <= ts)
                 queue = &(*queue)->next;
             next = *queue;