# Decouple display and UDP stream

**URL:** <https://discourse.gstreamer.org/t/decouple-display-and-udp-stream/4160>\
**Category:** Application Development\
**Created:** [February 18, 2025, 11:17pm UTC](https://discourse.gstreamer.org/t/decouple-display-and-udp-stream/4160 "2025-02-18T23:17:53Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![rottnest](https://discourse.gstreamer.org/user_avatar/discourse.gstreamer.org/rottnest/32/136_2.png) [@rottnest](https://discourse.gstreamer.org/u/rottnest)\
**Post date:** [February 18, 2025, 11:17pm UTC](https://discourse.gstreamer.org/t/decouple-display-and-udp-stream/4160/1 "2025-02-18T23:17:53Z")

</div>

I have a pipeline that displays a camera and streams it.  
(This is an app I deploy). I did a check for CARRIER on the network before I multicast it.  
I recently had a problem: The app-machine (linux) is plugged in but not to a DHCP server. So there was CARRIER, but no IP and video failed.  
I want to decouple UDP and display so that even if network is bad or fails the display (and record) continues.  
RidgeRun’s interpipe seems ideal but when I played with it, early days of development so it may be another cause, it seemed to get CPU usage from 50% to 100% (4 cameras, text overlay, clockoverlay, record, display and multicast)  
Any suggestions so the UDP pipeline can freeze without affecting the display

---

<div class="post-metadata">

**Author:** ![tpm](https://discourse.gstreamer.org/letter_avatar_proxy/v4/letter/t/c5a1d2/32.png) [@tpm](https://discourse.gstreamer.org/u/tpm)\
**Post date:** [February 19, 2025, 12:17am UTC](https://discourse.gstreamer.org/t/decouple-display-and-udp-stream/4160/2 "2025-02-19T00:17:12Z")

</div>

What happens now in this case?

Will `udpsink` return an error or?

If so, you could add an `errorignore` element between the upstream `tee` and your `udpsink` (might want to set the property to make it turn errors into flow-ok instead of flow-notlinked).

Note that this won’t stop the sink from posting error messages, but it will prevent upstream elements from seeing the error and stopping streaming.

In the application you can check the source of the error message and ignore it.

---

<div class="post-metadata">

**Author:** ![rottnest](https://discourse.gstreamer.org/user_avatar/discourse.gstreamer.org/rottnest/32/136_2.png) [@rottnest](https://discourse.gstreamer.org/u/rottnest)\
**Post date:** [February 19, 2025, 3:19am UTC](https://discourse.gstreamer.org/t/decouple-display-and-udp-stream/4160/3 "2025-02-19T03:19:23Z")

</div>

UDP-1 start main pipe. Status:GST\_STATE\_VOID\_PENDING no pending state  
UDP-1 [error] received from element udpsink0: Could not get/set settings from/on resource.  
UDP-1 [error] received from element udpsink0: GStreamer error: state change failed and some element failed to post a proper error message with the reason for the failure.

Thanks I’ll add the errorignore and try that

---

<div class="post-metadata">

**Author:** ![tpm](https://discourse.gstreamer.org/letter_avatar_proxy/v4/letter/t/c5a1d2/32.png) [@tpm](https://discourse.gstreamer.org/u/tpm)\
**Post date:** [February 19, 2025, 12:06pm UTC](https://discourse.gstreamer.org/t/decouple-display-and-udp-stream/4160/4 "2025-02-19T12:06:24Z")

</div>

You could perhaps create a `multiudpsink` with no recipients initially and then add recipients with the `add-client` action signal once the interface is up, although I guess it will still fail to bind if there’s no interface.

---

<div class="post-metadata">

**Author:** ![rottnest](https://discourse.gstreamer.org/user_avatar/discourse.gstreamer.org/rottnest/32/136_2.png) [@rottnest](https://discourse.gstreamer.org/u/rottnest)\
**Post date:** [February 19, 2025, 1:20pm UTC](https://discourse.gstreamer.org/t/decouple-display-and-udp-stream/4160/5 "2025-02-19T13:20:49Z")

</div>

The errorignore solution seems to be just-the-ticket
