Commit eed2a24c authored by Gildas Bazin's avatar Gildas Bazin

* modules/stream_out/*: coding style changes + strings review.
parent d451cb0c
/***************************************************************************** /*****************************************************************************
* display.c * display.c: display stream output module
***************************************************************************** *****************************************************************************
* Copyright (C) 2001, 2002 VideoLAN * Copyright (C) 2001, 2002 VideoLAN
* $Id: display.c,v 1.11 2003/12/10 23:51:05 gbazin Exp $ * $Id: display.c,v 1.12 2004/01/25 14:34:25 gbazin Exp $
* *
* Authors: Laurent Aimar <fenrir@via.ecp.fr> * Authors: Laurent Aimar <fenrir@via.ecp.fr>
* *
...@@ -47,7 +47,7 @@ static int Send( sout_stream_t *, sout_stream_id_t *, sout_buffer_ ...@@ -47,7 +47,7 @@ static int Send( sout_stream_t *, sout_stream_id_t *, sout_buffer_
* Module descriptor * Module descriptor
*****************************************************************************/ *****************************************************************************/
vlc_module_begin(); vlc_module_begin();
set_description( _("Display stream") ); set_description( _("Display stream output") );
set_capability( "sout stream", 50 ); set_capability( "sout stream", 50 );
add_shortcut( "display" ); add_shortcut( "display" );
set_callbacks( Open, Close ); set_callbacks( Open, Close );
...@@ -108,7 +108,6 @@ static int Open( vlc_object_t *p_this ) ...@@ -108,7 +108,6 @@ static int Open( vlc_object_t *p_this )
/***************************************************************************** /*****************************************************************************
* Close: * Close:
*****************************************************************************/ *****************************************************************************/
static void Close( vlc_object_t * p_this ) static void Close( vlc_object_t * p_this )
{ {
sout_stream_t *p_stream = (sout_stream_t*)p_this; sout_stream_t *p_stream = (sout_stream_t*)p_this;
...@@ -124,7 +123,6 @@ struct sout_stream_id_t ...@@ -124,7 +123,6 @@ struct sout_stream_id_t
es_descriptor_t *p_es; es_descriptor_t *p_es;
}; };
static sout_stream_id_t * Add( sout_stream_t *p_stream, es_format_t *p_fmt ) static sout_stream_id_t * Add( sout_stream_t *p_stream, es_format_t *p_fmt )
{ {
sout_stream_sys_t *p_sys = p_stream->p_sys; sout_stream_sys_t *p_sys = p_stream->p_sys;
......
/***************************************************************************** /*****************************************************************************
* dummy.c * dummy.c: dummy stream output module
***************************************************************************** *****************************************************************************
* Copyright (C) 2001, 2002 VideoLAN * Copyright (C) 2003-2004 VideoLAN
* $Id: dummy.c,v 1.3 2003/12/07 19:06:21 jpsaman Exp $ * $Id: dummy.c,v 1.4 2004/01/25 14:34:25 gbazin Exp $
* *
* Authors: Laurent Aimar <fenrir@via.ecp.fr> * Authors: Laurent Aimar <fenrir@via.ecp.fr>
* *
...@@ -44,7 +44,7 @@ static int Send( sout_stream_t *, sout_stream_id_t *, sout_buffer_ ...@@ -44,7 +44,7 @@ static int Send( sout_stream_t *, sout_stream_id_t *, sout_buffer_
* Module descriptor * Module descriptor
*****************************************************************************/ *****************************************************************************/
vlc_module_begin(); vlc_module_begin();
set_description( _("Dummy stream") ); set_description( _("Dummy stream output") );
set_capability( "sout stream", 50 ); set_capability( "sout stream", 50 );
add_shortcut( "dummy" ); add_shortcut( "dummy" );
set_callbacks( Open, Close ); set_callbacks( Open, Close );
...@@ -55,7 +55,7 @@ vlc_module_end(); ...@@ -55,7 +55,7 @@ vlc_module_end();
*****************************************************************************/ *****************************************************************************/
static int Open( vlc_object_t *p_this ) static int Open( vlc_object_t *p_this )
{ {
sout_stream_t *p_stream = (sout_stream_t*)p_this; sout_stream_t *p_stream = (sout_stream_t*)p_this;
p_stream->pf_add = Add; p_stream->pf_add = Add;
p_stream->pf_del = Del; p_stream->pf_del = Del;
...@@ -69,7 +69,6 @@ static int Open( vlc_object_t *p_this ) ...@@ -69,7 +69,6 @@ static int Open( vlc_object_t *p_this )
/***************************************************************************** /*****************************************************************************
* Close: * Close:
*****************************************************************************/ *****************************************************************************/
static void Close( vlc_object_t * p_this ) static void Close( vlc_object_t * p_this )
{ {
#if 0 #if 0
...@@ -82,8 +81,7 @@ struct sout_stream_id_t ...@@ -82,8 +81,7 @@ struct sout_stream_id_t
int i_d_u_m_m_y; int i_d_u_m_m_y;
}; };
static sout_stream_id_t *Add( sout_stream_t *p_stream, es_format_t *p_fmt )
static sout_stream_id_t * Add ( sout_stream_t *p_stream, es_format_t *p_fmt )
{ {
sout_stream_id_t *id; sout_stream_id_t *id;
...@@ -93,14 +91,15 @@ static sout_stream_id_t * Add ( sout_stream_t *p_stream, es_format_t *p_fmt ...@@ -93,14 +91,15 @@ static sout_stream_id_t * Add ( sout_stream_t *p_stream, es_format_t *p_fmt
return id; return id;
} }
static int Del ( sout_stream_t *p_stream, sout_stream_id_t *id ) static int Del( sout_stream_t *p_stream, sout_stream_id_t *id )
{ {
free( id ); free( id );
return VLC_SUCCESS; return VLC_SUCCESS;
} }
static int Send ( sout_stream_t *p_stream, sout_stream_id_t *id, sout_buffer_t *p_buffer ) static int Send( sout_stream_t *p_stream, sout_stream_id_t *id,
sout_buffer_t *p_buffer )
{ {
sout_buffer_t *p_next; sout_buffer_t *p_next;
......
/***************************************************************************** /*****************************************************************************
* duplicate.c * duplicate.c: duplicate stream output module
***************************************************************************** *****************************************************************************
* Copyright (C) 2001, 2002 VideoLAN * Copyright (C) 2003-2004 VideoLAN
* $Id: duplicate.c,v 1.11 2004/01/19 18:15:55 fenrir Exp $ * $Id: duplicate.c,v 1.12 2004/01/25 14:34:25 gbazin Exp $
* *
* Author: Laurent Aimar <fenrir@via.ecp.fr> * Author: Laurent Aimar <fenrir@via.ecp.fr>
* *
...@@ -45,14 +45,13 @@ static int Send( sout_stream_t *, sout_stream_id_t *, ...@@ -45,14 +45,13 @@ static int Send( sout_stream_t *, sout_stream_id_t *,
* Module descriptor * Module descriptor
*****************************************************************************/ *****************************************************************************/
vlc_module_begin(); vlc_module_begin();
set_description( _("Duplicate stream") ); set_description( _("Duplicate stream output") );
set_capability( "sout stream", 50 ); set_capability( "sout stream", 50 );
add_shortcut( "duplicate" ); add_shortcut( "duplicate" );
add_shortcut( "dup" ); add_shortcut( "dup" );
set_callbacks( Open, Close ); set_callbacks( Open, Close );
vlc_module_end(); vlc_module_end();
struct sout_stream_sys_t struct sout_stream_sys_t
{ {
int i_nb_streams; int i_nb_streams;
...@@ -134,7 +133,6 @@ static int Open( vlc_object_t *p_this ) ...@@ -134,7 +133,6 @@ static int Open( vlc_object_t *p_this )
/***************************************************************************** /*****************************************************************************
* Close: * Close:
*****************************************************************************/ *****************************************************************************/
static void Close( vlc_object_t * p_this ) static void Close( vlc_object_t * p_this )
{ {
sout_stream_t *p_stream = (sout_stream_t*)p_this; sout_stream_t *p_stream = (sout_stream_t*)p_this;
...@@ -456,5 +454,3 @@ static vlc_bool_t ESSelected( es_format_t *fmt, char *psz_select ) ...@@ -456,5 +454,3 @@ static vlc_bool_t ESSelected( es_format_t *fmt, char *psz_select )
} }
return VLC_TRUE; return VLC_TRUE;
} }
/***************************************************************************** /*****************************************************************************
* es.c * es.c: Elementary stream output module
***************************************************************************** *****************************************************************************
* Copyright (C) 2001, 2002 VideoLAN * Copyright (C) 2003-2004 VideoLAN
* $Id: es.c,v 1.4 2003/11/21 15:32:08 fenrir Exp $ * $Id: es.c,v 1.5 2004/01/25 14:34:25 gbazin Exp $
* *
* Authors: Laurent Aimar <fenrir@via.ecp.fr> * Authors: Laurent Aimar <fenrir@via.ecp.fr>
* *
...@@ -46,10 +46,9 @@ static int Send( sout_stream_t *, sout_stream_id_t *, sout_buffer_ ...@@ -46,10 +46,9 @@ static int Send( sout_stream_t *, sout_stream_id_t *, sout_buffer_
* Module descriptor * Module descriptor
*****************************************************************************/ *****************************************************************************/
vlc_module_begin(); vlc_module_begin();
set_description( _("ES stream") ); set_description( _("Elementary stream output") );
set_capability( "sout stream", 50 ); set_capability( "sout stream", 50 );
add_shortcut( "es" ); add_shortcut( "es" );
add_shortcut( "es" );
set_callbacks( Open, Close ); set_callbacks( Open, Close );
vlc_module_end(); vlc_module_end();
...@@ -92,14 +91,13 @@ static int Open( vlc_object_t *p_this ) ...@@ -92,14 +91,13 @@ static int Open( vlc_object_t *p_this )
p_sys->psz_access_audio = sout_cfg_find_value( p_stream->p_cfg, "access_audio" ); p_sys->psz_access_audio = sout_cfg_find_value( p_stream->p_cfg, "access_audio" );
p_sys->psz_access_video = sout_cfg_find_value( p_stream->p_cfg, "access_video" ); p_sys->psz_access_video = sout_cfg_find_value( p_stream->p_cfg, "access_video" );
p_sys->psz_mux = sout_cfg_find_value( p_stream->p_cfg, "mux" );
p_sys->psz_mux_audio = sout_cfg_find_value( p_stream->p_cfg, "mux_audio" );
p_sys->psz_mux_video = sout_cfg_find_value( p_stream->p_cfg, "mux_video" );
p_sys->psz_mux = sout_cfg_find_value( p_stream->p_cfg, "mux" ); p_sys->psz_url = sout_cfg_find_value( p_stream->p_cfg, "url" );
p_sys->psz_mux_audio = sout_cfg_find_value( p_stream->p_cfg, "mux_audio" ); p_sys->psz_url_audio = sout_cfg_find_value( p_stream->p_cfg, "url_audio" );
p_sys->psz_mux_video = sout_cfg_find_value( p_stream->p_cfg, "mux_video" ); p_sys->psz_url_video = sout_cfg_find_value( p_stream->p_cfg, "url_video" );
p_sys->psz_url = sout_cfg_find_value( p_stream->p_cfg, "url" );
p_sys->psz_url_audio = sout_cfg_find_value( p_stream->p_cfg, "url_audio" );
p_sys->psz_url_video = sout_cfg_find_value( p_stream->p_cfg, "url_video" );
p_stream->pf_add = Add; p_stream->pf_add = Add;
p_stream->pf_del = Del; p_stream->pf_del = Del;
...@@ -128,7 +126,8 @@ struct sout_stream_id_t ...@@ -128,7 +126,8 @@ struct sout_stream_id_t
sout_mux_t *p_mux; sout_mux_t *p_mux;
}; };
static char * es_print_url( char *psz_fmt, vlc_fourcc_t i_fourcc, int i_count, char *psz_access, char *psz_mux ) static char * es_print_url( char *psz_fmt, vlc_fourcc_t i_fourcc, int i_count,
char *psz_access, char *psz_mux )
{ {
char *psz_url, *p; char *psz_url, *p;
...@@ -186,7 +185,7 @@ static char * es_print_url( char *psz_fmt, vlc_fourcc_t i_fourcc, int i_count, c ...@@ -186,7 +185,7 @@ static char * es_print_url( char *psz_fmt, vlc_fourcc_t i_fourcc, int i_count, c
return( psz_url ); return( psz_url );
} }
static sout_stream_id_t * Add ( sout_stream_t *p_stream, es_format_t *p_fmt ) static sout_stream_id_t *Add( sout_stream_t *p_stream, es_format_t *p_fmt )
{ {
sout_stream_sys_t *p_sys = p_stream->p_sys; sout_stream_sys_t *p_sys = p_stream->p_sys;
sout_instance_t *p_sout = p_stream->p_sout; sout_instance_t *p_sout = p_stream->p_sout;
...@@ -227,14 +226,16 @@ static sout_stream_id_t * Add ( sout_stream_t *p_stream, es_format_t *p_fmt ...@@ -227,14 +226,16 @@ static sout_stream_id_t * Add ( sout_stream_t *p_stream, es_format_t *p_fmt
psz_mux = p_sys->psz_mux; psz_mux = p_sys->psz_mux;
} }
/* *** get url (%d expanded as a codec count, %c expanded as codec fcc ) *** */ /* Get url (%d expanded as a codec count, %c expanded as codec fcc ) */
if( p_fmt->i_cat == AUDIO_ES && p_sys->psz_url_audio ) if( p_fmt->i_cat == AUDIO_ES && p_sys->psz_url_audio )
{ {
psz_url = es_print_url( p_sys->psz_url_audio, p_fmt->i_codec, p_sys->i_count_audio, psz_access, psz_mux ); psz_url = es_print_url( p_sys->psz_url_audio, p_fmt->i_codec,
p_sys->i_count_audio, psz_access, psz_mux );
} }
else if( p_fmt->i_cat == VIDEO_ES && p_sys->psz_url_video ) else if( p_fmt->i_cat == VIDEO_ES && p_sys->psz_url_video )
{ {
psz_url = es_print_url( p_sys->psz_url_video, p_fmt->i_codec, p_sys->i_count_video, psz_access, psz_mux ); psz_url = es_print_url( p_sys->psz_url_video, p_fmt->i_codec,
p_sys->i_count_video, psz_access, psz_mux );
} }
else else
{ {
...@@ -252,7 +253,8 @@ static sout_stream_id_t * Add ( sout_stream_t *p_stream, es_format_t *p_fmt ...@@ -252,7 +253,8 @@ static sout_stream_id_t * Add ( sout_stream_t *p_stream, es_format_t *p_fmt
i_count = p_sys->i_count; i_count = p_sys->i_count;
} }
psz_url = es_print_url( p_sys->psz_url, p_fmt->i_codec, i_count, psz_access, psz_mux ); psz_url = es_print_url( p_sys->psz_url, p_fmt->i_codec,
i_count, psz_access, psz_mux );
} }
p_sys->i_count++; p_sys->i_count++;
...@@ -306,7 +308,7 @@ static sout_stream_id_t * Add ( sout_stream_t *p_stream, es_format_t *p_fmt ...@@ -306,7 +308,7 @@ static sout_stream_id_t * Add ( sout_stream_t *p_stream, es_format_t *p_fmt
return id; return id;
} }
static int Del ( sout_stream_t *p_stream, sout_stream_id_t *id ) static int Del( sout_stream_t *p_stream, sout_stream_id_t *id )
{ {
sout_access_out_t *p_access = id->p_mux->p_access; sout_access_out_t *p_access = id->p_mux->p_access;
...@@ -317,7 +319,8 @@ static int Del ( sout_stream_t *p_stream, sout_stream_id_t *id ) ...@@ -317,7 +319,8 @@ static int Del ( sout_stream_t *p_stream, sout_stream_id_t *id )
return VLC_SUCCESS; return VLC_SUCCESS;
} }
static int Send ( sout_stream_t *p_stream, sout_stream_id_t *id, sout_buffer_t *p_buffer ) static int Send( sout_stream_t *p_stream, sout_stream_id_t *id,
sout_buffer_t *p_buffer )
{ {
sout_MuxSendBuffer( id->p_mux, id->p_input, p_buffer ); sout_MuxSendBuffer( id->p_mux, id->p_input, p_buffer );
......
/***************************************************************************** /*****************************************************************************
* gather.c * gather.c: gathering stream output module
***************************************************************************** *****************************************************************************
* Copyright (C) 2001, 2002 VideoLAN * Copyright (C) 2003-2004 VideoLAN
* $Id: gather.c,v 1.2 2003/11/21 15:32:08 fenrir Exp $ * $Id: gather.c,v 1.3 2004/01/25 14:34:25 gbazin Exp $
* *
* Authors: Laurent Aimar <fenrir@via.ecp.fr> * Authors: Laurent Aimar <fenrir@via.ecp.fr>
* *
...@@ -37,7 +37,7 @@ static int Open ( vlc_object_t * ); ...@@ -37,7 +37,7 @@ static int Open ( vlc_object_t * );
static void Close ( vlc_object_t * ); static void Close ( vlc_object_t * );
vlc_module_begin(); vlc_module_begin();
set_description( _("Gather stream") ); set_description( _("Gathering stream output") );
set_capability( "sout stream", 50 ); set_capability( "sout stream", 50 );
add_shortcut( "gather" ); add_shortcut( "gather" );
set_callbacks( Open, Close ); set_callbacks( Open, Close );
...@@ -48,7 +48,8 @@ vlc_module_end(); ...@@ -48,7 +48,8 @@ vlc_module_end();
*****************************************************************************/ *****************************************************************************/
static sout_stream_id_t *Add ( sout_stream_t *, es_format_t * ); static sout_stream_id_t *Add ( sout_stream_t *, es_format_t * );
static int Del ( sout_stream_t *, sout_stream_id_t * ); static int Del ( sout_stream_t *, sout_stream_id_t * );
static int Send( sout_stream_t *, sout_stream_id_t *, sout_buffer_t* ); static int Send( sout_stream_t *, sout_stream_id_t *,
sout_buffer_t* );
struct sout_stream_id_t struct sout_stream_id_t
{ {
...@@ -74,8 +75,8 @@ static int Open( vlc_object_t *p_this ) ...@@ -74,8 +75,8 @@ static int Open( vlc_object_t *p_this )
sout_stream_t *p_stream = (sout_stream_t*)p_this; sout_stream_t *p_stream = (sout_stream_t*)p_this;
sout_stream_sys_t *p_sys; sout_stream_sys_t *p_sys;
p_stream->p_sys = p_sys = malloc( sizeof( sout_stream_sys_t ) ); p_stream->p_sys = p_sys = malloc( sizeof( sout_stream_sys_t ) );
p_sys->p_out = sout_stream_new( p_stream->p_sout, p_stream->psz_next ); p_sys->p_out = sout_stream_new( p_stream->p_sout, p_stream->psz_next );
if( p_sys->p_out == NULL ) if( p_sys->p_out == NULL )
{ {
free( p_sys ); free( p_sys );
...@@ -192,4 +193,3 @@ static int Send( sout_stream_t *p_stream, ...@@ -192,4 +193,3 @@ static int Send( sout_stream_t *p_stream,
return p_sys->p_out->pf_send( p_sys->p_out, id->id, p_buffer ); return p_sys->p_out->pf_send( p_sys->p_out, id->id, p_buffer );
} }
/***************************************************************************** /*****************************************************************************
* rtp.c * rtp.c: rtp stream output module
***************************************************************************** *****************************************************************************
* Copyright (C) 2003 VideoLAN * Copyright (C) 2003-2004 VideoLAN
* $Id: rtp.c,v 1.7 2003/11/21 15:32:08 fenrir Exp $ * $Id: rtp.c,v 1.8 2004/01/25 14:34:25 gbazin Exp $
* *
* Authors: Laurent Aimar <fenrir@via.ecp.fr> * Authors: Laurent Aimar <fenrir@via.ecp.fr>
* *
...@@ -40,7 +40,7 @@ static int Open ( vlc_object_t * ); ...@@ -40,7 +40,7 @@ static int Open ( vlc_object_t * );
static void Close( vlc_object_t * ); static void Close( vlc_object_t * );
vlc_module_begin(); vlc_module_begin();
set_description( _("RTP stream") ); set_description( _("RTP stream output") );
set_capability( "sout stream", 0 ); set_capability( "sout stream", 0 );
add_shortcut( "rtp" ); add_shortcut( "rtp" );
set_callbacks( Open, Close ); set_callbacks( Open, Close );
...@@ -51,8 +51,8 @@ vlc_module_end(); ...@@ -51,8 +51,8 @@ vlc_module_end();
*****************************************************************************/ *****************************************************************************/
static sout_stream_id_t *Add ( sout_stream_t *, es_format_t * ); static sout_stream_id_t *Add ( sout_stream_t *, es_format_t * );
static int Del ( sout_stream_t *, sout_stream_id_t * ); static int Del ( sout_stream_t *, sout_stream_id_t * );
static int Send( sout_stream_t *, sout_stream_id_t *, sout_buffer_t* ); static int Send( sout_stream_t *, sout_stream_id_t *,
sout_buffer_t* );
struct sout_stream_sys_t struct sout_stream_sys_t
{ {
...@@ -90,7 +90,9 @@ struct sout_stream_sys_t ...@@ -90,7 +90,9 @@ struct sout_stream_sys_t
sout_stream_id_t **es; sout_stream_id_t **es;
}; };
typedef int (*pf_rtp_packetizer_t)( sout_stream_t *, sout_stream_id_t *, sout_buffer_t * ); typedef int (*pf_rtp_packetizer_t)( sout_stream_t *, sout_stream_id_t *,
sout_buffer_t * );
struct sout_stream_id_t struct sout_stream_id_t
{ {
/* rtp field */ /* rtp field */
...@@ -138,7 +140,8 @@ static int Open( vlc_object_t *p_this ) ...@@ -138,7 +140,8 @@ static int Open( vlc_object_t *p_this )
{ {
p_sys->i_port = atoi( val ); p_sys->i_port = atoi( val );
} }
if( !p_sys->psz_destination || *p_sys->psz_destination == '\0' || p_sys->i_port <= 0 ) if( !p_sys->psz_destination || *p_sys->psz_destination == '\0' ||
p_sys->i_port <= 0 )
{ {
msg_Err( p_stream, "invalid/missing dst or port" ); msg_Err( p_stream, "invalid/missing dst or port" );
free( p_sys ); free( p_sys );
...@@ -199,7 +202,7 @@ static int Open( vlc_object_t *p_this ) ...@@ -199,7 +202,7 @@ static int Open( vlc_object_t *p_this )
sprintf( access, "udp{raw}" ); sprintf( access, "udp{raw}" );
} }
sprintf( url, "%s:%d", p_sys->psz_destination, p_sys->i_port ); sprintf( url, "%s:%d", p_sys->psz_destination, p_sys->i_port );
if( ( p_sys->p_access = sout_AccessOutNew( p_sout, access, url ) ) == NULL ) if( !( p_sys->p_access = sout_AccessOutNew( p_sout, access, url ) ) )
{ {
msg_Err( p_stream, "cannot create the access out for %s://%s", msg_Err( p_stream, "cannot create the access out for %s://%s",
access, url ); access, url );
...@@ -214,7 +217,8 @@ static int Open( vlc_object_t *p_this ) ...@@ -214,7 +217,8 @@ static int Open( vlc_object_t *p_this )
} }
/* the access out grabber TODO export it as sout_AccessOutGrabberNew */ /* the access out grabber TODO export it as sout_AccessOutGrabberNew */
p_grab = p_sys->p_grab = vlc_object_create( p_sout, sizeof( sout_access_out_t ) ); p_grab = p_sys->p_grab =
vlc_object_create( p_sout, sizeof( sout_access_out_t ) );
p_grab->p_module = NULL; p_grab->p_module = NULL;
p_grab->p_sout = p_sout; p_grab->p_sout = p_sout;
p_grab->psz_access = strdup( "grab" ); p_grab->psz_access = strdup( "grab" );
...@@ -225,7 +229,7 @@ static int Open( vlc_object_t *p_this ) ...@@ -225,7 +229,7 @@ static int Open( vlc_object_t *p_this )
p_grab->pf_write = AccessOutGrabberWrite; p_grab->pf_write = AccessOutGrabberWrite;
/* the muxer */ /* the muxer */
if( ( p_sys->p_mux = sout_MuxNew( p_sout, val, p_sys->p_grab ) ) == NULL ) if( !( p_sys->p_mux = sout_MuxNew( p_sout, val, p_sys->p_grab ) ) )
{ {
msg_Err( p_stream, "cannot create the muxer (%s)", val ); msg_Err( p_stream, "cannot create the muxer (%s)", val );
sout_AccessOutDelete( p_sys->p_grab ); sout_AccessOutDelete( p_sys->p_grab );
...@@ -233,10 +237,13 @@ static int Open( vlc_object_t *p_this ) ...@@ -233,10 +237,13 @@ static int Open( vlc_object_t *p_this )
free( p_sys ); free( p_sys );
return VLC_EGENERIC; return VLC_EGENERIC;
} }
p_sout->i_preheader = __MAX( p_sout->i_preheader, p_sys->p_mux->i_preheader ); p_sout->i_preheader = __MAX( p_sout->i_preheader,
p_sys->p_mux->i_preheader );
/* create the SDP only once */ /* create the SDP only once */
p_sys->psz_sdp = malloc( 200 + 20 + 10 + strlen( p_sys->psz_destination ) + 10 + 10 + 10 + 10 + strlen( psz_rtpmap ) ); p_sys->psz_sdp =
malloc( 200 + 20 + 10 + strlen( p_sys->psz_destination ) +
10 + 10 + 10 + 10 + strlen( psz_rtpmap ) );
sprintf( p_sys->psz_sdp, sprintf( p_sys->psz_sdp,
"v=0\n" "v=0\n"
"o=- "I64Fd" %d IN IP4 127.0.0.1\n" "o=- "I64Fd" %d IN IP4 127.0.0.1\n"
...@@ -274,20 +281,20 @@ static int Open( vlc_object_t *p_this ) ...@@ -274,20 +281,20 @@ static int Open( vlc_object_t *p_this )
vlc_UrlParse( &url, val, 0 ); vlc_UrlParse( &url, val, 0 );
if( url.psz_protocol && !strcmp( url.psz_protocol, "http" ) ) if( url.psz_protocol && !strcmp( url.psz_protocol, "http" ) )
{ {
if( ( p_sys->p_httpd = httpd_Find( VLC_OBJECT(p_stream), VLC_TRUE ) ) ) if( ( p_sys->p_httpd =
httpd_Find( VLC_OBJECT(p_stream), VLC_TRUE ) ) )
{ {
p_sys->p_httpd_host = p_sys->p_httpd->pf_register_host( p_sys->p_httpd, p_sys->p_httpd_host =
url.psz_host, p_sys->p_httpd->pf_register_host( p_sys->p_httpd,
url.i_port ); url.psz_host,
url.i_port );
if( p_sys->p_httpd_host ) if( p_sys->p_httpd_host )
{ {
p_sys->p_httpd_file = p_sys->p_httpd_file =
p_sys->p_httpd->pf_register_file( p_sys->p_httpd, p_sys->p_httpd->pf_register_file( p_sys->p_httpd,
url.psz_path ? url.psz_path : "/", url.psz_path ? url.psz_path : "/",
"application/sdp", "application/sdp", NULL, NULL,
NULL, NULL, HttpCallback, HttpCallback, (void*)p_sys );
HttpCallback, HttpCallback,
(void*)p_sys );
} }
} }
if( p_sys->p_httpd_file == NULL ) if( p_sys->p_httpd_file == NULL )
...@@ -297,7 +304,8 @@ static int Open( vlc_object_t *p_this ) ...@@ -297,7 +304,8 @@ static int Open( vlc_object_t *p_this )
} }
else else
{ {
msg_Warn( p_stream, "unknow protocol for SDP (%s)", url.psz_protocol ); msg_Warn( p_stream, "unknow protocol for SDP (%s)",
url.psz_protocol );
} }
vlc_UrlClean( &url ); vlc_UrlClean( &url );
} }
...@@ -336,11 +344,13 @@ static void Close( vlc_object_t * p_this ) ...@@ -336,11 +344,13 @@ static void Close( vlc_object_t * p_this )
if( p_sys->p_httpd_file ) if( p_sys->p_httpd_file )
{ {
p_sys->p_httpd->pf_unregister_file( p_sys->p_httpd, p_sys->p_httpd_file ); p_sys->p_httpd->pf_unregister_file( p_sys->p_httpd,
p_sys->p_httpd_file );
} }
if( p_sys->p_httpd_host ) if( p_sys->p_httpd_host )
{ {
p_sys->p_httpd->pf_unregister_host( p_sys->p_httpd, p_sys->p_httpd_host ); p_sys->p_httpd->pf_unregister_host( p_sys->p_httpd,
p_sys->p_httpd_host );
} }
if( p_sys->p_httpd ) if( p_sys->p_httpd )
{ {
...@@ -354,7 +364,6 @@ static void Close( vlc_object_t * p_this ) ...@@ -354,7 +364,6 @@ static void Close( vlc_object_t * p_this )
free( p_sys ); free( p_sys );
} }
/***************************************************************************** /*****************************************************************************
* SDPGenerate * SDPGenerate
*****************************************************************************/ *****************************************************************************/
...@@ -389,9 +398,11 @@ static void SDPGenerate( sout_stream_t *p_stream ) ...@@ -389,9 +398,11 @@ static void SDPGenerate( sout_stream_t *p_stream )
p = psz_sdp = malloc( i_size ); p = psz_sdp = malloc( i_size );
p += sprintf( p, "v=0\n" ); p += sprintf( p, "v=0\n" );
p += sprintf( p, "o=- "I64Fd" %d IN IP4 127.0.0.1\n", p_sys->i_sdp_id, p_sys->i_sdp_version ); p += sprintf( p, "o=- "I64Fd" %d IN IP4 127.0.0.1\n",
p_sys->i_sdp_id, p_sys->i_sdp_version );
p += sprintf( p, "s=NONE\n" ); p += sprintf( p, "s=NONE\n" );
p += sprintf( p, "c=IN IP4 %s/%d\n", p_sys->psz_destination, p_sys->i_ttl ); p += sprintf( p, "c=IN IP4 %s/%d\n", p_sys->psz_destination,
p_sys->i_ttl );
for( i = 0; i < p_sys->i_es; i++ ) for( i = 0; i < p_sys->i_es; i++ )
{ {
...@@ -413,11 +424,13 @@ static void SDPGenerate( sout_stream_t *p_stream ) ...@@ -413,11 +424,13 @@ static void SDPGenerate( sout_stream_t *p_stream )
} }
if( id->psz_rtpmap ) if( id->psz_rtpmap )
{ {
p += sprintf( p, "a=rtpmap:%d %s\n", id->i_payload_type, id->psz_rtpmap ); p += sprintf( p, "a=rtpmap:%d %s\n", id->i_payload_type,
id->psz_rtpmap );
} }
if( id->psz_fmtp ) if( id->psz_fmtp )
{ {
p += sprintf( p, "a=fmtp:%d %s\n", id->i_payload_type, id->psz_fmtp ); p += sprintf( p, "a=fmtp:%d %s\n", id->i_payload_type,
id->psz_fmtp );
} }
} }
...@@ -434,7 +447,6 @@ static void SDPGenerate( sout_stream_t *p_stream ) ...@@ -434,7 +447,6 @@ static void SDPGenerate( sout_stream_t *p_stream )
/***************************************************************************** /*****************************************************************************
* *
*****************************************************************************/ *****************************************************************************/
static int rtp_packetize_l16 ( sout_stream_t *, sout_stream_id_t *, sout_buffer_t * ); static int rtp_packetize_l16 ( sout_stream_t *, sout_stream_id_t *, sout_buffer_t * );
static int rtp_packetize_l8 ( sout_stream_t *, sout_stream_id_t *, sout_buffer_t * ); static int rtp_packetize_l8 ( sout_stream_t *, sout_stream_id_t *, sout_buffer_t * );
static int rtp_packetize_mpa ( sout_stream_t *, sout_stream_id_t *, sout_buffer_t * ); static int rtp_packetize_mpa ( sout_stream_t *, sout_stream_id_t *, sout_buffer_t * );
...@@ -456,7 +468,7 @@ static void sprintf_hexa( char *s, uint8_t *p_data, int i_data ) ...@@ -456,7 +468,7 @@ static void sprintf_hexa( char *s, uint8_t *p_data, int i_data )
s[2*i_data] = '\0'; s[2*i_data] = '\0';
} }
static sout_stream_id_t * Add ( sout_stream_t *p_stream, es_format_t *p_fmt ) static sout_stream_id_t *Add( sout_stream_t *p_stream, es_format_t *p_fmt )
{ {
sout_instance_t *p_sout = p_stream->p_sout; sout_instance_t *p_sout = p_stream->p_sout;
sout_stream_sys_t *p_sys = p_stream->p_sys; sout_stream_sys_t *p_sys = p_stream->p_sys;
...@@ -516,7 +528,8 @@ static sout_stream_id_t * Add ( sout_stream_t *p_stream, es_format_t *p_fmt ...@@ -516,7 +528,8 @@ static sout_stream_id_t * Add ( sout_stream_t *p_stream, es_format_t *p_fmt
{ {
id->i_payload_type = 11; id->i_payload_type = 11;
} }
else if( p_fmt->audio.i_channels == 2 && p_fmt->audio.i_rate == 44100 ) else if( p_fmt->audio.i_channels == 2 &&
p_fmt->audio.i_rate == 44100 )
{ {
id->i_payload_type = 10; id->i_payload_type = 10;
} }
...@@ -525,14 +538,16 @@ static sout_stream_id_t * Add ( sout_stream_t *p_stream, es_format_t *p_fmt ...@@ -525,14 +538,16 @@ static sout_stream_id_t * Add ( sout_stream_t *p_stream, es_format_t *p_fmt
id->i_payload_type = p_sys->i_payload_type++; id->i_payload_type = p_sys->i_payload_type++;
} }
id->psz_rtpmap = malloc( strlen( "L16/*/*" ) + 20+1 ); id->psz_rtpmap = malloc( strlen( "L16/*/*" ) + 20+1 );
sprintf( id->psz_rtpmap, "L16/%d/%d", p_fmt->audio.i_rate, p_fmt->audio.i_channels ); sprintf( id->psz_rtpmap, "L16/%d/%d", p_fmt->audio.i_rate,
p_fmt->audio.i_channels );
id->i_clock_rate = p_fmt->audio.i_rate; id->i_clock_rate = p_fmt->audio.i_rate;
id->pf_packetize = rtp_packetize_l16; id->pf_packetize = rtp_packetize_l16;
break; break;
case VLC_FOURCC( 'u', '8', ' ', ' ' ): case VLC_FOURCC( 'u', '8', ' ', ' ' ):
id->i_payload_type = p_sys->i_payload_type++; id->i_payload_type = p_sys->i_payload_type++;
id->psz_rtpmap = malloc( strlen( "L8/*/*" ) + 20+1 ); id->psz_rtpmap = malloc( strlen( "L8/*/*" ) + 20+1 );
sprintf( id->psz_rtpmap, "L8/%d/%d", p_fmt->audio.i_rate, p_fmt->audio.i_channels ); sprintf( id->psz_rtpmap, "L8/%d/%d", p_fmt->audio.i_rate,
p_fmt->audio.i_channels );
id->i_clock_rate = p_fmt->audio.i_rate; id->i_clock_rate = p_fmt->audio.i_rate;
id->pf_packetize = rtp_packetize_l8; id->pf_packetize = rtp_packetize_l8;
break; break;
...@@ -583,13 +598,15 @@ static sout_stream_id_t * Add ( sout_stream_t *p_stream, es_format_t *p_fmt ...@@ -583,13 +598,15 @@ static sout_stream_id_t * Add ( sout_stream_t *p_stream, es_format_t *p_fmt
id->psz_fmtp = malloc( 200 + 2 * p_fmt->i_extra ); id->psz_fmtp = malloc( 200 + 2 * p_fmt->i_extra );
sprintf_hexa( hexa, p_fmt->p_extra, p_fmt->i_extra ); sprintf_hexa( hexa, p_fmt->p_extra, p_fmt->i_extra );
sprintf( id->psz_fmtp, sprintf( id->psz_fmtp,
"streamtype=5; profile-level-id=15; mode=AAC-hbr; config=%s; " "streamtype=5; profile-level-id=15; mode=AAC-hbr; "
"SizeLength=13; IndexLength=3; IndexDeltaLength=3; Profile=1;", hexa ); "config=%s; SizeLength=13; IndexLength=3; "
"IndexDeltaLength=3; Profile=1;", hexa );
break; break;
} }
default: default:
msg_Err( p_stream, "cannot add this stream (unsupported codec:%4.4s)", (char*)&p_fmt->i_codec ); msg_Err( p_stream, "cannot add this stream (unsupported "
"codec:%4.4s)", (char*)&p_fmt->i_codec );
free( id ); free( id );
return NULL; return NULL;
} }
...@@ -623,7 +640,7 @@ static sout_stream_id_t * Add ( sout_stream_t *p_stream, es_format_t *p_fmt ...@@ -623,7 +640,7 @@ static sout_stream_id_t * Add ( sout_stream_t *p_stream, es_format_t *p_fmt
return id; return id;
} }
static int Del ( sout_stream_t *p_stream, sout_stream_id_t *id ) static int Del( sout_stream_t *p_stream, sout_stream_id_t *id )
{ {
sout_stream_sys_t *p_sys = p_stream->p_sys; sout_stream_sys_t *p_sys = p_stream->p_sys;
...@@ -650,7 +667,8 @@ static int Del ( sout_stream_t *p_stream, sout_stream_id_t *id ) ...@@ -650,7 +667,8 @@ static int Del ( sout_stream_t *p_stream, sout_stream_id_t *id )
return VLC_SUCCESS; return VLC_SUCCESS;
} }
static int Send ( sout_stream_t *p_stream, sout_stream_id_t *id, sout_buffer_t *p_buffer ) static int Send( sout_stream_t *p_stream, sout_stream_id_t *id,
sout_buffer_t *p_buffer )
{ {
sout_buffer_t *p_next; sout_buffer_t *p_next;
...@@ -696,7 +714,8 @@ static int HttpCallback( httpd_file_callback_args_t *p_args, ...@@ -696,7 +714,8 @@ static int HttpCallback( httpd_file_callback_args_t *p_args,
return VLC_SUCCESS; return VLC_SUCCESS;
} }
static int AccessOutGrabberWriteBuffer( sout_stream_t *p_stream, sout_buffer_t *p_buffer ) static int AccessOutGrabberWriteBuffer( sout_stream_t *p_stream,
sout_buffer_t *p_buffer )
{ {
sout_stream_sys_t *p_sys = p_stream->p_sys; sout_stream_sys_t *p_sys = p_stream->p_sys;
...@@ -707,7 +726,7 @@ static int AccessOutGrabberWriteBuffer( sout_stream_t *p_stream, sout_buffer_t * ...@@ -707,7 +726,7 @@ static int AccessOutGrabberWriteBuffer( sout_stream_t *p_stream, sout_buffer_t *
unsigned int i_data = p_buffer->i_size; unsigned int i_data = p_buffer->i_size;
unsigned int i_max = p_sys->i_mtu - 12; unsigned int i_max = p_sys->i_mtu - 12;
int i_packet = ( p_buffer->i_size + i_max - 1 ) / i_max; int i_packet = ( p_buffer->i_size + i_max - 1 ) / i_max;
while( i_data > 0 ) while( i_data > 0 )
{ {
...@@ -760,7 +779,8 @@ static int AccessOutGrabberWriteBuffer( sout_stream_t *p_stream, sout_buffer_t * ...@@ -760,7 +779,8 @@ static int AccessOutGrabberWriteBuffer( sout_stream_t *p_stream, sout_buffer_t *
return VLC_SUCCESS; return VLC_SUCCESS;
} }
static int AccessOutGrabberWrite( sout_access_out_t *p_access, sout_buffer_t *p_buffer ) static int AccessOutGrabberWrite( sout_access_out_t *p_access,
sout_buffer_t *p_buffer )
{ {
sout_stream_t *p_stream = (sout_stream_t*)p_access->p_sys; sout_stream_t *p_stream = (sout_stream_t*)p_access->p_sys;
...@@ -781,9 +801,10 @@ static int AccessOutGrabberWrite( sout_access_out_t *p_access, sout_buffer_t *p_ ...@@ -781,9 +801,10 @@ static int AccessOutGrabberWrite( sout_access_out_t *p_access, sout_buffer_t *p_
} }
static void rtp_packetize_common( sout_stream_id_t *id, sout_buffer_t *out, int b_marker, int64_t i_pts ) static void rtp_packetize_common( sout_stream_id_t *id, sout_buffer_t *out,
int b_marker, int64_t i_pts )
{ {
uint32_t i_timestamp = i_pts * (int64_t)id->i_clock_rate / (int64_t)1000000; uint32_t i_timestamp = i_pts * (int64_t)id->i_clock_rate / I64C(1000000);
out->p_buffer[0] = 0x80; out->p_buffer[0] = 0x80;
out->p_buffer[1] = (b_marker?0x80:0x00)|id->i_payload_type; out->p_buffer[1] = (b_marker?0x80:0x00)|id->i_payload_type;
...@@ -803,7 +824,8 @@ static void rtp_packetize_common( sout_stream_id_t *id, sout_buffer_t *out, int ...@@ -803,7 +824,8 @@ static void rtp_packetize_common( sout_stream_id_t *id, sout_buffer_t *out, int
id->i_sequence++; id->i_sequence++;
} }
static int rtp_packetize_mpa( sout_stream_t *p_stream, sout_stream_id_t *id, sout_buffer_t *in ) static int rtp_packetize_mpa( sout_stream_t *p_stream, sout_stream_id_t *id,
sout_buffer_t *in )
{ {
int i_max = id->i_mtu - 12 - 4; /* payload max in one packet */ int i_max = id->i_mtu - 12 - 4; /* payload max in one packet */
int i_count = ( in->i_size + i_max - 1 ) / i_max; int i_count = ( in->i_size + i_max - 1 ) / i_max;
...@@ -841,7 +863,8 @@ static int rtp_packetize_mpa( sout_stream_t *p_stream, sout_stream_id_t *id, sou ...@@ -841,7 +863,8 @@ static int rtp_packetize_mpa( sout_stream_t *p_stream, sout_stream_id_t *id, sou
} }
/* rfc2250 */ /* rfc2250 */
static int rtp_packetize_mpv( sout_stream_t *p_stream, sout_stream_id_t *id, sout_buffer_t *in ) static int rtp_packetize_mpv( sout_stream_t *p_stream, sout_stream_id_t *id,
sout_buffer_t *in )
{ {
int i_max = id->i_mtu - 12 - 4; /* payload max in one packet */ int i_max = id->i_mtu - 12 - 4; /* payload max in one packet */
int i_count = ( in->i_size + i_max - 1 ) / i_max; int i_count = ( in->i_size + i_max - 1 ) / i_max;
...@@ -887,7 +910,8 @@ static int rtp_packetize_mpv( sout_stream_t *p_stream, sout_stream_id_t *id, sou ...@@ -887,7 +910,8 @@ static int rtp_packetize_mpv( sout_stream_t *p_stream, sout_stream_id_t *id, sou
i_temporal_ref = ( p[1] << 2) |((p[2]>>6)&0x03); i_temporal_ref = ( p[1] << 2) |((p[2]>>6)&0x03);
i_picture_coding_type = (p[2] >> 3)&0x07; i_picture_coding_type = (p[2] >> 3)&0x07;
if( i_rest > 4 && ( i_picture_coding_type == 2 || i_picture_coding_type == 3 ) ) if( i_rest > 4 && ( i_picture_coding_type == 2 ||
i_picture_coding_type == 3 ) )
{ {
i_ffc = (p[3] >> 2)&0x01; i_ffc = (p[3] >> 2)&0x01;
i_bfc = ((p[3]&0x03) << 1)|((p[4]>>7)&0x01); i_bfc = ((p[3]&0x03) << 1)|((p[4]>>7)&0x01);
...@@ -908,7 +932,8 @@ static int rtp_packetize_mpv( sout_stream_t *p_stream, sout_stream_id_t *id, sou ...@@ -908,7 +932,8 @@ static int rtp_packetize_mpv( sout_stream_t *p_stream, sout_stream_id_t *id, sou
for( i = 0; i < i_count; i++ ) for( i = 0; i < i_count; i++ )
{ {
int i_payload = __MIN( i_max, i_data ); int i_payload = __MIN( i_max, i_data );
sout_buffer_t *out = sout_BufferNew( p_stream->p_sout, 16 + i_payload ); sout_buffer_t *out = sout_BufferNew( p_stream->p_sout,
16 + i_payload );
uint32_t h = ( i_temporal_ref << 16 )| uint32_t h = ( i_temporal_ref << 16 )|
( b_sequence_start << 13 )| ( b_sequence_start << 13 )|
( b_start_slice << 12 )| ( b_start_slice << 12 )|
...@@ -939,7 +964,8 @@ static int rtp_packetize_mpv( sout_stream_t *p_stream, sout_stream_id_t *id, sou ...@@ -939,7 +964,8 @@ static int rtp_packetize_mpv( sout_stream_t *p_stream, sout_stream_id_t *id, sou
return VLC_SUCCESS; return VLC_SUCCESS;
} }
static int rtp_packetize_ac3( sout_stream_t *p_stream, sout_stream_id_t *id, sout_buffer_t *in ) static int rtp_packetize_ac3( sout_stream_t *p_stream, sout_stream_id_t *id,
sout_buffer_t *in )
{ {
int i_max = id->i_mtu - 12 - 2; /* payload max in one packet */ int i_max = id->i_mtu - 12 - 2; /* payload max in one packet */
int i_count = ( in->i_size + i_max - 1 ) / i_max; int i_count = ( in->i_size + i_max - 1 ) / i_max;
...@@ -975,7 +1001,8 @@ static int rtp_packetize_ac3( sout_stream_t *p_stream, sout_stream_id_t *id, sou ...@@ -975,7 +1001,8 @@ static int rtp_packetize_ac3( sout_stream_t *p_stream, sout_stream_id_t *id, sou
return VLC_SUCCESS; return VLC_SUCCESS;
} }
static int rtp_packetize_split( sout_stream_t *p_stream, sout_stream_id_t *id, sout_buffer_t *in ) static int rtp_packetize_split( sout_stream_t *p_stream, sout_stream_id_t *id,
sout_buffer_t *in )
{ {
int i_max = id->i_mtu - 12; /* payload max in one packet */ int i_max = id->i_mtu - 12; /* payload max in one packet */
int i_count = ( in->i_size + i_max - 1 ) / i_max; int i_count = ( in->i_size + i_max - 1 ) / i_max;
...@@ -990,7 +1017,8 @@ static int rtp_packetize_split( sout_stream_t *p_stream, sout_stream_id_t *id, s ...@@ -990,7 +1017,8 @@ static int rtp_packetize_split( sout_stream_t *p_stream, sout_stream_id_t *id, s
sout_buffer_t *out = sout_BufferNew( p_stream->p_sout, 12 + i_payload ); sout_buffer_t *out = sout_BufferNew( p_stream->p_sout, 12 + i_payload );
/* rtp common header */ /* rtp common header */
rtp_packetize_common( id, out, ((i == i_count - 1)?1:0), (in->i_pts > 0 ? in->i_pts : in->i_dts) ); rtp_packetize_common( id, out, ((i == i_count - 1)?1:0),
(in->i_pts > 0 ? in->i_pts : in->i_dts) );
memcpy( &out->p_buffer[12], p_data, i_payload ); memcpy( &out->p_buffer[12], p_data, i_payload );
out->i_size = 12 + i_payload; out->i_size = 12 + i_payload;
...@@ -1006,7 +1034,8 @@ static int rtp_packetize_split( sout_stream_t *p_stream, sout_stream_id_t *id, s ...@@ -1006,7 +1034,8 @@ static int rtp_packetize_split( sout_stream_t *p_stream, sout_stream_id_t *id, s
return VLC_SUCCESS; return VLC_SUCCESS;
} }
static int rtp_packetize_l16( sout_stream_t *p_stream, sout_stream_id_t *id, sout_buffer_t *in ) static int rtp_packetize_l16( sout_stream_t *p_stream, sout_stream_id_t *id,
sout_buffer_t *in )
{ {
int i_max = id->i_mtu - 12; /* payload max in one packet */ int i_max = id->i_mtu - 12; /* payload max in one packet */
int i_count = ( in->i_size + i_max - 1 ) / i_max; int i_count = ( in->i_size + i_max - 1 ) / i_max;
...@@ -1021,7 +1050,8 @@ static int rtp_packetize_l16( sout_stream_t *p_stream, sout_stream_id_t *id, sou ...@@ -1021,7 +1050,8 @@ static int rtp_packetize_l16( sout_stream_t *p_stream, sout_stream_id_t *id, sou
sout_buffer_t *out = sout_BufferNew( p_stream->p_sout, 12 + i_payload ); sout_buffer_t *out = sout_BufferNew( p_stream->p_sout, 12 + i_payload );
/* rtp common header */ /* rtp common header */
rtp_packetize_common( id, out, 0, (in->i_pts > 0 ? in->i_pts : in->i_dts) ); rtp_packetize_common( id, out, 0,
(in->i_pts > 0 ? in->i_pts : in->i_dts) );
memcpy( &out->p_buffer[12], p_data, i_payload ); memcpy( &out->p_buffer[12], p_data, i_payload );
out->i_size = 12 + i_payload; out->i_size = 12 + i_payload;
...@@ -1038,7 +1068,8 @@ static int rtp_packetize_l16( sout_stream_t *p_stream, sout_stream_id_t *id, sou ...@@ -1038,7 +1068,8 @@ static int rtp_packetize_l16( sout_stream_t *p_stream, sout_stream_id_t *id, sou
return VLC_SUCCESS; return VLC_SUCCESS;
} }
static int rtp_packetize_l8( sout_stream_t *p_stream, sout_stream_id_t *id, sout_buffer_t *in ) static int rtp_packetize_l8( sout_stream_t *p_stream, sout_stream_id_t *id,
sout_buffer_t *in )
{ {
int i_max = id->i_mtu - 12; /* payload max in one packet */ int i_max = id->i_mtu - 12; /* payload max in one packet */
int i_count = ( in->i_size + i_max - 1 ) / i_max; int i_count = ( in->i_size + i_max - 1 ) / i_max;
...@@ -1053,7 +1084,8 @@ static int rtp_packetize_l8( sout_stream_t *p_stream, sout_stream_id_t *id, sout ...@@ -1053,7 +1084,8 @@ static int rtp_packetize_l8( sout_stream_t *p_stream, sout_stream_id_t *id, sout
sout_buffer_t *out = sout_BufferNew( p_stream->p_sout, 12 + i_payload ); sout_buffer_t *out = sout_BufferNew( p_stream->p_sout, 12 + i_payload );
/* rtp common header */ /* rtp common header */
rtp_packetize_common( id, out, 0, (in->i_pts > 0 ? in->i_pts : in->i_dts) ); rtp_packetize_common( id, out, 0,
(in->i_pts > 0 ? in->i_pts : in->i_dts) );
memcpy( &out->p_buffer[12], p_data, i_payload ); memcpy( &out->p_buffer[12], p_data, i_payload );
out->i_size = 12 + i_payload; out->i_size = 12 + i_payload;
...@@ -1069,7 +1101,8 @@ static int rtp_packetize_l8( sout_stream_t *p_stream, sout_stream_id_t *id, sout ...@@ -1069,7 +1101,8 @@ static int rtp_packetize_l8( sout_stream_t *p_stream, sout_stream_id_t *id, sout
return VLC_SUCCESS; return VLC_SUCCESS;
} }
static int rtp_packetize_mp4a( sout_stream_t *p_stream, sout_stream_id_t *id, sout_buffer_t *in ) static int rtp_packetize_mp4a( sout_stream_t *p_stream, sout_stream_id_t *id,
sout_buffer_t *in )
{ {
int i_max = id->i_mtu - 16; /* payload max in one packet */ int i_max = id->i_mtu - 16; /* payload max in one packet */
int i_count = ( in->i_size + i_max - 1 ) / i_max; int i_count = ( in->i_size + i_max - 1 ) / i_max;
...@@ -1084,7 +1117,8 @@ static int rtp_packetize_mp4a( sout_stream_t *p_stream, sout_stream_id_t *id, so ...@@ -1084,7 +1117,8 @@ static int rtp_packetize_mp4a( sout_stream_t *p_stream, sout_stream_id_t *id, so
sout_buffer_t *out = sout_BufferNew( p_stream->p_sout, 16 + i_payload ); sout_buffer_t *out = sout_BufferNew( p_stream->p_sout, 16 + i_payload );
/* rtp common header */ /* rtp common header */
rtp_packetize_common( id, out, ((i == i_count - 1)?1:0), (in->i_pts > 0 ? in->i_pts : in->i_dts) ); rtp_packetize_common( id, out, ((i == i_count - 1)?1:0),
(in->i_pts > 0 ? in->i_pts : in->i_dts) );
/* AU headers */ /* AU headers */
/* AU headers length (bits) */ /* AU headers length (bits) */
out->p_buffer[12] = 0; out->p_buffer[12] = 0;
......
/***************************************************************************** /*****************************************************************************
* standard.c * standard.c: standard stream output module
***************************************************************************** *****************************************************************************
* Copyright (C) 2001, 2002 VideoLAN * Copyright (C) 2003-2004 VideoLAN
* $Id: standard.c,v 1.17 2004/01/15 23:40:44 gbazin Exp $ * $Id: standard.c,v 1.18 2004/01/25 14:34:25 gbazin Exp $
* *
* Authors: Laurent Aimar <fenrir@via.ecp.fr> * Authors: Laurent Aimar <fenrir@via.ecp.fr>
* *
...@@ -48,7 +48,7 @@ static int Send( sout_stream_t *, sout_stream_id_t *, sout_buffer_ ...@@ -48,7 +48,7 @@ static int Send( sout_stream_t *, sout_stream_id_t *, sout_buffer_
* Module descriptor * Module descriptor
*****************************************************************************/ *****************************************************************************/
vlc_module_begin(); vlc_module_begin();
set_description( _("Standard stream") ); set_description( _("Standard stream output") );
set_capability( "sout stream", 50 ); set_capability( "sout stream", 50 );
add_shortcut( "standard" ); add_shortcut( "standard" );
add_shortcut( "std" ); add_shortcut( "std" );
...@@ -308,7 +308,6 @@ static int Open( vlc_object_t *p_this ) ...@@ -308,7 +308,6 @@ static int Open( vlc_object_t *p_this )
/***************************************************************************** /*****************************************************************************
* Close: * Close:
*****************************************************************************/ *****************************************************************************/
static void Close( vlc_object_t * p_this ) static void Close( vlc_object_t * p_this )
{ {
sout_stream_t *p_stream = (sout_stream_t*)p_this; sout_stream_t *p_stream = (sout_stream_t*)p_this;
......
/***************************************************************************** /*****************************************************************************
* transcode.c * transcode.c: transcoding stream output module
***************************************************************************** *****************************************************************************
* Copyright (C) 2001, 2002 VideoLAN * Copyright (C) 2003-2004 VideoLAN
* $Id: transcode.c,v 1.71 2004/01/19 18:24:11 fenrir Exp $ * $Id: transcode.c,v 1.72 2004/01/25 14:34:25 gbazin Exp $
* *
* Authors: Laurent Aimar <fenrir@via.ecp.fr> * Authors: Laurent Aimar <fenrir@via.ecp.fr>
* Gildas Bazin <gbazin@netcourrier.com> * Gildas Bazin <gbazin@netcourrier.com>
...@@ -76,7 +76,7 @@ static int pi_channels_maps[6] = ...@@ -76,7 +76,7 @@ static int pi_channels_maps[6] =
* Module descriptor * Module descriptor
*****************************************************************************/ *****************************************************************************/
vlc_module_begin(); vlc_module_begin();
set_description( _("Transcode stream") ); set_description( _("Transcode stream output") );
set_capability( "sout stream", 50 ); set_capability( "sout stream", 50 );
add_shortcut( "transcode" ); add_shortcut( "transcode" );
set_callbacks( Open, Close ); set_callbacks( Open, Close );
......
/***************************************************************************** /*****************************************************************************
* transrate.c * transrate.c: MPEG2 video transrating module
***************************************************************************** *****************************************************************************
* Copyright (C) 2003 VideoLAN * Copyright (C) 2003 VideoLAN
* Copyright (C) 2003 Freebox S.A. * Copyright (C) 2003 Freebox S.A.
* Copyright (C) 2003 Antoine Missout * Copyright (C) 2003 Antoine Missout
* Copyright (C) 2000-2003 Michel Lespinasse <walken@zoy.org> * Copyright (C) 2000-2003 Michel Lespinasse <walken@zoy.org>
* Copyright (C) 1999-2000 Aaron Holtzman <aholtzma@ess.engr.uvic.ca> * Copyright (C) 1999-2000 Aaron Holtzman <aholtzma@ess.engr.uvic.ca>
* $Id: transrate.c,v 1.5 2003/11/29 18:36:13 massiot Exp $ * $Id: transrate.c,v 1.6 2004/01/25 14:34:25 gbazin Exp $
* *
* Authors: Christophe Massiot <massiot@via.ecp.fr> * Authors: Christophe Massiot <massiot@via.ecp.fr>
* Laurent Aimar <fenrir@via.ecp.fr> * Laurent Aimar <fenrir@via.ecp.fr>
...@@ -58,7 +58,7 @@ static int transrate_video_process( sout_stream_t *, sout_stream_id_t *, sout_b ...@@ -58,7 +58,7 @@ static int transrate_video_process( sout_stream_t *, sout_stream_id_t *, sout_b
* Module descriptor * Module descriptor
*****************************************************************************/ *****************************************************************************/
vlc_module_begin(); vlc_module_begin();
set_description( _("Transrate stream") ); set_description( _("MPEG2 video transrating stream output") );
set_capability( "sout stream", 50 ); set_capability( "sout stream", 50 );
add_shortcut( "transrate" ); add_shortcut( "transrate" );
set_callbacks( Open, Close ); set_callbacks( Open, Close );
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment