|  | @@ -30,7 +30,7 @@
 | 
	
		
			
				|  |  |  #if BYTES_PER_FRAME == 4		
 | 
	
		
			
				|  |  |  #define ALIGN(n) 	(n)
 | 
	
		
			
				|  |  |  #else
 | 
	
		
			
				|  |  | -#define ALIGN(n) 	(n << 8)		
 | 
	
		
			
				|  |  | +#define ALIGN(n) 	(n << 16)		
 | 
	
		
			
				|  |  |  #endif
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  #define WRAPBUF_LEN 2048
 | 
	
	
		
			
				|  | @@ -332,7 +332,7 @@ static decode_state helixaac_decode(void) {
 | 
	
		
			
				|  |  |  	size_t bytes_total, bytes_wrap;
 | 
	
		
			
				|  |  |  	int res, bytes;
 | 
	
		
			
				|  |  |  	static AACFrameInfo info;
 | 
	
		
			
				|  |  | -	ISAMPLE_T *iptr;
 | 
	
		
			
				|  |  | +	s16_t *iptr;
 | 
	
		
			
				|  |  |  	u8_t *sptr;
 | 
	
		
			
				|  |  |  	bool endstream;
 | 
	
		
			
				|  |  |  	frames_t frames;
 | 
	
	
		
			
				|  | @@ -372,7 +372,7 @@ static decode_state helixaac_decode(void) {
 | 
	
		
			
				|  |  |  				u8_t *p = streambuf->readp + n;
 | 
	
		
			
				|  |  |  				int bytes = bytes_wrap - n;
 | 
	
		
			
				|  |  |  				
 | 
	
		
			
				|  |  | -				if (!HAAC(a, Decode, a->hAac, &p, &bytes, (short*) a->write_buf)) {
 | 
	
		
			
				|  |  | +				if (!HAAC(a, Decode, a->hAac, &p, &bytes, (s16_t*) a->write_buf)) {
 | 
	
		
			
				|  |  |  					HAAC(a, GetLastFrameInfo, a->hAac, &info);
 | 
	
		
			
				|  |  |  					channels = info.nChans;
 | 
	
		
			
				|  |  |  					samplerate = info.sampRateOut;
 | 
	
	
		
			
				|  | @@ -443,13 +443,13 @@ static decode_state helixaac_decode(void) {
 | 
	
		
			
				|  |  |  	}
 | 
	
		
			
				|  |  |  	
 | 
	
		
			
				|  |  |  	// decode function changes iptr, so can't use streambuf->readp (same for bytes)
 | 
	
		
			
				|  |  | -	res = HAAC(a, Decode, a->hAac, &sptr, &bytes, (short*) a->write_buf);
 | 
	
		
			
				|  |  | +	res = HAAC(a, Decode, a->hAac, &sptr, &bytes, (s16_t*) a->write_buf);
 | 
	
		
			
				|  |  |  	if (res  < 0) {
 | 
	
		
			
				|  |  |  		LOG_WARN("AAC decode error %d", res);
 | 
	
		
			
				|  |  |  	}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  	HAAC(a, GetLastFrameInfo, a->hAac, &info);
 | 
	
		
			
				|  |  | -	iptr = (ISAMPLE_T *) a->write_buf;
 | 
	
		
			
				|  |  | +	iptr = (s16_t*) a->write_buf;
 | 
	
		
			
				|  |  |  	bytes = bytes_wrap - bytes;
 | 
	
		
			
				|  |  |  	endstream = false;
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -543,8 +543,8 @@ static decode_state helixaac_decode(void) {
 | 
	
		
			
				|  |  |  			iptr += count * 2;
 | 
	
		
			
				|  |  |  #else 			
 | 
	
		
			
				|  |  |  			while (count--) {
 | 
	
		
			
				|  |  | -				*optr++ = *iptr++ << 8;
 | 
	
		
			
				|  |  | -				*optr++ = *iptr++ << 8;
 | 
	
		
			
				|  |  | +				*optr++ = ALIGN(*iptr++);
 | 
	
		
			
				|  |  | +				*optr++ = ALIGN(*iptr++);
 | 
	
		
			
				|  |  |  			}
 | 
	
		
			
				|  |  |  #endif			
 | 
	
		
			
				|  |  |  		} else if (info.nChans == 1) {
 | 
	
	
		
			
				|  | @@ -597,7 +597,7 @@ static void helixaac_open(u8_t size, u8_t rate, u8_t chan, u8_t endianness) {
 | 
	
		
			
				|  |  |  		// always free decoder as flush only works when no parameter has changed
 | 
	
		
			
				|  |  |  		HAAC(a, FreeDecoder, a->hAac);			
 | 
	
		
			
				|  |  |  	} else {
 | 
	
		
			
				|  |  | -		a->write_buf = malloc(FRAME_BUF * BYTES_PER_FRAME);
 | 
	
		
			
				|  |  | +		a->write_buf = malloc(FRAME_BUF * 4);
 | 
	
		
			
				|  |  |  		a->wrap_buf = malloc(WRAPBUF_LEN);
 | 
	
		
			
				|  |  |  	}
 | 
	
		
			
				|  |  |  	
 |