+ motion_arg_t args;
+ int ppi_dmv[2][2];
+
+ p_mb->i_l_stride <<= 1;
+ p_mb->i_c_stride <<= 1;
+ args.i_height = 8;
+ args.b_average = 0;
+ args.b_dest_field = 0;
+ args.i_offset = 0;
+ args.p_source = p_mb->p_forward;
+
+ DualPrimeArithmetic( p_mb, ppi_dmv, p_mb->pppi_motion_vectors[0][0][0],
+ p_mb->pppi_motion_vectors[0][0][1] );
+
+ /* predict top field from top field */
+ args.b_source_field = 0;
+ args.i_mv_x = p_mb->pppi_motion_vectors[0][0][0];
+ args.i_mv_y = p_mb->pppi_motion_vectors[0][0][1] >> 1;
+ p_mb->pf_chroma_motion( p_mb, &args );
+
+ /* predict and add to top field from bottom field */
+ args.b_average = 1;
+ args.b_source_field = 1;
+ args.i_mv_x = ppi_dmv[0][0];
+ args.i_mv_y = ppi_dmv[0][1];
+ p_mb->pf_chroma_motion( p_mb, &args );
+
+ /* predict bottom field from bottom field */
+ args.b_average = 0;
+ args.b_dest_field = 1;
+ args.b_source_field = 0;
+ args.i_mv_x = p_mb->pppi_motion_vectors[0][0][0];
+ args.i_mv_y = p_mb->pppi_motion_vectors[0][0][1] >> 1;
+ p_mb->pf_chroma_motion( p_mb, &args );
+
+ /* predict and add to bottom field from top field */
+ args.b_average = 1;
+ args.b_source_field = 1;
+ args.i_mv_x = ppi_dmv[1][0];
+ args.i_mv_y = ppi_dmv[1][1];
+ p_mb->pf_chroma_motion( p_mb, &args );