+ /* Input module */
+ struct module_s * p_input_module;
+
+ /* Init/End */
+ void (* pf_init)( struct input_thread_s * );
+ void (* pf_open)( struct input_thread_s * );
+ void (* pf_close)( struct input_thread_s * );
+ void (* pf_end)( struct input_thread_s * );
+ void (* pf_init_bit_stream)( struct bit_stream_s *,
+ struct decoder_fifo_s *,
+ void (* pf_bitstream_callback)( struct bit_stream_s *,
+ boolean_t ),
+ void * );
+
+ /* Read & Demultiplex */
+ int (* pf_read)( struct input_thread_s *,
+ struct data_packet_s ** );
+ void (* pf_demux)( struct input_thread_s *,
+ struct data_packet_s * );
+
+ /* Packet management facilities */
+ struct data_packet_s *(*pf_new_packet)( void *, size_t );
+ struct pes_packet_s *(* pf_new_pes)( void * );
+ void (* pf_delete_packet)( void *,
+ struct data_packet_s * );
+ void (* pf_delete_pes)( void *, struct pes_packet_s * );
+
+ /* Stream control capabilities */
+ int (* pf_set_program)( struct input_thread_s *,
+ struct pgrm_descriptor_s * );
+ int (* pf_set_area)( struct input_thread_s *,
+ struct input_area_s * );
+ int (* pf_rewind)( struct input_thread_s * );
+ /* NULL if we don't support going *
+ * backwards (it's gonna be fun) */
+ void (* pf_seek)( struct input_thread_s *, off_t );