| 
				
				
					
				
				
				 | 
			
			 | 
			@@ -56,6 +56,7 @@ static const int8_t probs_code_pred_coeff[3][3] = { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			typedef struct ArithCoder { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    unsigned int a; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    unsigned int c; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    int overread; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			} ArithCoder; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			typedef struct Table { | 
		
		
	
	
		
			
				| 
				
					
				
				
					
				
				
				 | 
			
			 | 
			@@ -172,6 +173,7 @@ static void ac_init(ArithCoder *ac, GetBitContext *gb) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			{ | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    ac->a = 4095; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    ac->c = get_bits(gb, 12); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    ac->overread = 0; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			} | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			static av_always_inline void ac_get(ArithCoder *ac, GetBitContext *gb, int p, int *e) | 
		
		
	
	
		
			
				| 
				
				
				
					
				
				 | 
			
			 | 
			@@ -191,6 +193,8 @@ static av_always_inline void ac_get(ArithCoder *ac, GetBitContext *gb, int p, in | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    if (ac->a < 2048) { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        int n = 11 - av_log2(ac->a); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        ac->a <<= n; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        if (get_bits_left(gb) < n) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            ac->overread ++; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        ac->c = (ac->c << n) | get_bits(gb, n); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			} | 
		
		
	
	
		
			
				| 
				
					
				
				
					
				
				
				 | 
			
			 | 
			@@ -339,6 +343,9 @@ static int decode_frame(AVCodecContext *avctx, void *data, | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                prob = 128; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            if (ac->overread > 16) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                return AVERROR_INVALIDDATA; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            ac_get(ac, gb, prob, &residual); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            v = ((predict >> 15) ^ residual) & 1; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            dsd[((i >> 3) * channels + ch) << 2] |= v << (7 - (i & 0x7 )); | 
		
		
	
	
		
			
				| 
				
					
				
				
				
				 | 
			
			 | 
			
  |