diff options
| author | Carl Hetherington <cth@carlh.net> | 2018-11-06 22:43:52 +0000 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2018-11-06 22:43:52 +0000 |
| commit | ed68bfad5c795afb342c5228f3c1dc7770a6d646 (patch) | |
| tree | ebf0a5b7f2c9b1636c498715f0f7aaaf8dcc98f7 | |
| parent | e5b744922fb6aed65ec13f22a9de0c86dd1bd561 (diff) | |
Switch PlayerVideo::always_rgb to a new ::force and use it in FFmpegFileEncoder.
| -rw-r--r-- | src/lib/ffmpeg_file_encoder.cc | 8 | ||||
| -rw-r--r-- | src/lib/player_video.cc | 6 | ||||
| -rw-r--r-- | src/lib/player_video.h | 2 | ||||
| -rw-r--r-- | src/wx/film_viewer.cc | 4 | ||||
| -rw-r--r-- | test/dcp_playback_test.cc | 2 | ||||
| -rw-r--r-- | test/player_test.cc | 4 |
6 files changed, 10 insertions, 16 deletions
diff --git a/src/lib/ffmpeg_file_encoder.cc b/src/lib/ffmpeg_file_encoder.cc index 52977ad5b..7cc4d26a4 100644 --- a/src/lib/ffmpeg_file_encoder.cc +++ b/src/lib/ffmpeg_file_encoder.cc @@ -43,12 +43,6 @@ using boost::weak_ptr; int FFmpegFileEncoder::_video_stream_index = 0; int FFmpegFileEncoder::_audio_stream_index = 1; -static AVPixelFormat -force_pixel_format (AVPixelFormat, AVPixelFormat out) -{ - return out; -} - FFmpegFileEncoder::FFmpegFileEncoder ( dcp::Size video_frame_size, int video_frame_rate, @@ -230,7 +224,7 @@ void FFmpegFileEncoder::video (shared_ptr<PlayerVideo> video, DCPTime time) { shared_ptr<Image> image = video->image ( - bind (&force_pixel_format, _1, _pixel_format), + bind (&PlayerVideo::force, _1, _pixel_format), true, false ); diff --git a/src/lib/player_video.cc b/src/lib/player_video.cc index 376ace128..c9ed6a6e4 100644 --- a/src/lib/player_video.cc +++ b/src/lib/player_video.cc @@ -105,7 +105,7 @@ PlayerVideo::set_text (PositionImage image) /** Create an image for this frame. * @param pixel_format Function which is called to decide what pixel format the output image should be; * it is passed the pixel format of the input image from the ImageProxy, and should return the desired - * output pixel format. Two functions always_rgb and keep_xyz_or_rgb are provided for use here. + * output pixel format. Two functions force and keep_xyz_or_rgb are provided for use here. * @param aligned true if the output image should be aligned to 32-byte boundaries. * @param fast true to be fast at the expense of quality. */ @@ -254,9 +254,9 @@ PlayerVideo::same (shared_ptr<const PlayerVideo> other) const } AVPixelFormat -PlayerVideo::always_rgb (AVPixelFormat) +PlayerVideo::force (AVPixelFormat, AVPixelFormat force_to) { - return AV_PIX_FMT_RGB24; + return force_to; } AVPixelFormat diff --git a/src/lib/player_video.h b/src/lib/player_video.h index 6599eeaa0..8e41e8f23 100644 --- a/src/lib/player_video.h +++ b/src/lib/player_video.h @@ -65,7 +65,7 @@ public: void prepare (); boost::shared_ptr<Image> image (boost::function<AVPixelFormat (AVPixelFormat)> pixel_format, bool aligned, bool fast) const; - static AVPixelFormat always_rgb (AVPixelFormat); + static AVPixelFormat force (AVPixelFormat, AVPixelFormat); static AVPixelFormat keep_xyz_or_rgb (AVPixelFormat); void add_metadata (xmlpp::Node* node) const; diff --git a/src/wx/film_viewer.cc b/src/wx/film_viewer.cc index 0a72b5a1d..019633720 100644 --- a/src/wx/film_viewer.cc +++ b/src/wx/film_viewer.cc @@ -267,12 +267,12 @@ FilmViewer::display_player_video () * The content's specified colour conversion indicates the colourspace * which the content is in (according to the user). * - * PlayerVideo::image (bound to PlayerVideo::always_rgb) will take the source + * PlayerVideo::image (bound to PlayerVideo::force) will take the source * image and convert it (from whatever the user has said it is) to RGB. */ _frame = _player_video.first->image ( - bind (&PlayerVideo::always_rgb, _1), + bind (&PlayerVideo::force, _1, AV_PIX_FMT_RGB24), false, true ); diff --git a/test/dcp_playback_test.cc b/test/dcp_playback_test.cc index 609971657..17318e0ff 100644 --- a/test/dcp_playback_test.cc +++ b/test/dcp_playback_test.cc @@ -46,7 +46,7 @@ BOOST_AUTO_TEST_CASE (dcp_playback_test) } /* assuming DCP is 24fps/48kHz */ butler->get_audio (audio_buffer, 2000); - p.first->image(bind(&PlayerVideo::always_rgb, _1), false, true); + p.first->image(bind(&PlayerVideo::force, _1, AV_PIX_FMT_RGB24), false, true); } delete[] audio_buffer; } diff --git a/test/player_test.cc b/test/player_test.cc index 9351d3dd3..0c9b6f21f 100644 --- a/test/player_test.cc +++ b/test/player_test.cc @@ -220,7 +220,7 @@ BOOST_AUTO_TEST_CASE (player_seek_test) butler->seek (t, true); pair<shared_ptr<PlayerVideo>, DCPTime> video = butler->get_video(); BOOST_CHECK_EQUAL(video.second.get(), t.get()); - write_image(video.first->image(PlayerVideo::always_rgb, false, true), String::compose("build/test/player_seek_test_%1.png", i), "RGB"); + write_image(video.first->image(bind(PlayerVideo::force, _1, AV_PIX_FMT_RGB24), false, true), String::compose("build/test/player_seek_test_%1.png", i), "RGB"); /* This 0.011 is empirically chosen (hopefully) to accept changes in rendering between the reference and a test machine (17.10 and 16.04 seem to anti-alias a little differently) but to reject gross errors e.g. missing fonts or missing text altogether. @@ -253,7 +253,7 @@ BOOST_AUTO_TEST_CASE (player_seek_test2) butler->seek (t, true); pair<shared_ptr<PlayerVideo>, DCPTime> video = butler->get_video(); BOOST_CHECK_EQUAL(video.second.get(), t.get()); - write_image(video.first->image(PlayerVideo::always_rgb, false, true), String::compose("build/test/player_seek_test2_%1.png", i), "RGB"); + write_image(video.first->image(bind(PlayerVideo::force, _1, AV_PIX_FMT_RGB24), false, true), String::compose("build/test/player_seek_test2_%1.png", i), "RGB"); check_image(String::compose("test/data/player_seek_test2_%1.png", i), String::compose("build/test/player_seek_test2_%1.png", i), 0.011); } } |
