* Preamble
*****************************************************************************/
+/* For inttypes.h
+ * Note: config.h may include inttypes.h, so make sure we define this option
+ * early enough. */
+#define __STDC_CONSTANT_MACROS 1
+
#ifdef HAVE_CONFIG_H
# include "config.h"
#endif
-#include <vlc/vlc.h>
+#include <inttypes.h>
+
+#include <vlc_common.h>
+#include <vlc_plugin.h>
#include <vlc_demux.h>
#include <vlc_interface.h>
#include <iostream>
#include <limits.h>
+
#if defined( WIN32 )
# include <winsock2.h>
#endif
"used for the connection.")
vlc_module_begin();
- set_description( _("RTP/RTSP/SDP demuxer (using Live555)" ) );
+ set_description( N_("RTP/RTSP/SDP demuxer (using Live555)" ) );
set_capability( "demux", 50 );
set_shortname( "RTP/RTSP");
set_callbacks( Open, Close );
set_subcategory( SUBCAT_INPUT_DEMUX );
add_submodule();
- set_description( _("RTSP/RTP access and demux") );
+ set_description( N_("RTSP/RTP access and demux") );
add_shortcut( "rtsp" );
add_shortcut( "sdp" );
set_capability( "access_demux", 0 );
es_format_t fmt;
es_out_id_t *p_es;
- bool b_muxed;
- bool b_quicktime;
- bool b_asf;
+ bool b_muxed;
+ bool b_quicktime;
+ bool b_asf;
stream_t *p_out_muxed; /* for muxed stream */
uint8_t *p_buffer;
unsigned int i_buffer;
- bool b_rtcp_sync;
+ bool b_rtcp_sync;
char waiting;
int64_t i_pts;
u_int32_t i_start_seq;
live_track_t *tk = p_sys->track[i];
if( tk->b_muxed ) stream_DemuxDelete( tk->p_out_muxed );
+ es_format_Clean( &tk->fmt );
free( tk->p_buffer );
free( tk );
}
live_track_t *tk = p_sys->track[i];
if( tk->b_muxed ) stream_DemuxDelete( tk->p_out_muxed );
+ es_format_Clean( &tk->fmt );
free( tk->p_buffer );
free( tk );
}
{
demux_sys_t *p_sys = p_demux->p_sys;
Authenticator authenticator;
- bool b_firstpass = true;
-
+ bool b_firstpass = true;
char *psz_user = NULL;
char *psz_pwd = NULL;
char *psz_url = NULL;
char *p_sdp = NULL;
int i_http_port = 0;
int i_ret = VLC_SUCCESS;
+ int i_lefttries;
- psz_url = (char*)malloc( strlen( p_sys->psz_path ) + 8 );
- if( !psz_url ) return VLC_ENOMEM;
-
+ if( p_sys->url.i_port == 0 ) p_sys->url.i_port = 554;
if( p_sys->url.psz_username || p_sys->url.psz_password )
{
- sprintf( psz_url, "rtsp://%s%s", p_sys->url.psz_host,
- p_sys->url.psz_path );
+ int err;
+ err = asprintf( &psz_url, "rtsp://%s:%d%s", p_sys->url.psz_host,
+ p_sys->url.i_port, p_sys->url.psz_path );
+ if( err == -1 ) return VLC_ENOMEM;
psz_user = strdup( p_sys->url.psz_username );
psz_pwd = strdup( p_sys->url.psz_password );
}
else
{
- sprintf( psz_url, "rtsp://%s", p_sys->psz_path );
+ int err;
+ err = asprintf( &psz_url, "rtsp://%s", p_sys->psz_path );
+ if( err == -1 ) return VLC_ENOMEM;
psz_user = var_CreateGetString( p_demux, "rtsp-user" );
psz_pwd = var_CreateGetString( p_demux, "rtsp-pwd" );
}
- int i_lefttries = 3;
+ i_lefttries = 3;
createnew:
i_lefttries--;
if( p_demux->b_die || p_demux->b_error )
i_http_port = var_CreateGetInteger( p_demux, "rtsp-http-port" );
if( ( p_sys->rtsp = RTSPClient::createNew( *p_sys->env,
- p_demux->p_libvlc->i_verbose > 1,
+ var_CreateGetInteger( p_demux, "verbose" ) > 1,
"VLC media player", i_http_port ) ) == NULL )
{
msg_Err( p_demux, "RTSPClient::createNew failed (%s)",
{
/* BUG ??? */
msg_Err( p_demux, "unusable RTSP track. this should not happen" );
+ es_format_Clean( &tk->fmt );
free( tk );
}
}
case DEMUX_SET_PAUSE_STATE:
{
- double d_npt = (double) p_sys->i_npt / I64C(1000000);
+ double d_npt = (double) p_sys->i_npt / INT64_C(1000000);
int i;
b_bool = (bool)va_arg( args, int );
live_track_t *tk = p_sys->track[i];
if( tk->b_muxed ) stream_DemuxDelete( tk->p_out_muxed );
+ es_format_Clean( &tk->fmt );
free( tk->p_buffer );
free( tk );
}
//msg_Dbg( p_demux, "pts: %d", pts.tv_sec );
- int64_t i_pts = (uint64_t)pts.tv_sec * UI64C(1000000) +
+ int64_t i_pts = (uint64_t)pts.tv_sec * UINT64_C(1000000) +
(uint64_t)pts.tv_usec;
/* XXX Beurk beurk beurk Avoid having negative value XXX */
- i_pts &= UI64C(0x00ffffffffffffff);
+ i_pts &= UINT64_C(0x00ffffffffffffff);
if( tk->b_quicktime && tk->p_es == NULL )
{
}
/* Parse it to get packet size */
- E_(asf_HeaderParse)( &p_sys->asfh, p_header->p_buffer, p_header->i_buffer );
+ asf_HeaderParse( &p_sys->asfh, p_header->p_buffer, p_header->i_buffer );
/* Send it to demuxer */
stream_DemuxSend( p_sys->p_out_asf, p_header );