mirror of
				https://github.com/RaySollium99/picodrive.git
				synced 2025-10-28 05:48:52 +01:00 
			
		
		
		
	 8b99ab90aa
			
		
	
	
		8b99ab90aa
		
	
	
	
	
		
			
			git-svn-id: file:///home/notaz/opt/svn/PicoDrive@298 be3aeb3a-fb24-0410-a615-afba39da0efa
		
			
				
	
	
		
			74 lines
		
	
	
	
		
			1.2 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			74 lines
		
	
	
	
		
			1.2 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| // some code for sample mixing
 | |
| // (c) Copyright 2006-2007, Grazvydas "notaz" Ignotas
 | |
| 
 | |
| #define MAXOUT		(+32767)
 | |
| #define MINOUT		(-32768)
 | |
| 
 | |
| /* limitter */
 | |
| #define Limit(val, max,min) { \
 | |
| 	if ( val > max )      val = max; \
 | |
| 	else if ( val < min ) val = min; \
 | |
| }
 | |
| 
 | |
| 
 | |
| void mix_32_to_16l_stereo(short *dest, int *src, int count)
 | |
| {
 | |
| 	int l, r;
 | |
| 
 | |
| 	for (; count > 0; count--)
 | |
| 	{
 | |
| 		l = r = *dest;
 | |
| 		l += *src++;
 | |
| 		r += *src++;
 | |
| 		Limit( l, MAXOUT, MINOUT );
 | |
| 		Limit( r, MAXOUT, MINOUT );
 | |
| 		*dest++ = l;
 | |
| 		*dest++ = r;
 | |
| 	}
 | |
| }
 | |
| 
 | |
| 
 | |
| void mix_32_to_16_mono(short *dest, int *src, int count)
 | |
| {
 | |
| 	int l;
 | |
| 
 | |
| 	for (; count > 0; count--)
 | |
| 	{
 | |
| 		l = *dest;
 | |
| 		l += *src++;
 | |
| 		Limit( l, MAXOUT, MINOUT );
 | |
| 		*dest++ = l;
 | |
| 	}
 | |
| }
 | |
| 
 | |
| 
 | |
| void mix_16h_to_32(int *dest_buf, short *mp3_buf, int count)
 | |
| {
 | |
| 	while (count--)
 | |
| 	{
 | |
| 		*dest_buf++ += *mp3_buf++ >> 1;
 | |
| 	}
 | |
| }
 | |
| 
 | |
| void mix_16h_to_32_s1(int *dest_buf, short *mp3_buf, int count)
 | |
| {
 | |
| 	count >>= 1;
 | |
| 	while (count--)
 | |
| 	{
 | |
| 		*dest_buf++ += *mp3_buf++ >> 1;
 | |
| 		*dest_buf++ += *mp3_buf++ >> 1;
 | |
| 		mp3_buf += 1*2;
 | |
| 	}
 | |
| }
 | |
| 
 | |
| void mix_16h_to_32_s2(int *dest_buf, short *mp3_buf, int count)
 | |
| {
 | |
| 	count >>= 1;
 | |
| 	while (count--)
 | |
| 	{
 | |
| 		*dest_buf++ += *mp3_buf++ >> 1;
 | |
| 		*dest_buf++ += *mp3_buf++ >> 1;
 | |
| 		mp3_buf += 3*2;
 | |
| 	}
 | |
| }
 | |
| 
 |