*****************************************************************************/
sout_instance_t *sout_NewInstance( vlc_object_t *p_parent, const char *psz_dest )
{
- static const char typename[] = "stream output";
sout_instance_t *p_sout;
char *psz_chain;
return NULL;
/* *** Allocate descriptor *** */
- p_sout = vlc_custom_create( p_parent, sizeof( *p_sout ),
- VLC_OBJECT_GENERIC, typename );
+ p_sout = vlc_custom_create( p_parent, sizeof( *p_sout ), "stream output" );
if( p_sout == NULL )
return NULL;
vlc_mutex_init( &p_sout->lock );
p_sout->p_stream = NULL;
- /* attach it for inherit */
- vlc_object_attach( p_sout, p_parent );
-
var_Create( p_sout, "sout-mux-caching", VLC_VAR_INTEGER | VLC_VAR_DOINHERIT );
p_sout->p_stream = sout_StreamChainNew( p_sout, psz_chain, NULL, NULL );
vlc_object_release( p_sout );
}
-/*****************************************************************************
- *
- *****************************************************************************/
-void sout_UpdateStatistic( sout_instance_t *p_sout, sout_statistic_t i_type, int i_delta )
-{
- if( !libvlc_stats( p_sout ) )
- return;
-
- /* */
- input_thread_t *p_input = vlc_object_find( p_sout, VLC_OBJECT_INPUT, FIND_PARENT );
- if( !p_input )
- return;
-
- int i_input_type;
- switch( i_type )
- {
- case SOUT_STATISTIC_DECODED_VIDEO:
- i_input_type = INPUT_STATISTIC_DECODED_VIDEO;
- break;
- case SOUT_STATISTIC_DECODED_AUDIO:
- i_input_type = INPUT_STATISTIC_DECODED_AUDIO;
- break;
- case SOUT_STATISTIC_DECODED_SUBTITLE:
- i_input_type = INPUT_STATISTIC_DECODED_SUBTITLE;
- break;
-
- case SOUT_STATISTIC_SENT_PACKET:
- i_input_type = INPUT_STATISTIC_SENT_PACKET;
- break;
-
- case SOUT_STATISTIC_SENT_BYTE:
- i_input_type = INPUT_STATISTIC_SENT_BYTE;
- break;
-
- default:
- msg_Err( p_sout, "Not yet supported statistic type %d", i_type );
- vlc_object_release( p_input );
- return;
- }
-
- input_UpdateStatistic( p_input, i_input_type, i_delta );
-
- vlc_object_release( p_input );
-}
/*****************************************************************************
* Packetizer/Input
*****************************************************************************/
sout_access_out_t *sout_AccessOutNew( vlc_object_t *p_sout,
const char *psz_access, const char *psz_name )
{
- static const char typename[] = "access out";
sout_access_out_t *p_access;
char *psz_next;
- p_access = vlc_custom_create( p_sout, sizeof( *p_access ),
- VLC_OBJECT_GENERIC, typename );
+ p_access = vlc_custom_create( p_sout, sizeof( *p_access ), "access out" );
if( !p_access )
return NULL;
p_access->i_writes = 0;
p_access->i_sent_bytes = 0;
- vlc_object_attach( p_access, p_sout );
-
p_access->p_module =
module_need( p_access, "sout access", p_access->psz_access, true );
*****************************************************************************/
ssize_t sout_AccessOutWrite( sout_access_out_t *p_access, block_t *p_buffer )
{
-#if 0
- const unsigned i_packets_gather = 30;
- p_access->i_writes++;
- p_access->i_sent_bytes += p_buffer->i_buffer;
- if( (p_access->i_writes % i_packets_gather) == 0 )
- {
- sout_UpdateStatistic( p_access->p_sout, SOUT_STATISTIC_SENT_PACKET, i_packets_gather );
- sout_UpdateStatistic( p_access->p_sout, SOUT_STATISTIC_SENT_BYTE, p_access->i_sent_bytes );
- p_access->i_sent_bytes = 0;
- }
-#endif
return p_access->pf_write( p_access, p_buffer );
}
sout_mux_t * sout_MuxNew( sout_instance_t *p_sout, const char *psz_mux,
sout_access_out_t *p_access )
{
- static const char typename[] = "mux";
sout_mux_t *p_mux;
char *psz_next;
- p_mux = vlc_custom_create( p_sout, sizeof( *p_mux ), VLC_OBJECT_GENERIC,
- typename);
+ p_mux = vlc_custom_create( p_sout, sizeof( *p_mux ), "mux" );
if( p_mux == NULL )
return NULL;
p_mux->b_waiting_stream = true;
p_mux->i_add_stream_start = -1;
- vlc_object_attach( p_mux, p_sout );
-
p_mux->p_module =
module_need( p_mux, "sout mux", p_mux->psz_mux, true );
psz_parser++;
}
}
-#if defined( WIN32 ) || defined( UNDER_CE )
+#if defined( WIN32 ) || defined( UNDER_CE ) || defined( __OS2__ )
if( psz_parser - psz_dup == 1 )
{
/* msg_Warn( p_sout, "drive letter %c: found in source string",
static sout_stream_t *sout_StreamNew( sout_instance_t *p_sout, char *psz_name,
config_chain_t *p_cfg, sout_stream_t *p_next)
{
- static const char typename[] = "stream out";
sout_stream_t *p_stream;
assert(psz_name);
- p_stream = vlc_custom_create( p_sout, sizeof( *p_stream ),
- VLC_OBJECT_GENERIC, typename );
+ p_stream = vlc_custom_create( p_sout, sizeof( *p_stream ), "stream out" );
if( !p_stream )
return NULL;
msg_Dbg( p_sout, "stream=`%s'", p_stream->psz_name );
- vlc_object_attach( p_stream, p_sout );
-
p_stream->p_module =
module_need( p_stream, "sout stream", p_stream->psz_name, true );
#undef sout_EncoderCreate
encoder_t *sout_EncoderCreate( vlc_object_t *p_this )
{
- static const char type[] = "encoder";
- return vlc_custom_create( p_this, sizeof( encoder_t ), VLC_OBJECT_GENERIC,
- type );
+ return vlc_custom_create( p_this, sizeof( encoder_t ), "encoder" );
}