summaryrefslogtreecommitdiff
path: root/test/j2k_encode_threading_test.cc
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2024-12-18 00:17:05 +0100
committerCarl Hetherington <cth@carlh.net>2024-12-18 10:51:44 +0100
commitf9ab63ab6d2e7eb4b997790e5ca04b38e0ac3f7a (patch)
tree5df460c46f7396d7ea66330f907bb0c72a4c8e5a /test/j2k_encode_threading_test.cc
parenteee26f75150c3650e98c9d0102fd9f0d269c4bd5 (diff)
Fix hang when encoding with GPU enabled but not working.
Diffstat (limited to 'test/j2k_encode_threading_test.cc')
-rw-r--r--test/j2k_encode_threading_test.cc31
1 files changed, 31 insertions, 0 deletions
diff --git a/test/j2k_encode_threading_test.cc b/test/j2k_encode_threading_test.cc
index 48a639faa..58f354e80 100644
--- a/test/j2k_encode_threading_test.cc
+++ b/test/j2k_encode_threading_test.cc
@@ -25,6 +25,9 @@
#include "lib/dcp_transcode_job.h"
#include "lib/encode_server_description.h"
#include "lib/film.h"
+#ifdef DCPOMATIC_GROK
+#include "lib/grok/context.h"
+#endif
#include "lib/j2k_encoder.h"
#include "lib/job_manager.h"
#include "lib/make_dcp.h"
@@ -115,3 +118,31 @@ BOOST_AUTO_TEST_CASE(frames_not_lost_when_threads_disappear)
BOOST_REQUIRE_EQUAL(dcp.cpls()[0]->reels()[0]->main_picture()->intrinsic_duration(), 423U);
}
+
+#ifdef DCPOMATIC_GROK
+BOOST_AUTO_TEST_CASE(transcode_stops_when_gpu_enabled_with_no_gpu)
+{
+ ConfigRestorer cr;
+
+ grk_plugin::setMessengerLogger(new grk_plugin::GrokLogger("[GROK] "));
+
+ Config::Grok grok;
+ grok.enable = true;
+ Config::instance()->set_grok(grok);
+
+ auto content = content_factory(TestPaths::private_data() / "clapperboard.mp4");
+ auto film = new_test_film("transcode_stops_when_gpu_enabled_with_no_gpu", content);
+ film->write_metadata();
+ auto job = make_dcp(film, TranscodeJob::ChangedBehaviour::IGNORE);
+
+ int slept = 0;
+ while (JobManager::instance()->work_to_do() && slept < 10) {
+ dcpomatic_sleep_seconds(1);
+ ++slept;
+ }
+
+ BOOST_REQUIRE(slept < 10);
+
+ JobManager::drop();
+}
+#endif