Skip to content

Commit

Permalink
Merge pull request #1290 from prominenceai/v0.31.a.alpha
Browse files Browse the repository at this point in the history
v0.31.a.alpha
  • Loading branch information
rjhowell44 authored Sep 16, 2024
2 parents ecb7ec8 + fd171f8 commit e38116a
Show file tree
Hide file tree
Showing 71 changed files with 3,477 additions and 1,760 deletions.
Binary file added Images/ode_always_trigger_display_source_info.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added Images/ode_count_trigger_display_meta.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added Images/ode_distance_trigger_fill_object.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added Images/ode_largest_object_fill_surroundings.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
2 changes: 1 addition & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ else
endif

CXX_VERSION:=c++17
DSL_VERSION:='L"v0.31.alpha"'
DSL_VERSION:='L"v0.31.a.alpha"'

GLIB_VERSION:=2.0
GSTREAMER_VERSION:=1.0
Expand Down
37 changes: 11 additions & 26 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -50,30 +50,6 @@ $ sudo cp /usr/local/lib/librdkafka* /opt/nvidia/deepstream/deepstream-7.0/lib
```
See [Error in DeepStream 7.0 installation instructions - symlink fails to create](https://forums.developer.nvidia.com/t/error-in-deepstream-7-0-installation-instructions-symlink-fails-to-create/296026) for more information.

## -- Release Highlights --

The latest release is [v0.31.alpha](/Release%20Notes/v0.31.alpha.md)

### New Component Queue management and monitoring services
All DSL Pipeline Components use a GStream [queue plugin](https://gstreamer.freedesktop.org/documentation/coreelements/queue.html?gi-language=c) to create a new thread boundry for processing. [New services](/docs/api-component.md#component-queue-management) have been added to monitor and control the queue's leaky, current-level, max-size, and min-threshold properties. Callbacks have been added for notification of queue underrun and overrun conditions.

### New Custom Sources and Sinks
New services have been added to create [Custom Video Sources](/docs/api-source.md#custom-video-sources) and [Custom Video Sinks](/docs/api-sink.md#custom-video-sinks) Components using publicly released or proprietary GStreamer plugins.

### New DSL GST Caps Objects
GStreamer caps objects can be created to filter caps for [Custom GST Elements]() used by the [Custom Video Sources](/docs/api-source.md#custom-video-sources), [Custom Components](/docs/api-component.md#custom-components), and [Custom Video Sinks](/docs/api-sink.md#custom-video-sinks)

### All Encode Sinks now support software encoding
**IMPORTANT** this is a breaking change.

The [File Sink](/docs/api-sink.md#dsl_sink_file_new), [Record Sink](/docs/api-sink.md#dsl_sink_record_new), [RTSP Server Sink](/docs/api-sink.md#dsl_sink_rtsp_server_new), and [WebRTC Sink](/docs/api-sink.md#dsl_sink_webrtc_new) now support five types of encoders:
* two hardware; H.264, H.265.
* and now three software; H.264, H.265, and MP4.

The [RTMP Sink](/docs/api-sink.md#dsl_sink_rtmp_new) now supports software and hardware H.264 encoding.

### Extensive memory leak testing has been done.
All (minor) issues found have been resolved.

## Contributing

Expand Down Expand Up @@ -130,8 +106,17 @@ Come join us on [Discord](https://discord.gg/MJvY9jjpAK), an informal place to c
* [Message Broker](/docs/api-msg-broker.md)
* [Info API](/docs/api-info.md)
* [Examples](/docs/examples.md)
* [C/C++](/docs/examples-cpp.md)
* [Python](/docs/examples-python.md)
* [Basic Inference Pipelies](/docs/examples-basic-pipelines.md)
* [Multiple Sources, Tilers, and Demuxers](/docs/examples-sources-tiler-demuxer.md)
* [Advanced Inference Pipelies](/docs/examples-advanced-pipelines.md)
* [Smart Recording](/docs/examples-smart-recording.md)
* [Object Detection Event (ODE) Services](/docs/examples-ode-services.md)
* [Encoding Frames to JPEG](/docs/examples-encode-and-save-frame.md)
* [Dewarping and Segmentation](/docs/examples-dewarping-and-segmentation.md)
* [Dynamic Pipelines](/docs/examples-dynamic-pipelines.md)
* [Custom Components](/docs/examples-custom-components.md)
* [Working with OpenCV](/docs/examples-opencv.md)
* [Diagnostics and Utilites](/docs/examples-diagnaostics-and-utilities.md)
* [Tkinter Reference App](/docs/examples-tkinter.md)
* [HTML WebRTC Client](/docs/examples-webrtc-html.md)
* [Using VS Code](/docs/vscode.md)
Expand Down
1 change: 1 addition & 0 deletions Release Notes/dsl-releases.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

| Release | Date |
| ----------------------------------------------------------- | ----------- |
| [v0.31.a.alpha (patch)](/Release%20Notes/v0.31.a.alpha.md) | 09/16/2024 |
| [v0.31.alpha](/Release%20Notes/v0.3`.alpha.md) | 09/04/2024 |
| [v0.30.b.alpha (patch)](/Release%20Notes/v0.30.b.alpha.md) | 08/28/2024 |
| [v0.30.a.alpha (patch)](/Release%20Notes/v0.30.a.alpha.md) | 07/14/2024 |
Expand Down
8 changes: 8 additions & 0 deletions Release Notes/v0.31.a.alpha.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
# v0.31.a.alpha (patch) Release Notes
**Important!**
* `v0.31.a.alpha` is a **patch** release (patch `a` for the `v0.31.alpha` release).
* Only the documentation and examples have been updated (and improved).
* libdsl.so has not changed in this release.

## Issues closed in this release
* Cleanup, catagorize, and document all DSL Python and C/C++ Examples [#1288](https://github.com/prominenceai/deepstream-services-library/issues/1288)
118 changes: 118 additions & 0 deletions docs/examples-advanced-pipelines.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,118 @@
# Advanced Inference Pipelies
This page documents the following "Advance Inference Pipelines" consiting of
* [Parallel Inference on Selective Streams](#parallel-inference-on-selective-streams)
* [Multiple Pipelines Running in Their Own Thread](#multiple-pipelines-running-in-their-own-thread)
* [Multiple Pipelines with Interpipe Source listening to Pipeline with InterpipeSink](#multiple-pipelines-with-interpipe-source-listening-to-pipeline-with-interpipe-sink)
* [Single Pipeline with Interpipe Source switching between Multiple Pipelines/Sinks](#single-pipeline-with-interpipe-source-switching-between-multiple-pipelinessinks)

<br>

---

### Parallel Inference on Selective Streams

* [`parallel_inference_on_selective_streams.py`](/examples/python/parallel_inference_on_selective_streams.py)
* [`parallel_inference_on_selective_streams.cpp`](/examples/cpp/parallel_inference_on_selective_streams.cpp)

```python
#
# This example shows how to use a Remuxer Component to create parallel branches,
# each with their own Inference Components (Preprocessors, Inference Engines,
# Trackers, for example).
# IMPORTANT! All branches are (currently) using the same model engine and config.
# files, which is not a valid use case. The actual inference components and
# models to use for any specific use cases is beyond the scope of this example.
#
# Each Branch added to the Remuxer can specify which streams to process or
# to process all. Use the Remuxer "branch-add-to" service to add to specific streams.
#
# stream_ids = [0,1]
# dsl_remuxer_branch_add_to('my-remuxer', 'my-branch-0',
# stream_ids, len[stream_ids])
#
# You can use the "branch-add" service if adding to all streams
#
# dsl_remuxer_branch_add('my-remuxer', 'my-branch-0')
#
# In this example, 4 RTSP Sources are added to the Pipeline:
# - branch-1 will process streams [0,1]
# - branch-2 will process streams [1,2]
# - branch-3 will process streams [0,2,3]
#
# Three ODE Instance Triggers are created to trigger on new object instances
# events (i.e. new tracker ids). Each is filtering on a unique class-i
# (vehicle, person, and bicycle).
#
# The ODE Triggers are added to an ODE Handler which is added to the src-pad
# (output) of the Remuxer.
#
# A single ODE Print Action is created and added to each Trigger (shared action).
# Using multiple Print Actions running in parallel -- each writing to the same
# stdout buffer -- will result in the printed data appearing interlaced. A single
# Action with an internal mutex will protect from stdout buffer reentrancy.
#

```

<br>

---

### Multiple Pipelines Running in Their Own Thread

* [`multiple_pipelines.py`](/examples/python/multiple_pipelines.py)
* [`multiple_pipelines.cpp`](/examples/cpp/multiple_pipelines.cpp)

```python
#
# This example demonstrates how to run multple Pipelines, each in their own
# thread, and each with their own main-context and main-loop.
#
# After creating and starting each Pipelines, the script joins each of the
# threads waiting for them to complete - either by EOS message, 'Q' key, or
# Delete Window.
#
```

<br>

---

### Multiple Pipelines with Interpipe Source listening to Pipeline with Interpipe Sink

* [`interpipe_multiple_pipelines_listening_to_single_sink.py`](/examples/python/interpipe_multiple_pipelines_listening_to_single_sink.py)
* [`interpipe_multiple_pipelines_listening_to_single_sink.cpp`](/examples/cpp/interpipe_multiple_pipelines_listening_to_single_sink.cpp)

```python
#
# This script demonstrates how to run multple Pipelines, each with an Interpipe
# Source, both listening to the same Interpipe Sink.
#
# A single Player is created with a File Source and Interpipe Sink. Two Inference
# Pipelines are created to listen to the single Player - shared input stream.
# The two Pipelines can be created with different configs, models, and/or Trackers
# for side-by-side comparison. Both Pipelines run in their own main-loop with their
# own main-context, and have their own Window Sink for viewing and external control.
#
```
<br>

---

### Single Pipeline with Interpipe Source switching between Multiple Pipelines/Sinks

* [`interpipe_single_pipeline_dynamic_switching_between_multiple_sinks.py`](/examples/python/interpipe_single_pipeline_dynamic_switching_between_multiple_sinks.py)
* [`interpipe_single_pipeline_dynamic_switching_between_multiple_sinks.cpp`](/examples/cpp/interpipe_single_pipeline_dynamic_switching_between_multiple_sinks.cpp)

```python
# ------------------------------------------------------------------------------------
# This example demonstrates interpipe dynamic switching. Four DSL Players
# are created, each with a File Source and Interpipe Sink. A single
# inference Pipeline with an Interpipe Source is created as the single listener
#
# The Interpipe Source's "listen_to" setting is updated based on keyboard input.
# The xwindow_key_event_handler (see below) is added to the Pipeline's Window Sink.
# The handler, on key release, sets the "listen_to" setting to the Interpipe Sink
# name that corresponds to the key value - 1 through 4.
```

Loading

0 comments on commit e38116a

Please sign in to comment.