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 794143 - support for rtsp onvif audio backchannel does not work correctly
support for rtsp onvif audio backchannel does not work correctly
Status: RESOLVED NOTABUG
Product: GStreamer
Classification: Platform
Component: gst-rtsp-server
git master
Other Windows
: Normal normal
: git master
Assigned To: GStreamer Maintainers
GStreamer Maintainers
Depends on:
Blocks:
 
 
Reported: 2018-03-07 05:28 UTC by daihongjun
Modified: 2018-03-07 14:16 UTC
See Also:
GNOME target: ---
GNOME version: ---



Description daihongjun 2018-03-07 05:28:41 UTC
Try to play back with the test-onvif example as client from gst-plugins-good/tests/examples/rtsp.

But made a little modification on the source code of the test-onvif-backchannel example from gst-rtsp-server\examples\test-onvif-backchannel.c.

The original backchannel pipeline is created by code snippet

gst_rtsp_onvif_media_factory_set_backchannel_launch
      (GST_RTSP_ONVIF_MEDIA_FACTORY (factory),
      "( capsfilter caps=\"application/x-rtp, media=audio, payload=0, clock-rate=8000, encoding-name=PCMU\" name=depay_backchannel ! rtppcmudepay ! fakesink async=false  )");

which is replaced by the following code

gst_rtsp_onvif_media_factory_set_backchannel_launch
      (GST_RTSP_ONVIF_MEDIA_FACTORY (factory),
      "( capsfilter caps=\"application/x-rtp, media=audio, payload=0, clock-rate=8000, encoding-name=PCMU\" name=depay_backchannel ! rtppcmudepay ! mulawdec ! directsoundsink  )");

which create backchannel pipeline to play back with directsoundsink.

gst-rtsp-server print the error message on console like
  rtspclient rtsp-client.c:1744:handle_play_request: client 0000000002DF6E00: unsuspend failed.
Comment 1 Sebastian Dröge (slomo) 2018-03-07 10:02:26 UTC
The sink has to be async=true, otherwise the media pipeline in the server won't ever pre-roll. Pre-rolling is required for sending out the SDP, and pre-rolling would otherwise only happen once we received data on the backchannel.
Comment 2 Sebastian Dröge (slomo) 2018-03-07 10:20:31 UTC
commit e5527e4403ca096f9c671b626d520b14808ea165 (HEAD -> master)
Author: Sebastian Dröge <sebastian@centricular.com>
Date:   Wed Mar 7 12:20:05 2018 +0200

    rtsp-onvif-media-factory: Document that backchannel pipelines must end with async=false sinks
    
    https://bugzilla.gnome.org/show_bug.cgi?id=794143