Skip to content

Commit

Permalink
Merge pull request #1160 from prominenceai/v0.28.alpha
Browse files Browse the repository at this point in the history
v0.28.alpha
  • Loading branch information
rjhowell44 authored Jan 30, 2024
2 parents 2db8210 + 29c77be commit 03e61d0
Show file tree
Hide file tree
Showing 231 changed files with 21,869 additions and 7,678 deletions.
39 changes: 29 additions & 10 deletions .codelite/deepstream-services-library.project
Original file line number Diff line number Diff line change
Expand Up @@ -126,8 +126,21 @@
<File Name="../src/DslMutex.h"/>
<File Name="../src/DslCond.h"/>
<File Name="../src/DslUtilities.h"/>
<File Name="../src/DslRemuxerBintr.cpp"/>
<File Name="../src/DslRemuxerBintr.h"/>
</VirtualDirectory>
<VirtualDirectory Name="test">
<VirtualDirectory Name="webrtc">
<File Name="../test/webrtc/DslWebsocketServerApiTest.cpp"/>
<File Name="../test/webrtc/DslWebRtcSinkBehaviorTest.cpp"/>
<File Name="../test/webrtc/DslSoupServerMgrUnitTest.cpp"/>
<File Name="../test/webrtc/DslSinkWebRtcUnitTest.cpp"/>
<File Name="../test/webrtc/DslSinkWebRtcApiTest.cpp"/>
</VirtualDirectory>
<VirtualDirectory Name="config">
<File Name="../test/config/all_sources_1fps.txt"/>
<File Name="../test/config/all_sources_30fps.txt"/>
</VirtualDirectory>
<VirtualDirectory Name="avfile">
<File Name="../test/avfile/DslAvFileUnitTest.cpp"/>
</VirtualDirectory>
Expand Down Expand Up @@ -178,6 +191,8 @@
<File Name="../test/api/DslSinkImageBehaviorTest.cpp"/>
<File Name="../test/api/DslDemuxerBehaviorTest.cpp"/>
<File Name="../test/api/DslPipelineCbApiTest.cpp"/>
<File Name="../test/api/DslRemuxerApiTest.cpp"/>
<File Name="../test/api/DslRemuxerBehaviorTest.cpp"/>
</VirtualDirectory>
<VirtualDirectory Name="unit">
<File Name="../test/unit/DslDewarperUnitTest.cpp"/>
Expand Down Expand Up @@ -213,6 +228,7 @@
<File Name="../test/unit/DslOdeActionUnitTest.cpp"/>
<File Name="../test/unit/DslPreprocUnitTest.cpp"/>
<File Name="../test/unit/DslDemuxerAndSplitterUnitTest.cpp"/>
<File Name="../test/unit/DslRemuxerUnitTest.cpp"/>
</VirtualDirectory>
<VirtualDirectory Name="nmp">
<File Name="../test/nmp/DslPphNmpUnitTest.cpp"/>
Expand All @@ -227,14 +243,15 @@
</VirtualDirectory>
</VirtualDirectory>
<VirtualDirectory Name="root">
<File Name="../make_trafficcamnet_engine_files.py"/>
<File Name="../dsl.py"/>
<File Name="../make_caffemodel_engine_files.py"/>
<File Name="../README.md"/>
<File Name="../.gitignore"/>
<File Name="../Makefile"/>
</VirtualDirectory>
<VirtualDirectory Name="examples">
<VirtualDirectory Name="cpp">
<File Name="../examples/cpp/1v4l2_pgie_iou_tracker_osd_window.cpp"/>
<File Name="../examples/cpp/multiple_pipelines.cpp"/>
<File Name="../examples/cpp/rtsp_player_to_test_connections.cpp"/>
<File Name="../examples/cpp/ode_cross_polygon_border_print_event.cpp"/>
Expand All @@ -244,7 +261,6 @@
<File Name="../examples/cpp/ode_occurrence_trigger_with_mot_challenge_file_action.cpp"/>
<File Name="../examples/cpp/1file_preproc_pgie_iou_osd_window.cpp"/>
<File Name="../examples/cpp/4uri_file_streammux_with_tiled_output_pre_pgie.cpp"/>
<File Name="../examples/cpp/non_maximum_processing.cpp"/>
<File Name="../examples/cpp/Makefile"/>
<File Name="../examples/cpp/interpipe_single_pipeline_dynamic_switching_between_multiple_sinks.cpp"/>
<File Name="../examples/cpp/interpipe_multiple_pipelines_listening_to_single_sink.cpp"/>
Expand All @@ -259,16 +275,23 @@
<File Name="../examples/cpp/player_play_all_mp4_files_found.cpp.hold"/>
<File Name="../examples/cpp/dynamically_move_branch_from_demuxer_stream_to_stream.cpp"/>
<File Name="../examples/cpp/dynamically_add_remove_sources_with_tiler_window_sink.cpp"/>
<File Name="../examples/cpp/encode_and_save_frame_to_jpeg_from_custom_pph.cpp" ExcludeProjConfig="Debug;"/>
</VirtualDirectory>
<VirtualDirectory Name="python">
<File Name="../examples/python/1csi_live_pgie_osd_overlay_rtsp_h254.py"/>
<File Name="../examples/python/1v4l2_pgie_iou_tracker_osd_window.py"/>
<File Name="../examples/python/2uri_file_pgie_iou_tracker_2sgie_tiler_osd_custom_pph_window.py"/>
<File Name="../examples/python/4K_input_source_slicing_with_non_maximum_merge.py.hld"/>
<File Name="../examples/python/nvidia_pyds_pad_probe_handler.py"/>
<File Name="../examples/python/4uri_file_pgie_iou_tiler_osd_3d.py"/>
<File Name="../examples/python/1uri_https_window_dynamic_3d.py"/>
<File Name="../examples/python/2uri_file_pgie_iou_tracker_demuxer_osd_3d_window.py"/>
<File Name="../examples/python/1csi_live_pgie_osd_3dsink_rtsp_h254.py"/>
<File Name="../examples/python/1file_webrtc_connect_post_play.py"/>
<File Name="../examples/python/1file_webrtc_connect_pre_play.py"/>
<File Name="../examples/python/4uri_file_tiler_show_source_control.py"/>
<File Name="../examples/python/8uri_file_pph_meter_performace_reporting.py"/>
<File Name="../examples/python/message_broker_azure_device_client.py"/>
<File Name="../examples/python/multiple_pipelines.py"/>
<File Name="../examples/python/nvidia_osd_sink_pad_buffer_probe.py"/>
<File Name="../examples/python/ode_always_trigger_display_source_info.py"/>
<File Name="../examples/python/ode_count_trigger_display_meta.py"/>
<File Name="../examples/python/ode_distance_trigger_fill_object.py"/>
Expand All @@ -292,7 +315,6 @@
<File Name="../examples/python/ode_occurrence_trigger_with_monitor_action.py"/>
<File Name="../examples/python/interpipe_single_pipeline_dynamic_switching_between_multiple_sinks.py"/>
<File Name="../examples/python/interpipe_multiple_pipelines_listening_to_single_sink.py"/>
<File Name="../examples/python/4K_input_source_slicing_with_non_maximum_merge.py"/>
<File Name="../examples/python/1csi_live_pgie_osd_window.py"/>
<File Name="../examples/python/1file_ptis_dcf_tracker_osd_window.py"/>
<File Name="../examples/python/1file_ptis_iou_tracker_3stis_osd_window.py"/>
Expand All @@ -301,9 +323,6 @@
<File Name="../examples/python/1uri_file_pgie_iou_tracker_osd_custom_pph_window.py"/>
<File Name="../examples/python/1uri_file_pgie_iou_tracker_osd_window_h264_mkv.py"/>
<File Name="../examples/python/1uri_file_pgie_iou_tracker_osd_window_h265_mp4.py"/>
<File Name="../examples/python/1uri_https_window_dynamic_overlay.py"/>
<File Name="../examples/python/2uri_file_pgie_iou_tracker_3sgie_tiler_osd_custom_pph_window.py"/>
<File Name="../examples/python/2uri_file_pgie_iou_tracker_demuxer_1osd_1overlay_1window.py"/>
<File Name="../examples/python/segmentation_industrial.py"/>
<File Name="../examples/python/segmentation_semantic.py"/>
<File Name="../examples/python/video_dewarper_360.py"/>
Expand All @@ -312,14 +331,14 @@
<File Name="../examples/python/encode_and_save_frame_to_jpeg_thumbnail_periodically.py"/>
<File Name="../examples/python/encode_and_save_frame_to_jpeg_on_viewer_demand.py"/>
<File Name="../examples/python/2uri_file_demuxer_pgie_iou_tiler_osd_window_2_file.py"/>
<File Name="../examples/python/4uri_file_pgie_iou_tiler_osd_overlay.py"/>
<File Name="../examples/python/smart_record_sink_start_session_on_ode_occurrence.py"/>
<File Name="../examples/python/smart_record_sink_start_session_on_user_demand.py"/>
<File Name="../examples/python/smart_record_tap_start_session_on_ode_occurrence.py"/>
<File Name="../examples/python/smart_record_tap_start_session_on_user_demand.py"/>
<File Name="../examples/python/process_all_mp4_files_in_folder.py"/>
<File Name="../examples/python/dynamically_move_branch_from_demuxer_stream_to_stream.py"/>
<File Name="../examples/python/dynamically_add_remove_sources_with_tiler_window_sink.py"/>
<File Name="../examples/python/encode_and_save_frame_to_jpeg_from_custom_pph.py"/>
</VirtualDirectory>
<VirtualDirectory Name="tkinter">
<File Name="../examples/tkinter/action.py"/>
Expand Down Expand Up @@ -365,7 +384,7 @@
<CustomBuild Enabled="yes">
<RebuildCommand/>
<CleanCommand>make -C ../ clean</CleanCommand>
<BuildCommand>make -C ../ -j 4</BuildCommand>
<BuildCommand>make -C ../ -j 6</BuildCommand>
<PreprocessFileCommand/>
<SingleFileCommand/>
<MakefileGenerationCommand/>
Expand Down
2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@

# CodeLite
*.session
*.tags
*.tags*
*.db

# files created running test
Expand Down
Binary file added Images/dsl-github-banner.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/duplicate-source.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 removed Images/under-construction.png
Binary file not shown.
24 changes: 14 additions & 10 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -31,24 +31,27 @@ LIB:= libdsl
CXX = g++

TARGET_DEVICE = $(shell gcc -dumpmachine | cut -f1 -d -)

ifeq ($(SUDO_USER),)
USER_SITE = "`python3 -m site --user-site`"
else
USER_SITE = "`sudo -u ${SUDO_USER} python3 -m site --user-site`"
USER_SITE = "`sudo -u ${SUDO_USER} python3 -m site --user-site`"
endif

CXX_VERSION:=c++17
DSL_VERSION:='L"v0.27.b.alpha"'
DSL_VERSION:='L"v0.28.alpha"'
GLIB_VERSION:=2.0

# Update GStreamer sub-version to 20 to enabled the WebRtcSink
GSTREAMER_VERSION:=1.0
GSTREAMER_SUB_VERSION:=16
GSTREAMER_SUB_VERSION:=18
GSTREAMER_SDP_VERSION:=1.0
GSTREAMER_WEBRTC_VERSION:=1.0
LIBSOUP_VERSION:=2.4
JSON_GLIB_VERSION:=1.0

# To enable the extended Image Services, install either the FFmpeg or OpenCV
# development libraries (See /docs/installing-dependencies.md), and
# To enable the extended Image Services, ensure FFmpeg or OpenCV
# is installed (See /docs/installing-dependencies.md), and
# - set either BUILD_WITH_FFMPEG or BUILD_WITH_OPENCV:=true (NOT both)
BUILD_WITH_FFMPEG:=false
BUILD_WITH_OPENCV:=false
Expand Down Expand Up @@ -108,7 +111,7 @@ INCS+= $(wildcard ./test/*.hpp)
TEST_OBJS+= $(wildcard ./test/api/*.o)
TEST_OBJS+= $(wildcard ./test/unit/*.o)

ifeq ($(shell test $(GSTREAMER_SUB_VERSION) -gt 16; echo $$?),0)
ifeq ($(shell test $(GSTREAMER_SUB_VERSION) -gt 18; echo $$?),0)
SRCS+= $(wildcard ./src/webrtc/*.cpp)
SRCS+= $(wildcard ./test/webrtc/*.cpp)
INCS+= $(wildcard ./src/webrtc/*.h)
Expand Down Expand Up @@ -160,11 +163,12 @@ CFLAGS+= -I./src/ffmpeg \
endif

ifeq ($(BUILD_WITH_OPENCV),true)
CFLAGS+= -I./src/opencv \
CFLAGS+= -I /usr/include/opencv4 \
-I./src/opencv/ \
-I./test/avfile
endif

ifeq ($(shell test $(GSTREAMER_SUB_VERSION) -gt 16; echo $$?),0)
ifeq ($(shell test $(GSTREAMER_SUB_VERSION) -gt 18; echo $$?),0)
CFLAGS+= -I/usr/include/libsoup-$(LIBSOUP_VERSION) \
-I/usr/include/json-glib-$(JSON_GLIB_VERSION) \
-I./src/webrtc
Expand Down Expand Up @@ -203,7 +207,7 @@ LIBS+= -L$(LIB_INSTALL_DIR) \
-L/usr/local/cuda/lib64/ -lcudart \
-Wl,-rpath,$(LIB_INSTALL_DIR)

ifeq ($(shell test $(GSTREAMER_SUB_VERSION) -gt 16; echo $$?),0)
ifeq ($(shell test $(GSTREAMER_SUB_VERSION) -gt 18; echo $$?),0)
LIBS+= -Lgstreamer-sdp-$(GSTREAMER_SDP_VERSION) \
-Lgstreamer-webrtc-$(GSTREAMER_WEBRTC_VERSION) \
-Llibsoup-$(LIBSOUP_VERSION) \
Expand All @@ -225,7 +229,7 @@ PKGS:= gstreamer-$(GSTREAMER_VERSION) \
gstreamer-rtsp-server-$(GSTREAMER_VERSION) \
x11

ifeq ($(shell test $(GSTREAMER_SUB_VERSION) -gt 16; echo $$?),0)
ifeq ($(shell test $(GSTREAMER_SUB_VERSION) -gt 18; echo $$?),0)
PKGS+= gstreamer-sdp-$(GSTREAMER_SDP_VERSION) \
gstreamer-webrtc-$(GSTREAMER_WEBRTC_VERSION) \
libsoup-$(LIBSOUP_VERSION) \
Expand Down
29 changes: 17 additions & 12 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
[![Ask Me Anything!](https://img.shields.io/badge/Ask%20me-anything-1abc9c.svg)](https://github.com/prominenceai/deepstream-services-library/issues/new/choose)
[![Discord](https://img.shields.io/discord/750454524849684540)](https://discord.gg/MJvY9jjpAK)

![](/Images/under-construction.png)
![DeepStream Services Library](/Images/dsl-github-banner.png)

## Intelligent Audio and Video Analytics (IAVA)
A library of on-demand DeepStream Pipeline services. Written in C++ 17 with an `extern "C"` API, The DeepStream Services Library (DSL) can be called from both C/C++ and Python applications.
Expand All @@ -16,33 +16,41 @@ A library of on-demand DeepStream Pipeline services. Written in C++ 17 with an `
```C++
#include <DslApi.h>

// New USB Camera Source
uint retval = dsl_source_usb_new("my-usb-source", 1280, 720, 30, 1);
// New V4L2 Source
uint retval = dsl_source_v4l2_new(L"my-web-cam-1", L"/dev/video0");
```

### Python3

```Python
from dsl import *

# New USB Camera Source
retval = dsl_source_usb_new('my-usb-source', 1280, 720, 30, 1)
# New V4L2 Source
retval = dsl_source_v4l2_new('my-web-cam-1', '/dev/video0')
```

DSL is built on the NVIDIA® [DeepStream SDK](https://developer.nvidia.com/deepstream-sdk), _"A complete streaming analytics toolkit for AI-based video and image understanding, as well as multi-sensor processing."_,

The DeepStream SDK and DSL use the open source [GStreamer](https://gstreamer.freedesktop.org/),  _"An extremely powerful and versatile framework for creating streaming media applications"_.

---

## Important Bulletins
The latest `v0.28.alpha` release was developed to support DeepSteam 6.3 and 6.4. However, there are several critical NVIDIA bugs that affect DSL's behavior. We are currently waiting on an ETA for a new DeepStream release (hopefully for NVIDIA GTC 2024 | March 18–21). Issues include:
1. [Pipelines with new `nvstreammux` and `nvstreamdemux` fail to play correctly in DS 6.3](https://forums.developer.nvidia.com/t/pipelines-with-new-nvstreammux-and-nvstreamdemux-fail-to-play-correctly-in-ds-6-3/278396/5)
2. [Unable to record with deepstream-testsr example on Jetson Orin Nano with DeepStream 6.4](https://forums.developer.nvidia.com/t/unable-to-record-with-deepstream-testsr-example-on-jetson-orin-nano-with-deepstream-6-4/279778)
3. [Pipelines with jpegenc and multifilesink produce invalid jpeg files in DS 6.4](https://forums.developer.nvidia.com/t/pipelines-with-jpegenc-and-multifilesink-produce-invalid-jpeg-files-in-ds-6-4/280216)
4. [DeepStream can’t decode certain H265 streams properly](https://forums.developer.nvidia.com/t/deepstream-cant-decode-certain-h265-streams-properly/276027)
5. There are other New nvstreammux issues that still need to be reported.

### _IMPORANT! There are breaking changes in the most recent release. Please read the [Release Notes](/Release%20Notes/v0.28.alpha.md) carefully._

## Contributing

DSL is released under the [MIT License](LICENSE). Contributions are welcome and greatly appreciated. Please review our [code of conduct](/CODE_OF_CONDUCT.md).

***Please report issues!***

---

### _IMPORANT! There are breaking changes in the most recent release. Please read the [Release Notes](/Release%20Notes/v0.27.alpha.md) carefully._

## DSL Branching Workflow

![DSL Git Branching Workflow](/Images/dsl-branching-workflow.png)
Expand All @@ -53,9 +61,6 @@ DSL is released under the [MIT License](LICENSE). Contributions are welcome and

All pull requests should be made against the current `Develop` branch.

## Docker
The [deepstream-services-library-docker](https://github.com/prominenceai/deepstream-services-library-docker) repo contain a `Dockerfile`, utility scripts, and instructions to create and run a DSL-DeepStream container.

## Discord
Come join us on [Discord](https://discord.gg/MJvY9jjpAK), an informal place to chat, ask questions, discuss ideas, etc.

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.28.alpha](/Release%20Notes/v0.28.alpha.md) | 01/29/2024 |
| [v0.27.b.alpha](/Release%20Notes/v0.27.b.alpha.md) | 11/08/2023 |
| [v0.27.a.alpha](/Release%20Notes/v0.27.a.alpha.md) | 10/24/2023 |
| [v0.27.alpha](/Release%20Notes/v0.27.alpha.md) | 09/13/2023 |
Expand Down
Loading

0 comments on commit 03e61d0

Please sign in to comment.