Release Notes
This page features release notes for releases of degirum-tools. You may download degirum-tools versions listed here from PyPI.org.
Version 1.4.0 (5/15/2026)
New Features and Modifications
New
gstsubpackage providing a complete GStreamer-based video pipeline toolkit:setup_gst_environment(*plugin_dirs)— initializes GStreamer and optionally registers custom plugin directories. Must be called before any gi import.GstPipelineHandler— manages the full lifecycle of a GStreamer pipeline, with optional named appsink queues for Python frame consumption and throughput probing.GstElementBase— mixin base class for implementing custom GStreamer Python elements with minimal boilerplate. Pad templates, worker threads, and state management are handled automatically.GstAiElement— ready-to-use GStreamer filter element that accepts BGR/RGB video frames, runs AI inference via a DeGirum model, and pushes annotated frames and/or serialized JSON inference results downstream. Supports an optional secondary full-resolution input pad (sink_full) for high-quality overlay rendering at a different resolution than the model input.map_gst_buffer(buf_or_sample, readonly)— context manager for safeGst.Buffermemory mapping.build_gst_pipeline(source)— builds a gst-launch-style pipeline string for camera devices (including Windows via mfvideosrc/ksvideosrc), RTSP streams, and video files.VideoCaptureGst—cv2.VideoCapture-compatible class backed by a GStreamer pipeline.
ObjectTrackeranalyzer now extends object trails with predicted positions during tracking timeouts, using the tracker's internal motion estimate for lost tracks. This preserves trail continuity when objects temporarily leave the frame.VideoSourceGizmonow accepts a pre-createdVideoCaptureProtocolobject (e.g.,cv2.VideoCaptureorVideoCaptureGst) as the video_source argument. Additional keyword arguments(**kwargs)are forwarded to thecv2.VideoCaptureconstructor when opening from a path or device index.VideoStreamerGizmoandVideoStreamergain avcodecparameter to configure the video codec (defaults tolibx264).Stream.close()gains aforce=Trueoption that atomically clears the queue and inserts the poison pill without blocking, preventing deadlocks when a producer has filled the queue.
Bug Fixes
VideoStreamerGizmoframe scheduling: duplicate frames were injected using an incorrect rate estimate that could cause a spin-loop. The logic is now based on an absolute deadline (next_frame_due_s) and stops duplicating when the encoder write time exceeds the target frame interval.VideoStreamer:pix_fmtwas always passed to FFmpeg as bgr24 regardless of the configured pixel format. It now correctly uses thepix_fmtconstructor argument.video_source():CAP_PROP_FRAME_COUNTcan returnNonefor certain capture backends (e.g.,VideoCaptureGst), causing aTypeError. The comparison now handlesNonecorrectly.MediaServersubprocess is now started withstart_new_session=True, preventing signal propagation from the parent process to the media server process.
Version 1.3.1 (4/21/2026)
Bug Fixes
VideoStreamer class which uses ffmpeg for video streaming, now uses TCP protocol for RTSP streaming. Previous versions used UDP protocol, which had lower latency, but may result in corrupted video streams on certain systems.
Version 1.3.0 (4/3/2026)
New Features and Modifications
Performance of
ObjectTrackeranalyzer is greatly improved.frame_sizeparameter is added toZoneCounteranalyzer constructor. It specifies the frame size (width, height) when inference results do not have.imageattribute.Added new
ipcsubpackage providing transparent inter-process communication: useipc.spawn(MyClass, ...)to run any class instance in an isolated child process with all public methods automatically available as ZeroMQ RPC endpoints, with MsgPack serialization and InOut/Out wrappers for mutable argument writeback.
Version 1.2.2 (3/17/2026)
Bug Fixes
EventDetector analyzer raises exception when
resultargument ofanalyzemethod hasevents_detectedattribute ofdicttype.EventDetector analyzer incorrectly generates events when the event history is not fully accummulated yet.
Version 1.2.1 (3/13/2026)
New Features and Modifications
ResultAnalyzerBasebase classanalyzeandannotatemethods are modified to ignoreNoneresults. This allows using analyzers with models innon_blocking_batch_predictmode.
Bug Fixes
NoneType object has no attribute encodingexception is raised duringimport degirum_toolsif the process has no stdout attached.
Version 1.2.0 (2/23/2026)
New Features and Modifications
SceneCutDetectoranalyzer is implemented.SceneCutDetectoranalyzer detects scene cuts in video streams by comparing frame-to-frame differences using an adaptive thresholding approach.Key Features:
Adaptive Thresholding: Uses rolling average of previous frames to adapt to gradual changes
HSV Color Space: Analyzes differences in hue, saturation, and luminance channels
Configurable Parameters: Adjustable sensitivity, minimum scene length, and window size
Real-time Detection: Causal approach using only past frames for zero latency
Scene Cut Flag: Adds
scene_cutboolean attribute to inference results
Typical Usage:
Create a
SceneCutDetectorinstance with desired parametersAttach it to a model or inference pipeline
Process video frames through the analyzer
Check
result.scene_cutflag to detect scene transitionsUse scene cut information for downstream processing or triggering actions
Put it before
ObjectTrackerin the analyzer pipeline to ensure cuts are detected before tracking is applied, allowing you to reset object tracker on scene changes.Integration Notes:
Works with any inference results that contain image data
Can be combined with other analyzers in a pipeline
Useful for video segmentation, activity detection, and content analysis
Maintains internal state to track frame history
Configuration Options:
adaptive_threshold: Sensitivity ratio for detecting cuts (higher = less sensitive)min_scene_len: Minimum frames between detected cuts to avoid false positiveswindow_width: Number of previous frames for rolling average calculationmin_content_val: Minimum absolute change threshold for scene cutsluma_only: Use only brightness changes for faster processing
reset_at_scene_cutparameter is added to theObjectTrackeranalyzer. WhenTrue, all tracks are cleared when a scene cut is detected. Requires the result to have ascene_cutattribute (set bySceneCutDetector, see above). Use this feature to avoid tracking objects across scene transitions in videos with cuts or edits.
Version 1.1.0 (2/11/2026)
New Features and Modifications
IteratorSourceGizmo:fpsconstructor parameter is added. This is optional parameter with default value 0.0. It specifies the FPS value to be included in the metadata.
Bug Fixes
VideoStreamerGizmo: check for zero FPS is added to prevent division by zero in case of zero-FPS sources.
Version 1.0.0 (1/27/2026)
First official release of degirum-tools.
Last updated
Was this helpful?

