X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=src%2Finput%2Finput_dec.c;h=71675b8a20bb09496aec32f91f2d0a1851d92ec6;hb=a6bccb1c2976437ddb918dfc934ec0ca73a07933;hp=76a4384eb8bcdffe590983bb08fb1400f4ff5370;hpb=abde4bbfb7419e164d60d7eb71bfa2cbfcc6b434;p=vlc diff --git a/src/input/input_dec.c b/src/input/input_dec.c index 76a4384eb8..71675b8a20 100644 --- a/src/input/input_dec.c +++ b/src/input/input_dec.c @@ -2,7 +2,7 @@ * input_dec.c: Functions for the management of decoders ***************************************************************************** * Copyright (C) 1999-2001 VideoLAN - * $Id: input_dec.c,v 1.21 2001/12/27 01:49:34 massiot Exp $ + * $Id: input_dec.c,v 1.32 2002/04/23 14:16:20 sam Exp $ * * Authors: Christophe Massiot * @@ -24,24 +24,17 @@ /***************************************************************************** * Preamble *****************************************************************************/ -#include "defs.h" - #include #include /* memcpy(), memset() */ #include /* off_t */ -#include "common.h" -#include "intf_msg.h" -#include "threads.h" -#include "mtime.h" +#include #include "stream_control.h" #include "input_ext-dec.h" #include "input_ext-intf.h" #include "input_ext-plugins.h" -#include "modules.h" - static decoder_config_t * CreateDecoderConfig( input_thread_t * p_input, es_descriptor_t * p_es ); static void DeleteDecoderConfig( decoder_config_t * p_config ); @@ -52,13 +45,22 @@ static void DeleteDecoderConfig( decoder_config_t * p_config ); vlc_thread_t input_RunDecoder( input_thread_t * p_input, es_descriptor_t * p_es ) { - probedata_t probedata; vlc_thread_t thread_id; + char * psz_plugin = NULL; - /* Get a suitable module */ - probedata.i_type = p_es->i_type; + if( p_es->i_type == MPEG1_AUDIO_ES || p_es->i_type == MPEG2_AUDIO_ES ) + { + psz_plugin = config_GetPszVariable( "mpeg-adec" ); + } + if( p_es->i_type == AC3_AUDIO_ES ) + { + psz_plugin = config_GetPszVariable( "ac3-adec" ); + } - p_es->p_module = module_Need( MODULE_CAPABILITY_DEC, &probedata ); + /* Get a suitable module */ + p_es->p_module = module_Need( MODULE_CAPABILITY_DECODER, psz_plugin, + (void *)&p_es->i_type ); + if( psz_plugin ) free( psz_plugin ); if( p_es->p_module == NULL ) { intf_ErrMsg( "input error: no suitable decoder module for type 0x%x", @@ -89,9 +91,6 @@ vlc_thread_t input_RunDecoder( input_thread_t * p_input, return( 0 ); } - intf_DbgMsg( "input debug: decoder \"%s\"thread created", - p_es->p_module->psz_name ); - return thread_id; } @@ -246,10 +245,10 @@ static decoder_config_t * CreateDecoderConfig( input_thread_t * p_input, vlc_cond_init(&p_config->p_decoder_fifo->data_wait); p_es->p_decoder_fifo = p_config->p_decoder_fifo; - p_config->pf_init_bit_stream = p_input->pf_init_bit_stream; - p_config->i_id = p_es->i_id; p_config->i_type = p_es->i_type; + p_config->p_demux_data = p_es->p_demux_data; + p_config->p_stream_ctrl = &p_input->stream.control; p_config->p_decoder_fifo->p_first = NULL; @@ -257,7 +256,6 @@ static decoder_config_t * CreateDecoderConfig( input_thread_t * p_input, p_config->p_decoder_fifo->i_depth = 0; p_config->p_decoder_fifo->b_die = p_config->p_decoder_fifo->b_error = 0; p_config->p_decoder_fifo->p_packets_mgt = p_input->p_method_data; - p_config->p_decoder_fifo->pf_delete_pes = p_input->pf_delete_pes; return p_config; } @@ -271,9 +269,8 @@ static void DeleteDecoderConfig( decoder_config_t * p_config ) p_config->i_id, p_config->i_type, p_config->p_decoder_fifo->i_depth ); /* Free all packets still in the decoder fifo. */ - p_config->p_decoder_fifo->pf_delete_pes( - p_config->p_decoder_fifo->p_packets_mgt, - p_config->p_decoder_fifo->p_first ); + input_DeletePES( p_config->p_decoder_fifo->p_packets_mgt, + p_config->p_decoder_fifo->p_first ); /* Destroy the lock and cond */ vlc_cond_destroy( &p_config->p_decoder_fifo->data_wait );