Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
139 commits
Select commit Hold shift + click to select a range
f63e5af
Create v0.01.beta dev branch
rjhowell44 May 31, 2024
ab5439b
Implement Component Queue get/set services
rjhowell44 Jun 4, 2024
4d80b29
Implement Component Queue get/set services
rjhowell44 Jun 4, 2024
b63417c
Implement Component Queue get/set services
rjhowell44 Jun 4, 2024
24b15f2
Implement Component Queue get/set services
rjhowell44 Jun 5, 2024
f7f5133
Implement Component Queue get/set services
rjhowell44 Jun 5, 2024
b8b9947
Implement Component Queue get/set services
rjhowell44 Jun 6, 2024
3b9bd81
Implement Component Queue get/set services
rjhowell44 Jun 6, 2024
019e8c2
Implement Component Queue get/set services
rjhowell44 Jun 7, 2024
3158b5e
Implement Component Queue get/set services
rjhowell44 Jun 7, 2024
4bff5ba
Implement Component Queue get/set services
rjhowell44 Jun 9, 2024
af1f440
Implement Component Queue get/set services
rjhowell44 Jun 9, 2024
cd44c3e
Implement Component Queue get/set services
rjhowell44 Jun 12, 2024
971d4ac
Implement Component Queue get/set services
rjhowell44 Jun 13, 2024
29c729e
Implement Component Queue get/set services
rjhowell44 Jun 15, 2024
8d0c47a
Implement Component Queue get/set services
rjhowell44 Jun 15, 2024
a917af2
Document Component Queue get/set services
rjhowell44 Jun 17, 2024
53bfc7d
Merge pull request #1228 from prominenceai/queue_services
rjhowell44 Jun 17, 2024
223a789
Refactor VideoSource, DuplicateSouce, and Dewarper
rjhowell44 Jun 20, 2024
7943570
Merge pull request #1229 from prominenceai/refactor_sources
rjhowell44 Jun 20, 2024
e21d5b4
Rename dsl_gst_bin_* to dsl_component_custom_*
rjhowell44 Jun 21, 2024
7ba048e
Rename/move dsl_gst_bin_* to dsl_component_custom_*
rjhowell44 Jun 22, 2024
b3b683b
Rename/move dsl_gst_bin_* to dsl_component_custom_*
rjhowell44 Jun 24, 2024
d4a7acd
Merge pull request #1232 from prominenceai/custom_component
rjhowell44 Jun 24, 2024
b9245e2
Implement Custom Source Component
rjhowell44 Jun 28, 2024
cd93cdc
Implement GST Caps Services for GST Elements
rjhowell44 Jun 28, 2024
69d80b4
Add GST Caps Services and GST Element updates
rjhowell44 Jun 30, 2024
5ab7b8d
Add GST Caps Services and GST Element updates
rjhowell44 Jul 2, 2024
60bb57c
Implement Custom Source Component
rjhowell44 Jul 5, 2024
787056a
Add Custom Source examples
rjhowell44 Jul 7, 2024
3b88dca
Document GST Caps Object services
rjhowell44 Jul 7, 2024
8408026
Fix GST API section title
rjhowell44 Jul 7, 2024
12e9fc9
Fix number of Sources supported in Overview
rjhowell44 Jul 7, 2024
de5c8b7
Merge pull request #1237 from prominenceai/custom_source
rjhowell44 Jul 7, 2024
c0d7e91
Free memory returned from gst_object_get_name
rjhowell44 Jul 19, 2024
f2a0511
Fix Copyright data range
rjhowell44 Jul 19, 2024
acb438f
Free memory returned from gst_object_get_name
rjhowell44 Jul 19, 2024
e2630a1
Fix Copyright data range
rjhowell44 Jul 19, 2024
2290883
Fix missing unref statement
rjhowell44 Jul 19, 2024
4847fcf
Fix use of uninitialized variable
rjhowell44 Jul 20, 2024
fde77b4
Minor logging fixes
rjhowell44 Jul 25, 2024
3675f30
UnlinkCommon needs to test/unlink front element
rjhowell44 Jul 25, 2024
9584b29
Fix memory leaks and incomplete trow statements
rjhowell44 Jul 28, 2024
497d361
Add Valgrind memtest assets
rjhowell44 Jul 29, 2024
dc22cfd
Merge pull request #1245 from prominenceai/mem_leaks
rjhowell44 Jul 29, 2024
49eb34a
Support/test new method to EOS pipeline on stop
rjhowell44 Jul 30, 2024
41a6e22
Merge pull request #1247 from prominenceai/eos_methods
rjhowell44 Jul 30, 2024
275ac87
Implement dsl_pipeline_buffering_message_handler_add/remove services
rjhowell44 Jul 31, 2024
a23ea9c
Document dsl_pipeline_buffering_message_handler_add/remove services
rjhowell44 Aug 1, 2024
fbb9908
Merge pull request #1249 from prominenceai/buffering_message_handler
rjhowell44 Aug 1, 2024
67a20e4
Create v0.01.beta dev branch
rjhowell44 May 31, 2024
6dfabdd
Implement Component Queue get/set services
rjhowell44 Jun 4, 2024
796e7cf
Implement Component Queue get/set services
rjhowell44 Jun 4, 2024
bad17bb
Implement Component Queue get/set services
rjhowell44 Jun 4, 2024
f8ae21b
Implement Component Queue get/set services
rjhowell44 Jun 5, 2024
b518676
Implement Component Queue get/set services
rjhowell44 Jun 5, 2024
e1ec392
Implement Component Queue get/set services
rjhowell44 Jun 6, 2024
60ccbf9
Implement Component Queue get/set services
rjhowell44 Jun 6, 2024
0ddb3c4
Implement Component Queue get/set services
rjhowell44 Jun 7, 2024
541480f
Implement Component Queue get/set services
rjhowell44 Jun 7, 2024
f459296
Implement Component Queue get/set services
rjhowell44 Jun 9, 2024
5482eae
Implement Component Queue get/set services
rjhowell44 Jun 9, 2024
6f10437
Implement Component Queue get/set services
rjhowell44 Jun 12, 2024
8079a08
Implement Component Queue get/set services
rjhowell44 Jun 13, 2024
17e66d1
Implement Component Queue get/set services
rjhowell44 Jun 15, 2024
ac5f190
Implement Component Queue get/set services
rjhowell44 Jun 15, 2024
df8be38
Document Component Queue get/set services
rjhowell44 Jun 17, 2024
05e7db0
Refactor VideoSource, DuplicateSouce, and Dewarper
rjhowell44 Jun 20, 2024
e502b48
Rename dsl_gst_bin_* to dsl_component_custom_*
rjhowell44 Jun 21, 2024
09e848a
Rename/move dsl_gst_bin_* to dsl_component_custom_*
rjhowell44 Jun 22, 2024
4118d67
Rename/move dsl_gst_bin_* to dsl_component_custom_*
rjhowell44 Jun 24, 2024
4214ddd
Implement Custom Source Component
rjhowell44 Jun 28, 2024
810f95e
Implement GST Caps Services for GST Elements
rjhowell44 Jun 28, 2024
0c83f1a
Add GST Caps Services and GST Element updates
rjhowell44 Jun 30, 2024
adc90b0
Add GST Caps Services and GST Element updates
rjhowell44 Jul 2, 2024
98b5cce
Implement Custom Source Component
rjhowell44 Jul 5, 2024
d60bd5b
Add Custom Source examples
rjhowell44 Jul 7, 2024
cacded9
Document GST Caps Object services
rjhowell44 Jul 7, 2024
5c3fd18
Fix GST API section title
rjhowell44 Jul 7, 2024
5d40d27
Fix number of Sources supported in Overview
rjhowell44 Jul 7, 2024
bdf16d2
Free memory returned from gst_object_get_name
rjhowell44 Jul 19, 2024
67d98f8
Fix Copyright data range
rjhowell44 Jul 19, 2024
b8b9bfc
Free memory returned from gst_object_get_name
rjhowell44 Jul 19, 2024
c60f70e
Fix Copyright data range
rjhowell44 Jul 19, 2024
89205a8
Fix missing unref statement
rjhowell44 Jul 19, 2024
8321f28
Fix use of uninitialized variable
rjhowell44 Jul 20, 2024
5ba3e3e
Minor logging fixes
rjhowell44 Jul 25, 2024
eac78a0
UnlinkCommon needs to test/unlink front element
rjhowell44 Jul 25, 2024
ca2ea7b
Fix memory leaks and incomplete trow statements
rjhowell44 Jul 28, 2024
d450541
Add Valgrind memtest assets
rjhowell44 Jul 29, 2024
4ab1d0a
Support/test new method to EOS pipeline on stop
rjhowell44 Jul 30, 2024
a6a4c85
Implement dsl_pipeline_buffering_message_handler_add/remove services
rjhowell44 Jul 31, 2024
df46559
Document dsl_pipeline_buffering_message_handler_add/remove services
rjhowell44 Aug 1, 2024
347d3ea
Merge branch 'v0.01.beta' of https://github.com/prominenceai/deepstre…
rjhowell44 Aug 1, 2024
2816553
Implement Custom Sink and complete Custom Source
rjhowell44 Aug 7, 2024
93a47e4
Merge pull request #1251 from prominenceai/custom_sink
rjhowell44 Aug 7, 2024
4d40fb1
Fix missing file in custom_sink commit
rjhowell44 Aug 7, 2024
872d5b3
Derive Remuxer from QBintr - use queue for Metamuxer
rjhowell44 Aug 8, 2024
e3eaf4b
Merge pull request #1252 from prominenceai/remuxer_queue
rjhowell44 Aug 8, 2024
1387c2e
Eliminate secondary queue from OSD Component
rjhowell44 Aug 8, 2024
26c9b34
Merge pull request #1254 from prominenceai/osd_update
rjhowell44 Aug 8, 2024
1a8ec92
Fix null pointer dereferencing bug in ODE Actions
rjhowell44 Aug 9, 2024
ab170e1
Fix incorrect handling of ghost pad when removing last duplicate
rjhowell44 Aug 9, 2024
f9d6108
Fix overflow error in distance trigger
rjhowell44 Aug 10, 2024
c81da37
Reorganize behavior tests and fix all test failures
rjhowell44 Aug 10, 2024
de888a3
Merge pull request #1257 from prominenceai/bug_fixes
rjhowell44 Aug 11, 2024
3f83701
Remove the Non-Maximum Processor PPH
rjhowell44 Aug 11, 2024
c884dc8
Remove the Non-Maximum Processor PPH
rjhowell44 Aug 11, 2024
01d19a0
Merge pull request #1259 from prominenceai/remove_nmp_pph
rjhowell44 Aug 11, 2024
426f410
Remove NMP PPH from dsl.py
rjhowell44 Aug 11, 2024
42ed040
Implement new dsl_source_rtsp_udp_buffer_size_get/set services
rjhowell44 Aug 16, 2024
62d3134
Merge pull request #1262 from prominenceai/udp_buffer_size
rjhowell44 Aug 16, 2024
c0b2727
Merge v0.30.b.alpha updates into v0.01.beta
rjhowell44 Aug 25, 2024
227d0ac
Add missing null pointer guards
rjhowell44 Aug 26, 2024
efcac5a
Implement EncodeSinkBintr::LinkToCommon and EncodeSinkBintr::UnlinkFr…
rjhowell44 Aug 26, 2024
fcd505f
Implement EncodeSinkBintr::LinkToCommon and EncodeSinkBintr::UnlinkFr…
rjhowell44 Aug 26, 2024
c63af29
Implement software encoding for all Encode Sinks
rjhowell44 Aug 27, 2024
d7bc251
Implement software encoding for all Encode Sinks
rjhowell44 Aug 27, 2024
d29a145
Implement software encoding for all Encode Sinks
rjhowell44 Aug 28, 2024
157be53
Implement software encoding for all Encode Sinks
rjhowell44 Aug 28, 2024
81b1d7a
Implement software encoding for all Encode Sinks
rjhowell44 Aug 29, 2024
87e2140
Implement SW Encoding and update Encode Sink parameters
rjhowell44 Sep 2, 2024
e515460
Add encoder parameter to RTMP Sink
rjhowell44 Sep 2, 2024
a22db68
Update interval parameter to iframe_interval
rjhowell44 Sep 2, 2024
bedbf72
Update interval parameter to iframe_interval
rjhowell44 Sep 2, 2024
79594d8
Merge pull request #1276 from prominenceai/sw_encode
rjhowell44 Sep 2, 2024
d67f7d5
Extend webrtc_sink to support software encoding
rjhowell44 Sep 3, 2024
87cd1d7
Update WebRTC Sink to not add Fake Sink to Pipeline
rjhowell44 Sep 3, 2024
3000672
Merge pull request #1277 from prominenceai/webrtc_sink
rjhowell44 Sep 3, 2024
2380343
Fix version check for conditionally setting bufapi-version
rjhowell44 Sep 3, 2024
b3b6904
Merge pull request #1278 from prominenceai/csi_source
rjhowell44 Sep 3, 2024
d508aa0
Fix RTSP remote URL documentation
rjhowell44 Sep 3, 2024
a20d6aa
Merge pull request #1281 from prominenceai/rtsp_sink_docs
rjhowell44 Sep 3, 2024
78d21a9
Create v0.31.alpha.dev branch
rjhowell44 Sep 3, 2024
4603e87
Create Release Notes for v0.31.alpha
rjhowell44 Sep 4, 2024
275d190
Workaround for nvvideoconvert bug on Jetson
rjhowell44 Sep 5, 2024
3e5b6f9
Merge pull request #1283 from prominenceai/nvvideoconv
rjhowell44 Sep 5, 2024
a0631c8
Complete v0.31.alpha Release Notes
rjhowell44 Sep 5, 2024
5c36432
Update release version to v0.31.alpha
rjhowell44 Sep 5, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Rename/move dsl_gst_bin_* to dsl_component_custom_*
  • Loading branch information
rjhowell44 committed Jun 24, 2024
commit b3b683b63431d23ae8a6afbb8f5b79032af346a1
2 changes: 1 addition & 1 deletion docs/api-branch.md
Original file line number Diff line number Diff line change
Expand Up @@ -233,7 +233,7 @@ retval = dsl_branch_component_remove_all('my-branch')
* [Sink](/docs/api-sink.md)
* **Branch**
* [Component](/docs/api-component.md)
* [Custom Component](/docs/api-gst.md)
* [GST Element](/docs/api-gst.md)
* [Pad Probe Handler](/docs/api-pph.md)
* [ODE Trigger](/docs/api-ode-trigger.md)
* [ODE Accumulator](/docs/api-ode-accumulator.md)
Expand Down
524 changes: 267 additions & 257 deletions docs/api-component.md

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion docs/api-dewarper.md
Original file line number Diff line number Diff line change
Expand Up @@ -236,7 +236,7 @@ retval = dsl_dewarper_num_batch_buffers_set('my-dewarper', 4)
* [Sink](/docs/api-sink.md)
* [Branch](/docs/api-branch.md)
* [Component](/docs/api-component.md)
* [Custom Component](/docs/api-gst.md)
* [GST Element](/docs/api-gst.md)
* [Pad Probe Handler](/docs/api-pph.md)
* [ODE Trigger](/docs/api-ode-trigger.md)
* [ODE Accumulator](/docs/api-ode-accumulator.md)
Expand Down
2 changes: 1 addition & 1 deletion docs/api-display-type.md
Original file line number Diff line number Diff line change
Expand Up @@ -1012,7 +1012,7 @@ retval = dsl_display_type_meta_add('blue-circle', buffer, frame_meta)
* [Sink](/docs/api-sink.md)
* [Branch](/docs/api-branch.md)
* [Component](/docs/api-component.md)
* [Custom Component](/docs/api-gst.md)
* [GST Element](/docs/api-gst.md)
* [Pad Probe Handler](/docs/api-pph.md)
* [ODE-Trigger](/docs/api-ode-trigger.md)
* [ODE Accumulator](/docs/api-ode-accumulator.md)
Expand Down
215 changes: 12 additions & 203 deletions docs/api-gst.md
Original file line number Diff line number Diff line change
@@ -1,79 +1,36 @@
# GStreamer (GST) Element and Bin API Reference
The GST API is used to create *Custom DSL Pipeline Components*. Once created, *Custom Components* are added to a [Pipeline](/docs/api-pipeline.md) the same as other built-in DSL Components.
# GStreamer (GST) Element API Reference
The GST API is used to create *Custom GStreamer (GST) Elements*. Once created, GST Elements can be added to either a Custom Video Source (TODO), [Custom Component](/docs/api-component.md#custom-components), or Custom Sink (TODO)).

IMPORTANT! All DSL Pipeline Components, custom or built-in, are derived from the [GStreamer (GST) Bin](https://gstreamer.freedesktop.org/documentation/application-development/basics/bins.html?gi-language=c) container class. Bins are used to contain [GST Elements](https://gstreamer.freedesktop.org/documentation/application-development/basics/bins.html?gi-language=c). Bins allow you to combine a group of linked Elements into one logical Element.

There are restrictions imposed on the type of Elements that can be created and added to a Bin:
* Single input pad and output pad only.
There are restrictions imposed on the type of Elements that can be created and added to one of the Custom Types.
Elements added to Custom Components
* Must have a single sink (input) pad and source (output) pad only.
* Therefore, no tees, muxers, aggregators, or demuxers (this list may not be complete).

The first Element in each Bin is typically a [queue](https://gstreamer.freedesktop.org/documentation/coreelements/queue.html?gi-language=c#properties). Adding a queue creates a new thread on the queue's source pad (output) which decouples the processing between input and output, effectively creating a new thread for the custom Pipeline Component.
The first element adde to a Custom Source
* Must be a Source element that can be connected via source pad and without a sink pad.

The last element added to a Custom Sink
* must be a Sink element that can be connected via sink pad and without a source pad.

## Construction and Destruction
GST Elements are created by calling [`dsl_gst_element_new`](#dsl_gst_element_new) and deleted by calling [`dsl_gst_element_delete`](#dsl_gst_element_delete), [`dsl_gst_element_delete_many`](#dsl_gst_element_delete_many), or [`dsl_gst_element_delete_all`](#dsl_gst_element_delete_all).

GST Bins are created by calling [`dsl_gst_bin_new`](#dsl_gst_bin_new) or [`dsl_gst_bin_new_element_add_many`](#dsl_gst_bin_new_element_add_many). As with all Pipeline Components, GST Bins are deleted by calling [`dsl_component_delete`](/docs/api-component.md#dsl_component_delete), [`dsl_component_delete_many`](/docs/api-component.md#dsl_component_delete_many), or [`dsl_component_delete_all`](/docs/api-component.md#dsl_component_delete_all).

## Adding and Removing
The relationship between GST Bins and GST Elements is one to many. Once added to a Bin, an Element must be removed before it can be used with another. Elements can be added to bins when constructed by calling [`dsl_gst_bin_new_element_add_many`](#dsl_gst_bin_new_element_add_many), or after construction by calling [`dsl_gst_bin_element_add`](#dsl_gst_bin_element_add) and [`dsl_gst_bin_element_add_many`](#dsl_gst_bin_element_add_many). GST Elements can be removed from a GST Bin by calling [`dsl_gst_bin_element_remove`](#dsl_gst_bin_element_remove) or [`dsl_gst_bin_element_remove_many`](#dsl_gst_bin_element_remove_many).

The relationship between Pipelines/Branches and GST Bins is one to many. Once added to a Pipeline or Branch, a Bin must be removed before it can be used with another. GST Bins are added to a Pipeline by calling [`dsl_pipeline_component_add`](/docs/api-pipeline.md#dsl_pipeline_component_add) or [`dsl_pipeline_component_add_many`](/docs/api-pipeline.md#dsl_pipeline_component_add_many) and removed with [`dsl_pipeline_component_remove`](/docs/api-pipeline.md#dsl_pipeline_component_remove), [`dsl_pipeline_component_remove_many`](/docs/api-pipeline.md#dsl_pipeline_component_remove_many), or [`dsl_pipeline_component_remove_all`](/docs/api-pipeline.md#dsl_pipeline_component_remove_all).

A similar set of Services are used when adding/removing a to/from a branch: [`dsl_branch_component_add`](api-branch.md#dsl_branch_component_add), [`dsl_branch_component_add_many`](/docs/api-branch.md#dsl_branch_component_add_many), [`dsl_branch_component_remove`](/docs/api-branch.md#dsl_branch_component_remove), [`dsl_branch_component_remove_many`](/docs/api-branch.md#dsl_branch_component_remove_many), and [`dsl_branch_component_remove_all`](/docs/api-branch.md#dsl_branch_component_remove_all).

Below is a simple example that creats two GST Elements and adds them to a new GST Bin.

```Python
# IMPORTANT! We create a queue element to be our first element of our bin.
# The queue will create a new thread on the source pad (output) to decouple
# the processing on sink and source pad, effectively creating a new thread for
# our custom component.
retval = dsl_gst_element_new('my-queue', 'queue')

# Create a new element from a proprietary plugin
retval = dsl_gst_element_new('my-element', 'my-plugin-name')

# Create a new bin and add the elements to it. The elements will be linked
# in the order they're added.
ret_val = dsl_gst_bin_new_element_add_many('my-custom-bin',
elements = ['my-queue', 'my-element', None])

# The Custom Component can now be added to our Pipeline along with
# the other Pipeline components. Add in the order to be linked.
retval = dsl_pipeline_new_component_add_many('pipeline',
['my-source', 'my-primary-gie', 'my-iou-tracker', 'my-custom-bin',
'my-on-screen-display', 'my-egl-sink', None])

# IMPORTANT! set the link method for the Pipeline to link by
# add order (and not by fixed position - default)
retval = dsl_pipeline_link_method_set('pipeline',
DSL_PIPELINE_LINK_METHOD_BY_ADD_ORDER)
```

## Adding/Removing Pad-Probe-handlers
Multiple sink (input) and/or source (output) [Pad-Probe Handlers](/docs/api-pph.md) can be added to any Primary or Secondary GIE or TIS by calling [`dsl_gst_element_pph_add`](#dsl_gst_element_pph_add) and removed with [`dsl_gst_element_pph_remove`](#dsl_gst_element_pph_remove).

## Relevant Examples
For relevant examples see:
* [pipeline_with_custom_gst_bin_and_elements.py](/examples/python/pipeline_with_custom_gst_bin_and_elements.py)
* [pipeline_with_custom_gst_bin_and_elements.cpp](/examples/python/pipeline_with_custom_gst_bin_and_elements.cpp)

---


## GST API
**Constructors**
* [`dsl_gst_element_new`](#dsl_gst_element_new)
* [`dsl_gst_bin_new`](#dsl_gst_bin_new)
* [`dsl_gst_bin_new_element_add_many`](#dsl_gst_bin_new_element_add_many)


**Destructors**
* [`dsl_gst_element_delete`](#dsl_gst_element_delete)
* [`dsl_gst_element_delete_many`](#dsl_gst_element_delete_many)
* [`dsl_gst_element_delete_all`](#dsl_gst_element_delete_all)


**Methods**
* [`dsl_gst_element_property_boolean_get`](#dsl_gst_element_property_boolean_get)
* [`dsl_gst_element_property_boolean_set`](#dsl_gst_element_property_boolean_set)
Expand All @@ -91,17 +48,11 @@ For relevant examples see:
* [`dsl_gst_element_property_string_set`](#dsl_gst_element_property_string_set)
* [`dsl_gst_element_pph_add`](#dsl_gst_element_pph_add)
* [`dsl_gst_element_pph_remove`](#dsl_gst_element_pph_remove)
* [`dsl_gst_bin_element_add`](#dsl_gst_bin_element_add)
* [`dsl_gst_bin_element_add_many`](#dsl_gst_bin_element_add_many)
* [`dsl_gst_bin_element_remove`](#dsl_gst_bin_element_remove)
* [`dsl_gst_bin_element_remove_many`](#dsl_gst_bin_element_remove_many)


---
## Return Values
The following return codes are used by the GStreamer Element API


```C
#define DSL_RESULT_GST_ELEMENT_RESULT 0x00D00000
#define DSL_RESULT_GST_ELEMENT_NAME_NOT_UNIQUE 0x00D00001
Expand All @@ -114,21 +65,6 @@ The following return codes are used by the GStreamer Element API
#define DSL_RESULT_GST_ELEMENT_PAD_TYPE_INVALID 0x00D00008
```


The following return codes are used by the GStreamer Element API
```C
#define DSL_RESULT_GST_BIN_RESULT 0x00E00000
#define DSL_RESULT_GST_BIN_NAME_NOT_UNIQUE 0x00E00001
#define DSL_RESULT_GST_BIN_NAME_NOT_FOUND 0x00E00002
#define DSL_RESULT_GST_BIN_NAME_BAD_FORMAT 0x00E00003
#define DSL_RESULT_GST_BIN_THREW_EXCEPTION 0x00E00004
#define DSL_RESULT_GST_BIN_IS_IN_USE 0x00E00005
#define DSL_RESULT_GST_BIN_SET_FAILED 0x00E00006
#define DSL_RESULT_GST_BIN_ELEMENT_ADD_FAILED 0x00E00007
#define DSL_RESULT_GST_BIN_ELEMENT_REMOVE_FAILED 0x00E00008
#define DSL_RESULT_GST_BIN_ELEMENT_NOT_IN_USE 0x00E00009
```

---

## Constructors
Expand All @@ -151,48 +87,6 @@ This constructor creates a uniquely named GStreamer Element from a plugin factor
retval = dsl_gst_element_new('my-element', 'my-plugin)
```

<br>

### *dsl_gst_bin_new*
```C++
DslReturnType dsl_gst_bin_new(const wchar_t* name);
```
This constructor creates a uniquely named GStreamer Bin. Construction will fail if the name is currently in use.

**Parameters**
* `name` - [in] unique name for the GStreamer Been to create.

**Returns**
`DSL_RESULT_SUCCESS` on successful creation. One of the [Return Values](#return-values) defined above on failure

**Python Example**
```Python
retval = dsl_gst_bin_new('my-bin')
```

<br>


### *dsl_gst_bin_new_element_add_many*
```C++
DslReturnType dsl_gst_bin_new_element_add_many(const wchar_t* name,
const wchar_t** components);
```
This constructor creates a uniquely named GStreamer Bin and adds a list of Elements to it. Construction will fail if the name is currently in use.

**Parameters**
* `name` - [in] unique name for the GStreamer Been to create.
* `components` - [in] NULL terminated array of Element names to add.

**Returns**
`DSL_RESULT_SUCCESS` on successful creation. One of the [Return Values](#return-values) defined above on failure

**Python Example**
```Python
retval = dsl_gst_bin_new_element_add_many('my-bin',
[my-element-1, my-element-2, my-element-3, None])
```

---

## Destructors
Expand All @@ -201,17 +95,15 @@ retval = dsl_gst_bin_new_element_add_many('my-bin',
```C++
DslReturnType dsl_gst_element_delete(const wchar_t* name);
```
This destructor deletes a uniquely named GStreamer Element. This service will fail if the element is currently in-use with a GST Bin.
This destructor deletes a uniquely named GStreamer Element. This service will fail if the element is currently in-use .


**Parameters**
* `name` - [in] unique name for the GStreamer Element to delete.


**Returns**
`DSL_RESULT_SUCCESS` on successful deletion. One of the [Return Values](#return-values) defined above on failure


**Python Example**
```Python
retval = dsl_gst_element_delete('my-element')
Expand All @@ -225,11 +117,9 @@ DslReturnType dsl_gst_element_delete_many(const wchar_t** names);
```
This destructor deletes a NULL terminated list of GStreamer Elements. This service will return with an error if any of the Elements are currently in-use or not found.


**Parameters**
* `names` - [in] NULL terminated list of GStreamer Elements to delete.


**Returns**
`DSL_RESULT_SUCCESS` on successful deletion. One of the [Return Values](#return-values) defined above on failure

Expand Down Expand Up @@ -626,87 +516,7 @@ retval = dsl_gst_element_pph_remove('my-element', 'my-pph-handler', DSL_PAD_SINK

<br>

### *dsl_gst_bin_element_add*
```C++
DslReturnType dsl_gst_bin_element_add(const wchar_t* name, const wchar_t* element);
```
This service adds a single named Element to a named Bin. The add service will fail if the Element is currently `in-use` by any Bin. The Element's `in-use` state will be set to `true` on successful add.

**Parameters**
* `name` - [in] unique name for the Bin to update.
* `element` - [in] unique name of the Element to add.

**Returns**
* `DSL_RESULT_SUCCESS` on successful addition. One of the [Return Values](#return-values) defined above on failure

**Python Example**
```Python
retval = dsl_gst_bin_element_add('my-bin', 'my-element')
```

<br>

### *dsl_gst_bin_element_add_many*
```C++
DslReturnType dsl_gst_bin_element_add_many(const wchar_t* name, const wchar_t** elements);
```
Adds a list of named Elements to a named Bin. The add service will fail if any of the Elements are currently `in-use` by any Bin. All of the Element's `in-use` state will be set to true on successful add.

* `name` - [in] unique name for the Bin to update.
* `elements` - [in] a NULL terminated array of uniquely named Elements to add.

**Returns**
* `DSL_RESULT_SUCCESS` on successful addition. One of the [Return Values](#return-values) defined above on failure.


**Python Example**
```Python
retval = dsl_gst_bin_element_add_many('my-bin',
['my-element-1', 'my-element-2', None])
```

<br>

---
### *dsl_gst_bin_element_remove*
```C++
DslReturnType dsl_gst_bin_element_remove(const wchar_t* name, const wchar_t* element);
```
This service removes a single named Element from a named Bin.

**Parameters**
* `name` - [in] unique name for the Bin to update.
* `element` - [in] unique name of the Element to remove.

**Returns**
* `DSL_RESULT_SUCCESS` on successful removal. One of the [Return Values](#return-values) defined above on failure

**Python Example**
```Python
retval = dsl_gst_bin_element_remove('my-bin', 'my-element')
```

<br>

### *dsl_gst_bin_element_remove_many*
```C++
DslReturnType dsl_gst_bin_element_remove_many(const wchar_t* name, const wchar_t** elements);
```
Removes a list of named Elements from a named Bin.

* `name` - [in] unique name for the Bin to update.
* `elements` - [in] a NULL terminated array of uniquely named Elements to remove.

**Returns**
* `DSL_RESULT_SUCCESS` on successful removal. One of the [Return Values](#return-values) defined above on failure.

**Python Example**
```Python
retval = dsl_gst_bin_element_remove_many('my-bin',
['my-element-1', 'my-element-2', None])
```

<br>

## API Reference
* [List of all Services](/docs/api-reference-list.md)
Expand All @@ -724,7 +534,7 @@ retval = dsl_gst_bin_element_remove_many('my-bin',
* [Remuxer](/docs/api-remuxer.md)
* [On-Screen Display](/docs/api-osd.md)
* [Sink](/docs/api-sink.md)
* **Custom Component**
* **GST Element**
* [Pad Probe Handler](/docs/api-pph.md)
* [ODE Trigger](/docs/api-ode-trigger.md)
* [ODE Accumulator](/docs/api-ode-accumulator.md)
Expand All @@ -734,7 +544,6 @@ retval = dsl_gst_bin_element_remove_many('my-bin',
* [Display Types](/docs/api-display-types.md)
* [branch](/docs/api-branch.md)
* [Component](/docs/api-component.md)

* [Mailer](/docs/api-mailer.md)
* [WebSocket Server](/docs/api-ws-server.md)
* [Message Broker](/docs/api-msg-broker.md)
Expand Down
2 changes: 1 addition & 1 deletion docs/api-infer.md
Original file line number Diff line number Diff line change
Expand Up @@ -502,7 +502,7 @@ retval = dsl_infer_pph_remove('my-primary-gie', 'my-pph-handler', DSL_PAD_SINK)
* [Sink](/docs/api-sink.md)
* [Branch](/docs/api-branch.md)
* [Component](/docs/api-component.md)
* [Custom Component](/docs/api-gst.md)
* [GST Element](/docs/api-gst.md)
* [Pad Probe Handler](/docs/api-pph.md)
* [ODE Trigger](/docs/api-ode-trigger.md)
* [ODE Accumulator](/docs/api-ode-accumulator.md)
Expand Down
2 changes: 1 addition & 1 deletion docs/api-info.md
Original file line number Diff line number Diff line change
Expand Up @@ -309,7 +309,7 @@ retval = dsl_info_log_function_restore()
* [Sink](/docs/api-sink.md)
* [Branch](/docs/api-branch.md)
* [Component](/docs/api-component.md)
* [Custom Component](/docs/api-gst.md)
* [GST Element](/docs/api-gst.md)
* [Pad Probe Handler](/docs/api-pph.md)
* [ODE Trigger](/docs/api-ode-trigger.md)
* [ODE Accumulator](/docs/api-ode-accumulator.md)
Expand Down
2 changes: 1 addition & 1 deletion docs/api-mailer.md
Original file line number Diff line number Diff line change
Expand Up @@ -503,7 +503,7 @@ num_mailers = dsl_mailer_list_size()
* [Sink](/docs/api-sink.md)
* [Branch](/docs/api-branch.md)
* [Component](/docs/api-component.md)
* [Custom Component](/docs/api-gst.md)
* [GST Element](/docs/api-gst.md)
* [Pad Probe Handler](/docs/api-pad-probe-handler.md)
* [ODE Trigger](/docs/api-ode-trigger.md)
* [ODE Accumulator](/docs/api-ode-accumulator.md)
Expand Down
2 changes: 1 addition & 1 deletion docs/api-msg-broker.md
Original file line number Diff line number Diff line change
Expand Up @@ -491,7 +491,7 @@ size = dsl_message_broker_list_size()
* [Sink](/docs/api-sink.md)
* [Branch](/docs/api-branch.md)
* [Component](/docs/api-component.md)
* [Custom Component](/docs/api-gst.md)
* [GST Element](/docs/api-gst.md)
* [Pad Probe Handler](/docs/api-pph.md)
* [ODE Trigger](/docs/api-ode-trigger.md)
* [ODE Accumulator](/docs/api-ode-accumulator.md)
Expand Down
2 changes: 1 addition & 1 deletion docs/api-ode-accumulator.md
Original file line number Diff line number Diff line change
Expand Up @@ -276,7 +276,7 @@ size = dsl_ode_accumulator_list_size()
* [Sink](/docs/api-sink.md)
* [Branch](/docs/api-branch.md)
* [Component](/docs/api-component.md)
* [Custom Component](/docs/api-gst.md)
* [GST Element](/docs/api-gst.md)
* [Pad Probe Handler](/docs/api-pph.md)
* [ODE Trigger](/docs/api-ode-trigger.md)
* **ODE Accumulator**
Expand Down
2 changes: 1 addition & 1 deletion docs/api-ode-action.md
Original file line number Diff line number Diff line change
Expand Up @@ -1935,7 +1935,7 @@ size = dsl_ode_action_list_size()
* [Sink](/docs/api-sink.md)
* [Branch](/docs/api-branch.md)
* [Component](/docs/api-component.md)
* [Custom Component](/docs/api-gst.md)
* [GST Element](/docs/api-gst.md)
* [Pad Probe Handler](/docs/api-pph.md)
* [ODE Trigger](/docs/api-ode-trigger.md)
* [ODE Accumulator](/docs/api-ode-accumulator.md)
Expand Down
Loading