+ /* Find a suitable decoder/packetizer module */
+ if( i_object_type == VLC_OBJECT_DECODER )
+ p_dec->p_module = module_Need( p_dec, "decoder", "$codec", 0 );
+ else
+ p_dec->p_module = module_Need( p_dec, "packetizer", "$packetizer", 0 );
+
+ /* Check if decoder requires already packetized data */
+ if( i_object_type == VLC_OBJECT_DECODER &&
+ p_dec->b_need_packetized && !p_dec->fmt_in.b_packetized )
+ {
+ p_dec->p_owner->p_packetizer =
+ vlc_object_create( p_input, VLC_OBJECT_PACKETIZER );
+ if( p_dec->p_owner->p_packetizer )
+ {
+ p_dec->p_owner->p_packetizer->fmt_in = null_es_format;
+ p_dec->p_owner->p_packetizer->fmt_out = null_es_format;
+ es_format_Copy( &p_dec->p_owner->p_packetizer->fmt_in,
+ &p_dec->fmt_in );
+
+ vlc_object_attach( p_dec->p_owner->p_packetizer, p_input );
+
+ p_dec->p_owner->p_packetizer->p_module =
+ module_Need( p_dec->p_owner->p_packetizer,
+ "packetizer", "$packetizer", 0 );
+
+ if( !p_dec->p_owner->p_packetizer->p_module )
+ {
+ es_format_Clean( &p_dec->p_owner->p_packetizer->fmt_in );
+ vlc_object_detach( p_dec->p_owner->p_packetizer );
+ vlc_object_destroy( p_dec->p_owner->p_packetizer );
+ }
+ }
+ }
+