Skip to content

Latest commit

 

History

History
212 lines (185 loc) · 21.3 KB

v0.27.alpha.md

File metadata and controls

212 lines (185 loc) · 21.3 KB

v0.27.alpha Release Notes

The v0.27.alpha release addresses a number of important bug fixes and new enhancements. IMPORTANT! There are breaking changes in this release.

Highlights

XWindow Services moved from Pipeline to Window Sink to support multiple Window-Sinks per Pipeline.

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.

New and Improved Dynamic Pipeline capabilities.

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.

Source Component Updates

  • 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.

Pipeline Streammuxer Updates

  • IMPORTANT! The Pipeline Streammuxer has been extended to update all batched frame metatdata by adding the unique pipeline-id to the pFrameMeta->source_id if pipeline-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.

Sink Component Updates

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.

Default common property values

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.

Issues closed in this release

Bugs closed in this release

  • 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.

Enhancements closed in this release

  • 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

Services removed in this release

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 Constants, Typedefs, and Services

New symbolic constants in this release

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 Services in this release

New Pipeline Services

New Source services:

New and updated Tee services - to support dynamic branch updates (add, move, remove):

New On-Screen-Display (OSD) Services:

New Sink services - common sink property get/set services:

New Sink services - moved from Pipeline - to support multiple Windows Sinks per Pipeline.

New Display Types:

New and refactored (for async execution) ODE Actions:

New Services in this release

Python

C++