@ -841,7 +841,7 @@ static int rtsp_read_header(AVFormatContext *s,
AVFormatParameters * ap )
AVFormatParameters * ap )
{
{
RTSPState * rt = s - > priv_data ;
RTSPState * rt = s - > priv_data ;
char host [ 1024 ] , path [ 1024 ] , tcpname [ 1024 ] , cmd [ 2048 ] ;
char host [ 1024 ] , path [ 1024 ] , tcpname [ 1024 ] , cmd [ 2048 ] , * option_list , * option ;
URLContext * rtsp_hd ;
URLContext * rtsp_hd ;
int port , i , j , ret , err ;
int port , i , j , ret , err ;
RTSPHeader reply1 , * reply = & reply1 ;
RTSPHeader reply1 , * reply = & reply1 ;
@ -856,6 +856,21 @@ static int rtsp_read_header(AVFormatContext *s,
if ( port < 0 )
if ( port < 0 )
port = RTSP_DEFAULT_PORT ;
port = RTSP_DEFAULT_PORT ;
/* search for options */
option_list = strchr ( path , ' ? ' ) ;
if ( option_list ) {
/* remove the options from the path */
* option_list + + = 0 ;
while ( option_list ) {
/* move the option pointer */
option = option_list ;
option_list = strchr ( option_list , ' & ' ) ;
if ( option_list )
* ( option_list + + ) = 0 ;
/* handle the options */
}
}
/* open the tcp connexion */
/* open the tcp connexion */
snprintf ( tcpname , sizeof ( tcpname ) , " tcp://%s:%d " , host , port ) ;
snprintf ( tcpname , sizeof ( tcpname ) , " tcp://%s:%d " , host , port ) ;
if ( url_open ( & rtsp_hd , tcpname , URL_RDWR ) < 0 )
if ( url_open ( & rtsp_hd , tcpname , URL_RDWR ) < 0 )