]> git.sesse.net Git - vlc/blobdiff - modules/stream_out/rtp.c
Use var_InheritString for --decklink-video-connection.
[vlc] / modules / stream_out / rtp.c
index b3e39e63e628419f1abc762b423f55e800a96440..7587eff0be84e089b3e3ee4900f853ef7999318e 100644 (file)
@@ -680,9 +680,12 @@ static void SDPHandleUrl( sout_stream_t *p_stream, const char *psz_url )
         if( p_sys->p_mux != NULL )
         {
             sout_stream_id_t *id = p_sys->es[0];
-            id->rtsp_id = RtspAddId( p_sys->rtsp, id, GetDWBE( id->ssrc ),
-                                     p_sys->psz_destination, p_sys->i_ttl,
-                                     id->i_port, id->i_port + 1 );
+            rtsp_stream_id_t *rtsp_id = RtspAddId( p_sys->rtsp, id, GetDWBE( id->ssrc ),
+                                                   p_sys->psz_destination, p_sys->i_ttl,
+                                                   id->i_port, id->i_port + 1 );
+            vlc_mutex_lock( &p_sys->lock_es );
+            id->rtsp_id = rtsp_id;
+            vlc_mutex_unlock( &p_sys->lock_es );
         }
     }
     else if( ( url.psz_protocol && !strcasecmp( url.psz_protocol, "sap" ) ) ||
@@ -742,7 +745,7 @@ char *SDPGenerate( sout_stream_t *p_stream, const char *rtsp_url )
     int inclport;
 
     vlc_mutex_lock( &p_sys->lock_es );
-    if( unlikely(p_sys->i_es == 0) )
+    if( unlikely(p_sys->i_es == 0 || (rtsp_url != NULL && !p_sys->es[0]->rtsp_id)) )
         goto out; /* hmm... */
 
     if( p_sys->psz_destination != NULL )
@@ -1243,11 +1246,14 @@ static sout_stream_id_t *Add( sout_stream_t *p_stream, es_format_t *p_fmt )
 
                     if( i_nal_type == 7 )
                     {
+                        free( p_64_sps );
                         p_64_sps = vlc_b64_encode_binary( p_buffer, i_size );
-                        sprintf_hexa( hexa, &p_buffer[5], 3 );
+                        /* XXX: nothing ensures that i_size >= 4 ?? */
+                        sprintf_hexa( hexa, &p_buffer[1], 3 );
                     }
                     else if( i_nal_type == 8 )
                     {
+                        free( p_64_pps );
                         p_64_pps = vlc_b64_encode_binary( p_buffer, i_size );
                     }
                     i_buffer -= i_size;