vp9: Ensure that the arithmetic coder values are read in the right order
The operands of an addition can be evaluated in any order, since the addition isn't a sequence point. The only operators that have a defined evaluation order are &&, ||, ?: and the sequence operator ','. This fixes fate-vp9 on ARM RVCT.
This commit is contained in:
		
							parent
							
								
									7cd555dfa5
								
							
						
					
					
						commit
						ab80d7e8c5
					
				| @ -1843,43 +1843,43 @@ static int decode_coeffs_b(VP56RangeCoder *c, int16_t *coef, int n_coeffs, | |||||||
|                 if (!vp56_rac_get_prob_branchy(c, tp[7])) { |                 if (!vp56_rac_get_prob_branchy(c, tp[7])) { | ||||||
|                     val = 5 + vp56_rac_get_prob(c, 159); |                     val = 5 + vp56_rac_get_prob(c, 159); | ||||||
|                 } else { |                 } else { | ||||||
|                     val = 7 + (vp56_rac_get_prob(c, 165) << 1) + |                     val  = 7 + (vp56_rac_get_prob(c, 165) << 1); | ||||||
|                                vp56_rac_get_prob(c, 145); |                     val +=      vp56_rac_get_prob(c, 145); | ||||||
|                 } |                 } | ||||||
|             } else { // cat 3-6
 |             } else { // cat 3-6
 | ||||||
|                 cache[rc] = 5; |                 cache[rc] = 5; | ||||||
|                 if (!vp56_rac_get_prob_branchy(c, tp[8])) { |                 if (!vp56_rac_get_prob_branchy(c, tp[8])) { | ||||||
|                     if (!vp56_rac_get_prob_branchy(c, tp[9])) { |                     if (!vp56_rac_get_prob_branchy(c, tp[9])) { | ||||||
|                         val = 11 + (vp56_rac_get_prob(c, 173) << 2) + |                         val  = 11 + (vp56_rac_get_prob(c, 173) << 2); | ||||||
|                                    (vp56_rac_get_prob(c, 148) << 1) + |                         val +=      (vp56_rac_get_prob(c, 148) << 1); | ||||||
|                                     vp56_rac_get_prob(c, 140); |                         val +=       vp56_rac_get_prob(c, 140); | ||||||
|                     } else { |                     } else { | ||||||
|                         val = 19 + (vp56_rac_get_prob(c, 176) << 3) + |                         val  = 19 + (vp56_rac_get_prob(c, 176) << 3); | ||||||
|                                    (vp56_rac_get_prob(c, 155) << 2) + |                         val +=      (vp56_rac_get_prob(c, 155) << 2); | ||||||
|                                    (vp56_rac_get_prob(c, 140) << 1) + |                         val +=      (vp56_rac_get_prob(c, 140) << 1); | ||||||
|                                     vp56_rac_get_prob(c, 135); |                         val +=       vp56_rac_get_prob(c, 135); | ||||||
|                     } |                     } | ||||||
|                 } else if (!vp56_rac_get_prob_branchy(c, tp[10])) { |                 } else if (!vp56_rac_get_prob_branchy(c, tp[10])) { | ||||||
|                     val = 35 + (vp56_rac_get_prob(c, 180) << 4) + |                     val  = 35 + (vp56_rac_get_prob(c, 180) << 4); | ||||||
|                                (vp56_rac_get_prob(c, 157) << 3) + |                     val +=      (vp56_rac_get_prob(c, 157) << 3); | ||||||
|                                (vp56_rac_get_prob(c, 141) << 2) + |                     val +=      (vp56_rac_get_prob(c, 141) << 2); | ||||||
|                                (vp56_rac_get_prob(c, 134) << 1) + |                     val +=      (vp56_rac_get_prob(c, 134) << 1); | ||||||
|                                 vp56_rac_get_prob(c, 130); |                     val +=       vp56_rac_get_prob(c, 130); | ||||||
|                 } else { |                 } else { | ||||||
|                     val = 67 + (vp56_rac_get_prob(c, 254) << 13) + |                     val  = 67 + (vp56_rac_get_prob(c, 254) << 13); | ||||||
|                                (vp56_rac_get_prob(c, 254) << 12) + |                     val +=      (vp56_rac_get_prob(c, 254) << 12); | ||||||
|                                (vp56_rac_get_prob(c, 254) << 11) + |                     val +=      (vp56_rac_get_prob(c, 254) << 11); | ||||||
|                                (vp56_rac_get_prob(c, 252) << 10) + |                     val +=      (vp56_rac_get_prob(c, 252) << 10); | ||||||
|                                (vp56_rac_get_prob(c, 249) << 9) + |                     val +=      (vp56_rac_get_prob(c, 249) << 9); | ||||||
|                                (vp56_rac_get_prob(c, 243) << 8) + |                     val +=      (vp56_rac_get_prob(c, 243) << 8); | ||||||
|                                (vp56_rac_get_prob(c, 230) << 7) + |                     val +=      (vp56_rac_get_prob(c, 230) << 7); | ||||||
|                                (vp56_rac_get_prob(c, 196) << 6) + |                     val +=      (vp56_rac_get_prob(c, 196) << 6); | ||||||
|                                (vp56_rac_get_prob(c, 177) << 5) + |                     val +=      (vp56_rac_get_prob(c, 177) << 5); | ||||||
|                                (vp56_rac_get_prob(c, 153) << 4) + |                     val +=      (vp56_rac_get_prob(c, 153) << 4); | ||||||
|                                (vp56_rac_get_prob(c, 140) << 3) + |                     val +=      (vp56_rac_get_prob(c, 140) << 3); | ||||||
|                                (vp56_rac_get_prob(c, 133) << 2) + |                     val +=      (vp56_rac_get_prob(c, 133) << 2); | ||||||
|                                (vp56_rac_get_prob(c, 130) << 1) + |                     val +=      (vp56_rac_get_prob(c, 130) << 1); | ||||||
|                                 vp56_rac_get_prob(c, 129); |                     val +=       vp56_rac_get_prob(c, 129); | ||||||
|                 } |                 } | ||||||
|             } |             } | ||||||
|         } |         } | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user