* input_dec.c: Functions for the management of decoders
*****************************************************************************
* Copyright (C) 1999-2004 VideoLAN
- * $Id: input_dec.c,v 1.90 2004/02/22 16:08:47 fenrir Exp $
+ * $Id: input_dec.c,v 1.93 2004/03/03 11:12:08 massiot Exp $
*
* Authors: Christophe Massiot <massiot@via.ecp.fr>
* Gildas Bazin <gbazin@netcourrier.com>
vlc_value_t val;
/* If we are in sout mode, search for packetizer module */
- var_Get( p_input, "sout", &val );
- if( !p_es->b_force_decoder && val.psz_string && *val.psz_string )
+ if( !p_es->b_force_decoder && p_input->stream.p_sout )
{
- free( val.psz_string );
- val.b_bool = VLC_TRUE;
-
- if( p_es->i_cat == AUDIO_ES )
- {
- var_Get( p_input, "sout-audio", &val );
- }
- else if( p_es->i_cat == VIDEO_ES )
+ /* Create the decoder configuration structure */
+ p_dec = CreateDecoder( p_input, p_es, VLC_OBJECT_PACKETIZER );
+ if( p_dec == NULL )
{
- var_Get( p_input, "sout-video", &val );
+ msg_Err( p_input, "could not create packetizer" );
+ return NULL;
}
- if( val.b_bool )
- {
- /* Create the decoder configuration structure */
- p_dec = CreateDecoder( p_input, p_es, VLC_OBJECT_PACKETIZER );
- if( p_dec == NULL )
- {
- msg_Err( p_input, "could not create packetizer" );
- return NULL;
- }
-
- p_dec->p_module =
- module_Need( p_dec, "packetizer", "$packetizer" );
- }
+ p_dec->p_module = module_Need( p_dec, "packetizer", "$packetizer" );
}
else
{
/* default Get a suitable decoder module */
p_dec->p_module = module_Need( p_dec, "decoder", "$codec" );
-
- if( val.psz_string ) free( val.psz_string );
}
- if( !p_dec || !p_dec->p_module )
+ if( !p_dec->p_module )
{
msg_Err( p_dec, "no suitable decoder module for fourcc `%4.4s'.\n"
"VLC probably does not support this sound or video format.",
}
p_block->i_pts = p_pes->i_pts;
p_block->i_dts = p_pes->i_dts;
- p_block->b_discontinuity = p_pes->b_discontinuity;
+ if( p_pes->b_discontinuity )
+ p_block->i_flags |= BLOCK_FLAG_DISCONTINUITY;
p_block->i_rate = p_pes->i_rate;
input_DecodeBlock( p_dec, p_block );
if( p_block )
{
memset( p_block->p_buffer, 0, PADDING_PACKET_SIZE );
- p_block->b_discontinuity = 1;
+ p_block->i_flags |= BLOCK_FLAG_DISCONTINUITY;
block_FifoPut( p_es->p_dec->p_owner->p_fifo, p_block );
}
p_sout_buffer->i_pts = p_sout_block->i_pts;
p_sout_buffer->i_dts = p_sout_block->i_dts;
p_sout_buffer->i_length = p_sout_block->i_length;
+ p_sout_buffer->i_flags =
+ (p_sout_block->i_flags << SOUT_BUFFER_FLAGS_BLOCK_SHIFT)
+ & SOUT_BUFFER_FLAGS_BLOCK_MASK;
block_Release( p_sout_block );