X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=src%2Flib%2Fvideo_filter_graph.cc;h=0c7e23b050b2e2b0fe6b98940616df0c83a62529;hb=9a97c1b4116d7fb80e8ab145c0cc738dbf14d617;hp=f1141150b6c9ce042b6b15e837c4f5baceb887fc;hpb=7bc2134d658778e04f1756c255e604b4ab5a5831;p=dcpomatic.git diff --git a/src/lib/video_filter_graph.cc b/src/lib/video_filter_graph.cc index f1141150b..0c7e23b05 100644 --- a/src/lib/video_filter_graph.cc +++ b/src/lib/video_filter_graph.cc @@ -26,6 +26,7 @@ extern "C" { #include #include +#include } #include "i18n.h" @@ -37,7 +38,6 @@ using std::make_shared; using std::pair; using std::shared_ptr; using std::string; -using std::vector; VideoFilterGraph::VideoFilterGraph (dcp::Size s, AVPixelFormat p, dcp::Fraction r) @@ -57,9 +57,8 @@ VideoFilterGraph::process (AVFrame* frame) { list, int64_t>> images; -DCPOMATIC_DISABLE_WARNINGS if (_copy) { - images.push_back (make_pair(make_shared(frame), av_frame_get_best_effort_timestamp (frame))); + images.push_back (make_pair(make_shared(frame, Image::Alignment::PADDED), frame->best_effort_timestamp)); } else { int r = av_buffersrc_write_frame (_buffer_src_context, frame); if (r < 0) { @@ -71,11 +70,10 @@ DCPOMATIC_DISABLE_WARNINGS break; } - images.push_back (make_pair(make_shared(_frame), av_frame_get_best_effort_timestamp (_frame))); + images.push_back (make_pair(make_shared(_frame, Image::Alignment::PADDED), frame->best_effort_timestamp)); av_frame_unref (_frame); } } -DCPOMATIC_ENABLE_WARNINGS return images; } @@ -107,15 +105,12 @@ VideoFilterGraph::src_parameters () const } -void * -VideoFilterGraph::sink_parameters () const +void +VideoFilterGraph::set_parameters (AVFilterContext* context) const { - auto sink_params = av_buffersink_params_alloc (); - auto pixel_fmts = new AVPixelFormat[2]; - pixel_fmts[0] = _pixel_format; - pixel_fmts[1] = AV_PIX_FMT_NONE; - sink_params->pixel_fmts = pixel_fmts; - return sink_params; + AVPixelFormat pix_fmts[] = { _pixel_format, AV_PIX_FMT_NONE }; + int r = av_opt_set_int_list (context, "pix_fmts", pix_fmts, AV_PIX_FMT_NONE, AV_OPT_SEARCH_CHILDREN); + DCPOMATIC_ASSERT (r >= 0); }