After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 780876 - [rtspsrc] Returning TRUE in the select-stream signal does not check for other streams
[rtspsrc] Returning TRUE in the select-stream signal does not check for other...
Status: RESOLVED OBSOLETE
Product: GStreamer
Classification: Platform
Component: gst-plugins-good
1.10.4
Other Linux
: Normal normal
: git master
Assigned To: GStreamer Maintainers
GStreamer Maintainers
Depends on:
Blocks:
 
 
Reported: 2017-04-03 15:55 UTC by Julian Bouzas
Modified: 2018-11-03 15:17 UTC
See Also:
GNOME target: ---
GNOME version: ---



Description Julian Bouzas 2017-04-03 15:55:32 UTC
Hi,

Not sure if this is a bug or a feature but I will try to explain it as best as I can.

We have an RTSP source that has 2 streams: a *video* stream and a *metadata* stream. For some reason, the metadata stream from that source does not work properly and causes the rtspsrc element to not play the video stream, which I suppose it is the desired behavior.

However, since we do not care about that *metadata* stream, I was planning to use the `select-stream` signal from rtspsrc to only select the video stream and so discard the metadata stream, but it does not work as I expect because the callback seems to be removed after returning TRUE for the first time.

In my case, the first stream that is checked is the video stream, so returning TRUE will also select the metadata stream because the signal handler will NOT be called again. However, if I return FALSE when checking the video stream, the signal handler will be called for the metadata stream:

Video    -> signal handler is called and TRUE is returned
Metadata -> signal handler is not called but the stream is also selected

Video    -> signal handler is called and I return FALSE
Metadata -> signal handler is called

Shouldn't the signal handler be always called regardless of the return value of the previous call? In my case, it is not possible to just select the video stream and ignore the metadata stream because of the order they are checked.

If I add a small hack into the gst_rtspsrc_setup_streams() function (from gst/rtsp/rtspsrc.c) to only select the video stream in the for loop, the rtspsrc element plays the video stream fine without any issues:

https://cgit.freedesktop.org/gstreamer/gst-plugins-good/tree/gst/rtsp/gstrtspsrc.c#n5948
Comment 1 Julian Bouzas 2017-05-08 14:42:25 UTC
Has anybody started looking into this?
Comment 2 GStreamer system administrator 2018-11-03 15:17:53 UTC
-- GitLab Migration Automatic Message --

This bug has been migrated to freedesktop.org's GitLab instance and has been closed from further activity.

You can subscribe and participate further through the new bug through this link to our GitLab instance: https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/issues/361.