From 6685f74a90c3f8c4d6b0887737fd964cda61973b Mon Sep 17 00:00:00 2001 From: Brendan LE GLAUNEC Date: Wed, 2 Nov 2016 07:56:03 +0100 Subject: [PATCH] v1.1.0 : Fixed multithreading & added timeout to ffmpeg --- cameradar_standalone/src/describe.cpp | 10 ++++++++++ cameradar_standalone/src/tasks/thumbnail.cpp | 1 + 2 files changed, 11 insertions(+) diff --git a/cameradar_standalone/src/describe.cpp b/cameradar_standalone/src/describe.cpp index ebe6293..2341d5d 100644 --- a/cameradar_standalone/src/describe.cpp +++ b/cameradar_standalone/src/describe.cpp @@ -13,10 +13,13 @@ // limitations under the License. #include +#include namespace etix { namespace cameradar { +std::mutex m; + // Ugly workaround size_t write_data(void* buffer, size_t size, size_t nmemb, void* userp) { @@ -37,6 +40,9 @@ curl_describe(const std::string& path, bool logs) { struct curl_slist* custom_msg = NULL; char URL[256]; long rc; + m.lock(); + curl_global_init(0); + m.unlock(); csession = curl_easy_init(); if (csession == NULL) return -1; sprintf(URL, "%s", path.c_str()); @@ -78,6 +84,10 @@ curl_describe(const std::string& path, bool logs) { } curl_easy_cleanup(csession); + + m.lock(); + curl_global_cleanup(); + m.unlock(); LOG_DEBUG_("Response code : " + std::to_string(rc), "describe"); if (logs) { // Some cameras return 400 instead of 401, don't know why. diff --git a/cameradar_standalone/src/tasks/thumbnail.cpp b/cameradar_standalone/src/tasks/thumbnail.cpp index 2a6e516..4ebcc6b 100644 --- a/cameradar_standalone/src/tasks/thumbnail.cpp +++ b/cameradar_standalone/src/tasks/thumbnail.cpp @@ -48,6 +48,7 @@ thumbnail::generate_thumbnail(const stream_model& stream) const { return false; std::string ffmpeg_cmd = "mkdir -p %s ; " + "timeout 20 " "ffmpeg " "-rtsp_transport tcp " "-y "