X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=test%2Faudio_analysis_test.cc;h=278ea06d9962701562ece6545735bff644d653ef;hb=8a7c6c1b3f8c25613019ff074d5b0c266f4e964c;hp=9fd9282813144a76e542c32670faa9c7b03ce988;hpb=5a5324ed3a381a86dfe0a6e3932c1d58fdcd596f;p=dcpomatic.git diff --git a/test/audio_analysis_test.cc b/test/audio_analysis_test.cc index 9fd928281..278ea06d9 100644 --- a/test/audio_analysis_test.cc +++ b/test/audio_analysis_test.cc @@ -22,6 +22,7 @@ * @brief Check audio analysis code. */ +#include #include "lib/audio_analysis.h" #include "lib/analyse_audio_job.h" #include "lib/film.h" @@ -31,12 +32,11 @@ #include "lib/ratio.h" #include "lib/job_manager.h" #include "lib/audio_content.h" +#include "lib/content_factory.h" +#include "lib/playlist.h" #include "test.h" -#include -#include using boost::shared_ptr; -using boost::make_shared; static float random_float () @@ -99,11 +99,11 @@ BOOST_AUTO_TEST_CASE (audio_analysis_test) film->set_name ("audio_analysis_test"); boost::filesystem::path p = private_data / "betty_L.wav"; - shared_ptr c = make_shared (film, p); + shared_ptr c (new FFmpegContent (film, p)); film->examine_and_add_content (c); wait_for_jobs (); - shared_ptr job = make_shared (film, film->playlist ()); + shared_ptr job (new AnalyseAudioJob (film, film->playlist ())); job->Finished.connect (boost::bind (&finished)); JobManager::instance()->add (job); wait_for_jobs (); @@ -114,13 +114,13 @@ BOOST_AUTO_TEST_CASE (audio_analysis_negative_delay_test) { shared_ptr film = new_test_film ("audio_analysis_negative_delay_test"); film->set_name ("audio_analysis_negative_delay_test"); - shared_ptr c = make_shared (film, private_data / "boon_telly.mkv"); + shared_ptr c (new FFmpegContent (film, private_data / "boon_telly.mkv")); film->examine_and_add_content (c); wait_for_jobs (); c->audio->set_delay (-250); - shared_ptr job = make_shared (film, film->playlist ()); + shared_ptr job (new AnalyseAudioJob (film, film->playlist ())); job->Finished.connect (boost::bind (&finished)); JobManager::instance()->add (job); wait_for_jobs (); @@ -131,11 +131,11 @@ BOOST_AUTO_TEST_CASE (audio_analysis_test2) { shared_ptr film = new_test_film ("audio_analysis_test2"); film->set_name ("audio_analysis_test2"); - shared_ptr c = make_shared (film, private_data / "3d_thx_broadway_2010_lossless.m2ts"); + shared_ptr c (new FFmpegContent (film, private_data / "3d_thx_broadway_2010_lossless.m2ts")); film->examine_and_add_content (c); wait_for_jobs (); - shared_ptr job = make_shared (film, film->playlist ()); + shared_ptr job (new AnalyseAudioJob (film, film->playlist ())); job->Finished.connect (boost::bind (&finished)); JobManager::instance()->add (job); wait_for_jobs (); @@ -160,7 +160,7 @@ BOOST_AUTO_TEST_CASE (audio_analysis_test3) film->set_dcp_content_type (DCPContentType::from_isdcf_name ("TLR")); film->set_name ("frobozz"); - shared_ptr content = make_shared (film, "test/data/white.wav"); + shared_ptr content (new FFmpegContent (film, "test/data/white.wav")); film->examine_and_add_content (content); wait_for_jobs (); @@ -170,3 +170,21 @@ BOOST_AUTO_TEST_CASE (audio_analysis_test3) wait_for_jobs (); BOOST_CHECK (done); } + +/** Run an audio analysis that triggered an exception in the audio decoder at one point */ +BOOST_AUTO_TEST_CASE (analyse_audio_test4) +{ + shared_ptr film = new_test_film ("analyse_audio_test"); + film->set_container (Ratio::from_id ("185")); + film->set_dcp_content_type (DCPContentType::from_isdcf_name ("TLR")); + film->set_name ("frobozz"); + shared_ptr content = content_factory (film, private_data / "20 The Wedding Convoy Song.m4a"); + film->examine_and_add_content (content); + wait_for_jobs (); + + shared_ptr playlist (new Playlist); + playlist->add (content); + boost::signals2::connection c; + JobManager::instance()->analyse_audio (film, playlist, c, boost::bind (&finished)); + BOOST_CHECK (!wait_for_jobs ()); +}