]> git.sesse.net Git - vlc/commitdiff
RTP: print an explanatory error in case of dynamic payload format
authorRémi Denis-Courmont <remi@remlab.net>
Fri, 4 Nov 2011 15:54:43 +0000 (17:54 +0200)
committerRémi Denis-Courmont <remi@remlab.net>
Fri, 4 Nov 2011 16:10:14 +0000 (18:10 +0200)
modules/access/rtp/input.c
modules/access/rtp/rtp.c
modules/access/rtp/rtp.h

index 1641c1af4bdf9fd019239a8c78120ae2199f6975..230014301181ea0b49ad49f3b8192373eb645cc0 100644 (file)
@@ -69,8 +69,7 @@ static void rtp_process (demux_t *demux, block_t *block)
     /* TODO: use SDP and get rid of this hack */
     if (unlikely(sys->autodetect))
     {   /* Autodetect payload type, _before_ rtp_queue() */
-        if (rtp_autodetect (demux, sys->session, block))
-            goto drop;
+        rtp_autodetect (demux, sys->session, block);
         sys->autodetect = false;
     }
 
index c6fea438cce69c9e951672a8875928c078c0a238..d0a8fa22c495ca8916e20082abf7f04309b9e68c 100644 (file)
@@ -32,6 +32,7 @@
 #include <vlc_demux.h>
 #include <vlc_network.h>
 #include <vlc_plugin.h>
+#include <vlc_dialog.h>
 
 #include "rtp.h"
 #ifdef HAVE_SRTP
@@ -613,8 +614,8 @@ static void *ts_init (demux_t *demux)
 
 /* Not using SDP, we need to guess the payload format used */
 /* see http://www.iana.org/assignments/rtp-parameters */
-int rtp_autodetect (demux_t *demux, rtp_session_t *session,
-                    const block_t *block)
+void rtp_autodetect (demux_t *demux, rtp_session_t *session,
+                     const block_t *block)
 {
     uint8_t ptype = rtp_ptype (block);
     rtp_pt_t pt = {
@@ -715,14 +716,20 @@ int rtp_autodetect (demux_t *demux, rtp_session_t *session,
                 pt.frequency = 90000;
             }
             else
-                msg_Err (demux, "invalid dynamic payload format `%s' "
+                msg_Err (demux, "unknown dynamic payload format `%s' "
                                 "specified", dynamic);
             free (dynamic);
         }
-        return -1;
+
+        msg_Err (demux, "unspecified payload format (type %"PRIu8")", ptype);
+        msg_Info (demux, "A valid SDP is needed to parse this RTP stream.");
+        dialog_Fatal (demux, N_("SDP required"),
+             N_("A description in SDP format is required to receive the RTP "
+                "stream. Note that rtp:// URIs cannot work with dynamic "
+                "RTP payload format (%"PRIu8")."), ptype);
+        return;
     }
     rtp_add_type (demux, session, &pt);
-    return 0;
 }
 
 /*
index 0e2d2806266ba094ea79b0d18ccd9420d07aeef5..1625d161112eec7bf65243fadaf1065ecef00e3d 100644 (file)
@@ -32,7 +32,7 @@ struct rtp_pt_t
     uint32_t  frequency; /* RTP clock rate (Hz) */
     uint8_t   number;
 };
-int rtp_autodetect (demux_t *, rtp_session_t *, const block_t *);
+void rtp_autodetect (demux_t *, rtp_session_t *, const block_t *);
 
 static inline uint8_t rtp_ptype (const block_t *block)
 {