{
LOG_DEBUG_AUDIO_ANALYSIS_NC("AnalyseAudioJob::run");
- auto player = make_shared<Player>(_film, _playlist);
+ auto player = make_shared<Player>(_film, _playlist, false);
player->set_ignore_video ();
player->set_ignore_text ();
player->set_fast ();
DCPOMATIC_ASSERT (content);
playlist->add (_film, content);
- auto player = make_shared<Player>(_film, playlist);
+ auto player = make_shared<Player>(_film, playlist, false);
player->set_ignore_audio ();
player->set_fast ();
player->set_play_referenced ();
FilmEncoder::FilmEncoder(std::shared_ptr<const Film> film, std::weak_ptr<Job> job)
: _film (film)
, _job (job)
- , _player(film, Image::Alignment::PADDED)
+ , _player(film, Image::Alignment::PADDED, false)
{
}
emit(boost::bind(boost::ref(Progress), _("Examining audio, subtitles and closed captions")));
}
- auto player = make_shared<Player>(film, Image::Alignment::COMPACT);
+ auto player = make_shared<Player>(film, Image::Alignment::COMPACT, false);
player->set_ignore_video();
if (check_loudness_done || _disable_audio_analysis) {
/* We don't need to analyse audio because we already loaded a suitable analysis */
int const PlayerProperty::PLAY_REFERENCED = 710;
-Player::Player (shared_ptr<const Film> film, Image::Alignment subtitle_alignment)
+Player::Player (shared_ptr<const Film> film, Image::Alignment subtitle_alignment, bool tolerant)
: _film (film)
, _suspended (0)
, _ignore_video(false)
, _ignore_text(false)
, _always_burn_open_subtitles(false)
, _fast(false)
- , _tolerant (film->tolerant())
+ , _tolerant(tolerant)
, _play_referenced(false)
, _audio_merger(film->audio_frame_rate())
, _subtitle_alignment (subtitle_alignment)
}
-Player::Player (shared_ptr<const Film> film, shared_ptr<const Playlist> playlist_)
+Player::Player(shared_ptr<const Film> film, shared_ptr<const Playlist> playlist_, bool tolerant)
: _film (film)
, _playlist (playlist_)
, _suspended (0)
, _ignore_text(false)
, _always_burn_open_subtitles(false)
, _fast(false)
- , _tolerant (film->tolerant())
+ , _tolerant(tolerant)
, _play_referenced(false)
, _audio_merger(film->audio_frame_rate())
{
class Player
{
public:
- Player (std::shared_ptr<const Film>, Image::Alignment subtitle_alignment);
- Player (std::shared_ptr<const Film>, std::shared_ptr<const Playlist> playlist);
+ Player(std::shared_ptr<const Film>, Image::Alignment subtitle_alignment, bool tolerant);
+ Player(std::shared_ptr<const Film>, std::shared_ptr<const Playlist> playlist, bool tolerant);
Player (Player const&) = delete;
Player& operator= (Player const&) = delete;
auto path = boost::filesystem::path (wx_to_std(dialog.GetPath()));
- auto player = make_shared<Player>(_film, Image::Alignment::PADDED);
+ auto player = make_shared<Player>(_film, Image::Alignment::PADDED, true);
player->seek(_viewer.position(), true);
bool done = false;
film = make_shared<Film>(film_dir);
film->read_metadata ();
- auto player = make_shared<Player>(film, Image::Alignment::COMPACT);
+ auto player = make_shared<Player>(film, Image::Alignment::COMPACT, false);
player->Video.connect (bind(&process_video, _1));
while (!player->pass ()) {}
} catch (std::exception& e) {
}
try {
- _player.emplace(_film, _optimisation == Optimisation::NONE ? Image::Alignment::PADDED : Image::Alignment::COMPACT);
+ _player.emplace(_film, _optimisation == Optimisation::NONE ? Image::Alignment::PADDED : Image::Alignment::COMPACT, true);
_player->set_fast ();
if (_dcp_decode_reduction) {
_player->set_dcp_decode_reduction (_dcp_decode_reduction);
auto test = new_test_film(prefix + "_test", { vf_dcp });
vf_dcp->text[0]->set_use(true);
- auto player = make_shared<Player>(test, Image::Alignment::COMPACT);
+ auto player = make_shared<Player>(test, Image::Alignment::COMPACT, false);
player->set_always_burn_open_subtitles();
while (!player->pass()) {}
}
map.set (i, i, 1);
}
- Player player(film, Image::Alignment::COMPACT);
+ Player player(film, Image::Alignment::COMPACT, false);
Butler butler (
film,
map.set (i, i, 1);
}
- Player player(film, Image::Alignment::COMPACT);
+ Player player(film, Image::Alignment::COMPACT, false);
Butler butler (
film,
ov_content = make_shared<DCPContent>(ov->dir(ov->dcp_name(false)));
test->examine_and_add_content (ov_content);
BOOST_REQUIRE (!wait_for_jobs());
- auto player = make_shared<Player>(test, Image::Alignment::COMPACT);
+ auto player = make_shared<Player>(test, Image::Alignment::COMPACT, false);
auto decoder = std::dynamic_pointer_cast<DCPDecoder>(player->_pieces.front()->decoder);
BOOST_REQUIRE (decoder);
auto vf_content = make_shared<DCPContent>(vf->dir(vf->dcp_name(false)));
test->examine_and_add_content (vf_content);
BOOST_REQUIRE (!wait_for_jobs());
- player = make_shared<Player>(test, Image::Alignment::COMPACT);
+ player = make_shared<Player>(test, Image::Alignment::COMPACT, false);
decoder = std::dynamic_pointer_cast<DCPDecoder>(player->_pieces.front()->decoder);
BOOST_REQUIRE (decoder);
auto encrypted_content = make_shared<DCPContent>(encrypted->dir(encrypted->dcp_name(false)));
test->examine_and_add_content (encrypted_content);
BOOST_REQUIRE (!wait_for_jobs());
- player = make_shared<Player>(test, Image::Alignment::COMPACT);
+ player = make_shared<Player>(test, Image::Alignment::COMPACT, false);
decoder = std::dynamic_pointer_cast<DCPDecoder>(player->_pieces.front()->decoder);
BOOST_REQUIRE (decoder);
auto content = make_shared<DCPContent>(TestPaths::private_data() / "JourneyToJah_TLR-1_F_EN-DE-FR_CH_51_2K_LOK_20140225_DGL_SMPTE_OV");
auto film = new_test_film("dcp_playback_test", { content });
- Player player(film, Image::Alignment::PADDED);
+ Player player(film, Image::Alignment::PADDED, false);
auto butler = std::make_shared<Butler>(
film,
BOOST_REQUIRE_EQUAL (info.samplerate, 48000);
ref_buffer.resize(info.samplerate * info.channels);
- auto player = make_shared<Player>(film, Image::Alignment::COMPACT);
+ auto player = make_shared<Player>(film, Image::Alignment::COMPACT, false);
player->Audio.connect (bind (&audio, _1, info.channels));
while (!player->pass ()) {}
film->examine_and_add_content (content);
BOOST_REQUIRE (!wait_for_jobs ());
- auto player = make_shared<Player>(film, Image::Alignment::COMPACT);
+ auto player = make_shared<Player>(film, Image::Alignment::COMPACT, false);
while (!player->pass ()) {}
}
film->examine_and_add_content (content);
BOOST_REQUIRE (!wait_for_jobs ());
- auto player = make_shared<Player>(film, Image::Alignment::COMPACT);
+ auto player = make_shared<Player>(film, Image::Alignment::COMPACT, false);
player->set_fast ();
while (!player->pass ()) {}
}
film->examine_and_add_content (content);
BOOST_REQUIRE (!wait_for_jobs ());
- auto player = make_shared<Player>(film, Image::Alignment::COMPACT);
+ auto player = make_shared<Player>(film, Image::Alignment::COMPACT, false);
player->set_fast ();
BOOST_CHECK_NO_THROW (while (!player->pass()) {});
}
{
auto content = content_factory(TestPaths::private_data() / "chk.mkv")[0];
auto film = new_test_film("check_exception_with_multiple_video_frames_per_packet", { content });
- auto player = std::make_shared<Player>(film, film->playlist());
+ auto player = std::make_shared<Player>(film, film->playlist(), false);
while (!player->pass()) {}
}
auto content = make_shared<FFmpegContent>(path);
auto film = new_test_film("ffmpeg_decoder_sequential_test_" + file.string(), { content });
- auto player = make_shared<Player>(film, Image::Alignment::COMPACT);
+ auto player = make_shared<Player>(film, Image::Alignment::COMPACT, false);
BOOST_REQUIRE (content->video_frame_rate());
BOOST_CHECK_CLOSE (content->video_frame_rate().get(), fps, 0.01);
vector<string> lines;
- auto player = make_shared<Player>(film, film->playlist());
+ auto player = make_shared<Player>(film, film->playlist(), false);
player->Text.connect([&lines](PlayerText text, TextType, optional<DCPTextTrack>, dcpomatic::DCPTimePeriod) {
for (auto i: text.string) {
lines.push_back(i.text());
B->set_position(film, dcpomatic::DCPTime::from_seconds(1));
C->set_position(film, dcpomatic::DCPTime::from_seconds(3));
- auto player = make_shared<Player>(film, Image::Alignment::COMPACT);
+ auto player = make_shared<Player>(film, Image::Alignment::COMPACT, false);
auto pieces = player->_pieces;
BOOST_REQUIRE_EQUAL (pieces.size(), 3U);
BOOST_CHECK_EQUAL(pieces[0]->content, A);
accumulated = std::make_shared<AudioBuffers>(film->audio_channels(), 0);
- Player player(film, Image::Alignment::COMPACT);
+ Player player(film, Image::Alignment::COMPACT, false);
player.Audio.connect(bind(&accumulate, _1, _2));
while (!player.pass()) {}
BOOST_REQUIRE (accumulated->frames() >= 48000);
/* Length should be rounded up from B's length to the next video frame */
BOOST_CHECK (film->length() == DCPTime::from_frames(3 * 24 + 1, 24));
- Player player(film, Image::Alignment::COMPACT);
+ Player player(film, Image::Alignment::COMPACT, false);
player.setup_pieces();
BOOST_REQUIRE_EQUAL(player._black._periods.size(), 1U);
BOOST_CHECK(player._black._periods.front() == DCPTimePeriod(DCPTime::from_frames(3 * 24, 24), DCPTime::from_frames(3 * 24 + 1, 24)));
auto film = new_test_film("ffmpeg_transcoder_basic_test_subs", { c, s });
film->set_audio_channels (6);
- Player player(film, Image::Alignment::COMPACT);
+ Player player(film, Image::Alignment::COMPACT, false);
player.Video.connect(bind(&video, _1, _2));
player.Audio.connect(bind(&audio, _1, _2));
video_frames = audio_frames = 0;
BOOST_REQUIRE (!wait_for_jobs ());
dcp->only_text()->set_use (true);
- Player player(film, Image::Alignment::COMPACT);
+ Player player(film, Image::Alignment::COMPACT, false);
player.set_fast();
player.set_always_burn_open_subtitles();
player.set_play_referenced();
BOOST_REQUIRE (!wait_for_jobs ());
dcp->only_text()->set_use (true);
- Player player(film, Image::Alignment::COMPACT);
+ Player player(film, Image::Alignment::COMPACT, false);
player.set_fast();
player.set_always_burn_open_subtitles();
player.set_play_referenced();
text->only_text()->set_type (TextType::CLOSED_CAPTION);
text->only_text()->set_use (true);
- Player player(film, Image::Alignment::COMPACT);
+ Player player(film, Image::Alignment::COMPACT, false);
player.set_ignore_video();
player.set_ignore_audio();
film->examine_and_add_content (boon);
BOOST_REQUIRE (!wait_for_jobs());
- Player player(film, Image::Alignment::COMPACT);
+ 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
auto content2 = std::make_shared<DCPContent>(film->dir(film->dcp_name()));
auto film2 = new_test_film("encrypted_dcp_with_no_kdm_gives_no_butler_error2", { content2 });
- Player player(film, Image::Alignment::COMPACT);
+ 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);
float buffer[2000 * 6];
subs1->set_position(film, DCPTime());
subs2->set_position(film, DCPTime());
- Player player(film, Image::Alignment::COMPACT);
+ Player player(film, Image::Alignment::COMPACT, false);
dcp::Time last;
player.Text.connect([&last](PlayerText text, TextType, optional<DCPTextTrack>, dcpomatic::DCPTimePeriod) {
for (auto sub: text.string) {
B->set_position(film, DCPTime::from_seconds(10));
B->video->set_custom_size(dcp::Size(1998, 1080));
- auto player = std::make_shared<Player>(film, film->playlist());
+ auto player = std::make_shared<Player>(film, film->playlist(), false);
std::vector<uint8_t> red_line(1998 * 3);
for (int i = 0; i < 1998; ++i) {
mono->set_position(film, dcpomatic::DCPTime::from_seconds(10));
- auto player = std::make_shared<Player>(film, film->playlist());
+ auto player = std::make_shared<Player>(film, film->playlist(), false);
std::vector<uint8_t> red_line(1998 * 3);
for (int i = 0; i < 1998; ++i) {
{
auto content = content_factory(TestPaths::private_data() / "Fight.Club.1999.720p.BRRip.x264-x0r.srt")[0];
auto film = new_test_film("check_seek_with_no_video", { content });
- auto player = std::make_shared<Player>(film, film->playlist());
+ auto player = std::make_shared<Player>(film, film->playlist(), false);
boost::signals2::signal<void (std::shared_ptr<PlayerVideo>, dcpomatic::DCPTime)> Video;
content->audio->set_mapping(AudioMapping(6 * 2, MAX_DCP_AUDIO_CHANNELS));
- Player player(film, Image::Alignment::COMPACT);
+ 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);
/* Wait for the butler thread to run for a while; in the case under test it will throw an exception because
{
auto dcp = make_shared<DCPContent>("test/data/ccap_only");
auto film = new_test_film("no_error_with_ccap_that_mentions_no_font", { dcp });
- auto player = Player(film, film->playlist());
+ auto player = Player(film, film->playlist(), false);
while (!player.pass()) {}
}
film->examine_and_add_content(B);
BOOST_REQUIRE (!wait_for_jobs());
- Player player(film, Image::Alignment::COMPACT);
+ 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->set_sequence (false);
film->add_content (content);
- auto player = make_shared<Player>(film, Image::Alignment::COMPACT);
+ auto player = make_shared<Player>(film, Image::Alignment::COMPACT, false);
/* Position 0, no trim, content rate = DCP rate */
content->set_position (film, DCPTime());
film->set_sequence (false);
film->add_content (content);
- auto player = make_shared<Player>(film, Image::Alignment::COMPACT);
+ auto player = make_shared<Player>(film, Image::Alignment::COMPACT, false);
/* Position 0, no trim, content rate = DCP rate */
content->set_position (film, DCPTime());
film->set_sequence (false);
film->add_content (content);
- auto player = make_shared<Player>(film, Image::Alignment::COMPACT);
+ auto player = make_shared<Player>(film, Image::Alignment::COMPACT, false);
/* Position 0, no trim, video/audio content rate = video/audio DCP rate */
content->set_position (film, DCPTime());
Ls = sf_open ("build/test/upmixer_a_test/Ls.wav", SFM_WRITE, &info);
Rs = sf_open ("build/test/upmixer_a_test/Rs.wav", SFM_WRITE, &info);
- auto player = make_shared<Player>(film, Image::Alignment::COMPACT);
+ auto player = make_shared<Player>(film, Image::Alignment::COMPACT, false);
player->Audio.connect (bind (&write, _1, _2));
while (!player->pass()) {}
auto content = content_factory(file);
auto film = new_test_film("ffmpeg_image_video_range_expanded", content);
content[0]->video->set_range (VideoRange::VIDEO);
- auto player = make_shared<Player>(film, film->playlist());
+ auto player = make_shared<Player>(film, film->playlist(), false);
shared_ptr<PlayerVideo> player_video;
player->Video.connect([&player_video](shared_ptr<PlayerVideo> pv, dcpomatic::DCPTime) {
shared_ptr<PlayerVideo> first_video;
- auto player = make_shared<Player>(film, Image::Alignment::COMPACT);
+ auto player = make_shared<Player>(film, Image::Alignment::COMPACT, false);
player->Video.connect([&first_video](shared_ptr<PlayerVideo> video, dcpomatic::DCPTime) {
first_video = video;
});