Commit Graph
270 Commits
Author SHA1 Message Date
Isaac Connor 64a9120ea7 packet_counts is always true here 2022-07-14 10:42:01 -04:00
Isaac Connor a515c3a899 clean out the if0'd out reorder code 2022-06-17 17:25:08 -04:00
Isaac Connor cfed17051b Fix ram leak due to logic inversion 2022-06-17 13:27:07 -04:00
Isaac Connor 4a6ef4e628 Reduce logging in clearPackets 2022-06-16 14:11:36 -04:00
Isaac Connor ac763ac7f9 Fix a poorly worded debug 2022-06-08 16:45:56 -04:00
Isaac Connor 84993c6c02 Comment out debugging. This is fast path stuff and this code seems to work. 2022-05-30 10:22:53 -04:00
Isaac Connor 71a1e81dd7 Change has_warned to warned_count, so that we can stop excess locked packet warnings too 2022-05-25 09:50:52 -04:00
Isaac Connor e9e9bf525c Log keyframe interval seen when clearing queue. 2022-05-19 15:53:57 -04:00
Isaac Connor 7ec97403d2 Introduce packetqueue::stop which just sets the deleting flag and sends out a notify. The idea is to call it before clear(). 2022-05-12 11:02:19 -04:00
Isaac Connor 0bbc6321d5 ifdef out the packet re-ordering code. It may be bogus. 2022-04-29 18:38:23 -04:00
Isaac Connor 9935e4011c Remove check for pktQueue.size(). We know that there are packets in it 2022-04-28 16:43:31 -04:00
Isaac Connor a80a8532f9 Use notify_all instead of notify_one. If the analysis thread wakes up first, can then wait on packet and decoder won't wake up until next capture 2022-04-28 16:41:51 -04:00
Isaac Connor dbe8981378 Reduce warnings by setting has_warned = false in the correct spot. Add code comments 2022-04-28 10:36:06 -04:00
Isaac Connor 6c17bc36bc Add check for deleting or terminating. Decrement packet counts in clear so that debugging makes more sense 2022-04-28 10:36:06 -04:00
Isaac Connor 55efd859c3 If deleting don't bother queuing 2022-04-07 13:11:56 -04:00
Isaac Connor 034dda5b6c Only bump iterators if we are pushing onto the back of the queue. If we are re-ordering, can do nothing about the iterators. Show if iterator points to the packet in dumpQueue. 2022-04-04 16:27:43 -04:00
Isaac Connor 5a78a765d1 Add in re-ordering of packets based on dts. 2022-04-03 16:24:21 -04:00
Isaac Connor bdffa10cc6 limit logging of full packetqueue 2022-03-27 13:14:40 -04:00
Isaac Connor 2768975f96 Only notify one. Anyone waiting is waiting on a lock and only 1 process can get that lock, so only one should try. 2022-02-08 10:12:29 -05:00
Isaac Connor 8c13aa7d3a Cleanup LockedPacket, use RAII 2022-02-08 10:10:00 -05:00
Isaac Connor 8e689340ce Don't need to check for end of queue as we already did that when adding packet to the queue 2022-02-08 10:06:32 -05:00
Isaac Connor fe01af6966 Don't need to test for end() because we added our packet to the queue and still have the lock 2022-02-08 09:57:56 -05:00
Isaac Connor 4be9c6cdd2 Code comments and make warning when the first packet in queue is locked. 2021-11-24 12:42:31 -05:00
Isaac Connor 9d37fbcd8e Fix some build warnings on arm 2021-11-12 15:11:48 -05:00
Isaac Connor e1d49ea172 fix index -> image_index 2021-10-17 15:13:34 -04:00
Isaac Connor 3f6d6fe7a0 Improve debug logging of packetqueue cleaning 2021-10-17 15:02:31 -04:00
Isaac Connor 086bf7a84f introduce new logic that keeps the initial keyframe and deletes 1 video frame after it to keep the count down. Also any audio frames it encounters. 2021-10-14 12:47:51 -04:00
Isaac Connor 411d15605a We can lockup if MaxImageBufferCount is less than keyframe interval. Give up after 10 tries and drop the packet 2021-10-14 10:08:51 -04:00
Isaac Connor 74ac79479f notifying before waiting serves no purpose because we have the lock 2021-10-13 15:02:07 -04:00
Isaac Connor c6cac57fb1 remove bogus wanring 2021-10-12 12:45:06 -04:00
Isaac Connor 0ba3d863a6 Merge branch 'master' of github.com:ZoneMinder/zoneminder 2021-10-12 12:25:01 -04:00
Isaac Connor aca477e737 Add warning when MaxImageBufferCount is less than keyframe interval 2021-09-28 10:30:51 -04:00
Isaac Connor d2cf89565e wait won't wake up other threads, so notify first. Since we have the lock, this should be ok 2021-09-15 12:53:41 -04:00
Isaac Connor bf5c0a8617 More properly fix the threading lock. Instead of waiting on a packet, release it and wait on the packetqueue. 2021-09-14 16:21:32 -04:00
Isaac Connor e6b67dcdc2 We cannot delete from the queue when capturing. Just do the waiting. Reduce severity of logs. Make more use of auto. Realise that no other iterators can be pointing into the queue. 2021-06-15 13:42:55 -04:00
Isaac Connor fa11c20bf8 Merge pull request #3297 from Carbenium/time-misc
Convert the rest of the codebase to std::chrono
2021-06-13 17:47:40 -04:00
Peter Keresztes Schmidt f675afc3f2 zmc: Convert internals to std::chrono 2021-06-13 23:22:51 +02:00
Isaac Connor 9f8c8a2664 Return early if packetqueue is empty instead of getting the lock. Return early in clear() if we are not initialised 2021-06-13 14:08:51 -04:00
Isaac Connor b16eb510d0 More debugging around clearQueue. return early if deleting 2021-06-04 15:03:08 -04:00
Isaac Connor fc6202d349 Introduce get_packet_and_increase_it just so we can lose an extra grab lock and function calls, etc. In queuePacket, if the queue is full, WAIT instead of failing to queue. 2021-06-03 18:22:18 -04:00
Isaac Connor 70946921bc fix code to release lock before notifying 2021-05-13 08:54:55 -04:00
Isaac Connor 76171fcc43 If not doing passthrough, don't need to find the nearest keyframe 2021-05-11 10:22:40 -04:00
Isaac Connor 3cd9bdccd5 style and performance improvements reported by cppcheck 2021-05-09 16:39:38 -04:00
Isaac Connor 2cf6ad8089 Switch ZMPacket * to a shared_ptr<ZMPacket>. This is so that in LockedPacket we can unlock and then notify and be confident that packet_ won't have been deleted. Change ZMPacket->timestamp to be a timeval instead of timeval *. This might not have been necessary but I like it. No longer cuse the ZMPacket object to wrap the shared image buffers and timestamps. Use a vector for image_buffers. 2021-05-08 21:14:20 -04:00
Isaac Connor 4685c63fab Add early return if pktQueue is empty so we can assume that it isn't below. Add notifications if we wake up and find that we have terminated so as to wake up any other waiters. Fixes failure to terminate when deinterlacing because both decoder and analysis are waiting 2021-05-07 14:04:51 -04:00
Isaac Connor 43f2f195f1 Fix a case in get_event_start_packet_it where if no pre_event_count we log an error and maybe don't start on a keyframe 2021-05-07 09:10:26 -04:00
Peter Keresztes Schmidt 68bedfe48f Fix logging format string mismatches
* Remove SZFMTD format macro and use %zu instead for size_t. %zu is understood by every compiler nowadays.
2021-04-30 00:26:24 +02:00
Isaac Connor a9ca6f8c13 Check for packets in the queue before we start traversing it to prevent crash 2021-04-28 12:12:24 -04:00
Isaac Connor 408e0963a0 Improve code and logging 2021-04-20 23:06:17 -04:00
Isaac Connor 07b3a7aa57 fix memleak caused by not deleting the packetlock when we can't get the lock 2021-04-17 12:50:26 -04:00