Commit 6af92f68 authored by Rémi Denis-Courmont's avatar Rémi Denis-Courmont

RTP: print an explanatory error in case of dynamic payload format

parent 3c5962b1
...@@ -69,8 +69,7 @@ static void rtp_process (demux_t *demux, block_t *block) ...@@ -69,8 +69,7 @@ static void rtp_process (demux_t *demux, block_t *block)
/* TODO: use SDP and get rid of this hack */ /* TODO: use SDP and get rid of this hack */
if (unlikely(sys->autodetect)) if (unlikely(sys->autodetect))
{ /* Autodetect payload type, _before_ rtp_queue() */ { /* Autodetect payload type, _before_ rtp_queue() */
if (rtp_autodetect (demux, sys->session, block)) rtp_autodetect (demux, sys->session, block);
goto drop;
sys->autodetect = false; sys->autodetect = false;
} }
......
...@@ -32,6 +32,7 @@ ...@@ -32,6 +32,7 @@
#include <vlc_demux.h> #include <vlc_demux.h>
#include <vlc_network.h> #include <vlc_network.h>
#include <vlc_plugin.h> #include <vlc_plugin.h>
#include <vlc_dialog.h>
#include "rtp.h" #include "rtp.h"
#ifdef HAVE_SRTP #ifdef HAVE_SRTP
...@@ -613,8 +614,8 @@ static void *ts_init (demux_t *demux) ...@@ -613,8 +614,8 @@ static void *ts_init (demux_t *demux)
/* Not using SDP, we need to guess the payload format used */ /* Not using SDP, we need to guess the payload format used */
/* see http://www.iana.org/assignments/rtp-parameters */ /* see http://www.iana.org/assignments/rtp-parameters */
int rtp_autodetect (demux_t *demux, rtp_session_t *session, void rtp_autodetect (demux_t *demux, rtp_session_t *session,
const block_t *block) const block_t *block)
{ {
uint8_t ptype = rtp_ptype (block); uint8_t ptype = rtp_ptype (block);
rtp_pt_t pt = { rtp_pt_t pt = {
...@@ -715,14 +716,20 @@ int rtp_autodetect (demux_t *demux, rtp_session_t *session, ...@@ -715,14 +716,20 @@ int rtp_autodetect (demux_t *demux, rtp_session_t *session,
pt.frequency = 90000; pt.frequency = 90000;
} }
else else
msg_Err (demux, "invalid dynamic payload format `%s' " msg_Err (demux, "unknown dynamic payload format `%s' "
"specified", dynamic); "specified", dynamic);
free (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); rtp_add_type (demux, session, &pt);
return 0;
} }
/* /*
......
...@@ -32,7 +32,7 @@ struct rtp_pt_t ...@@ -32,7 +32,7 @@ struct rtp_pt_t
uint32_t frequency; /* RTP clock rate (Hz) */ uint32_t frequency; /* RTP clock rate (Hz) */
uint8_t number; 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) static inline uint8_t rtp_ptype (const block_t *block)
{ {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment