From: Carl Hetherington Date: Fri, 1 Nov 2019 10:25:20 +0000 (+0100) Subject: Increase fudge factor at the boundary between audio signal and silence. X-Git-Tag: v2.15.29~7 X-Git-Url: https://main.carlh.net/gitweb/?p=dcpomatic.git;a=commitdiff_plain;h=1b81a1ee7c4eba533fd49939f8e76744f94038b6 Increase fudge factor at the boundary between audio signal and silence. --- diff --git a/src/lib/player.cc b/src/lib/player.cc index b3fba1aec..2bf9b1860 100644 --- a/src/lib/player.cc +++ b/src/lib/player.cc @@ -648,12 +648,15 @@ Player::pass () if (_last_audio_time) { /* Sometimes the thing that happened last finishes fractionally before or after this silence. Bodge the start time of the silence to fix it. + I think is nothing too bad to worry about since we will just add or + remove a little silence at the end of some content. */ int64_t const error = labs(period.from.get() - _last_audio_time->get()); - if (error >= 2) { + int64_t const too_much_error = 4; + if (error >= too_much_error) { _film->log()->log(String::compose("Silence starting before or after last audio by %1", error), LogEntry::TYPE_ERROR); } - DCPOMATIC_ASSERT (error < 2); + DCPOMATIC_ASSERT (error < too_much_error); period.from = *_last_audio_time; } if (period.duration() > one_video_frame()) { diff --git a/test/data b/test/data index eda45cf07..6ca8ac639 160000 --- a/test/data +++ b/test/data @@ -1 +1 @@ -Subproject commit eda45cf0736a897f944a8c38e9aed9ca98d4c3ce +Subproject commit 6ca8ac639cd63e909237badb5b564e09d54ee90e diff --git a/test/player_test.cc b/test/player_test.cc index a7e944cd4..30b1a56dd 100644 --- a/test/player_test.cc +++ b/test/player_test.cc @@ -1,5 +1,5 @@ /* - Copyright (C) 2014-2018 Carl Hetherington + Copyright (C) 2014-2019 Carl Hetherington This file is part of DCP-o-matic. @@ -344,3 +344,17 @@ BOOST_AUTO_TEST_CASE (player_trim_crash) butler->rethrow (); } + +/** Test a crash when the gap between the last audio and the start of a silent period is more than 1 sample */ +BOOST_AUTO_TEST_CASE (player_silence_crash) +{ + shared_ptr film = new_test_film2 ("player_silence_crash"); + shared_ptr sine = content_factory("test/data/impulse_train.wav").front(); + film->examine_and_add_content (sine); + BOOST_REQUIRE (!wait_for_jobs()); + + sine->set_video_frame_rate (23.976); + film->write_metadata (); + film->make_dcp (); + BOOST_REQUIRE (!wait_for_jobs()); +}