Merge master.
[dcpomatic.git] / src / lib / filter_graph.cc
index a3bb0093edb1e7a84896d8286b04840962f246d4..5add16d19bcedac612b55eecf5bc85a7feedf99a 100644 (file)
@@ -33,6 +33,7 @@ extern "C" {
 #include "filter.h"
 #include "exceptions.h"
 #include "image.h"
+#include "ffmpeg_content.h"
 
 #include "i18n.h"
 
@@ -44,14 +45,14 @@ using std::make_pair;
 using std::cout;
 using boost::shared_ptr;
 using boost::weak_ptr;
-using libdcp::Size;
+using dcp::Size;
 
 /** Construct a FilterGraph for the settings in a piece of content.
  *  @param content Content.
  *  @param s Size of the images to process.
  *  @param p Pixel format of the images to process.
  */
-FilterGraph::FilterGraph (shared_ptr<const FFmpegContent> content, libdcp::Size s, AVPixelFormat p)
+FilterGraph::FilterGraph (shared_ptr<const FFmpegContent> content, dcp::Size s, AVPixelFormat p)
        : _buffer_src_context (0)
        , _buffer_sink_context (0)
        , _size (s)
@@ -59,7 +60,7 @@ FilterGraph::FilterGraph (shared_ptr<const FFmpegContent> content, libdcp::Size
 {
        _frame = av_frame_alloc ();
        
-       string filters = Filter::ffmpeg_strings (content->filters()).first;
+       string filters = Filter::ffmpeg_string (content->filters());
        if (filters.empty ()) {
                filters = "copy";
        }
@@ -121,7 +122,8 @@ FilterGraph::FilterGraph (shared_ptr<const FFmpegContent> content, libdcp::Size
                throw DecodeError (N_("could not configure filter graph."));
        }
 
-       /* XXX: leaking `inputs' / `outputs' ? */
+       avfilter_inout_free (&inputs);
+       avfilter_inout_free (&outputs);
 }
 
 FilterGraph::~FilterGraph ()
@@ -158,7 +160,7 @@ FilterGraph::process (AVFrame* frame)
  *  @return true if this chain can process images with `s' and `p', otherwise false.
  */
 bool
-FilterGraph::can_process (libdcp::Size s, AVPixelFormat p) const
+FilterGraph::can_process (dcp::Size s, AVPixelFormat p) const
 {
        return (_size == s && _pixel_format == p);
 }