summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2025-05-25 22:16:19 +0200
committerCarl Hetherington <cth@carlh.net>2025-05-26 21:51:18 +0200
commitdf9b4676aba8b941f124b174393988cad21677e1 (patch)
tree21658068cf5b2a74e23339e013398b20b327f886
parente444fbd0d7c8a32e9f50adc19d0d49ae7c489a11 (diff)
Remove functors for choosing pixel format output from make_image().
-rw-r--r--src/lib/butler.cc3
-rw-r--r--src/lib/butler.h4
-rw-r--r--src/lib/dcp_video.cc8
-rw-r--r--src/lib/ffmpeg_file_encoder.cc6
-rw-r--r--src/lib/ffmpeg_film_encoder.cc2
-rw-r--r--src/lib/mpeg2_encoder.cc6
-rw-r--r--src/lib/player_video.cc25
-rw-r--r--src/lib/player_video.h9
-rw-r--r--src/tools/dcpomatic_player.cc4
-rw-r--r--src/wx/film_viewer.cc2
-rw-r--r--src/wx/gl_video_view.cc2
-rw-r--r--src/wx/simple_video_view.cc6
-rw-r--r--test/butler_test.cc4
-rw-r--r--test/dcp_playback_test.cc8
-rw-r--r--test/player_test.cc22
-rw-r--r--test/threed_test.cc2
-rw-r--r--test/video_level_test.cc2
-rw-r--r--test/video_trim_test.cc2
18 files changed, 43 insertions, 74 deletions
diff --git a/src/lib/butler.cc b/src/lib/butler.cc
index 14f342045..5edd84115 100644
--- a/src/lib/butler.cc
+++ b/src/lib/butler.cc
@@ -31,7 +31,6 @@
using std::cout;
-using std::function;
using std::make_pair;
using std::pair;
using std::shared_ptr;
@@ -65,7 +64,7 @@ Butler::Butler(
Player& player,
AudioMapping audio_mapping,
int audio_channels,
- function<AVPixelFormat (AVPixelFormat)> pixel_format,
+ AVPixelFormat pixel_format,
VideoRange video_range,
Image::Alignment alignment,
bool fast,
diff --git a/src/lib/butler.h b/src/lib/butler.h
index 011f0d28e..d85ec90f4 100644
--- a/src/lib/butler.h
+++ b/src/lib/butler.h
@@ -55,7 +55,7 @@ public:
Player& player,
AudioMapping map,
int audio_channels,
- std::function<AVPixelFormat(AVPixelFormat)> pixel_format,
+ AVPixelFormat pixel_format,
VideoRange video_range,
Image::Alignment alignment,
bool fast,
@@ -135,7 +135,7 @@ private:
bool _disable_audio;
- std::function<AVPixelFormat (AVPixelFormat)> _pixel_format;
+ AVPixelFormat _pixel_format;
VideoRange _video_range;
Image::Alignment _alignment;
bool _fast;
diff --git a/src/lib/dcp_video.cc b/src/lib/dcp_video.cc
index 66c09daca..988a92ac5 100644
--- a/src/lib/dcp_video.cc
+++ b/src/lib/dcp_video.cc
@@ -102,7 +102,7 @@ DCPVideo::convert_to_xyz(shared_ptr<const PlayerVideo> frame)
shared_ptr<dcp::OpenJPEGImage> xyz;
if (frame->colour_conversion()) {
- auto image = frame->image([](AVPixelFormat) { return AV_PIX_FMT_RGB48LE; }, VideoRange::FULL, false);
+ auto image = frame->image(AV_PIX_FMT_RGB48LE, VideoRange::FULL, false);
xyz = dcp::rgb_to_xyz(
image->data()[0],
image->size(),
@@ -110,7 +110,7 @@ DCPVideo::convert_to_xyz(shared_ptr<const PlayerVideo> frame)
frame->colour_conversion().get()
);
} else {
- auto image = frame->image([](AVPixelFormat) { return AV_PIX_FMT_XYZ12LE; }, VideoRange::FULL, false);
+ auto image = frame->image(AV_PIX_FMT_XYZ12LE, VideoRange::FULL, false);
xyz = make_shared<dcp::OpenJPEGImage>(image->data()[0], image->size(), image->stride()[0]);
}
@@ -120,7 +120,7 @@ DCPVideo::convert_to_xyz(shared_ptr<const PlayerVideo> frame)
dcp::Size
DCPVideo::get_size() const
{
- auto image = _frame->image([](AVPixelFormat) { return AV_PIX_FMT_RGB48LE; }, VideoRange::FULL, false);
+ auto image = _frame->image(AV_PIX_FMT_RGB48LE, VideoRange::FULL, false);
return image->size();
}
@@ -130,7 +130,7 @@ DCPVideo::convert_to_xyz(uint16_t* dst) const
{
DCPOMATIC_ASSERT(_frame->colour_conversion());
- auto image = _frame->image([](AVPixelFormat) { return AV_PIX_FMT_RGB48LE; }, VideoRange::FULL, false);
+ auto image = _frame->image(AV_PIX_FMT_RGB48LE, VideoRange::FULL, false);
dcp::rgb_to_xyz(
image->data()[0],
dst,
diff --git a/src/lib/ffmpeg_file_encoder.cc b/src/lib/ffmpeg_file_encoder.cc
index 7f74ae4f6..8f5a75061 100644
--- a/src/lib/ffmpeg_file_encoder.cc
+++ b/src/lib/ffmpeg_file_encoder.cc
@@ -417,11 +417,7 @@ void
FFmpegFileEncoder::video (shared_ptr<PlayerVideo> video, DCPTime time)
{
/* All our output formats are video range at the moment */
- auto image = video->image (
- bind (&PlayerVideo::force, _pixel_format),
- VideoRange::VIDEO,
- false
- );
+ auto image = video->image(_pixel_format, VideoRange::VIDEO, false);
auto frame = av_frame_alloc ();
DCPOMATIC_ASSERT (frame);
diff --git a/src/lib/ffmpeg_film_encoder.cc b/src/lib/ffmpeg_film_encoder.cc
index a2d26fd66..f07d6be66 100644
--- a/src/lib/ffmpeg_film_encoder.cc
+++ b/src/lib/ffmpeg_film_encoder.cc
@@ -71,7 +71,7 @@ FFmpegFilmEncoder::FFmpegFilmEncoder(
_player,
mixdown_to_stereo ? stereo_map() : many_channel_map(),
_output_audio_channels,
- boost::bind(&PlayerVideo::force, FFmpegFileEncoder::pixel_format(format)),
+ FFmpegFileEncoder::pixel_format(format),
VideoRange::VIDEO,
Image::Alignment::PADDED,
false,
diff --git a/src/lib/mpeg2_encoder.cc b/src/lib/mpeg2_encoder.cc
index 9b9cdfd09..73f3d57e7 100644
--- a/src/lib/mpeg2_encoder.cc
+++ b/src/lib/mpeg2_encoder.cc
@@ -43,11 +43,7 @@ MPEG2Encoder::encode(shared_ptr<PlayerVideo> pv, dcpomatic::DCPTime time)
{
VideoEncoder::encode(pv, time);
- auto image = pv->image(
- [](AVPixelFormat) { return AV_PIX_FMT_YUV420P; },
- VideoRange::VIDEO,
- false
- );
+ auto image = pv->image(AV_PIX_FMT_YUV420P, VideoRange::VIDEO, false);
dcp::FFmpegImage ffmpeg_image(time.get() * _film->video_frame_rate() / dcpomatic::DCPTime::HZ);
diff --git a/src/lib/player_video.cc b/src/lib/player_video.cc
index b2da6c33b..05538b845 100644
--- a/src/lib/player_video.cc
+++ b/src/lib/player_video.cc
@@ -116,7 +116,7 @@ PlayerVideo::set_text (PositionImage image)
shared_ptr<Image>
-PlayerVideo::image (function<AVPixelFormat (AVPixelFormat)> pixel_format, VideoRange video_range, bool fast) const
+PlayerVideo::image(AVPixelFormat pixel_format, VideoRange video_range, bool fast) const
{
/* XXX: this assumes that image() and prepare() are only ever called with the same parameters (except crop, inter size, out size, fade) */
@@ -136,13 +136,11 @@ PlayerVideo::raw_image () const
/** Create an image for this frame. A lock must be held on _mutex.
- * @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 force and keep_xyz_or_rgb are provided for use here.
+ * @param pixel_format Output image pixel format.
* @param fast true to be fast at the expense of quality.
*/
void
-PlayerVideo::make_image (function<AVPixelFormat (AVPixelFormat)> pixel_format, VideoRange video_range, bool fast) const
+PlayerVideo::make_image(AVPixelFormat pixel_format, VideoRange video_range, bool fast) const
{
_image_crop = _crop;
_image_inter_size = _inter_size;
@@ -185,7 +183,7 @@ PlayerVideo::make_image (function<AVPixelFormat (AVPixelFormat)> pixel_format, V
}
_image = prox.image->crop_scale_window (
- total_crop, _inter_size, _out_size, yuv_to_rgb, _video_range, pixel_format (prox.image->pixel_format()), video_range, Image::Alignment::COMPACT, fast
+ total_crop, _inter_size, _out_size, yuv_to_rgb, _video_range, pixel_format, video_range, Image::Alignment::COMPACT, fast
);
if (_text) {
@@ -297,21 +295,8 @@ PlayerVideo::same (shared_ptr<const PlayerVideo> other) const
}
-AVPixelFormat
-PlayerVideo::force (AVPixelFormat force_to)
-{
- return force_to;
-}
-
-AVPixelFormat
-PlayerVideo::keep_xyz_or_rgb (AVPixelFormat p)
-{
- return p == AV_PIX_FMT_XYZ12LE ? AV_PIX_FMT_XYZ12LE : AV_PIX_FMT_RGB48LE;
-}
-
-
void
-PlayerVideo::prepare (function<AVPixelFormat (AVPixelFormat)> pixel_format, VideoRange video_range, Image::Alignment alignment, bool fast, bool proxy_only)
+PlayerVideo::prepare(AVPixelFormat pixel_format, VideoRange video_range, Image::Alignment alignment, bool fast, bool proxy_only)
{
_in->prepare (alignment, _inter_size);
boost::mutex::scoped_lock lm (_mutex);
diff --git a/src/lib/player_video.h b/src/lib/player_video.h
index e2968749c..32e462c5f 100644
--- a/src/lib/player_video.h
+++ b/src/lib/player_video.h
@@ -75,13 +75,10 @@ public:
return _text;
}
- void prepare (std::function<AVPixelFormat (AVPixelFormat)> pixel_format, VideoRange video_range, Image::Alignment alignment, bool fast, bool proxy_only);
- std::shared_ptr<Image> image (std::function<AVPixelFormat (AVPixelFormat)> pixel_format, VideoRange video_range, bool fast) const;
+ void prepare(AVPixelFormat pixel_format, VideoRange video_range, Image::Alignment alignment, bool fast, bool proxy_only);
+ std::shared_ptr<Image> image(AVPixelFormat pixel_format, VideoRange video_range, bool fast) const;
std::shared_ptr<const Image> raw_image () const;
- static AVPixelFormat force (AVPixelFormat);
- static AVPixelFormat keep_xyz_or_rgb (AVPixelFormat);
-
void add_metadata(xmlpp::Element* element) const;
void write_to_socket (std::shared_ptr<Socket> socket) const;
@@ -127,7 +124,7 @@ public:
}
private:
- void make_image (std::function<AVPixelFormat (AVPixelFormat)> pixel_format, VideoRange video_range, bool fast) const;
+ void make_image(AVPixelFormat pixel_format, VideoRange video_range, bool fast) const;
std::shared_ptr<const ImageProxy> _in;
Crop _crop;
diff --git a/src/tools/dcpomatic_player.cc b/src/tools/dcpomatic_player.cc
index c5242c310..c9eb613d2 100644
--- a/src/tools/dcpomatic_player.cc
+++ b/src/tools/dcpomatic_player.cc
@@ -808,10 +808,10 @@ private:
player->Video.connect ([path, &done, this](shared_ptr<PlayerVideo> video, DCPTime) {
auto ext = boost::algorithm::to_lower_copy(path.extension().string());
if (ext == ".png") {
- auto image = video->image(boost::bind(PlayerVideo::force, AV_PIX_FMT_RGBA), VideoRange::FULL, false);
+ auto image = video->image(AV_PIX_FMT_RGBA, VideoRange::FULL, false);
image_as_png(image).write(path);
} else if (ext == ".jpg" || ext == ".jpeg") {
- auto image = video->image(boost::bind(PlayerVideo::force, AV_PIX_FMT_RGB24), VideoRange::FULL, false);
+ auto image = video->image(AV_PIX_FMT_RGB24, VideoRange::FULL, false);
image_as_jpeg(image, 80).write(path);
} else {
error_dialog(this, wxString::Format(_("Unrecognised file extension %s (use .jpg, .jpeg or .png)"), std_to_wx(ext)));
diff --git a/src/wx/film_viewer.cc b/src/wx/film_viewer.cc
index ba0651b14..b97ef7bfb 100644
--- a/src/wx/film_viewer.cc
+++ b/src/wx/film_viewer.cc
@@ -247,7 +247,7 @@ FilmViewer::create_butler()
*_player,
Config::instance()->audio_mapping(_audio_channels),
_audio_channels,
- boost::bind(&PlayerVideo::force, AV_PIX_FMT_RGB24),
+ AV_PIX_FMT_RGB24,
VideoRange::FULL,
(opengl && _optimisation != Optimisation::NONE) ? Image::Alignment::COMPACT : Image::Alignment::PADDED,
true,
diff --git a/src/wx/gl_video_view.cc b/src/wx/gl_video_view.cc
index 9e53248f6..f9096be82 100644
--- a/src/wx/gl_video_view.cc
+++ b/src/wx/gl_video_view.cc
@@ -645,7 +645,7 @@ GLVideoView::set_image(shared_ptr<const PlayerVideo> pv)
video = pv->raw_image();
break;
case Optimisation::NONE:
- video = pv->image(boost::bind(&PlayerVideo::force, AV_PIX_FMT_RGB24), VideoRange::FULL, true);
+ video = pv->image(AV_PIX_FMT_RGB24, VideoRange::FULL, true);
break;
}
diff --git a/src/wx/simple_video_view.cc b/src/wx/simple_video_view.cc
index c003be7b6..9038920ce 100644
--- a/src/wx/simple_video_view.cc
+++ b/src/wx/simple_video_view.cc
@@ -245,14 +245,14 @@ SimpleVideoView::update ()
* The content's specified colour conversion indicates the colourspace
* which the content is in (according to the user).
*
- * PlayerVideo::image (bound to PlayerVideo::force) will take the source
- * image and convert it (from whatever the user has said it is) to RGB.
+ * PlayerVideo::image will take the source image and convert it
+ * (from whatever the user has said it is) to RGB.
*/
_state_timer.set ("get image");
auto const pv = player_video();
- _image = pv.first->image(boost::bind(&PlayerVideo::force, AV_PIX_FMT_RGB24), VideoRange::FULL, true);
+ _image = pv.first->image(AV_PIX_FMT_RGB24, VideoRange::FULL, true);
if (pv.first->colour_conversion() && pv.first->colour_conversion()->about_equal(dcp::ColourConversion::rec2020_to_xyz(), 1e-6)) {
_image = Image::ensure_alignment(_rec2020_filter_graph.get(_image->size(), _image->pixel_format())->process(_image).front(), Image::Alignment::COMPACT);
}
diff --git a/test/butler_test.cc b/test/butler_test.cc
index b95aed4df..706d0e424 100644
--- a/test/butler_test.cc
+++ b/test/butler_test.cc
@@ -58,7 +58,7 @@ BOOST_AUTO_TEST_CASE (butler_test1)
player,
map,
6,
- boost::bind(&PlayerVideo::force, AV_PIX_FMT_RGB24),
+ AV_PIX_FMT_RGB24,
VideoRange::FULL,
Image::Alignment::COMPACT,
false,
@@ -105,7 +105,7 @@ BOOST_AUTO_TEST_CASE (butler_test2)
player,
map,
6,
- boost::bind(&PlayerVideo::force, AV_PIX_FMT_RGB24),
+ AV_PIX_FMT_RGB24,
VideoRange::FULL,
Image::Alignment::COMPACT,
false,
diff --git a/test/dcp_playback_test.cc b/test/dcp_playback_test.cc
index c63c3c092..7b2280883 100644
--- a/test/dcp_playback_test.cc
+++ b/test/dcp_playback_test.cc
@@ -28,10 +28,6 @@
using std::make_shared;
-using std::make_shared;
-#if BOOST_VERSION >= 106100
-using namespace boost::placeholders;
-#endif
using namespace dcpomatic;
@@ -48,7 +44,7 @@ BOOST_AUTO_TEST_CASE (dcp_playback_test)
player,
AudioMapping(6, 6),
6,
- boost::bind(&PlayerVideo::force, AV_PIX_FMT_RGB24),
+ AV_PIX_FMT_RGB24,
VideoRange::FULL,
Image::Alignment::PADDED,
true,
@@ -64,6 +60,6 @@ BOOST_AUTO_TEST_CASE (dcp_playback_test)
}
/* assuming DCP is 24fps/48kHz */
butler->get_audio (Butler::Behaviour::BLOCKING, audio_buffer.data(), 2000);
- p.first->image(boost::bind(&PlayerVideo::force, AV_PIX_FMT_RGB24), VideoRange::FULL, true);
+ p.first->image(AV_PIX_FMT_RGB24, VideoRange::FULL, true);
}
}
diff --git a/test/player_test.cc b/test/player_test.cc
index 60b365eb1..384a73ebc 100644
--- a/test/player_test.cc
+++ b/test/player_test.cc
@@ -217,7 +217,7 @@ BOOST_AUTO_TEST_CASE (player_seek_test)
player.set_play_referenced();
auto butler = std::make_shared<Butler>(
- film, player, AudioMapping(), 2, bind(PlayerVideo::force, AV_PIX_FMT_RGB24), VideoRange::FULL, Image::Alignment::PADDED, true, false, Butler::Audio::DISABLED
+ film, player, AudioMapping(), 2, AV_PIX_FMT_RGB24, VideoRange::FULL, Image::Alignment::PADDED, true, false, Butler::Audio::DISABLED
);
for (int i = 0; i < 10; ++i) {
@@ -225,7 +225,7 @@ BOOST_AUTO_TEST_CASE (player_seek_test)
butler->seek (t, true);
auto video = butler->get_video(Butler::Behaviour::BLOCKING, 0);
BOOST_CHECK_EQUAL(video.second.get(), t.get());
- write_image(video.first->image(bind(PlayerVideo::force, AV_PIX_FMT_RGB24), VideoRange::FULL, true), String::compose("build/test/player_seek_test_%1.png", i));
+ write_image(video.first->image(AV_PIX_FMT_RGB24, VideoRange::FULL, true), String::compose("build/test/player_seek_test_%1.png", i));
/* This 14.08 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.
@@ -250,7 +250,7 @@ BOOST_AUTO_TEST_CASE (player_seek_test2)
player.set_play_referenced();
auto butler = std::make_shared<Butler>
- (film, player, AudioMapping(), 2, bind(PlayerVideo::force, AV_PIX_FMT_RGB24), VideoRange::FULL, Image::Alignment::PADDED, true, false, Butler::Audio::DISABLED
+ (film, player, AudioMapping(), 2, AV_PIX_FMT_RGB24, VideoRange::FULL, Image::Alignment::PADDED, true, false, Butler::Audio::DISABLED
);
butler->seek(DCPTime::from_seconds(5), true);
@@ -261,7 +261,7 @@ BOOST_AUTO_TEST_CASE (player_seek_test2)
auto video = butler->get_video(Butler::Behaviour::BLOCKING, 0);
BOOST_CHECK_EQUAL(video.second.get(), t.get());
write_image(
- video.first->image(bind(PlayerVideo::force, AV_PIX_FMT_RGB24), VideoRange::FULL, true), String::compose("build/test/player_seek_test2_%1.png", i)
+ video.first->image(AV_PIX_FMT_RGB24, VideoRange::FULL, true), String::compose("build/test/player_seek_test2_%1.png", i)
);
check_image(TestPaths::private_data() / String::compose("player_seek_test2_%1.png", i), String::compose("build/test/player_seek_test2_%1.png", i), 14.08);
}
@@ -342,7 +342,7 @@ BOOST_AUTO_TEST_CASE (player_trim_crash)
Player player(film, Image::Alignment::COMPACT, false);
player.set_fast();
auto butler = std::make_shared<Butler>(
- film, player, AudioMapping(), 6, bind(&PlayerVideo::force, AV_PIX_FMT_RGB24), VideoRange::FULL, Image::Alignment::COMPACT, true, false, Butler::Audio::ENABLED
+ film, player, AudioMapping(), 6, AV_PIX_FMT_RGB24, VideoRange::FULL, Image::Alignment::COMPACT, true, false, Butler::Audio::ENABLED
);
/* Wait for the butler to fill */
@@ -473,7 +473,7 @@ BOOST_AUTO_TEST_CASE (encrypted_dcp_with_no_kdm_gives_no_butler_error)
auto film2 = new_test_film("encrypted_dcp_with_no_kdm_gives_no_butler_error2", { content2 });
Player player(film, Image::Alignment::COMPACT, false);
- Butler butler(film2, player, AudioMapping(), 2, bind(PlayerVideo::force, AV_PIX_FMT_RGB24), VideoRange::FULL, Image::Alignment::PADDED, true, false, Butler::Audio::ENABLED);
+ Butler butler(film2, player, AudioMapping(), 2, AV_PIX_FMT_RGB24, VideoRange::FULL, Image::Alignment::PADDED, true, false, Butler::Audio::ENABLED);
float buffer[2000 * 6];
for (int i = 0; i < length; ++i) {
@@ -619,7 +619,7 @@ BOOST_AUTO_TEST_CASE(two_d_in_three_d_duplicates)
}
last_time = time;
- auto image = video->image([](AVPixelFormat) { return AV_PIX_FMT_RGB24; }, VideoRange::FULL, false);
+ auto image = video->image(AV_PIX_FMT_RGB24, VideoRange::FULL, false);
auto const size = image->size();
for (int y = 0; y < size.height; ++y) {
uint8_t* line = image->data()[0] + y * image->stride()[0];
@@ -669,7 +669,7 @@ BOOST_AUTO_TEST_CASE(three_d_in_two_d_chooses_left)
BOOST_CHECK(!last_time || time == *last_time + DCPTime::from_frames(1, 24));
last_time = time;
- auto image = video->image([](AVPixelFormat) { return AV_PIX_FMT_RGB24; }, VideoRange::FULL, false);
+ auto image = video->image(AV_PIX_FMT_RGB24, VideoRange::FULL, false);
auto const size = image->size();
for (int y = 0; y < size.height; ++y) {
uint8_t* line = image->data()[0] + y * image->stride()[0];
@@ -722,7 +722,7 @@ BOOST_AUTO_TEST_CASE(unmapped_audio_does_not_raise_buffer_error)
content->audio->set_mapping(AudioMapping(6 * 2, MAX_DCP_AUDIO_CHANNELS));
Player player(film, Image::Alignment::COMPACT, false);
- Butler butler(film, player, AudioMapping(), 2, bind(PlayerVideo::force, AV_PIX_FMT_RGB24), VideoRange::FULL, Image::Alignment::PADDED, true, false, Butler::Audio::ENABLED);
+ Butler butler(film, player, AudioMapping(), 2, AV_PIX_FMT_RGB24, VideoRange::FULL, Image::Alignment::PADDED, true, false, Butler::Audio::ENABLED);
/* Wait for the butler thread to run for a while; in the case under test it will throw an exception because
* the video buffers are filled but no audio comes.
@@ -741,12 +741,12 @@ BOOST_AUTO_TEST_CASE(frames_are_copied_correctly_for_low_frame_rates)
film->set_video_frame_rate(30);
Player player(film, Image::Alignment::COMPACT, false);
- Butler butler(film, player, AudioMapping(), 2, bind(PlayerVideo::force, AV_PIX_FMT_RGB24), VideoRange::FULL, Image::Alignment::PADDED, true, false, Butler::Audio::ENABLED);
+ Butler butler(film, player, AudioMapping(), 2, AV_PIX_FMT_RGB24, VideoRange::FULL, Image::Alignment::PADDED, true, false, Butler::Audio::ENABLED);
/* Check that only red frames come out - previously there would be some black ones mixed in */
for (auto i = 0; i < 24; ++i) {
auto frame = butler.get_video(Butler::Behaviour::BLOCKING);
- auto image = frame.first->image([](AVPixelFormat) { return AV_PIX_FMT_RGB24; }, VideoRange::FULL, false);
+ auto image = frame.first->image(AV_PIX_FMT_RGB24, VideoRange::FULL, false);
for (int y = 0; y < image->size().height; ++y) {
uint8_t const* p = image->data()[0] + image->stride()[0] * y;
for (int x = 0; x < image->size().width; ++x) {
diff --git a/test/threed_test.cc b/test/threed_test.cc
index 0df7d9d20..5508eb735 100644
--- a/test/threed_test.cc
+++ b/test/threed_test.cc
@@ -271,7 +271,7 @@ BOOST_AUTO_TEST_CASE (threed_test_butler_overfill)
Player player(film, Image::Alignment::COMPACT, false);
int const audio_channels = 2;
auto butler = std::make_shared<Butler>(
- film, player, AudioMapping(), audio_channels, boost::bind(PlayerVideo::force, AV_PIX_FMT_RGB24), VideoRange::FULL, Image::Alignment::PADDED, true, false, Butler::Audio::ENABLED
+ film, player, AudioMapping(), audio_channels, AV_PIX_FMT_RGB24, VideoRange::FULL, Image::Alignment::PADDED, true, false, Butler::Audio::ENABLED
);
int const audio_frames = 1920;
diff --git a/test/video_level_test.cc b/test/video_level_test.cc
index 91deb9b9b..01f93bfcb 100644
--- a/test/video_level_test.cc
+++ b/test/video_level_test.cc
@@ -127,7 +127,7 @@ BOOST_AUTO_TEST_CASE (ffmpeg_image_video_range_expanded)
BOOST_REQUIRE (!player->pass());
}
- auto image = player_video->image ([](AVPixelFormat f) { return f; }, VideoRange::FULL, false);
+ auto image = player_video->image(AV_PIX_FMT_RGB24, VideoRange::FULL, false);
for (int y = 0; y < size.height; ++y) {
uint8_t* p = image->data()[0] + y * image->stride()[0];
diff --git a/test/video_trim_test.cc b/test/video_trim_test.cc
index 067e81eaf..b3d3bbb84 100644
--- a/test/video_trim_test.cc
+++ b/test/video_trim_test.cc
@@ -51,7 +51,7 @@ BOOST_AUTO_TEST_CASE(video_trim_test)
BOOST_REQUIRE(!player->pass());
}
- image_as_png(first_video->image([](AVPixelFormat) { return AV_PIX_FMT_RGB24; }, VideoRange::FULL, true)).write("build/test/video_trim_test.png");
+ image_as_png(first_video->image(AV_PIX_FMT_RGB24, VideoRange::FULL, true)).write("build/test/video_trim_test.png");
check_image("test/data/video_trim_test.png", "build/test/video_trim_test.png");
}