You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Merge remote-tracking branch 'upstream/master' into ai_server
Resolve conflicts from upstream PR ZoneMinder#4788 (AVPixelFormat migration / SHM
cross-process format sync) against ai_server's dual-ring SHM architecture.
Resolution approach (unify both):
- SHM layout keeps ai_server's decoder + analysis image rings, each with its
own per-slot AVPixelFormat array; folds in upstream's per-slot format-sync
safety (shm_slot_size bound, aligned pixfmt array placement).
- zm_monitor.{cpp,h}: add ReadAnalysisShmFrame() mirroring upstream's
ReadShmFrame() for the analysis ring; GetAlarmImage() serves the analysis
ring through it (range-checked). Take upstream's stride-aware CheckSignal and
sentinel-before-bounds GetImage/getSnapshot. Drop the duplicated
Monitor::Decode body (lives in zm_decoder_thread.cpp on this branch).
- zm_decoder_thread.cpp: route the decode-path SHM write through WriteShmFrame
(copy-then-publish per-slot format).
- zm_monitorstream.cpp: keep ai_server pacing/ring selection; route reads
through ReadShmFrame/ReadAnalysisShmFrame for format sync.
- zm_image.cpp: keep ai_server version (its zm_image.h retains the
u_buffer/v_buffer members used by YUV420 drawing that upstream removed).
- zm_ffmpeg_camera.cpp: drop dead imagePixFormat assignments (upstream confirms
the field is dead); keep ai_server's OpenFfmpeg-merged-into-PrimeCapture.
- zm_monitor_onvif.cpp: union of ours (PullMessages auth-skip detection,
alternate-auth retry, subscription leak cleanup) and theirs (SOAP socket
timeout bounding within zmdc's 30s kill window); theirs' tighter pull_timeout
clamp supersedes ours.
- zm_camera.cpp, zm_mpeg.cpp, zm_pixformat.h, tests/zm_pixformat.cpp: take
upstream (supersets / nullptr-safe pix fmt helper).
- Control.pm: take upstream parse_ControlAddress port/address handling
(consistent with get_realm and parse_Path).
- MonitorStream.js: keep ai_server classify-fetch + backoff reconnect.
- monitor.php: use upstream i18n translate('DeprecatedColoursSetting').
Builds clean (libzm + zmc/zma/zms/zmu/zm_rtsp_server). C++ unit tests not run
(Catch2 unavailable locally). Upstream PR ZoneMinder#4788 zm_image.cpp hardening fixes
were not ported piecemeal (different member layout); candidate follow-up
cherry-picks.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
0 commit comments