Commit Graph

3993 Commits (2742485a61d751de76ec6cbf1029bf0292ae242e)

Author SHA1 Message Date
Isaac Connor 2742485a61
Merge pull request #3157 from Carbenium/zmc-deadlock
Fix a possible deadlock on zmc shutdown and reconnect
2021-02-11 11:28:36 -05:00
Peter Keresztes Schmidt 42484e6434 zmc: Fix a deadlock on shutdown/reconnection
First stop the analysis threads, then close the monitors and thus drain the packet queues before trying to join the analysis threads since they might hang while waiting for the next packet to arrive.
2021-02-11 15:48:22 +01:00
Isaac Connor cca4d18d26 need <algorithm> for std::max 2021-02-10 17:29:51 -05:00
Isaac Connor 51f2d120e4 Free raw image after motion detection when doing passthrough and not saving jpegs 2021-02-10 17:07:58 -05:00
Isaac Connor 393e8b582a Move the logic of whether to queue a packet into packetqueue::queuePacket 2021-02-10 14:11:00 -05:00
Isaac Connor 0a1bd3537d ready_count is now max(warmup_count,pre_event_count). This should ensure that we have enough packets in the packet queue when creating an event. 2021-02-10 13:54:20 -05:00
Isaac Connor 991e8dc860 Include mysqld_error.h so we can test for specific errors 2021-02-10 13:54:20 -05:00
Isaac Connor 64cfac9255 Only loop on SQL insert for wait timeout error, not others 2021-02-10 13:54:20 -05:00
Peter Keresztes Schmidt 2f5dff7244 Monitor: Don't push packets into the packet queue when in Monitor mode
There is no consumer for the packets in this mode, so don't queue them up. This saves quite a bit of RAM for mode of operation.
2021-02-10 16:13:47 +01:00
Peter Keresztes Schmidt 687ba03eb4 Drop relicts of zma 2021-02-10 13:26:25 +01:00
Isaac Connor 8f783c0ec4 Must also include cstdarg for va_start etc al 2021-02-09 23:32:27 -05:00
Isaac Connor 9879a40c4b Must include cstring 2021-02-09 23:32:27 -05:00
Isaac Connor dcf1ff3133
Merge pull request #3152 from Carbenium/ffmpeg-warnings
Fix some ffmpeg deprecation warnings
2021-02-09 20:15:41 -05:00
Peter Keresztes Schmidt a66a9a6f10 Rtsp: Use AvStream.codecpar if available
.codec has been deprecated in libavf 57.33.100
2021-02-10 00:21:23 +01:00
Peter Keresztes Schmidt e18f9e1f03 FFmpeg: Drop function which is not needed with supported ffmpeg versions
avformat_alloc_output_context2 was introduced in libavformat 53.2 (2011). Drop our own implementation which was used if the library version wasn't available. It isn't used anymore an causes compile warnings.
2021-02-10 00:21:23 +01:00
Peter Keresztes Schmidt d0b80d63c3 FFmpeg: Fix a version check to avoid deprecation warnings on newer systems 2021-02-10 00:20:34 +01:00
Peter Keresztes Schmidt 0380bee130 AnalysisThread: Make the class un-movable
We depend on an unchanged value of "this" after the creation of the thread otherwise undefined values would be accessed within the std::thread.
2021-02-09 23:54:50 +01:00
Peter Keresztes Schmidt 8fa1249b33 Utils: Add some helper to create unique_ptrs
They follow the C++14 API and can be removed once the language level is increased.
2021-02-09 23:52:13 +01:00
Isaac Connor 67cd038a4f Include pre-alarm frames in db 2021-02-09 15:33:09 -05:00
Isaac Connor 727594e3af Fix rotated images by allocating image with camera dimensions 2021-02-09 14:53:14 -05:00
Isaac Connor 13d72bdec6 Merge branch 'master' of github.com:ZoneMinder/zoneminder 2021-02-09 14:24:20 -05:00
Isaac Connor 1780cfbff1 Add frames_duration 2021-02-09 14:23:34 -05:00
Isaac Connor 9b3d423f3d Separate duration==endtime-starttime from Frames Duration 2021-02-09 14:22:23 -05:00
Isaac Connor a5519075f5 Also save ALERT frames to db 2021-02-09 14:22:02 -05:00
Isaac Isaac c233bf3463 spacing and a fix for duplicated for loop setting up rtsp server 2021-02-09 13:18:34 -05:00
Isaac Isaac 032420beb2 Don't need to init mVideoStream etc as they are done in Camera(). Set stream_index in packet. 2021-02-09 13:16:19 -05:00
Isaac Connor 05b5927f01 Don't queue audio packets if we aren't saving audio 2021-02-09 11:54:38 -05:00
Isaac Connor 1bce4f6bfa When flushing queues, will return 0 when done. Handle it. Also set next dts from pkt, not opkt 2021-02-09 11:30:42 -05:00
Isaac Connor e3eebeb9dd Must return ret to handle case where ret=0. 2021-02-09 11:30:06 -05:00
Isaac Connor aab3aed791
Merge pull request #3145 from Carbenium/analysis-thread
AnalysisThread: Move it over to std::thread
2021-02-09 09:26:47 -05:00
Peter Keresztes Schmidt 23a4b5087c RTSPServerThread: Fix a crash during construction
It's a bad idea to use a shared_ptr instance from which the data just got moved away. Rename the instance variable to distinguish them.
2021-02-09 14:50:07 +01:00
Peter Keresztes Schmidt 4056782954 Comms: Move all classes to ZM:: namespace
The Socket class collides with a class named the same way from liblive555. This confuses the linker and links the wrong object leading to a crash when connecting to the RTSP server.
2021-02-09 14:45:33 +01:00
Peter Keresztes Schmidt 888ddc5d63 AnalysisThread: Sprinkle some more std::chrono 2021-02-09 12:26:53 +01:00
Peter Keresztes Schmidt 3ba8ff604f AnalysisThread: Use std::this_thread::sleep_for instead of usleep 2021-02-09 12:26:53 +01:00
Peter Keresztes Schmidt 4cd70fec1a Utils: Add some typedefs for std::chrono durations 2021-02-09 12:26:53 +01:00
Peter Keresztes Schmidt b22dbd4788 AnalysisThread: Move it over to std::thread 2021-02-09 12:26:53 +01:00
Peter Keresztes Schmidt 00104b020c Build: Link our libs and executable targets against zm-core-interface 2021-02-08 23:08:22 +01:00
Isaac Connor 4d0800151a
Merge pull request #3143 from Carbenium/close-event-crash
Monitor: Don't segfault in closeEvent if mmap is already unmapped
2021-02-08 15:32:38 -05:00
Peter Keresztes Schmidt 6fd6654488 Monitor: Don't segfault in closeEvent if mmap is already unmapped 2021-02-08 19:47:40 +01:00
Peter Keresztes Schmidt 7e7b1a0b1f Logger: Try harder to obtain the DB lock
Since we are now multi-threaded it can happen quite easily that a log message should be written to the DB on one thread while the other thread executes another query. Don't bail out immediately in the logging code, instead try to obtain the lock within 1s.
2021-02-08 19:07:01 +01:00
Peter Keresztes Schmidt 70fbc25dbd Mutex: Change method signatures so they resemble std::unique_lock a bit more
try_lock_for should specify in their return value whether obtaining the lock succeeded.
2021-02-08 18:59:25 +01:00
Isaac Connor 05a115e315
Merge pull request #3141 from Carbenium/recursive-mutex
RecursiveMutex: Use the pthread_mutex_t of the base class
2021-02-08 11:49:35 -05:00
Peter Keresztes Schmidt 40ddca14c6 RecursiveMutex: Use the pthread_mutex_t of the base class
Not doing so initializes a pthread_mutex_t with PTHREAD_MUTEX_RECURSIVE in the derived class but the lock/unlock
methods still use the pthread_mutex_t instance of the base class, which is not a recursive mutex.
2021-02-08 17:33:06 +01:00
Isaac Connor 583779438b Don't unlock db_mutex if we don't get the lock in the first place 2021-02-08 11:09:44 -05:00
Isaac Connor 192aae8e30 small space and code doc 2021-02-08 09:04:06 -05:00
Isaac Connor 01e69569eb Placement of -- matters. 2021-02-08 09:04:06 -05:00
Isaac Connor b75d2f6164 Don't need to set ctx to null. fre_context does it for us 2021-02-08 09:04:06 -05:00
Isaac Connor 061140958c Only update videodata if shared_data is active 2021-02-08 09:04:06 -05:00
Isaac Connor 57f599237c
Merge pull request #3136 from Carbenium/db-connect
DB: Make connection initialization more predictable and finalize mysql library correctly
2021-02-08 08:43:33 -05:00
Peter Keresztes Schmidt 3376b44290 Monitor: Fix a segfault when loading local cameras 2021-02-08 12:25:18 +01:00