From: RĂ©mi Denis-Courmont Date: Fri, 4 Nov 2011 15:54:43 +0000 (+0200) Subject: RTP: print an explanatory error in case of dynamic payload format X-Git-Tag: 1.3.0-git~473 X-Git-Url: https://git.sesse.net/?a=commitdiff_plain;h=6af92f68167d947106ddd6cb90ec9f9234910339;p=vlc RTP: print an explanatory error in case of dynamic payload format --- diff --git a/modules/access/rtp/input.c b/modules/access/rtp/input.c index 1641c1af4b..2300143011 100644 --- a/modules/access/rtp/input.c +++ b/modules/access/rtp/input.c @@ -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; } diff --git a/modules/access/rtp/rtp.c b/modules/access/rtp/rtp.c index c6fea438cc..d0a8fa22c4 100644 --- a/modules/access/rtp/rtp.c +++ b/modules/access/rtp/rtp.c @@ -32,6 +32,7 @@ #include #include #include +#include #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; } /* diff --git a/modules/access/rtp/rtp.h b/modules/access/rtp/rtp.h index 0e2d280626..1625d16111 100644 --- a/modules/access/rtp/rtp.h +++ b/modules/access/rtp/rtp.h @@ -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) {