[FFmpeg-cvslog] avfilter_graph_queue_command: Allow queueing commands out of order

Michael Niedermayer git at videolan.org
Mon Aug 29 21:06:05 CEST 2011


ffmpeg | branch: master | Michael Niedermayer <michaelni at gmx.at> | Mon Aug 29 20:51:31 2011 +0200| [ea36c44e84496a35562dab6cb03d2ca9a938224f] | committer: Michael Niedermayer

avfilter_graph_queue_command: Allow queueing commands out of order

Signed-off-by: Michael Niedermayer <michaelni at gmx.at>

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=ea36c44e84496a35562dab6cb03d2ca9a938224f
---

 libavfilter/avfiltergraph.c |    7 +++++--
 1 files changed, 5 insertions(+), 2 deletions(-)

diff --git a/libavfilter/avfiltergraph.c b/libavfilter/avfiltergraph.c
index 430f0d1..075e156 100644
--- a/libavfilter/avfiltergraph.c
+++ b/libavfilter/avfiltergraph.c
@@ -294,13 +294,16 @@ int avfilter_graph_queue_command(AVFilterGraph *graph, const char *target, const
     for (i = 0; i < graph->filter_count; i++) {
         AVFilterContext *filter = graph->filters[i];
         if(filter && (!strcmp(target, "all") || !strcmp(target, filter->name) || !strcmp(target, filter->filter->name))){
-            AVFilterCommand **que = &filter->command_queue;
-            while(*que) que = &(*que)->next;
+            AVFilterCommand **que = &filter->command_queue, *next;
+            while(*que && (*que)->time <= ts)
+                que = &(*que)->next;
+            next= *que;
             *que= av_mallocz(sizeof(AVFilterCommand));
             (*que)->command = av_strdup(command);
             (*que)->arg     = av_strdup(arg);
             (*que)->time    = ts;
             (*que)->flags   = flags;
+            (*que)->next    = next;
             if(flags & AVFILTER_CMD_FLAG_ONE)
                 return 0;
         }



More information about the ffmpeg-cvslog mailing list