[FFmpeg-cvslog] avfiltergraph: fix format selection.

Nicolas George git at videolan.org
Tue Apr 24 16:47:11 CEST 2012


ffmpeg | branch: master | Nicolas George <nicolas.george at normalesup.org> | Mon Apr 23 16:55:11 2012 +0200| [fd2cd64fc9c29b5bcce2a0a332fa8d65134343ab] | committer: Nicolas George

avfiltergraph: fix format selection.

The old code had two bugs:

For audio filters, the format was not set.

For video filters, if several links reference the same format list,
the same format must be selected in the end. This is done by
setting formats->format_count to 1: the other links sharing
the reference will therefore have only one choice.
If the heuristic does not pick the first format, the selected format
must also be moved to the first position.

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

 libavfilter/avfiltergraph.c |    6 +++---
 1 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/libavfilter/avfiltergraph.c b/libavfilter/avfiltergraph.c
index 23d4042..9d7b956 100644
--- a/libavfilter/avfiltergraph.c
+++ b/libavfilter/avfiltergraph.c
@@ -269,12 +269,12 @@ static void pick_format(AVFilterLink *link, AVFilterLink *ref)
                 enum PixelFormat p = link->in_formats->formats[i];
                 best= avcodec_find_best_pix_fmt2(best, p, ref->format, has_alpha, NULL);
             }
-            link->format = best;
-        }else
-            link->format = link->in_formats->formats[0];
+            link->in_formats->formats[0] = best;
+        }
     }
 
     link->in_formats->format_count = 1;
+    link->format = link->in_formats->formats[0];
     avfilter_formats_unref(&link->in_formats);
     avfilter_formats_unref(&link->out_formats);
 



More information about the ffmpeg-cvslog mailing list