/* */
int64_t i_pcr; /* The clock */
- int64_t i_npt; /* The current time in the stream */
int64_t i_npt_length;
int64_t i_npt_start;
p_sys->i_track = 0;
p_sys->track = NULL;
p_sys->i_pcr = 0;
- p_sys->i_npt = 0;
p_sys->i_npt_start = 0;
p_sys->i_npt_length = 0;
p_sys->p_out_asf = NULL;
*/
if( var_CreateGetBool( p_demux, "rtsp-kasenna" ))
{
-#if LIVEMEDIA_LIBRARY_VERSION_INT > 1130457500
p_sys->rtsp->setUserAgentString( "VLC_MEDIA_PLAYER_KA" );
-#endif
}
describe:
/* Issue the SETUP */
if( p_sys->rtsp )
{
- bool tcp = b_rtsp_tcp;
- bool mcast = p_sys->b_force_mcast;
if( !p_sys->rtsp->setupMediaSubsession( *sub, False,
- tcp ? True : False,
- ( mcast && !tcp ) ? True : False ) )
+ b_rtsp_tcp ? True : False,
+ ( p_sys->b_force_mcast && !b_rtsp_tcp ) ? True : False ) )
{
- tcp = !tcp;
/* if we get an unsupported transport error, toggle TCP use and try again */
if( !strstr(p_sys->env->getResultMsg(), "461 Unsupported Transport")
|| !p_sys->rtsp->setupMediaSubsession( *sub, False,
- tcp ? False : True,
- ( mcast && !tcp ) ? True : False ) )
+ !b_rtsp_tcp ? False : True,
+ False ) )
{
msg_Err( p_demux, "SETUP of'%s/%s' failed %s", sub->mediumName(),
sub->codecName(), p_sys->env->getResultMsg() );
delete iter;
if( p_sys->i_track <= 0 ) i_return = VLC_EGENERIC;
-#if (LIVEMEDIA_LIBRARY_VERSION_INT >= 1199404800)
/* Retrieve the starttime if possible */
p_sys->i_npt_start = (int64_t)( p_sys->ms->playStartTime() * (double)1000000.0 );
-#else
- p_sys->i_npt_start = (int64_t) -1;
-#endif
if( p_sys->i_npt_start < 0 )
p_sys->i_npt_start = -1;
-#if (LIVEMEDIA_LIBRARY_VERSION_INT >= 1199404800)
/* Retrieve the duration if possible */
p_sys->i_npt_length = (int64_t)( p_sys->ms->playEndTime() * (double)1000000.0 );
-#else
- p_sys->i_npt_length = (int64_t) -1;
-#endif
if( p_sys->i_npt_length < 0 )
p_sys->i_npt_length = -1;
}
p_sys->i_pcr = 0;
-#if (LIVEMEDIA_LIBRARY_VERSION_INT >= 1195257600)
for( i = 0; i < p_sys->i_track; i++ )
{
if( !p_sys->track[i]->b_rtcp_sync )
p_sys->track[i]->i_start_seq = (int)p_sys->track[i]->sub->rtpInfo.seqNum;
msg_Info( p_demux, "set startseq: %u", p_sys->track[i]->i_start_seq );
}
-#endif
-#if (LIVEMEDIA_LIBRARY_VERSION_INT >= 1199404800)
/* Retrieve the starttime if possible */
p_sys->i_npt_start = (int64_t)( p_sys->ms->playStartTime() * (double)1000000.0 );
-#else
- p_sys->i_npt_start = -1;
-#endif
if( p_sys->i_npt_start < 0 )
- {
p_sys->i_npt_start = -1;
- p_sys->i_npt = 0;
- }
- else
- p_sys->i_npt = p_sys->i_npt_start;
-#if (LIVEMEDIA_LIBRARY_VERSION_INT >= 1199404800)
- /* Retrieve the duration if possible */
p_sys->i_npt_length = (int64_t)( p_sys->ms->playEndTime() * (double)1000000.0 );
-#else
- p_sys->i_npt_length = -1;
-#endif
if( p_sys->i_npt_length < 0 )
p_sys->i_npt_length = -1;
msg_Err( p_demux, "TCP rollover failed, aborting" );
return 0;
}
+ return 1;
}
msg_Err( p_demux, "no data received in 10s, aborting" );
return 0;
switch( i_query )
{
case DEMUX_GET_TIME:
- pi64 = (int64_t*)va_arg( args, int64_t * );
- if( p_sys->i_npt > 0 )
- {
- *pi64 = p_sys->i_npt;
- return VLC_SUCCESS;
- }
return VLC_EGENERIC;
case DEMUX_GET_LENGTH:
return VLC_EGENERIC;
case DEMUX_GET_POSITION:
- pf = (double*)va_arg( args, double* );
- if( p_sys->i_npt_length > 0 && p_sys->i_npt > 0 )
- {
- *pf = (double)p_sys->i_npt / (double)p_sys->i_npt_length;
- return VLC_SUCCESS;
- }
return VLC_EGENERIC;
case DEMUX_SET_POSITION:
}
es_out_Control( p_demux->out, ES_OUT_RESET_PCR );
p_sys->i_pcr = 0;
-#if (LIVEMEDIA_LIBRARY_VERSION_INT >= 1195257600)
+
/* Retrieve RTP-Info values */
for( i = 0; i < p_sys->i_track; i++ )
{
- //if( !p_sys->track[i]->b_rtcp_sync )
p_sys->track[i]->b_rtcp_sync = false;
p_sys->track[i]->i_pts = (int64_t) ( p_sys->track[i]->sub->rtpInfo.timestamp * (double)1000000.0 );
p_sys->track[i]->i_start_seq = p_sys->track[i]->sub->rtpInfo.seqNum;
msg_Info( p_demux, "set pos startseq: %u", p_sys->track[i]->i_start_seq );
}
-#endif
-#if (LIVEMEDIA_LIBRARY_VERSION_INT >= 1199404800)
+
/* Retrieve the starttime if possible */
p_sys->i_npt_start = (int64_t)( p_sys->ms->playStartTime() * (double)1000000.0 );
-#else
- p_sys->i_npt_start = -1;
-#endif
if( p_sys->i_npt_start < 0 )
- {
p_sys->i_npt_start = -1;
- p_sys->i_npt = 0;
- }
- else
- p_sys->i_npt = p_sys->i_npt_start;
-#if (LIVEMEDIA_LIBRARY_VERSION_INT >= 1199404800)
/* Retrieve the duration if possible */
p_sys->i_npt_length = (int64_t)( p_sys->ms->playEndTime() * (double)1000000.0 );
-#else
- p_sys->i_npt_length = -1;
-#endif
if( p_sys->i_npt_length < 0 )
p_sys->i_npt_length = -1;
case DEMUX_SET_PAUSE_STATE:
{
- double d_npt = (double) p_sys->i_npt / INT64_C(1000000);
int i;
b_bool = (bool)va_arg( args, int );
/* FIXME */
if( ( b_bool && !p_sys->rtsp->pauseMediaSession( *p_sys->ms ) ) ||
( !b_bool && !p_sys->rtsp->playMediaSession( *p_sys->ms,
- d_npt > 0 ? d_npt : -1 ) ) )
+ -1 ) ) )
{
msg_Err( p_demux, "PLAY or PAUSE failed %s", p_sys->env->getResultMsg() );
return VLC_EGENERIC;
es_out_Control( p_demux->out, ES_OUT_RESET_PCR );
p_sys->i_pcr = 0;
-#if (LIVEMEDIA_LIBRARY_VERSION_INT >= 1195257600)
+
for( i = 0; i < p_sys->i_track; i++ )
{
if( !p_sys->track[i]->b_rtcp_sync )
p_sys->track[i]->i_start_seq = p_sys->track[i]->sub->rtpInfo.seqNum;
msg_Info( p_demux, "set pause startseq: %u", p_sys->track[i]->i_start_seq );
}
-#endif
-#if (LIVEMEDIA_LIBRARY_VERSION_INT >= 1199404800)
+
/* Retrieve the starttime if possible */
p_sys->i_npt_start = (int64_t)( p_sys->ms->playStartTime() * (double)1000000.0 );
-#else
- p_sys->i_npt_start = -1;
-#endif
if( p_sys->i_npt_start < 0 )
- {
p_sys->i_npt_start = -1;
- p_sys->i_npt = 0;
- }
- else
- p_sys->i_npt = p_sys->i_npt_start;
-#if (LIVEMEDIA_LIBRARY_VERSION_INT >= 1199404800)
/* Retrieve the duration if possible */
p_sys->i_npt_length = (int64_t)( p_sys->ms->playEndTime() * (double)1000000.0 );
-#else
- p_sys->i_npt_length = -1;
-#endif
if( p_sys->i_npt_length < 0 )
p_sys->i_npt_length = -1;
live_track_t *tk = p_sys->track[i];
if( tk->b_muxed ) stream_DemuxDelete( tk->p_out_muxed );
+ if( tk->p_es ) es_out_Del( p_demux->out, tk->p_es );
es_format_Clean( &tk->fmt );
free( tk->p_buffer );
free( tk );
p_sys->i_track = 0;
/* Reopen rtsp client */
- if( ( p_demux->s != NULL ) &&
- ( i_return = Connect( p_demux ) ) != VLC_SUCCESS )
+ if( ( i_return = Connect( p_demux ) ) != VLC_SUCCESS )
{
msg_Err( p_demux, "Failed to connect with rtsp://%s",
p_sys->psz_path );
}
else if( tk->fmt.i_codec == VLC_FOURCC('H','2','6','1') )
{
-#if LIVEMEDIA_LIBRARY_VERSION_INT >= 1081468800
H261VideoRTPSource *h261Source = (H261VideoRTPSource*)tk->sub->rtpSource();
uint32_t header = h261Source->lastSpecialHeader();
-#else
- uint32_t header = 0;
- msg_Warn( p_demux, "need livemedia library >= \"2004.04.09\"" );
-#endif
p_block = block_New( p_demux, i_size + 4 );
memcpy( p_block->p_buffer, &header, 4 );
memcpy( p_block->p_buffer + 4, tk->p_buffer, i_size );
memcpy( p_block->p_buffer, tk->p_buffer, i_size );
}
- /* Update NPT */
- //msg_Dbg( p_demux, "current %d, start_seq %u", (int)tk->sub->rtpSource()->curPacketRTPSeqNum(), tk->i_start_seq );
- if( (tk->fmt.i_cat == VIDEO_ES) && (p_sys->i_pcr < i_pts) &&
- (i_pts > 0) && (p_sys->i_pcr > 0) )
- {
- p_sys->i_npt += __MAX( 0, i_pts - p_sys->i_pcr );
- p_sys->i_pcr = i_pts;
- //msg_Dbg( p_demux, "npt update" );
- }
- else if( /*tk->fmt.i_cat == VIDEO_ES &&*/ p_sys->i_pcr < i_pts )
+ if( p_sys->i_pcr < i_pts )
{
p_sys->i_pcr = i_pts;
}
- //msg_Dbg( p_demux, "npt %lld", p_sys->i_npt );
if( (i_pts != tk->i_pts) && (!tk->b_muxed) )
{
msg_Dbg( p_timeout, "reset the timeout timer" );
if( p_timeout->b_handle_keep_alive == true )
{
-#if LIVEMEDIA_LIBRARY_VERSION_INT >= 1138089600
p_timeout->p_sys->rtsp->getMediaSessionParameter( *p_timeout->p_sys->ms, NULL, psz_bye );
-#endif
p_timeout->p_sys->b_timeout_call = false;
}
else