The v0.27.alpha release addresses a number of important bug fixes and new enhancements. IMPORTANT! There are breaking changes in this release.
IMPORTANT! All XWindow services -- services prefixed with dsl_pipeline_xwindow_
and dsl_player_xwindow_
-- have been moved to the Window-Sink API and and have been renamed to dsl_sink_window_
.
For example: dsl_pipeline_xwindow_key_event_handler_add
has been moved/changed to dsl_sink_window_key_event_handler_add
. The upgrade requires a one-for-one name replacement.
The relocation (and refactoring) of these services has been done so that multiple Window-Sinks -- each with their own XWindow -- can be added to a single Pipeline; previously limited to one. See #1004 for more information.
There have been a number of bug-fixes and enhancements related to DSL's dynmaic Pipeline capabilites.
- A new section called Dynamic Pipelines has been added to the DSL Overview to document these capabilities.
- There were two issues related to Dynamically adding/removing Sources. See #995 and #999.
- IMPORTANT! The Demuxer Tee has been refactored. Branches and Sinks can now be "added, moved, and removded dynamically". Breanking change! The constructor has been updated to include a new
max_branches
parameter. See #994 and #998. - New ODE Actions have been created to support dynamic Pipeline updates on ODE Occurrence; add/move/remove branches and more. See new services listed below. See also #1058 and #1061.
- A new Duplicate Source component has been created - used to duplicate another Video Source so the stream can be processed differently and in parallel with the original. See #1007.
- There are new Video-Source services to set/get the frame-rate of a Source's output buffers - i.e. to scale up/down from source element. See #978.
- IMPORTANT! The RTSP Source no longer sets the
drop-on-latency
property to true on construction. See #997. The rtspsrc plugin default = false. There are new services to get/set the property once the Source has be created. See #1069. - IMPORTANT! DSL's method of mapping "unique source name" to "unique source id" has changed. This is extreamly important if developing Custom Pad Probe Handlers that accesss/process the
pFrameMeta->source_id
. See the new Source Stream-Ids and Unique-Ids documentation. See issues #1020, #1022, #1024, and #1031.
- IMPORTANT! The Pipeline Streammuxer has been extended to update all batched frame metatdata by adding the unique
pipeline-id
to thepFrameMeta->source_id
ifpipeline-id > 0
. This will only affect multiple Pipeline usecases. - There are new Streammuxer services to get/set the Streammuxer's GPUID and
sync-inputs
property. See #980 and #1050 respectively. - IMPORTANT! The Pipeline Streammuxer is no longer setting the
batched-push-timeout
property on construction, previously set to 400000ms. The property is left as-1
for disabled. See #1046.
IMPORTANT! DSL no longer updates the sync
, max-lateness
, and qos
properties for any Sink component on creation. All plugin property values are left to their default settings as shown in the table below.
Sink | GST Plugin | sync | async | max-lateness | qos |
---|---|---|---|---|---|
Overlay Sink | nvoverlaysink | true | true | 20000000 | true |
Window Sink | nveglglessink | true | true | 20000000 | true |
File Sink | filesink | false | true | -1 | false |
Record Sink | n/a | n/a | n/a | n/a | n/a |
RTSP Sink | udpsink | true | true | -1 | false |
WebRTC Sink | fakesink | false | true | -1 | false |
Message Sink | nvmsgbroker | true | true | -1 | false |
App Sink | appsink | true | true | -1 | false |
Interpipe Sink | interpipesink | false | true | -1 | false |
Multi-Image Sink | multifilesink | false | true | -1 | false |
Frame-Capture Sink | appsink | true | true | -1 | false |
Fake Sink | fakesink | false | true | -1 | false |
IMPORTANT! Previously, DSL was setting sync=false
, max-lateness=-1
, and qos=false
for both the Overlay Sink and Window Sink. You may experience changes in your application due to these changes.
New common Sink services have added so to get/set the sync
, async
, max-lateness
, and qos
properties for all Sink components. See #1035.
- Video-Source buffer-out videoconverter must support - dsl_component_gpuid_get/set services. #981.
- PipelineMultiSourcesBintr is not clearing pad-id for reuse on dynamic Source removal #995
- RtspSourceBintr should not be setting rtspsrc plugin property "drop-on-latency" to TRUE. #997
- The Window-Sink's XWindow is ignoring client provided offsets on creation. #1011
- RtspSinkBintr should setup and teardown Server on component link/unlink (not on creation/deletion). #1012.
- RtspSinkBintr needs to cleanup session pool, mount-points, and remove clients on unlink #1013
- Current scheme of mapping unique source_id to source_name breaks when using multiple Pipelines #1020.
- dsl_osd_bbox_enabled_get/set & dsl_osd_mask_enabled_get/set services are missing from dsl.py bindings. #1027.
- OSD should support (not prevent) dynamic updates to the clock, text, bbox, and mask display/enabled properties #1032.
- Streaming-Image source is not setting "is-live" property on construction #1044.
- dsl_pipeline_streammux_batch_properties_get/set services - batch_timeout property should be int not unit #1045.
- Pipeline streammuxer should not set "batched-push-timeout" by default. Leave as -1 disabled. #1046.
- RTSP Sink should set h265parse 'config-interval' property to -1 : Send VPS, SPS and PPS with every IDR frame #1072.
- Implement Video-Source services to set/get the frame-rate of the output buffers - scale up/down from source element #978.
- Implement new dsl_pipeline_streammux_gpuid_get/set services - to get/set the streammuxer's gpu-id #980.
- Implement new dsl_osd_process_mode_get/set services - missing from OSD API #988
- Implement new dsl_source_rtsp_tls_validation_flags_get/set services #992
- Refactor the DemuxerBintr to support the dynamic addition/removal of branches and sinks #994
- Implement dsl_tee_demuxer_max_branches_get/set services for the Demuxer Tee component #998
- PipelineSourcesBintr and MutliBranchesBintrs must link children by add order to support dynamic add/remove #999.
- Implement & Integrate new DslMutex and DslCond wrapper classes for the glib resources #1002
- Move XWindow services from Pipeline to Window Sink - support multiple Window Sinks per Pipeline. #1004.
- Implement new Duplicate Source - dsl_source_duplicate_new - to duplicate an original source. #1007.
- Implement service dsl_source_unique_id_get() to return the unique id assigned when added to a Pipeline. #1022.
- Implement service dsl_source_stream_id_get() to return the stream-id assigned when added to a Pipeline. #1024.
- Update Display-Types: remove Source Number and add Source Stream-id and Source Unique-Id #1031.
- Implement new dsl_tee_demuxer_branch_add_at service to add a branch to a specific Source stream-id. #1034.
- Refactor Sinks to support current/new common services for "sync", "async", "max-lateness", and "qos" properties #1035.
- Implement new dsl_tee_demuxer_branch_move_to service to move a branch from one stream to another. #1049
- Implement new dsl_pipeline_streammux_sync_inputs_enabled_get/set services #1050
- Add additional message parsing for a select set of gst-messages in HandleBusWatchMessage() #1053
- Implement dsl_tee_blocking_timeout_get/set services to support dynamic branch add/remove. #1055
- Implement new Dynamic-Branch ODE Actions; Branch-Add, Branch-Add-To, Branch-Move-To, and Branch-Remove. #1058
- Implement AsyncOdeAction parent class to perform action asynchronously in main-loop context #1060
- Implement new Player and Pipeline ODE Actions: Play, Pause, and Stop for both #1061
- Add new "Dynamic Pipelines" section to the Overview #1063
- Implement dsl_source_rtsp_latency_get/set services. #1068
- Implement dsl_source_rtsp_drop_on_latency_enabled_get/set services #1069
Pipeline XWindow services - moved to new Window Sink Services (see below)
dsl_pipeline_xwindow_dimensions_get
dsl_pipeline_xwindow_dimensions_set
dsl_pipeline_xwindow_handle_get
dsl_pipeline_xwindow_handle_set
dsl_pipeline_xwindow_destroy
dsl_pipeline_xwindow_key_event_handler_add
dsl_pipeline_xwindow_key_event_handler_remove
dsl_pipeline_xwindow_button_event_handler_add
dsl_pipeline_xwindow_button_event_handler_remove
dsl_pipeline_xwindow_delete_event_handler_add
dsl_pipeline_xwindow_delete_event_handler_remove
dsl_pipeline_xwindow_fullscreen_enabled_get
dsl_pipeline_xwindow_fullscreen_enabled_set
Player XWindow services - also moved to new Window Sink Services (see below)
dsl_player_xwindow_handle_get
dsl_player_xwindow_handle_set
dsl_player_xwindow_key_event_handler_add
dsl_player_xwindow_key_event_handler_remove
New default blocking-timeout value used by both the Splitter and Demuxer Tees. IMPORTANT! The timeout controls the amount of time the Tee will wait for a blocking PPH to be called to dynamically link or unlink a branch at runtime while the Pipeline is playing. This value will need to be extended if the frame-rate for the stream is less than 2 fps. The timeout is needed in case the Source upstream has been removed or is in a bad state in which case the pad callback will never be called.
#define DSL_TEE_DEFAULT_BLOCKING_TIMEOUT_IN_SEC 1
New Pipeline Services
dsl_pipeline_streammux_gpuid_get
dsl_pipeline_streammux_gpuid_set
dsl_pipeline_streammux_sync_inputs_enabled_get
dsl_pipeline_streammux_sync_inputs_enabled_set
New Source services:
dsl_source_duplicate_new
dsl_source_duplicate_original_get
dsl_source_duplicate_original_set
dsl_source_unique_id_get
dsl_source_stream_id_get
dsl_source_name_get
dsl_source_video_buffer_out_frame_rate_get
dsl_source_video_buffer_out_frame_rate_set
dsl_source_rtsp_latency_get
dsl_source_rtsp_latency_set
dsl_source_rtsp_drop_on_latency_enabled_get
dsl_source_rtsp_drop_on_latency_enabled_set
dsl_source_rtsp_tls_validation_flags_get
dsl_source_rtsp_tls_validation_flags_set
New and updated Tee services - to support dynamic branch updates (add, move, remove):
dsl_tee_demuxer_new
(updated)dsl_tee_demuxer_new_branch_add_many
(updated)dsl_tee_demuxer_branch_add_to
dsl_tee_demuxer_branch_move_to
dsl_tee_demuxer_max_branches_get
dsl_tee_demuxer_max_branches_set
dsl_tee_blocking_timeout_get
dsl_tee_blocking_timeout_set
New On-Screen-Display (OSD) Services:
New Sink services - common sink property get/set services:
dsl_sink_async_enabled_get
dsl_sink_async_enabled_set
dsl_sink_max_lateness_get
dsl_sink_max_lateness_set
dsl_sink_qos_enabled_get
dsl_sink_qos_enabled_set
New Sink services - moved from Pipeline - to support multiple Windows Sinks per Pipeline.
dsl_sink_window_handle_get
dsl_sink_window_handle_set
dsl_sink_window_fullscreen_enabled_get
dsl_sink_window_fullscreen_enabled_set
dsl_sink_window_key_event_handler_add
dsl_sink_window_key_event_handler_remove
dsl_sink_window_button_event_handler_add
dsl_sink_window_button_event_handler_remove
dsl_sink_window_delete_event_handler_add
dsl_sink_window_delete_event_handler_remove
New Display Types:
New and refactored (for async execution) ODE Actions:
dsl_ode_action_branch_add_new
dsl_ode_action_branch_add_to_new
dsl_ode_action_branch_move_to_new
dsl_ode_action_branch_remove_new
dsl_ode_action_sink_add_new
refactereddsl_ode_action_sink_remove_new
refactereddsl_ode_action_source_add_new
refactereddsl_ode_action_source_remove_new
refactereddsl_ode_action_pipeline_pause_new
refactereddsl_ode_action_pipeline_play_new
dsl_ode_action_pipeline_stop_new
dsl_ode_action_player_pause_new
dsl_ode_action_player_play_new
dsl_ode_action_player_stop_new