zoneminder/src
Isaac Connor 94f3a5771b fix: release GPU surfaces immediately after hw transfer
The nvidia-vaapi-driver would fail with "list argument exceeds maximum
number" when decoding HEVC because GPU surfaces were being held in the
packet queue after transfer, exhausting the VAAPI surface pool.

Changes:
- Transfer hw frames to software immediately in receive_frame() while
  the VA context is still valid, then release the GPU surface
- Check hw_frames_ctx in needs_hw_transfer() to detect already-transferred
  frames
- Remove extra_hw_frames and thread_count settings (not needed with
  immediate surface release)
- Fix EAGAIN handling in send_packet to wait instead of busy-loop

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-04 22:51:21 -05:00
..
CMakeLists.txt Add av1 support 2026-01-31 12:43:03 -05:00
bindings.h Format code using astyle google format 2024-03-26 13:43:58 -05:00
jinclude.h
zm.cpp Move exit_zms to exit_zm in zm.cpp 2026-01-05 16:36:36 -05:00
zm.h Move exit_zms to exit_zm in zm.cpp 2026-01-05 16:36:36 -05:00
zm_analysis_thread.cpp Wait on the packetqueue condition instead of sleeping. Should help analysis keep up with decoding better and offer faster shutdown. 2026-02-04 20:44:17 -05:00
zm_analysis_thread.h Add Join() function 2024-10-26 14:29:40 -04:00
zm_box.h Format code using astyle google format 2024-03-26 13:43:58 -05:00
zm_buffer.cpp Format code using astyle google format 2024-03-26 13:43:58 -05:00
zm_buffer.h fix: prevent null pointer dereference in Buffer::tidy() 2026-02-02 20:34:33 -05:00
zm_camera.cpp fix: address multiple bugs across core source files 2026-02-03 10:18:49 -05:00
zm_camera.h Format code using astyle google format 2024-03-26 13:43:58 -05:00
zm_comms.cpp fix: address multiple bugs across core source files 2026-02-03 10:18:49 -05:00
zm_comms.h fix: correct socket copy constructor and buffer overflow in recv 2026-02-02 20:44:01 -05:00
zm_config.cpp fix: address multiple bugs across core source files 2026-02-03 10:18:49 -05:00
zm_config.h Format code using astyle google format 2024-03-26 13:43:58 -05:00
zm_config_data.h.in misc: Move ZM_HAS_* defines to zoneminder-config.cmake 2021-05-31 23:29:29 +02:00
zm_crypt.cpp Format code using astyle google format 2024-03-26 13:43:58 -05:00
zm_crypt.h Format code using astyle google format 2024-03-26 13:43:58 -05:00
zm_crypto_generics.h Misc: Rename namespace ZM to zm 2021-06-06 19:11:11 +02:00
zm_crypto_gnutls.h Crypto: Implement SHA1 hashing 2021-05-30 22:56:21 +02:00
zm_crypto_openssl.h Crypto: Implement SHA1 hashing 2021-05-30 22:56:21 +02:00
zm_db.cpp fix: address multiple bugs across core source files 2026-02-03 10:18:49 -05:00
zm_db.h Format code using astyle google format 2024-03-26 13:43:58 -05:00
zm_decoder_thread.cpp Wait on the packetqueue condition instead of sleeping. Should help analysis keep up with decoding better and offer faster shutdown. 2026-02-04 20:44:17 -05:00
zm_decoder_thread.h Add Join() function 2024-10-26 14:29:40 -04:00
zm_define.h zm_define: Include cstddef so we have size_t 2021-05-16 16:42:58 +02:00
zm_event.cpp Use starttime for inserting StartDateTime instead of NOW 2026-02-03 12:10:41 -05:00
zm_event.h Update Storage DiskSpace once event has been finalized. As we decrement DIskSpace on event deletion, we were getting negative DIskSpace in the Storage table. 2026-01-28 15:15:59 -05:00
zm_event_tag.cpp fix: address multiple bugs across core source files 2026-02-03 10:18:49 -05:00
zm_event_tag.h Add tags support to events. 2025-07-05 08:09:09 -04:00
zm_eventstream.cpp fix: address multiple bugs across core source files 2026-02-03 10:18:49 -05:00
zm_eventstream.h Split out seeking code into ::seek. Test for no rows returned when loading by monitor_id and time. Use SystemTimePoint instead of time_t. Add setStreamStart(event_id, time) 2026-01-05 16:37:30 -05:00
zm_exception.cpp Format code using astyle google format 2024-03-26 13:43:58 -05:00
zm_exception.h Format code using astyle google format 2024-03-26 13:43:58 -05:00
zm_ffmpeg.cpp fix: correct misleading debug messages in zm_ffmpeg.cpp 2026-02-03 10:21:04 -05:00
zm_ffmpeg.h Cleanup hw_pix_fmt and get_hw_format 2026-01-26 14:40:10 -05:00
zm_ffmpeg_camera.cpp fix: release GPU surfaces immediately after hw transfer 2026-02-04 22:51:21 -05:00
zm_ffmpeg_camera.h Cleanup hw_pix_fmt and get_hw_format 2026-01-26 14:40:10 -05:00
zm_ffmpeg_input.cpp fix: remove unreachable code and prevent null dereference in FFmpeg_Input 2026-02-03 11:01:59 -05:00
zm_ffmpeg_input.h Cleanup constructor and add the new codec_data stuff to try out multiple codecs 2025-09-22 09:52:25 -04:00
zm_ffmpeg_output.cpp fix: add null check and fix error message in FFmpeg_Output 2026-02-03 11:03:17 -05:00
zm_ffmpeg_output.h Format code using astyle google format 2024-03-26 13:43:58 -05:00
zm_fifo.cpp fix: address multiple bugs in eventstream, fifo, and monitor 2026-02-02 23:24:08 -05:00
zm_fifo.h Format code using astyle google format 2024-03-26 13:43:58 -05:00
zm_fifo_debug.cpp Format code using astyle google format 2024-03-26 13:43:58 -05:00
zm_fifo_debug.h Format code using astyle google format 2024-03-26 13:43:58 -05:00
zm_fifo_stream.cpp fix: correct error message and add null check in FifoStream 2026-02-03 11:36:53 -05:00
zm_fifo_stream.h Format code using astyle google format 2024-03-26 13:43:58 -05:00
zm_file_camera.cpp Format code using astyle google format 2024-03-26 13:43:58 -05:00
zm_file_camera.h Format code using astyle google format 2024-03-26 13:43:58 -05:00
zm_font.cpp Format code using astyle google format 2024-03-26 13:43:58 -05:00
zm_font.h Utils: Add our own ASSERT macro 2021-05-30 21:41:58 +02:00
zm_frame.cpp Format code using astyle google format 2024-03-26 13:43:58 -05:00
zm_frame.h Format code using astyle google format 2024-03-26 13:43:58 -05:00
zm_group.cpp fix: correct typo in Group warning message 2026-02-03 11:42:14 -05:00
zm_group.h Format code using astyle google format 2024-03-26 13:43:58 -05:00
zm_group_permission.cpp Format code using astyle google format 2024-03-26 13:43:58 -05:00
zm_group_permission.h Format code using astyle google format 2024-03-26 13:43:58 -05:00
zm_image.cpp fix: return error when av_buffer_create fails in Image::PopulateFrame 2026-02-03 11:48:03 -05:00
zm_image.h Allocate the temp frame inside Assign, instead of keeping it around. 2026-01-22 20:54:00 -05:00
zm_image_analyser.cpp Format code using astyle google format 2024-03-26 13:43:58 -05:00
zm_image_analyser.h Format code using astyle google format 2024-03-26 13:43:58 -05:00
zm_jpeg.cpp Change various cases of int img_buffer_size to size_t 2025-07-19 14:18:32 -04:00
zm_jpeg.h Change various cases of int img_buffer_size to size_t 2025-07-19 14:18:32 -04:00
zm_libvlc_camera.cpp fix: add null check before calling libvlc_media_player_stop in Terminate 2026-02-03 11:49:58 -05:00
zm_libvlc_camera.h Format code using astyle google format 2024-03-26 13:43:58 -05:00
zm_libvnc_camera.cpp fix: fix typo, add null check, and use correct free function in VncCamera 2026-02-03 12:09:44 -05:00
zm_libvnc_camera.h Format code using astyle google format 2024-03-26 13:43:58 -05:00
zm_line.h Polygon: Implement clipping to a boundary box 2021-05-16 19:41:45 +02:00
zm_local_camera.cpp Make most Fatals into Errors 2026-01-29 18:50:42 -05:00
zm_local_camera.h Make most Fatals into Errors 2026-01-29 18:50:42 -05:00
zm_logger.cpp Merge pull request #4518 from ZoneMinder/copilot/fix-time-t-format-specifier 2026-01-05 18:30:08 -05:00
zm_logger.h Format code using astyle google format 2024-03-26 13:43:58 -05:00
zm_mem_utils.h Format code using astyle google format 2024-03-26 13:43:58 -05:00
zm_monitor.cpp fix: release GPU surfaces immediately after hw transfer 2026-02-04 22:51:21 -05:00
zm_monitor.h refactor: rename RTSP2WebStream to StreamChannel 2026-01-31 19:37:08 -05:00
zm_monitor_amcrest.cpp move Event_Poller_Closes_Event into ONVIF as it only matters to ONVIF. Remove it from Amcrest. 2026-01-14 13:28:52 -05:00
zm_monitor_go2rtc.cpp feat: Enable SSL certificate verification with fallback for all components 2026-02-02 14:34:19 +00:00
zm_monitor_janus.cpp refactor: rename Janus_Use_RTSP_Restream to Restream 2026-01-31 18:47:37 -05:00
zm_monitor_monitorlink.cpp Format code using astyle google format 2024-03-26 13:43:58 -05:00
zm_monitor_onvif.cpp Add UTC vs local timezone offset detection and accomodation 2026-02-03 15:22:49 -05:00
zm_monitor_onvif.h Add UTC vs local timezone offset detection and accomodation 2026-02-03 15:22:49 -05:00
zm_monitor_permission.cpp Make permission values 0 based but stsarting with UNKNOWN because when doing permission+0 in SQL, we get a 1-based value 2022-11-03 18:28:23 -04:00
zm_monitor_permission.h Format code using astyle google format 2024-03-26 13:43:58 -05:00
zm_monitor_rtsp2web.cpp fix: apply credentials to secondary URL and fix buffer overflow in DumpSettings 2026-02-04 17:40:26 -05:00
zm_monitorlink_expression.cpp Format code using astyle google format 2024-03-26 13:43:58 -05:00
zm_monitorlink_expression.h Format code using astyle google format 2024-03-26 13:43:58 -05:00
zm_monitorlink_token.h Format code using astyle google format 2024-03-26 13:43:58 -05:00
zm_monitorstream.cpp Use std::shared_ptr to fix memory leak due to use of GetSnapshot and not freeing the returned packet. 2026-01-20 16:18:43 -05:00
zm_monitorstream.h Format code using astyle google format 2024-03-26 13:43:58 -05:00
zm_mpeg.cpp Deprecate zm_av_frame_alloc 2025-09-18 14:48:52 -04:00
zm_mpeg.h Format code using astyle google format 2024-03-26 13:43:58 -05:00
zm_mqtt.cpp fix: use mosquitto_strerror() for MQTT error codes 2026-02-02 20:53:00 -05:00
zm_mqtt.h Fix definition of on_publish 2024-10-29 13:30:29 -04:00
zm_packet.cpp fix: release GPU surfaces immediately after hw transfer 2026-02-04 22:51:21 -05:00
zm_packet.h Put locking debugging back at level 4 2026-01-27 08:04:35 -05:00
zm_packetqueue.cpp Wait on the packetqueue condition instead of sleeping. Should help analysis keep up with decoding better and offer faster shutdown. 2026-02-04 20:44:17 -05:00
zm_packetqueue.h Wait on the packetqueue condition instead of sleeping. Should help analysis keep up with decoding better and offer faster shutdown. 2026-02-04 20:44:17 -05:00
zm_poll_thread.cpp fix: call Stop() before restarting in PollThread::Start() 2026-02-03 12:13:29 -05:00
zm_poll_thread.h Adds ONVIF Motion Detection Support 2022-01-06 16:45:15 -06:00
zm_poly.cpp Format code using astyle google format 2024-03-26 13:43:58 -05:00
zm_poly.h Format code using astyle google format 2024-03-26 13:43:58 -05:00
zm_regexp.cpp Port to PCRE2 (Closes: #3384). 2025-02-26 21:04:32 +11:00
zm_regexp.h Port to PCRE2 (Closes: #3384). 2025-02-26 21:04:32 +11:00
zm_remote_camera.cpp fix: check for empty path before accessing first character 2026-02-03 12:25:21 -05:00
zm_remote_camera.h Format code using astyle google format 2024-03-26 13:43:58 -05:00
zm_remote_camera_http.cpp fix: correct inet_ntop buffer size in RemoteCameraHttp 2026-02-04 17:41:37 -05:00
zm_remote_camera_http.h Format code using astyle google format 2024-03-26 13:43:58 -05:00
zm_remote_camera_nvsocket.cpp Format code using astyle google format 2024-03-26 13:43:58 -05:00
zm_remote_camera_nvsocket.h Format code using astyle google format 2024-03-26 13:43:58 -05:00
zm_remote_camera_rtsp.cpp Removing avcodec_close, avcodec_free_context is replacement and been around since 2014, so should be no reason to version test. 2024-09-14 11:06:55 +10:00
zm_remote_camera_rtsp.h Format code using astyle google format 2024-03-26 13:43:58 -05:00
zm_rgb.h Fix brg_to_yuv 2025-09-18 10:07:50 -04:00
zm_rtp.cpp Format code using astyle google format 2024-03-26 13:43:58 -05:00
zm_rtp.h Format code using astyle google format 2024-03-26 13:43:58 -05:00
zm_rtp_ctrl.cpp fix: correct NTP timestamp type truncation in RtpCtrlThread 2026-02-03 12:34:21 -05:00
zm_rtp_ctrl.h Format code using astyle google format 2024-03-26 13:43:58 -05:00
zm_rtp_data.cpp fix: correct type mismatches in RtpDataThread 2026-02-03 12:45:56 -05:00
zm_rtp_data.h Format code using astyle google format 2024-03-26 13:43:58 -05:00
zm_rtp_source.cpp fix: prevent division by zero in RtpSource::updateRtcpData 2026-02-03 12:47:14 -05:00
zm_rtp_source.h Format code using astyle google format 2024-03-26 13:43:58 -05:00
zm_rtsp.cpp fix: add null checks in RtspThread to prevent crashes 2026-02-03 12:28:30 -05:00
zm_rtsp.h Format code using astyle google format 2024-03-26 13:43:58 -05:00
zm_rtsp_auth.cpp Format code using astyle google format 2024-03-26 13:43:58 -05:00
zm_rtsp_auth.h Format code using astyle google format 2024-03-26 13:43:58 -05:00
zm_rtsp_server.cpp Add av1 support 2026-01-31 12:43:03 -05:00
zm_rtsp_server_adts_source.cpp Format code using astyle google format 2024-03-26 13:43:58 -05:00
zm_rtsp_server_adts_source.h Format code using astyle google format 2024-03-26 13:43:58 -05:00
zm_rtsp_server_authenticator.h Fix Authenticate as nonce is now internal 2026-01-09 11:43:15 -05:00
zm_rtsp_server_device_source.cpp Replace C-style casts with C++ static_cast for intmax_t 2026-01-05 13:36:16 +00:00
zm_rtsp_server_device_source.h Format code using astyle google format 2024-03-26 13:43:58 -05:00
zm_rtsp_server_fifo_adts_source.cpp Format code using astyle google format 2024-03-26 13:43:58 -05:00
zm_rtsp_server_fifo_adts_source.h Format code using astyle google format 2024-03-26 13:43:58 -05:00
zm_rtsp_server_fifo_audio_source.cpp Format code using astyle google format 2024-03-26 13:43:58 -05:00
zm_rtsp_server_fifo_audio_source.h Add av1 support 2026-01-31 12:43:03 -05:00
zm_rtsp_server_fifo_av1_source.cpp Add zm_rtsp_server_fifo_av1_source 2026-01-31 16:19:38 -05:00
zm_rtsp_server_fifo_av1_source.h Add zm_rtsp_server_fifo_av1_source 2026-01-31 16:19:38 -05:00
zm_rtsp_server_fifo_h264_source.cpp fix: prevent underflow and type mismatch in H264 fifo source 2026-01-30 15:30:40 -05:00
zm_rtsp_server_fifo_h264_source.h Format code using astyle google format 2024-03-26 13:43:58 -05:00
zm_rtsp_server_fifo_source.cpp fix: multiple issues in zm_rtsp_server_fifo_source 2026-01-30 14:49:53 -05:00
zm_rtsp_server_fifo_source.h fix: multiple issues in zm_rtsp_server_fifo_source 2026-01-30 14:49:53 -05:00
zm_rtsp_server_fifo_video_source.cpp Format code using astyle google format 2024-03-26 13:43:58 -05:00
zm_rtsp_server_fifo_video_source.h Add av1 support 2026-01-31 12:43:03 -05:00
zm_rtsp_server_frame.h Format code using astyle google format 2024-03-26 13:43:58 -05:00
zm_rtsp_server_server_media_subsession.cpp Format code using astyle google format 2024-03-26 13:43:58 -05:00
zm_rtsp_server_server_media_subsession.h Format code using astyle google format 2024-03-26 13:43:58 -05:00
zm_rtsp_server_unicast_server_media_subsession.cpp Format code using astyle google format 2024-03-26 13:43:58 -05:00
zm_rtsp_server_unicast_server_media_subsession.h Format code using astyle google format 2024-03-26 13:43:58 -05:00
zm_sdp.cpp fix: address multiple issues in SessionDescriptor::generateFormatContext 2026-02-03 13:34:17 -05:00
zm_sdp.h Format code using astyle google format 2024-03-26 13:43:58 -05:00
zm_sendfile.h Fix complaint 2023-01-18 16:01:42 -05:00
zm_server.cpp Format code using astyle google format 2024-03-26 13:43:58 -05:00
zm_server.h Format code using astyle google format 2024-03-26 13:43:58 -05:00
zm_signal.cpp fix: improve crash backtrace on ARM and fix misleading signal info 2026-01-30 15:09:02 -05:00
zm_signal.h fix: improve crash backtrace on ARM and fix misleading signal info 2026-01-30 15:09:02 -05:00
zm_storage.cpp fix: add empty checks and use safer string functions in Storage 2026-02-03 12:30:06 -05:00
zm_storage.h Format code using astyle google format 2024-03-26 13:43:58 -05:00
zm_stream.cpp fix: correct file descriptor error checks in StreamBase 2026-02-03 16:44:50 -05:00
zm_stream.h Init last_fps_update in stream constructor 2024-10-22 18:32:31 -04:00
zm_swscale.cpp fix: correct copy-paste error in pixel format warning 2026-02-03 16:47:43 -05:00
zm_swscale.h Format code using astyle google format 2024-03-26 13:43:58 -05:00
zm_tag.cpp Add tags support to events. 2025-07-05 08:09:09 -04:00
zm_tag.h Add tags support to events. 2025-07-05 08:09:09 -04:00
zm_time.cpp Introduce SystemTimePOintToMysqlString 2026-01-24 11:17:57 -05:00
zm_time.h Introduce SystemTimePOintToMysqlString 2026-01-24 11:17:57 -05:00
zm_uri.cpp Format code using astyle google format 2024-03-26 13:43:58 -05:00
zm_uri.h Format code using astyle google format 2024-03-26 13:43:58 -05:00
zm_user.cpp fix: fix memory leaks in User::find() functions 2026-02-03 12:24:07 -05:00
zm_user.h Add ::find methods and getAuthHash 2025-08-05 14:13:39 -04:00
zm_utils.cpp Fix appending %% instead of % when uri decoding. Add test for URIEncode 2026-02-04 20:45:46 -05:00
zm_utils.h Move escape_json_string and remove_newlines to zm_utils 2025-06-26 14:53:38 -04:00
zm_vector2.h Format code using astyle google format 2024-03-26 13:43:58 -05:00
zm_videostore.cpp fix: address bugs in videostore and stream 2026-02-02 23:26:20 -05:00
zm_videostore.h Move codec_data from videostore to ffmpeg. Add dec_codecs and add a function to return relevant codec_data and setup hw_ctx. 2025-09-18 09:27:31 -04:00
zm_zone.cpp fix: apply credentials to secondary URL and fix buffer overflow in DumpSettings 2026-02-04 17:40:26 -05:00
zm_zone.h fix: apply credentials to secondary URL and fix buffer overflow in DumpSettings 2026-02-04 17:40:26 -05:00
zm_zone_stats.h Format code using astyle google format 2024-03-26 13:43:58 -05:00
zmbenchmark.cpp Format code using astyle google format 2024-03-26 13:43:58 -05:00
zmc.cpp Only log a capture failure if we aren't terminated 2026-01-15 16:31:22 -05:00
zms.cpp Move exit_zms to zm.cpp exit_zm. Add time= parsing and prefer loading by event_id if specified 2026-01-05 16:38:35 -05:00
zmu.cpp Remove unused loop index in zmu list output 2025-12-31 22:29:37 +11:00