- struct
- {
- char * psz_data;
- } aout;
-} probedata_t;
-
-/* FIXME: find a nicer way to do this. */
-typedef struct function_list_s
-{
- int ( * pf_probe ) ( probedata_t * p_data );
-
- union
- {
- /* Input plugin */
- struct
- {
- int ( * 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_read ) ( struct input_thread_s *,
- struct data_packet_s *
- pp_packets[] );
- void ( * pf_demux )( struct input_thread_s *,
- struct data_packet_s * );
-
- struct data_packet_s * ( * pf_new_packet ) ( void *, size_t );
- struct pes_packet_s * ( * pf_new_pes ) ( void * );
- void ( * pf_delete_packet ) ( struct data_packet_s * );
- void ( * pf_delete_pes ) ( struct pes_packet_s * );
-
- int ( * pf_rewind ) ( struct input_thread_s * );
- int ( * pf_seek ) ( struct input_thread_s *, off_t );
- } input;
-
- /* Audio output plugin */
- struct
- {
- int ( * pf_open ) ( struct aout_thread_s * );
- int ( * pf_setformat ) ( struct aout_thread_s * );
- long ( * pf_getbufinfo ) ( struct aout_thread_s *, long );
- void ( * pf_play ) ( struct aout_thread_s *, byte_t *, int );
- void ( * pf_close ) ( struct aout_thread_s * );
- } aout;
-
- /* Motion compensation plugin */
- struct
- {
-#define motion_functions( yuv ) \
- void ( * pf_field_field_##yuv ) ( struct macroblock_s * ); \
- void ( * pf_field_16x8_##yuv ) ( struct macroblock_s * ); \
- void ( * pf_field_dmv_##yuv ) ( struct macroblock_s * ); \
- void ( * pf_frame_field_##yuv ) ( struct macroblock_s * ); \
- void ( * pf_frame_frame_##yuv ) ( struct macroblock_s * ); \
- void ( * pf_frame_dmv_##yuv ) ( struct macroblock_s * );
- motion_functions( 420 )
- motion_functions( 422 )
- motion_functions( 444 )
-#undef motion_functions
- } motion;
-
- /* IDCT plugin */
- struct
- {
- void ( * pf_init ) ( struct vdec_thread_s * );
- void ( * pf_sparse_idct ) ( struct vdec_thread_s *,
- dctelem_t *, int );
- void ( * pf_idct ) ( struct vdec_thread_s *,
- dctelem_t *, int );
- void ( * pf_norm_scan ) ( u8 ppi_scan[2][64] );
- } idct;
-
- /* YUV transformation plugin */
- struct
- {
- int ( * pf_init ) ( struct vout_thread_s * );
- int ( * pf_reset ) ( struct vout_thread_s * );
- void ( * pf_end ) ( struct vout_thread_s * );
- } yuv;
-
- } functions;
-
-} function_list_t;
-
-typedef struct module_functions_s
-{
- /* XXX: The order here has to be the same as above for the #defines */
- function_list_t intf;
- function_list_t access;
- function_list_t input;
- function_list_t decaps;
- function_list_t adec;
- function_list_t vdec;
- function_list_t motion;
- function_list_t idct;
- function_list_t aout;
- function_list_t vout;
- function_list_t yuv;
- function_list_t afx;
- function_list_t vfx;
-
-} module_functions_t;
-
-typedef struct module_functions_s * p_module_functions_t;