@@ -581,9 +581,9 @@ static void gpoly_convert_uv3(struct gpoly_factors *p_inc, uint u, uint v)
581581 p_inc -> S [3 ] = fctr_vs ;
582582}
583583
584- static void gpoly_get_uv_inc (struct gpoly_factors * p_inc , const struct gpoly_factors * p_base , int ratio_X2Y , const struct gpoly_point * p_pt1 , const struct gpoly_point * p_pt2 )
584+ static void gpoly_get_uv_simp (struct gpoly_factors * p_inc , const struct gpoly_point * p_pt1 , const struct gpoly_point * p_pt2 )
585585{
586- int dist_c5 , mag_a1 , tmp ;
586+ int dist_c5 , mag_a1 ;
587587
588588 dist_c5 = p_pt2 -> Y - p_pt1 -> Y ;
589589 if (dist_c5 > 255 )
@@ -593,6 +593,11 @@ static void gpoly_get_uv_inc(struct gpoly_factors *p_inc, const struct gpoly_fac
593593 p_inc -> S [0 ] = gpoly_mul_rot_2 (mag_a1 , 2 * (p_pt2 -> S - p_pt1 -> S ));
594594 p_inc -> S [1 ] = gpoly_mul_rot_2 (mag_a1 , 2 * (p_pt2 -> Ua - p_pt1 -> Ua ));
595595 p_inc -> S [2 ] = gpoly_mul_rot_2 (mag_a1 , 2 * (p_pt2 -> Vb - p_pt1 -> Vb ));
596+ }
597+
598+ static void gpoly_get_uv_inc (struct gpoly_factors * p_inc , const struct gpoly_factors * p_base , int ratio_X2Y , const struct gpoly_point * p_pt1 , const struct gpoly_point * p_pt2 )
599+ {
600+ int tmp ;
596601
597602 tmp = ((p_base -> S [1 ] * ratio_X2Y ) & 0xFFFF0000 ) | (((p_base -> S [1 ] * (s64 )ratio_X2Y ) >> 32 ) & 0xFFFF );
598603 p_inc -> S [1 ] -= bw_rotl32 (tmp , 16 );
@@ -635,35 +640,12 @@ void gpoly_sta_md03(struct gpoly_state *st)
635640 }
636641 if (st -> var_134 < 0 )
637642 {
638- int dist_c5 , mag_a1 ;
639-
640- dist_c5 = st -> ptC .Y - st -> ptA .Y ;
641- if (dist_c5 > 255 )
642- mag_a1 = 0x7FFFFFFF / dist_c5 ;
643- else
644- mag_a1 = gpoly_reptable [dist_c5 ];
645- st -> incD .S [1 ] = gpoly_mul_rot_2 (mag_a1 , 2 * (st -> ptC .Ua - st -> ptA .Ua ));
646- st -> incD .S [2 ] = gpoly_mul_rot_2 (mag_a1 , 2 * (st -> ptC .Vb - st -> ptA .Vb ));
643+ gpoly_get_uv_simp (& st -> incD , & st -> ptA , & st -> ptC );
647644 }
648645 else
649646 {
650- int dist_c5 , mag_a1 ;
651-
652- dist_c5 = st -> ptB .Y - st -> ptA .Y ;
653- if (dist_c5 > 255 )
654- mag_a1 = 0x7FFFFFFF / dist_c5 ;
655- else
656- mag_a1 = gpoly_reptable [dist_c5 ];
657- st -> incD .S [1 ] = gpoly_mul_rot_2 (mag_a1 , 2 * (st -> ptB .Ua - st -> ptA .Ua ));
658- st -> incD .S [2 ] = gpoly_mul_rot_2 (mag_a1 , 2 * (st -> ptB .Vb - st -> ptA .Vb ));
659-
660- dist_c5 = st -> ptC .Y - st -> ptB .Y ;
661- if (dist_c5 > 255 )
662- mag_a1 = 0x7FFFFFFF / dist_c5 ;
663- else
664- mag_a1 = gpoly_reptable [dist_c5 ];
665- st -> incC .S [1 ] = gpoly_mul_rot_2 (mag_a1 , 2 * (st -> ptC .Ua - st -> ptB .Ua ));
666- st -> incC .S [2 ] = gpoly_mul_rot_2 (mag_a1 , 2 * (st -> ptC .Vb - st -> ptB .Vb ));
647+ gpoly_get_uv_simp (& st -> incD , & st -> ptA , & st -> ptB );
648+ gpoly_get_uv_simp (& st -> incC , & st -> ptB , & st -> ptC );
667649 }
668650
669651 int ptA_Ua_prc , ptA_Vb_prc , ptB_Ua_prc , ptB_Vb_prc ;
@@ -723,32 +705,12 @@ void gpoly_sta_md04(struct gpoly_state *st)
723705
724706 if (st -> var_134 < 0 )
725707 {
726- int dist_c5 , mag_a1 ;
727-
728- dist_c5 = st -> ptC .Y - st -> ptA .Y ;
729- if (dist_c5 > 255 )
730- mag_a1 = 0x7FFFFFFF / dist_c5 ;
731- else
732- mag_a1 = gpoly_reptable [dist_c5 ];
733- st -> incD .S [0 ] = gpoly_mul_rot_2 (mag_a1 , 2 * (st -> ptC .S - st -> ptA .S ));
708+ gpoly_get_uv_simp (& st -> incD , & st -> ptA , & st -> ptC );
734709 }
735710 else
736711 {
737- int dist_c5 , mag_a1 ;
738-
739- dist_c5 = st -> ptB .Y - st -> ptA .Y ;
740- if (dist_c5 > 255 )
741- mag_a1 = 0x7FFFFFFF / dist_c5 ;
742- else
743- mag_a1 = gpoly_reptable [dist_c5 ];
744- st -> incD .S [0 ] = gpoly_mul_rot_2 (mag_a1 , 2 * (st -> ptB .S - st -> ptA .S ));
745-
746- dist_c5 = st -> ptC .Y - st -> ptB .Y ;
747- if (dist_c5 > 255 )
748- mag_a1 = 0x7FFFFFFF / dist_c5 ;
749- else
750- mag_a1 = gpoly_reptable [dist_c5 ];
751- st -> incC .S [0 ] = gpoly_mul_rot_2 (mag_a1 , 2 * (st -> ptC .S - st -> ptB .S ));
712+ gpoly_get_uv_simp (& st -> incD , & st -> ptA , & st -> ptB );
713+ gpoly_get_uv_simp (& st -> incC , & st -> ptB , & st -> ptC );
752714 }
753715}
754716
@@ -788,38 +750,12 @@ void gpoly_sta_md05(struct gpoly_state *st)
788750 }
789751 if (st -> var_134 < 0 )
790752 {
791- int dist_c5 , mag_a1 ;
792-
793- dist_c5 = st -> ptC .Y - st -> ptA .Y ;
794- if (dist_c5 > 255 )
795- mag_a1 = 0x7FFFFFFF / dist_c5 ;
796- else
797- mag_a1 = gpoly_reptable [dist_c5 ];
798- st -> incD .S [0 ] = gpoly_mul_rot_2 (mag_a1 , 2 * (st -> ptC .S - st -> ptA .S ));
799- st -> incD .S [1 ] = gpoly_mul_rot_2 (mag_a1 , 2 * (st -> ptC .Ua - st -> ptA .Ua ));
800- st -> incD .S [2 ] = gpoly_mul_rot_2 (mag_a1 , 2 * (st -> ptC .Vb - st -> ptA .Vb ));
753+ gpoly_get_uv_simp (& st -> incD , & st -> ptA , & st -> ptC );
801754 }
802755 else
803756 {
804- int dist_c5 , mag_a1 ;
805-
806- dist_c5 = st -> ptB .Y - st -> ptA .Y ;
807- if (dist_c5 > 255 )
808- mag_a1 = 0x7FFFFFFF / dist_c5 ;
809- else
810- mag_a1 = gpoly_reptable [dist_c5 ];
811- st -> incD .S [0 ] = gpoly_mul_rot_2 (mag_a1 , 2 * (st -> ptB .S - st -> ptA .S ));
812- st -> incD .S [1 ] = gpoly_mul_rot_2 (mag_a1 , 2 * (st -> ptB .Ua - st -> ptA .Ua ));
813- st -> incD .S [2 ] = gpoly_mul_rot_2 (mag_a1 , 2 * (st -> ptB .Vb - st -> ptA .Vb ));
814-
815- dist_c5 = st -> ptC .Y - st -> ptB .Y ;
816- if (dist_c5 > 255 )
817- mag_a1 = 0x7FFFFFFF / dist_c5 ;
818- else
819- mag_a1 = gpoly_reptable [dist_c5 ];
820- st -> incC .S [0 ] = gpoly_mul_rot_2 (mag_a1 , 2 * (st -> ptC .S - st -> ptB .S ));
821- st -> incC .S [1 ] = gpoly_mul_rot_2 (mag_a1 , 2 * (st -> ptC .Ua - st -> ptB .Ua ));
822- st -> incC .S [2 ] = gpoly_mul_rot_2 (mag_a1 , 2 * (st -> ptC .Vb - st -> ptB .Vb ));
757+ gpoly_get_uv_simp (& st -> incD , & st -> ptA , & st -> ptB );
758+ gpoly_get_uv_simp (& st -> incC , & st -> ptB , & st -> ptC );
823759 }
824760
825761 int ptA_S_prc , ptA_Ua_prc , ptA_Vb_prc , ptB_S_prc , ptB_Ua_prc , ptB_Vb_prc ;
@@ -890,11 +826,14 @@ void gpoly_sta_md27(struct gpoly_state *st)
890826
891827 if (st -> var_134 < 0 )
892828 {
829+ gpoly_get_uv_simp (& st -> incD , & st -> ptA , & st -> ptC );
893830 gpoly_get_uv_inc (& st -> incD , & st -> incB , st -> ratioCA_X2Y , & st -> ptA , & st -> ptC );
894831 }
895832 else
896833 {
834+ gpoly_get_uv_simp (& st -> incD , & st -> ptA , & st -> ptB );
897835 gpoly_get_uv_inc (& st -> incD , & st -> incB , st -> ratioBA_X2Y , & st -> ptA , & st -> ptB );
836+ gpoly_get_uv_simp (& st -> incC , & st -> ptB , & st -> ptC );
898837 gpoly_get_uv_inc (& st -> incC , & st -> incB , st -> ratioCB_X2Y , & st -> ptB , & st -> ptC );
899838 }
900839
@@ -960,11 +899,14 @@ void gpoly_sta_md28(struct gpoly_state *st)
960899 }
961900 if (st -> var_134 < 0 )
962901 {
902+ gpoly_get_uv_simp (& st -> incD , & st -> ptA , & st -> ptC );
963903 gpoly_get_uv_inc (& st -> incD , & st -> incB , st -> ratioCA_X2Y , & st -> ptA , & st -> ptC );
964904 }
965905 else
966906 {
907+ gpoly_get_uv_simp (& st -> incD , & st -> ptA , & st -> ptB );
967908 gpoly_get_uv_inc (& st -> incD , & st -> incB , st -> ratioBA_X2Y , & st -> ptA , & st -> ptB );
909+ gpoly_get_uv_simp (& st -> incC , & st -> ptB , & st -> ptC );
968910 gpoly_get_uv_inc (& st -> incC , & st -> incB , st -> ratioCB_X2Y , & st -> ptB , & st -> ptC );
969911 }
970912
0 commit comments