static void Close( vlc_object_t * );
vlc_module_begin();
+ set_shortname( _("UDP/RTP" ) );
set_description( _("UDP/RTP input") );
+ set_category( CAT_INPUT );
+ set_subcategory( SUBCAT_INPUT_ACCESS );
add_integer( "udp-caching", DEFAULT_PTS_DELAY / 1000, NULL, CACHING_TEXT,
CACHING_LONGTEXT, VLC_TRUE );
/* Set up p_access */
p_access->pf_read = NULL;
- p_access->pf_block = BlockChoose;
+ if( !strcasecmp( p_access->psz_access, "rtp" )
+ || !strcasecmp( p_access->psz_access, "rtp4" )
+ || !strcasecmp( p_access->psz_access, "rtp6" ) )
+ {
+ p_access->pf_block = BlockRTP;
+ }
+ else
+ {
+ p_access->pf_block = BlockChoose;
+ }
p_access->pf_control = Control;
p_access->pf_seek = NULL;
p_access->info.i_update = 0;
vlc_bool_t *pb_bool;
int *pi_int;
int64_t *pi_64;
- vlc_value_t val;
switch( i_query )
{
case ACCESS_GET_PTS_DELAY:
pi_64 = (int64_t*)va_arg( args, int64_t * );
- var_Get( p_access, "udp-caching", &val );
*pi_64 = var_GetInteger( p_access, "udp-caching" ) * 1000;
break;
case ACCESS_GET_TITLE_INFO:
case ACCESS_SET_TITLE:
case ACCESS_SET_SEEKPOINT:
+ case ACCESS_SET_PRIVATE_ID_STATE:
return VLC_EGENERIC;
default:
- msg_Err( p_access, "unimplemented query in control" );
+ msg_Warn( p_access, "unimplemented query in control" );
return VLC_EGENERIC;
}
/* Read data */
p_block = block_New( p_access, p_sys->i_mtu );
- p_block->i_buffer = net_Read( p_access, p_sys->fd, p_block->p_buffer, p_sys->i_mtu, VLC_FALSE );
+ p_block->i_buffer = net_Read( p_access, p_sys->fd, NULL,
+ p_block->p_buffer, p_sys->i_mtu,
+ VLC_FALSE );
if( p_block->i_buffer <= 0 )
{
block_Release( p_block );
return NULL;
}
- if( p_block->i_buffer >= p_sys->i_mtu && p_sys->b_auto_mtu )
+ if( p_block->i_buffer >= p_sys->i_mtu && p_sys->b_auto_mtu &&
+ p_sys->i_mtu < 32767 )
{
- /* Increase by 10% */
- p_sys->i_mtu += ( p_sys->i_mtu + 9 ) / 10;
+ /* Increase by 100% */
+ p_sys->i_mtu *= 2;
msg_Dbg( p_access, "increasing MTU to %d", p_sys->i_mtu );
}
static block_t *BlockRTP( access_t *p_access )
{
- return BlockParseRTP( p_access, BlockUDP( p_access ) );
+ block_t *p_block = BlockUDP( p_access );
+
+ if ( p_block != NULL )
+ return BlockParseRTP( p_access, p_block );
+ else
+ return NULL;
}
/*****************************************************************************
{
case 33:
msg_Dbg( p_access, "detected TS over RTP" );
- p_access->psz_demux = strdup( "ts2" );
+ p_access->psz_demux = strdup( "ts" );
break;
case 14:
msg_Dbg( p_access, "detected MPEG audio over RTP" );
- p_access->psz_demux = strdup( "mp3" );
+ p_access->psz_demux = strdup( "mpga" );
break;
case 32:
msg_Dbg( p_access, "detected MPEG video over RTP" );
- p_access->psz_demux = strdup( "es" );
+ p_access->psz_demux = strdup( "mpgv" );
break;
default: