+
+extern int motion_Probe( probedata_t *p_data );
+
+static void vdec_MotionFieldField420 ( macroblock_t * p_mb );
+static void vdec_MotionFieldField422 ( macroblock_t * p_mb );
+static void vdec_MotionFieldField444 ( macroblock_t * p_mb );
+static void vdec_MotionField16x8420 ( macroblock_t * p_mb );
+static void vdec_MotionField16x8422 ( macroblock_t * p_mb );
+static void vdec_MotionField16x8444 ( macroblock_t * p_mb );
+static void vdec_MotionFieldDMV420 ( macroblock_t * p_mb );
+static void vdec_MotionFieldDMV422 ( macroblock_t * p_mb );
+static void vdec_MotionFieldDMV444 ( macroblock_t * p_mb );
+static void vdec_MotionFrameFrame420 ( macroblock_t * p_mb );
+static void vdec_MotionFrameFrame422 ( macroblock_t * p_mb );
+static void vdec_MotionFrameFrame444 ( macroblock_t * p_mb );
+static void vdec_MotionFrameField420 ( macroblock_t * p_mb );
+static void vdec_MotionFrameField422 ( macroblock_t * p_mb );
+static void vdec_MotionFrameField444 ( macroblock_t * p_mb );
+static void vdec_MotionFrameDMV420 ( macroblock_t * p_mb );
+static void vdec_MotionFrameDMV422 ( macroblock_t * p_mb );
+static void vdec_MotionFrameDMV444 ( macroblock_t * p_mb );
+
+/*****************************************************************************
+ * Functions exported as capabilities. They are declared as static so that
+ * we don't pollute the namespace too much.
+ *****************************************************************************/
+void motion_getfunctions( function_list_t * p_function_list )
+{
+ p_function_list->pf_probe = motion_Probe;
+
+#define list p_function_list->functions.motion
+#define motion_functions( yuv ) \
+ list.pf_field_field_##yuv = vdec_MotionFieldField##yuv; \
+ list.pf_field_16x8_##yuv = vdec_MotionField16x8##yuv; \
+ list.pf_field_dmv_##yuv = vdec_MotionFieldDMV##yuv; \
+ list.pf_frame_field_##yuv = vdec_MotionFrameField##yuv; \
+ list.pf_frame_frame_##yuv = vdec_MotionFrameFrame##yuv; \
+ list.pf_frame_dmv_##yuv = vdec_MotionFrameDMV##yuv;
+ motion_functions( 420 )
+ motion_functions( 422 )
+ motion_functions( 444 )
+#undef motion_functions
+#undef list
+
+ return;
+}