+
+/*****************************************************************************
+ * DvdReadLaunchDecoders
+ *****************************************************************************/
+static void DvdReadLauchDecoders( input_thread_t * p_input )
+{
+ thread_dvd_data_t * p_dvd;
+
+ p_dvd = (thread_dvd_data_t*)(p_input->p_access_data);
+
+ if( config_GetInt( p_input, "video" ) )
+ {
+ input_SelectES( p_input, p_input->stream.pp_es[0] );
+ }
+
+ if( config_GetInt( p_input, "audio" ) )
+ {
+ /* For audio: first one if none or a not existing one specified */
+ int i_audio = config_GetInt( p_input, "audio-channel" );
+ if( i_audio < 0 /*|| i_audio > i_audio_nb*/ )
+ {
+ config_PutInt( p_input, "audio-channel", 1 );
+ i_audio = 1;
+ }
+ if( i_audio > 0/* && i_audio_nb > 0*/ )
+ {
+ if( config_GetInt( p_input, "audio-type" )
+ == REQUESTED_AC3 )
+ {
+ int i_ac3 = i_audio;
+ while( ( p_input->stream.pp_es[i_ac3]->i_fourcc !=
+ VLC_FOURCC('a','5','2',' ') ) && ( i_ac3 <=
+ p_dvd->p_vts_file->vtsi_mat->nr_of_vts_audio_streams ) )
+ {
+ i_ac3++;
+ }
+ if( p_input->stream.pp_es[i_ac3]->i_fourcc
+ == VLC_FOURCC('a','5','2',' ') )
+ {
+ input_SelectES( p_input,
+ p_input->stream.pp_es[i_ac3] );
+ }
+ }
+ else
+ {
+ input_SelectES( p_input,
+ p_input->stream.pp_es[i_audio] );
+ }
+ }
+ }
+
+ if( config_GetInt( p_input, "video" ) )
+ {
+ /* for spu, default is none */
+ int i_spu = config_GetInt( p_input, "spu-channel" );
+ if( i_spu < 0 /*|| i_spu > i_spu_nb*/ )
+ {
+ config_PutInt( p_input, "spu-channel", 0 );
+ i_spu = 0;
+ }
+ if( i_spu > 0 /*&& i_spu_nb > 0*/ )
+ {
+ i_spu += p_dvd->p_vts_file->vtsi_mat->nr_of_vts_audio_streams;
+ input_SelectES( p_input, p_input->stream.pp_es[i_spu] );
+ }
+ }
+}