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

RTP: when sending to RTP an odd port we need to specify a=rtcp

Otherwise the receiver would -in principle- try to receive RTP on the
next (plus one) even port, whereas the m= line port would be used for
RTCP. We could also pass a=rtcp for the normal even/RTP & odd/RTCP
ports setup, but that can only confuse receivers with no gain.

Note that receivers may not parse the a=rtcp parameter in any case. In
fact, VLC does not parse the a=rtcp field to this day. In any case,
sending RTP to an *even* port is the only safely interoperable option.
parent eb3d8772
...@@ -783,6 +783,9 @@ char *SDPGenerate( const sout_stream_t *p_stream, const char *rtsp_url ) ...@@ -783,6 +783,9 @@ char *SDPGenerate( const sout_stream_t *p_stream, const char *rtsp_url )
id->psz_enc, id->i_clock_rate, id->i_channels, id->psz_enc, id->i_clock_rate, id->i_channels,
id->psz_fmtp); id->psz_fmtp);
if( !p_sys->rtcp_mux && (id->i_port & 1) ) /* cf RFC4566 §5.14 */
sdp_AddAttribute ( &psz_sdp, "rtcp", "%u", id->i_port + 1 );
if( rtsp_url != NULL ) if( rtsp_url != NULL )
{ {
assert( strlen( rtsp_url ) > 0 ); assert( strlen( rtsp_url ) > 0 );
......
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