set_capability( "demux", 50 )
set_shortname( "RTP/RTSP")
set_callbacks( Open, Close )
- add_shortcut( "live" )
- add_shortcut( "livedotcom" )
+ add_shortcut( "live", "livedotcom" )
set_category( CAT_INPUT )
set_subcategory( SUBCAT_INPUT_DEMUX )
add_submodule ()
set_description( N_("RTSP/RTP access and demux") )
- add_shortcut( "rtsp" )
- add_shortcut( "pnm" )
- add_shortcut( "sdp" )
- add_shortcut( "live" )
- add_shortcut( "livedotcom" )
+ add_shortcut( "rtsp", "pnm", "sdp", "live", "livedotcom" )
set_capability( "access_demux", 0 )
set_callbacks( Open, Close )
add_bool( "rtsp-tcp", false, NULL,
change_safe()
add_bool( "rtsp-kasenna", false, NULL, KASENNA_TEXT,
KASENNA_LONGTEXT, true )
+ change_safe()
add_bool( "rtsp-wmserver", false, NULL, WMSERVER_TEXT,
WMSERVER_LONGTEXT, true)
change_safe()
p_sys->b_timeout_call = false;
p_sys->b_multicast = false;
p_sys->b_real = false;
- p_sys->psz_path = strdup( p_demux->psz_path );
+ p_sys->psz_path = strdup( p_demux->psz_location );
p_sys->b_force_mcast = var_CreateGetBool( p_demux, "rtsp-mcast" );
p_sys->b_get_param = false;
p_sys->b_paused = false;
{
demux_t *p_demux = (demux_t*)p_this;
demux_sys_t *p_sys = p_demux->p_sys;
- int i;
- for( i = 0; i < p_sys->i_track; i++ )
+ if( p_sys->rtsp && p_sys->ms ) p_sys->rtsp->teardownMediaSession( *p_sys->ms );
+ if( p_sys->ms ) Medium::close( p_sys->ms );
+ if( p_sys->rtsp ) RTSPClient::close( p_sys->rtsp );
+ if( p_sys->env ) p_sys->env->reclaim();
+
+ for( int i = 0; i < p_sys->i_track; i++ )
{
live_track_t *tk = p_sys->track[i];
if( p_sys->i_track ) free( p_sys->track );
if( p_sys->p_out_asf ) stream_Delete( p_sys->p_out_asf );
- if( p_sys->rtsp && p_sys->ms ) p_sys->rtsp->teardownMediaSession( *p_sys->ms );
if( p_sys->p_timeout )
{
vlc_cancel( p_sys->p_timeout->handle );
vlc_join( p_sys->p_timeout->handle, NULL );
free( p_sys->p_timeout );
}
- if( p_sys->ms ) Medium::close( p_sys->ms );
- if( p_sys->rtsp ) RTSPClient::close( p_sys->rtsp );
- if( p_sys->env ) p_sys->env->reclaim();
delete p_sys->scheduler;
free( p_sys->p_sdp );
free( p_sys->psz_path );
int i_http_port = 0;
int i_ret = VLC_SUCCESS;
- /* Create the url using the port number if available */
- if( p_sys->url.i_port == 0 )
- {
- p_sys->url.i_port = 554;
- if( asprintf( &psz_url, "rtsp://%s", p_sys->psz_path ) == -1 )
- return VLC_ENOMEM;
- }
- else
+ /* Get the user name and password */
+ if( p_sys->url.psz_username || p_sys->url.psz_password )
{
- if( asprintf( &psz_url, "rtsp://%s:%d%s", p_sys->url.psz_host,
+ /* Create the URL by stripping away the username/password part */
+ if( p_sys->url.i_port == 0 )
+ p_sys->url.i_port = 554;
+ if( asprintf( &psz_url, "rtsp://%s:%d%s",
+ strempty( p_sys->url.psz_host ),
p_sys->url.i_port,
strempty( p_sys->url.psz_path ) ) == -1 )
return VLC_ENOMEM;
- }
- /* Get the user name and password */
- if( p_sys->url.psz_username || p_sys->url.psz_password )
- {
psz_user = strdup( strempty( p_sys->url.psz_username ) );
psz_pwd = strdup( strempty( p_sys->url.psz_password ) );
}
else
{
+ if( asprintf( &psz_url, "rtsp://%s", p_sys->psz_path ) == -1 )
+ return VLC_ENOMEM;
+
psz_user = var_CreateGetString( p_demux, "rtsp-user" );
psz_pwd = var_CreateGetString( p_demux, "rtsp-pwd" );
}
if( ( p_sys->rtsp = RTSPClient::createNew( *p_sys->env,
var_CreateGetInteger( p_demux, "verbose" ) > 1,
- "VLC media player", i_http_port ) ) == NULL )
+ "LibVLC/"VERSION, i_http_port ) ) == NULL )
{
msg_Err( p_demux, "RTSPClient::createNew failed (%s)",
p_sys->env->getResultMsg() );
if( !strcmp( sub->codecName(), "MPV" ) )
{
tk->fmt.i_codec = VLC_CODEC_MPGV;
+ tk->fmt.b_packetized = false;
}
else if( !strcmp( sub->codecName(), "H263" ) ||
!strcmp( sub->codecName(), "H263-1998" ) ||
case DEMUX_GET_PTS_DELAY:
pi64 = (int64_t*)va_arg( args, int64_t * );
- *pi64 = (int64_t)var_GetInteger( p_demux, "rtsp-caching" ) * 1000;
+ *pi64 = var_GetInteger( p_demux, "rtsp-caching" ) * 1000;
return VLC_SUCCESS;
default:
else
{
/* Reset on broken stream */
- msg_Err( p_demux, "Broken packet detected (%d vs %d or %d + %d vs %d)",
+ msg_Err( p_demux, "Broken packet detected (%d vs %zu or %d + %d vs %d)",
i_offset, tk->p_asf_block->i_buffer, i_offset, i_payload, i_packet_size);
tk->p_asf_block->i_buffer = 0;
}