projects
/
dcpomatic.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
d1a5724
)
Give Butler a weak_ptr<Film>
author
Carl Hetherington
<cth@carlh.net>
Mon, 30 Nov 2020 22:49:04 +0000
(23:49 +0100)
committer
Carl Hetherington
<cth@carlh.net>
Mon, 30 Nov 2020 23:20:51 +0000
(
00:20
+0100)
src/lib/butler.cc
patch
|
blob
|
history
src/lib/butler.h
patch
|
blob
|
history
src/lib/ffmpeg_encoder.cc
patch
|
blob
|
history
src/wx/film_viewer.cc
patch
|
blob
|
history
test/butler_test.cc
patch
|
blob
|
history
test/dcp_playback_test.cc
patch
|
blob
|
history
test/player_test.cc
patch
|
blob
|
history
diff --git
a/src/lib/butler.cc
b/src/lib/butler.cc
index d27778b70b0a909b1d8aae0626dece75d8d41108..4ab0092c4d0f819bbc625a3d18f66da4a0ec2c9a 100644
(file)
--- a/
src/lib/butler.cc
+++ b/
src/lib/butler.cc
@@
-1,5
+1,5
@@
/*
/*
- Copyright (C) 2016-20
18
Carl Hetherington <cth@carlh.net>
+ Copyright (C) 2016-20
20
Carl Hetherington <cth@carlh.net>
This file is part of DCP-o-matic.
This file is part of DCP-o-matic.
@@
-58,6
+58,7
@@
using namespace boost::placeholders;
* @param fast Same as above for the `fast' flag.
*/
Butler::Butler (
* @param fast Same as above for the `fast' flag.
*/
Butler::Butler (
+ weak_ptr<const Film> film,
shared_ptr<Player> player,
AudioMapping audio_mapping,
int audio_channels,
shared_ptr<Player> player,
AudioMapping audio_mapping,
int audio_channels,
@@
-66,7
+67,8
@@
Butler::Butler (
bool aligned,
bool fast
)
bool aligned,
bool fast
)
- : _player (player)
+ : _film (film)
+ , _player (player)
, _prepare_work (new boost::asio::io_service::work (_prepare_service))
, _pending_seek_accurate (false)
, _suspended (0)
, _prepare_work (new boost::asio::io_service::work (_prepare_service))
, _pending_seek_accurate (false)
, _suspended (0)
diff --git
a/src/lib/butler.h
b/src/lib/butler.h
index 6b933be4b85a4e98814297e4d4cf6bcdbd9ec14a..1fe05742f107821e65c63ab34650849e3f883c60 100644
(file)
--- a/
src/lib/butler.h
+++ b/
src/lib/butler.h
@@
-37,6
+37,7
@@
class Butler : public ExceptionStore, public boost::noncopyable
{
public:
Butler (
{
public:
Butler (
+ boost::weak_ptr<const Film> film,
boost::shared_ptr<Player> player,
AudioMapping map,
int audio_channels,
boost::shared_ptr<Player> player,
AudioMapping map,
int audio_channels,
@@
-87,6
+88,7
@@
private:
void player_change (ChangeType type);
void seek_unlocked (dcpomatic::DCPTime position, bool accurate);
void player_change (ChangeType type);
void seek_unlocked (dcpomatic::DCPTime position, bool accurate);
+ boost::weak_ptr<const Film> _film;
boost::shared_ptr<Player> _player;
boost::thread _thread;
boost::shared_ptr<Player> _player;
boost::thread _thread;
diff --git
a/src/lib/ffmpeg_encoder.cc
b/src/lib/ffmpeg_encoder.cc
index 1d8feffa8f4ed369ae177eabc85ce91d1511c9a3..443e169395425a4e7c3773979c94087501762f84 100644
(file)
--- a/
src/lib/ffmpeg_encoder.cc
+++ b/
src/lib/ffmpeg_encoder.cc
@@
-107,7
+107,7
@@
FFmpegEncoder::FFmpegEncoder (
}
_butler.reset (
}
_butler.reset (
- new Butler(_player, map, _output_audio_channels, bind(&PlayerVideo::force, _1, FFmpegFileEncoder::pixel_format(format)), VIDEO_RANGE_VIDEO, true, false)
+ new Butler(_
film, _
player, map, _output_audio_channels, bind(&PlayerVideo::force, _1, FFmpegFileEncoder::pixel_format(format)), VIDEO_RANGE_VIDEO, true, false)
);
}
);
}
diff --git
a/src/wx/film_viewer.cc
b/src/wx/film_viewer.cc
index e91cdc9a063c90bb2da61492771e6404b506f7ff..bca3631ab07a5ab811997948d3b7bc1c9503d22d 100644
(file)
--- a/
src/wx/film_viewer.cc
+++ b/
src/wx/film_viewer.cc
@@
-212,6
+212,7
@@
FilmViewer::recreate_butler ()
_butler.reset(
new Butler(
_butler.reset(
new Butler(
+ _film,
_player,
Config::instance()->audio_mapping(_audio_channels),
_audio_channels,
_player,
Config::instance()->audio_mapping(_audio_channels),
_audio_channels,
diff --git
a/test/butler_test.cc
b/test/butler_test.cc
index 8e3e7222f0aac0695b3e6a1d6a7210d652aeb9d2..9340ebe75862336dc3315273f0ea569ac926e1be 100644
(file)
--- a/
test/butler_test.cc
+++ b/
test/butler_test.cc
@@
-55,7
+55,7
@@
BOOST_AUTO_TEST_CASE (butler_test1)
map.set (i, i, 1);
}
map.set (i, i, 1);
}
- Butler butler (shared_ptr<Player>(new Player(film)), map, 6, bind(&PlayerVideo::force, _1, AV_PIX_FMT_RGB24), VIDEO_RANGE_FULL, false, false);
+ Butler butler (
film,
shared_ptr<Player>(new Player(film)), map, 6, bind(&PlayerVideo::force, _1, AV_PIX_FMT_RGB24), VIDEO_RANGE_FULL, false, false);
BOOST_CHECK (butler.get_video(true, 0).second == DCPTime());
BOOST_CHECK (butler.get_video(true, 0).second == DCPTime::from_frames(1, 24));
BOOST_CHECK (butler.get_video(true, 0).second == DCPTime());
BOOST_CHECK (butler.get_video(true, 0).second == DCPTime::from_frames(1, 24));
diff --git
a/test/dcp_playback_test.cc
b/test/dcp_playback_test.cc
index a2cf37866d18805bb7e404d8bdc2cbb9788329ba..05554f4edd82538079761cf2ca7db86220579196 100644
(file)
--- a/
test/dcp_playback_test.cc
+++ b/
test/dcp_playback_test.cc
@@
-43,6
+43,7
@@
BOOST_AUTO_TEST_CASE (dcp_playback_test)
shared_ptr<Butler> butler (
new Butler(
shared_ptr<Butler> butler (
new Butler(
+ film,
shared_ptr<Player>(new Player(film)),
AudioMapping(6, 6),
6,
shared_ptr<Player>(new Player(film)),
AudioMapping(6, 6),
6,
diff --git
a/test/player_test.cc
b/test/player_test.cc
index 15fb4161deb1b3fa7e9e34b784d14b42b59b89ef..b5f082e743a7ddb4580ca716c3ed7f5a0a5fb79c 100644
(file)
--- a/
test/player_test.cc
+++ b/
test/player_test.cc
@@
-218,7
+218,7
@@
BOOST_AUTO_TEST_CASE (player_seek_test)
player->set_always_burn_open_subtitles ();
player->set_play_referenced ();
player->set_always_burn_open_subtitles ();
player->set_play_referenced ();
- shared_ptr<Butler> butler (new Butler (player, AudioMapping(), 2, bind(PlayerVideo::force, _1, AV_PIX_FMT_RGB24), VIDEO_RANGE_FULL, false, true));
+ shared_ptr<Butler> butler (new Butler (
film,
player, AudioMapping(), 2, bind(PlayerVideo::force, _1, AV_PIX_FMT_RGB24), VIDEO_RANGE_FULL, false, true));
butler->disable_audio();
for (int i = 0; i < 10; ++i) {
butler->disable_audio();
for (int i = 0; i < 10; ++i) {
@@
-249,7
+249,7
@@
BOOST_AUTO_TEST_CASE (player_seek_test2)
player->set_always_burn_open_subtitles ();
player->set_play_referenced ();
player->set_always_burn_open_subtitles ();
player->set_play_referenced ();
- shared_ptr<Butler> butler (new Butler(player, AudioMapping(), 2, bind(PlayerVideo::force, _1, AV_PIX_FMT_RGB24), VIDEO_RANGE_FULL, false, true));
+ shared_ptr<Butler> butler (new Butler(
film,
player, AudioMapping(), 2, bind(PlayerVideo::force, _1, AV_PIX_FMT_RGB24), VIDEO_RANGE_FULL, false, true));
butler->disable_audio();
butler->seek(DCPTime::from_seconds(5), true);
butler->disable_audio();
butler->seek(DCPTime::from_seconds(5), true);
@@
-336,7
+336,7
@@
BOOST_AUTO_TEST_CASE (player_trim_crash)
shared_ptr<Player> player (new Player(film));
player->set_fast ();
shared_ptr<Player> player (new Player(film));
player->set_fast ();
- shared_ptr<Butler> butler (new Butler(player, AudioMapping(), 6, bind(&PlayerVideo::force, _1, AV_PIX_FMT_RGB24), VIDEO_RANGE_FULL, false, true));
+ shared_ptr<Butler> butler (new Butler(
film,
player, AudioMapping(), 6, bind(&PlayerVideo::force, _1, AV_PIX_FMT_RGB24), VIDEO_RANGE_FULL, false, true));
/* Wait for the butler to fill */
dcpomatic_sleep_seconds (5);
/* Wait for the butler to fill */
dcpomatic_sleep_seconds (5);