Important!
- This release has been verified on DeepStream 6.2.
- DeepStream 5.X is no longer supported. Please use a minimum of 6.0.1 for best performance.
- There are a number of breaking name changes in this release. Please review the release notes carefully.
The following "Images Services" - are now optional and are disabled by default.
- Streaming-Image Source
- Frame Capture and Object Capture ODE Actions
- Frame Capture Sink - new in this release.
To enable theses services, you must first install OpenCV or FFmpeg and update the Makefile. Please see the updated Installing Dependencies for new requirements. See Issue #908 for more information.
- All Source components (currently video only) have been refactored and extended with new base-class services to get/set the following output buffer properties. (See #903 for more information).
- Format - NV12, I420, P010_10LE, BGRx, RGBA .. although, the NVIDIA Streammux only supports NV12, I420, and RGBA as input.
- Dimensions - output buffer can now be scaled prior to the Streammux input.
- Cropping - both src and destination cropping are supported.
- Orientation - flipping and rotating in various directions.
- Two New Video Source components have been added.
- Application Source - allows the application to insert raw samples or buffers into a DSL Pipeline.
- Interpipe Source - receives pipeline buffers and events from an Interpipe Sink.
- The Multi-Image Source has been completed and extended with new services.
- The RTSP Source now supports JPEG encoding.
- The RTSP Stream-Connection-Manager has been updated to manage the Source's initial stream connection, and to re-initiate a connection-cycle if the initial connection times outs. Previously, the Stream-Connection-Manager was only started after the first successful connection. A failed first attempt would result in the pipeline failing to play.
- The Video Dewarper component has been completed and can be added to any Video Source.
- Multiple instances of CSI and USB cameras can now be used.
- A new Buffer Timeout Pad Probe Handler can be added to any Source for notification of new-buffer timeout.
- Four New Video Sink components have been added.
- Application Sink - allows the application to receive buffers or samples from a DSL Pipeline.
- Interpipe Sink - allows pipeline buffers and events to flow to other independent pipelines, each with an Interpipe Source.
- Multi-Image Sink - encodes and saves video frames to JPEG files at specified dimensions and frame-rate.
- Frame-Capture Sink - encodes and saves video frames to JPEG files on application/user demand.
- Encode Sinks (File, Smart-Recording, RTSP, and WebRTC) now support services to get/set (scale) the buffer dimensions on input to the encoder. See #930
- The Tracker API has been refactored to be inline with DeepStream 6.X where the individual low-level tracker libs have been combined into one. (DeepStream 5.X is no longer supported). There is now a single DSL Tracker constructor that requires a configuration file for the specific Tracker implementation to use (IOU, NvSORT, NvDeepSORT, NvDCF). Note. NVIDIA's DeepStream low-level library provides "reference implementations" of the four Tracker types.
- The low-level library for the Tracker to use - which defaults to NVIDIA's NvMultiObjectTracker lib as defined in the Makefile - can be updated by API as well.
The NMP PPH implements an inference cluster algorithm providing a more flexible alternative to the default non-maximum suppression (NMS) cluster algorithm performed by the NVIDIA Inference plugin.
- New filters have been added to the ODE Triggers - accessible through new services:
- Minimum and maximum inference confidence (minimum only in previous release)
- Minimum and maximum tracker confidence (both new)
- Frame limit - maximum number of frames to trigger on - can be reset on-timer and on-demand.
- Instance counts - both the number of consecutive instances to trigger ODE occurrence, and the number of following consecutive instances to suppress ODE occurrence can be controlled (Instance Trigger only).
- Three new ODE Actions have been added
- Offset Label Action - offsets the objects label vertically and/or horizontally from its default position relative to the Object's bounding-box. This action solves the issue of labels covering the top portion of small objects.
- Scale BBox Action - can be used to increase (or decrease) the area of the Object's bounding box. Useful when capturing objects to JPEG images/files to ensure the object is fully show, i.e. not cropped by the bounding box.
- Remove Object - removes the Object (object's metadata) from the current Frame (frame's metadata).
- Resolve "videoCacheSize is deprecated. Use cacheSize instead" - deprecation in DS 6.0 build #704
- Tiler incorrectly checks for source_id > batch_size on call to show-source #835
- Fix PadProbeHandler execution order - must be executed in the order they were added. #845
- "MOTChallenge-format" - should report object_id (tracking id) not class_id #846
- WebRtc Sink Component fails to create in v0.25.alpha #882
- The "ode_occurrence_uri_start_record_sink_action.py" has errors #922
- RTSP smart recording is broken due to changes to the NVIDIA recordbin to support Audio #925
- Object and Frame capture actions are failing on dGPU - Surface create params using wrong memtype. #942
- Implement new conditional/optional Non Maximum Processor Pad Probe Handler #817
- Request to provide a service that can change the text offset at display render #820
- Implement new Inter-Pipe Sink and Source components #828
- Implement new dsl_tiler_frame_numbering_enabled_get/set services #831
- Implement new Scale BBox ODE Actions - dsl_action_bbox_scale_new #834
- Implement new Remove Object ODE Action - dsl_ode_action_object_remove_new #838
- Implement new dsl_ode_trigger_infer_confidence_max_get/set services. #840
- Implement new dsl_ode_trigger_tracker_confidence_max_get/set services. #841
- Implement new dsl_ode_trigger_limit_frame_get/set services #843
- Implement new dsl_source_usb_device_location_get/set services to support multiple USB cameras #850
- Implement new dsl_source_csi_sensor_id_get/set services to support multiple CSI cameras. #853
- Refactor CSI Source constructor to generate a unique/incremental sensor_id for each source. #854
- Refactor USB Source constructor to generate a unique/incremental device-location for each source. #855
- Need to complete the Multi-Image source constructor - add caps filter and videorate plugins to control framerate. #860
- Implement new Buffer Timeout Pad Probe Handler (PPH) #862
- Implement dsl_source_pph_add/remove services #863
- Implement new dsl_source_image_multi_loop_enabled_get/set services #865
- Implement new dsl_source_image_multi_indices_get/set services #866
- Implement new dsl_ode_trigger_instance_count_settings_get/set services #869
- Implement new Tracker services dsl_tracker_lib_file_get/set to support custom low level libs. #877
- Implement new App Sink Component #880
- Implement new App Source Component #881
- Implement Source base services dsl_source_do_timestamp_get/set #885
- Extend the RTSP Source to support JPEG encoding #891
- Log all Initial property settings for all Bintrs at level INFO (4) #897
- Refactor all sources - create new Audio and Video base classes - add new video-buffer-out control services #903
- Implement Dewarper Component and integrate with refactored Base Source #904
- Make extended image services optional - support none (default), or implemented with OpenCV or FFmpeg #908
- Implement new Multi-Image Sink to save frames to JPEG files at a specified rate. #912
- Implement new Frame-Capture Sink to encode/save frame buffers to JPEG files on Application demand. #914
- Allow client to use the default encoder bitrate with all Encode Sinks #923
- Extend RTSP stream-manager to manage first connection - retry on timeout #927
- [request] Implement dsl_sink_encode_dimensions_get/set services (for File, Record, RTSP, WebRTC SInks) #930
- Remove logic & services limiting the number of Source and Sink components that can be created. #892
dsl_source_num_in_use_get
dsl_source_num_in_use_max_get
dsl_source_num_in_use_max_set
dsl_sink_num_in_use_get
dsl_sink_num_in_use_max_get
dsl_sink_num_in_use_max_set
-
Refactor Tracker API into a single component - remove IOU, KTL, and DCF specific API's #874 - the following services have been removed/replaced (see below)
dsl_tracker_ktl_new
dsl_tracker_iou_new
dsl_tracker_dcf_new
dsl_tracker_dcf_batch_processing_enabled_get
dsl_tracker_dcf_batch_processing_enabled_set
dsl_tracker_dcf_past_frame_reporting_enabled_get
dsl_tracker_dcf_past_frame_reporting_enabled_set
-
Rename/fix the Label and BBox ODE Action names. verb_noun should be noun_verb #823 - the following services have been renamed (see below)
dsl_ode_action_format_label_new
dsl_ode_action_customize_label_new
dsl_ode_action_customize_label_get
dsl_ode_action_customize_label_set
dsl_ode_action_format_bbox_new
-
Rename dsl_ode_trigger_confidence_min_get/set to dsl_ode_trigger_infer_confidence_min_get/set #839 - the following services have been renamed (see below)
dsl_ode_trigger_confidence_min_get
dsl_ode_trigger_confidence_min_set
-
Rename dsl_ode_trigger_limit_get/set services to dsl_ode_trigger_limit_event_get/set #842 - the following services have been renamed (see below)
dsl_ode_trigger_limit_get
dsl_ode_trigger_limit_set
-
Remove "annotate" parameter from dsl_ode_action_capture_frame_new - can no longer support. #909
dsl_ode_action_capture_frame_new
- has been updated.
Constants used by the new Non Maximum Processor (NMP) Pad Probe Handler. Process methods:
#define DSL_NMP_PROCESS_METHOD_SURPRESS 0
#define DSL_NMP_PROCESS_METHOD_MERGE 1
Object match determination methods:
#define DSL_NMP_MATCH_METHOD_IOU 0
#define DSL_NMP_MATCH_METHOD_IOS 1
Valid return values for the dsl_sink_app_new_buffer_handler_cb
#define DSL_FLOW_OK 0
#define DSL_FLOW_EOS 1
#define DSL_FLOW_ERROR 2
New Video-Source common services:
- dsl_source_video_dimensions_get
- dsl_source_video_buffer_out_format_get
- dsl_source_video_buffer_out_format_set
- dsl_source_video_buffer_out_dimensions_get
- dsl_source_video_buffer_out_dimensions_set
- dsl_source_video_buffer_out_crop_rectangle_get
- dsl_source_video_buffer_out_crop_rectangle_set
- dsl_source_video_buffer_out_orientation_get
- dsl_source_video_buffer_out_orientation_set
- dsl_source_video_dewarper_add
- dsl_source_video_dewarper_remove
New Buffer Timeout PPH and services to add/remove from a Source:
New App Source services:
- dsl_source_app_need_data_handler_cb (callback typedef)
- dsl_source_app_enough_data_handler_cb (callback typedef)
- dsl_source_app_new
- dsl_source_app_data_handlers_add
- dsl_source_app_data_handlers_remove
- dsl_source_app_buffer_push
- dsl_source_app_sample_push
- dsl_source_app_eos
- dsl_source_app_stream_format_get
- dsl_source_app_stream_format_set
- dsl_source_app_block_enabled_get
- dsl_source_app_block_enabled_set
- dsl_source_app_current_level_bytes_get
- dsl_source_app_max_level_bytes_get
- dsl_source_app_max_level_bytes_set
- dsl_source_app_do_timestamp_get
- dsl_source_app_do_timestamp_set
New Interpipe Source services:
- dsl_source_interpipe_new
- dsl_source_interpipe_listen_to_get
- dsl_source_interpipe_listen_to_set
- dsl_source_interpipe_accept_settings_get
- dsl_source_interpipe_accept_settings_set
New Camera Source services:
- dsl_source_csi_sensor_id_get
- dsl_source_csi_sensor_id_set
- dsl_source_usb_device_location_get
- dsl_source_usb_device_location_set
New Multi-Image Source services:
- dsl_source_image_multi_loop_enabled_get
- dsl_source_image_multi_loop_enabled_set
- dsl_source_image_multi_indices_get
- dsl_source_image_multi_indices_set
New Video-Source Dewarper services:
- dsl_dewarper_new
- dsl_dewarper_config_file_get
- dsl_dewarper_config_file_set
- dsl_dewarper_camera_id_get
- dsl_dewarper_camera_id_set
- dsl_dewarper_num_batch_buffers_get
- dsl_dewarper_num_batch_buffers_set
New App Sink services:
- dsl_sink_app_new_data_handler_cb (callback typedef)
- dsl_sink_app_new
- dsl_sink_app_data_type_get
- dsl_sink_app_data_type_set
New Interpipe Sink services:
- dsl_sink_interpipe_new
- dsl_sink_interpipe_forward_settings_get
- dsl_sink_interpipe_forward_settings_set
- dsl_sink_interpipe_num_listeners_get
New Multi-Image Sink services:
- dsl_sink_image_multi_new
- dsl_sink_image_multi_file_path_get
- dsl_sink_image_multi_file_path_set
- dsl_sink_image_multi_dimensions_get
- dsl_sink_image_multi_dimensions_set
- dsl_sink_image_multi_frame_rate_get
- dsl_sink_image_multi_frame_rate_set
- dsl_sink_image_multi_file_max_get
New Frame-Capture Sink Services:
New Encode Sink (File, Smart-Record, RTSP, and WebRTC) Services:
New and renamed Tracker services:
- dsl_tracker_new
- dsl_tracker_lib_file_get
- dsl_tracker_lib_file_set
- dsl_tracker_batch_processing_enabled_get (renamed)
- dsl_tracker_batch_processing_enabled_set (renamed)
- dsl_tracker_past_frame_reporting_enabled_get (renamed)
- dsl_tracker_past_frame_reporting_enabled_set (renamed)
New and renamed ODE Trigger services:
- dsl_ode_trigger_infer_confidence_min_get (renamed)
- dsl_ode_trigger_infer_confidence_min_set (renamed)
- dsl_ode_trigger_infer_confidence_max_get
- dsl_ode_trigger_infer_confidence_max_set
- dsl_ode_trigger_tracker_confidence_max_get
- dsl_ode_trigger_tracker_confidence_max_set
- dsl_ode_trigger_limit_event_get (renamed)
- dsl_ode_trigger_limit_event_set (renamed)
- dsl_ode_trigger_limit_frame_get
- dsl_ode_trigger_limit_frame_set
- dsl_ode_trigger_instance_count_settings_get
- dsl_ode_trigger_instance_count_settings_set
New and renamed ODE Action services:
- dsl_ode_action_label_offset_new
- dsl_ode_action_label_customize_new (renamed)
- dsl_ode_action_label_format_new (renamed)
- dsl_ode_action_label_customize_get (renamed)
- dsl_ode_action_label_customize_set (renamed)
- dsl_ode_action_bbox_format_new (renamed)
- dsl_ode_action_bbox_scale_new
- dsl_ode_action_object_remove_new
New Tiler services:
Non-Maximum Processor PPH service:
- dsl_pph_nmp_new
- dsl_pph_nmp_label_file_get
- dsl_pph_nmp_label_file_set
- dsl_pph_nmp_process_method_get
- dsl_pph_nmp_process_method_set
- dsl_pph_nmp_match_settings_get
- dsl_pph_nmp_match_settings_set
- 1uri_file_pgie_iou_tracker_app_sink.py
- encode_and_save_frame_to_jpeg_on_viewer_demand.py
- encode_and_save_frame_to_jpeg_thumbnail_periodically.py
- interpipe_multiple_pipelines_listening_to_single_sink.py
- interpipe_single_pipeline_dynamic_switching_between_multiple_sinks.py
- video_dewarper_360.py
- video_dewarper_perspective.py