mirror of
https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs.git
synced 2024-11-26 05:21:00 +00:00
net/webrtc: multi producer support in webrtcsrc
- Add a new structure Session - manage each producer using a session - avoid send EOS when a session terminates, instead keep running waiting for any new producer to connect - Maintain a bin element per session - each session bin encapsulates webrtcbin and the decoder if needed as well as the parser and filter if requested by the application (through request-encoded-filter) - this will be helpful to cleanup the session's respective elements when the corresponding producer terminates the session Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1339>
This commit is contained in:
parent
ebdcc403cf
commit
de726ca8d2
2 changed files with 610 additions and 402 deletions
|
@ -9307,12 +9307,24 @@
|
||||||
],
|
],
|
||||||
"klass": "Source/Network/WebRTC",
|
"klass": "Source/Network/WebRTC",
|
||||||
"pad-templates": {
|
"pad-templates": {
|
||||||
|
"audio_%%s_%%u": {
|
||||||
|
"caps": "audio/x-raw(ANY):\napplication/x-rtp:\naudio/x-opus:\n",
|
||||||
|
"direction": "src",
|
||||||
|
"presence": "sometimes",
|
||||||
|
"type": "GstWebRTCSrcPad"
|
||||||
|
},
|
||||||
"audio_%%u": {
|
"audio_%%u": {
|
||||||
"caps": "audio/x-raw(ANY):\napplication/x-rtp:\naudio/x-opus:\n",
|
"caps": "audio/x-raw(ANY):\napplication/x-rtp:\naudio/x-opus:\n",
|
||||||
"direction": "src",
|
"direction": "src",
|
||||||
"presence": "sometimes",
|
"presence": "sometimes",
|
||||||
"type": "GstWebRTCSrcPad"
|
"type": "GstWebRTCSrcPad"
|
||||||
},
|
},
|
||||||
|
"video_%%s_%%u": {
|
||||||
|
"caps": "video/x-raw(ANY):\napplication/x-rtp:\nvideo/x-vp8:\nvideo/x-h264:\nvideo/x-vp9:\nvideo/x-h265:\nvideo/x-av1:\n",
|
||||||
|
"direction": "src",
|
||||||
|
"presence": "sometimes",
|
||||||
|
"type": "GstWebRTCSrcPad"
|
||||||
|
},
|
||||||
"video_%%u": {
|
"video_%%u": {
|
||||||
"caps": "video/x-raw(ANY):\napplication/x-rtp:\nvideo/x-vp8:\nvideo/x-h264:\nvideo/x-vp9:\nvideo/x-h265:\nvideo/x-av1:\n",
|
"caps": "video/x-raw(ANY):\napplication/x-rtp:\nvideo/x-vp8:\nvideo/x-h264:\nvideo/x-vp9:\nvideo/x-h265:\nvideo/x-av1:\n",
|
||||||
"direction": "src",
|
"direction": "src",
|
||||||
|
@ -9374,12 +9386,24 @@
|
||||||
"klass": "Source/Network/WebRTC",
|
"klass": "Source/Network/WebRTC",
|
||||||
"long-name": "WebRTCSrc",
|
"long-name": "WebRTCSrc",
|
||||||
"pad-templates": {
|
"pad-templates": {
|
||||||
|
"audio_%%s_%%u": {
|
||||||
|
"caps": "audio/x-raw(ANY):\napplication/x-rtp:\naudio/x-opus:\n",
|
||||||
|
"direction": "src",
|
||||||
|
"presence": "sometimes",
|
||||||
|
"type": "GstWebRTCSrcPad"
|
||||||
|
},
|
||||||
"audio_%%u": {
|
"audio_%%u": {
|
||||||
"caps": "audio/x-raw(ANY):\napplication/x-rtp:\naudio/x-opus:\n",
|
"caps": "audio/x-raw(ANY):\napplication/x-rtp:\naudio/x-opus:\n",
|
||||||
"direction": "src",
|
"direction": "src",
|
||||||
"presence": "sometimes",
|
"presence": "sometimes",
|
||||||
"type": "GstWebRTCSrcPad"
|
"type": "GstWebRTCSrcPad"
|
||||||
},
|
},
|
||||||
|
"video_%%s_%%u": {
|
||||||
|
"caps": "video/x-raw(ANY):\napplication/x-rtp:\nvideo/x-vp8:\nvideo/x-h264:\nvideo/x-vp9:\nvideo/x-h265:\nvideo/x-av1:\n",
|
||||||
|
"direction": "src",
|
||||||
|
"presence": "sometimes",
|
||||||
|
"type": "GstWebRTCSrcPad"
|
||||||
|
},
|
||||||
"video_%%u": {
|
"video_%%u": {
|
||||||
"caps": "video/x-raw(ANY):\napplication/x-rtp:\nvideo/x-vp8:\nvideo/x-h264:\nvideo/x-vp9:\nvideo/x-h265:\nvideo/x-av1:\n",
|
"caps": "video/x-raw(ANY):\napplication/x-rtp:\nvideo/x-vp8:\nvideo/x-h264:\nvideo/x-vp9:\nvideo/x-h265:\nvideo/x-av1:\n",
|
||||||
"direction": "src",
|
"direction": "src",
|
||||||
|
@ -9439,12 +9463,24 @@
|
||||||
],
|
],
|
||||||
"klass": "Source/Network/WebRTC",
|
"klass": "Source/Network/WebRTC",
|
||||||
"pad-templates": {
|
"pad-templates": {
|
||||||
|
"audio_%%s_%%u": {
|
||||||
|
"caps": "audio/x-raw(ANY):\napplication/x-rtp:\naudio/x-opus:\n",
|
||||||
|
"direction": "src",
|
||||||
|
"presence": "sometimes",
|
||||||
|
"type": "GstWebRTCSrcPad"
|
||||||
|
},
|
||||||
"audio_%%u": {
|
"audio_%%u": {
|
||||||
"caps": "audio/x-raw(ANY):\napplication/x-rtp:\naudio/x-opus:\n",
|
"caps": "audio/x-raw(ANY):\napplication/x-rtp:\naudio/x-opus:\n",
|
||||||
"direction": "src",
|
"direction": "src",
|
||||||
"presence": "sometimes",
|
"presence": "sometimes",
|
||||||
"type": "GstWebRTCSrcPad"
|
"type": "GstWebRTCSrcPad"
|
||||||
},
|
},
|
||||||
|
"video_%%s_%%u": {
|
||||||
|
"caps": "video/x-raw(ANY):\napplication/x-rtp:\nvideo/x-vp8:\nvideo/x-h264:\nvideo/x-vp9:\nvideo/x-h265:\nvideo/x-av1:\n",
|
||||||
|
"direction": "src",
|
||||||
|
"presence": "sometimes",
|
||||||
|
"type": "GstWebRTCSrcPad"
|
||||||
|
},
|
||||||
"video_%%u": {
|
"video_%%u": {
|
||||||
"caps": "video/x-raw(ANY):\napplication/x-rtp:\nvideo/x-vp8:\nvideo/x-h264:\nvideo/x-vp9:\nvideo/x-h265:\nvideo/x-av1:\n",
|
"caps": "video/x-raw(ANY):\napplication/x-rtp:\nvideo/x-vp8:\nvideo/x-h264:\nvideo/x-vp9:\nvideo/x-h265:\nvideo/x-av1:\n",
|
||||||
"direction": "src",
|
"direction": "src",
|
||||||
|
|
File diff suppressed because it is too large
Load diff
Loading…
Reference in a new issue