aacdec: Use float instead of int16_t for ltp_state to avoid needless rounding.
This commit is contained in:
		
							parent
							
								
									7f995abed3
								
							
						
					
					
						commit
						033a4a942a
					
				@ -227,7 +227,7 @@ typedef struct {
 | 
			
		||||
    DECLARE_ALIGNED(32, float,   coeffs)[1024];     ///< coefficients for IMDCT
 | 
			
		||||
    DECLARE_ALIGNED(32, float,   saved)[1024];      ///< overlap
 | 
			
		||||
    DECLARE_ALIGNED(32, float,   ret)[2048];        ///< PCM output
 | 
			
		||||
    DECLARE_ALIGNED(16, int16_t, ltp_state)[3072];  ///< time signal for LTP
 | 
			
		||||
    DECLARE_ALIGNED(16, float,   ltp_state)[3072];  ///< time signal for LTP
 | 
			
		||||
    PredictorState predictor_state[MAX_PREDICTORS];
 | 
			
		||||
} SingleChannelElement;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -1820,9 +1820,9 @@ static void update_ltp(AACContext *ac, SingleChannelElement *sce)
 | 
			
		||||
            saved_ltp[i + 512] = ac->buf_mdct[1023 - i] * lwindow[511 - i];
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    memcpy(sce->ltp_state, &sce->ltp_state[1024], 1024 * sizeof(int16_t));
 | 
			
		||||
    ac->fmt_conv.float_to_int16(&(sce->ltp_state[1024]), sce->ret,  1024);
 | 
			
		||||
    ac->fmt_conv.float_to_int16(&(sce->ltp_state[2048]), saved_ltp, 1024);
 | 
			
		||||
    memcpy(sce->ltp_state,      sce->ltp_state+1024, 1024 * sizeof(*sce->ltp_state));
 | 
			
		||||
    memcpy(sce->ltp_state+1024, sce->ret,            1024 * sizeof(*sce->ltp_state));
 | 
			
		||||
    memcpy(sce->ltp_state+2048, saved_ltp,           1024 * sizeof(*sce->ltp_state));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user