X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=src%2Flib%2Fplayer_video.cc;h=ba4503d8e1ef84d9999cde135df9f0776d83688d;hb=17df947ac256397311a11894062070f8069c7e75;hp=ad6219d4f12f4f496ae0c7ee2589445fad68ca31;hpb=0106e954d8c113f83cf3ec76d116707e0464e855;p=dcpomatic.git diff --git a/src/lib/player_video.cc b/src/lib/player_video.cc index ad6219d4f..ba4503d8e 100644 --- a/src/lib/player_video.cc +++ b/src/lib/player_video.cc @@ -23,13 +23,18 @@ #include "j2k_image_proxy.h" #include "film.h" #include "raw_convert.h" +extern "C" { +#include +} #include +#include using std::string; using std::cout; using boost::shared_ptr; using boost::dynamic_pointer_cast; using boost::optional; +using dcp::Data; PlayerVideo::PlayerVideo ( shared_ptr in, @@ -74,7 +79,7 @@ PlayerVideo::PlayerVideo (shared_ptr node, shared_ptr socket if (node->optional_number_child ("SubtitleX")) { shared_ptr image ( - new Image (PIX_FMT_RGBA, dcp::Size (node->number_child ("SubtitleWidth"), node->number_child ("SubtitleHeight")), true) + new Image (AV_PIX_FMT_RGBA, dcp::Size (node->number_child ("SubtitleWidth"), node->number_child ("SubtitleHeight")), true) ); image->read_from_socket (socket); @@ -90,7 +95,7 @@ PlayerVideo::set_subtitle (PositionImage image) } shared_ptr -PlayerVideo::image (AVPixelFormat pixel_format, dcp::NoteHandler note) const +PlayerVideo::image (dcp::NoteHandler note) const { shared_ptr im = _in->image (optional (note)); @@ -117,7 +122,10 @@ PlayerVideo::image (AVPixelFormat pixel_format, dcp::NoteHandler note) const yuv_to_rgb = _colour_conversion.get().yuv_to_rgb(); } - shared_ptr out = im->crop_scale_window (total_crop, _inter_size, _out_size, yuv_to_rgb, pixel_format, true); + /* If the input is XYZ, keep it otherwise convert to RGB */ + AVPixelFormat const p = _in->pixel_format() == AV_PIX_FMT_XYZ12LE ? AV_PIX_FMT_XYZ12LE : AV_PIX_FMT_RGB48LE; + + shared_ptr out = im->crop_scale_window (total_crop, _inter_size, _out_size, yuv_to_rgb, p, true); if (_subtitle) { out->alpha_blend (_subtitle->image, _subtitle->position);