+ /* for spu, default is none */
+ i_required_spu_es = config_GetInt( p_input, "spu-channel" );
+ if( i_required_spu_es < 0 )
+ {
+ i_required_spu_es = 0;
+ }
+ }
+ else
+ {
+ i_required_spu_es = 0;
+ }
+
+ for( i_es_index = 0 ; i_es_index < p_new_prg->i_es_number ; i_es_index ++ )
+ {
+ switch( p_new_prg->pp_es[i_es_index]->i_cat )
+ {
+ case VIDEO_ES:
+ msg_Dbg( p_input, "selecting ES %x",
+ p_new_prg->pp_es[i_es_index]->i_id );
+ input_SelectES( p_input, p_new_prg->pp_es[i_es_index] );
+ break;
+ case AUDIO_ES:
+ i_audio_es += 1;
+ if( i_audio_es <= i_required_audio_es )
+ {
+ msg_Dbg( p_input, "selecting ES %x",
+ p_new_prg->pp_es[i_es_index]->i_id );
+ input_SelectES( p_input, p_new_prg->pp_es[i_es_index]);
+ }
+ break;
+ /* Not sure this one is fully specification-compliant */
+ case SPU_ES :
+ i_spu_es += 1;
+ if( i_spu_es <= i_required_spu_es )
+ {
+ msg_Dbg( p_input, "selecting ES %x",
+ p_new_prg->pp_es[i_es_index]->i_id );
+ input_SelectES( p_input, p_new_prg->pp_es[i_es_index] );
+ }
+ break;
+ default :
+ msg_Dbg( p_input, "ES %x has unknown type",
+ p_new_prg->pp_es[i_es_index]->i_id );
+ break;
+ }
+