rtspsrc: Fix up sendonly/recvonly attribute handling
authorSebastian Dröge <sebastian@centricular.com>
Mon, 22 Jan 2018 10:24:18 +0000 (12:24 +0200)
committerSebastian Dröge <sebastian@centricular.com>
Mon, 22 Jan 2018 10:24:18 +0000 (12:24 +0200)
We can't handle recvonly streams, sendonly streams are perfectly fine.

The direction is the one from the point of view of the SDP offerer
(i.e. the RTSP server), and a recvonly stream would be one where the
server expects us to send media.

RFC 3264, section 5.1:
   If the offerer wishes to only send media on a stream to its peer, it
   MUST mark the stream as sendonly with the "a=sendonly" attribute.

This is mixed up in the ONVIF streaming specification examples, but
actual implementations and conformance tools seem to not care at all
about the attributes.

https://bugzilla.gnome.org/show_bug.cgi?id=792376

gst/rtsp/gstrtspsrc.c

index 7aa1f09..d636073 100644 (file)
@@ -1705,8 +1705,8 @@ gst_rtspsrc_collect_payloads (GstRTSPSrc * src, const GstSDPMessage * sdp,
   else
     goto unknown_proto;
 
-  if (gst_sdp_media_get_attribute_val (media, "sendonly") != NULL)
-    goto sendonly_media;
+  if (gst_sdp_media_get_attribute_val (media, "recvonly") != NULL)
+    goto recvonly_media;
 
   /* Parse global SDP attributes once */
   global_caps = gst_caps_new_empty_simple ("application/x-unknown");
@@ -1777,9 +1777,9 @@ unknown_proto:
     GST_ERROR_OBJECT (src, "unknown proto in media: '%s'", proto);
     return;
   }
-sendonly_media:
+recvonly_media:
   {
-    GST_DEBUG_OBJECT (src, "sendonly media ignored");
+    GST_DEBUG_OBJECT (src, "recvonly media ignored");
     return;
   }
 }