X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;f=src%2Flib%2Fplayer_video.cc;h=9cdc6c56403cac517a06233843a1ae37f0136359;hb=5b3e3df6c9352e31dd932a5af215eabbf2cf27c8;hp=018f04737acec4df8a050b086aff84be1fbe5659;hpb=4a4725e41bf4070969223f9c40885063c50e61d0;p=dcpomatic.git diff --git a/src/lib/player_video.cc b/src/lib/player_video.cc index 018f04737..9cdc6c564 100644 --- a/src/lib/player_video.cc +++ b/src/lib/player_video.cc @@ -23,6 +23,11 @@ #include "j2k_image_proxy.h" #include "film.h" #include "raw_convert.h" +extern "C" { +#include +} +#include +#include using std::string; using std::cout; @@ -73,7 +78,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); @@ -89,7 +94,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)); @@ -116,7 +121,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); @@ -174,7 +182,7 @@ PlayerVideo::has_j2k () const return false; } - return _crop == Crop () && _inter_size == j2k->size() && !_subtitle && !_fade; + return _crop == Crop () && _inter_size == j2k->size() && !_subtitle && !_fade && !_colour_conversion; } Data