CVS: rdesktop rdpsnd.h, 1.4, 1.5 rdpsnd_alsa.c, 1.4, 1.5 rdpsnd_dsp.c, 1.2, 1.3 rdpsnd_libao.c, 1.18, 1.19 rdpsnd_oss.c, 1.23, 1.24 rdpsnd_sgi.c, 1.12, 1.13 rdpsnd_sun.c, 1.19, 1.20

Michael Gernoth <[email protected]> Sun, 17 Sep 2006 08:25:12 -0700
Newsgroups gmane.network.rdesktop.cvs
Message-ID <[email protected]>
Update of /cvsroot/rdesktop/rdesktop
In directory sc8-pr-cvs9.sourceforge.net:/tmp/cvs-serv7979

Modified Files:
	rdpsnd.h rdpsnd_alsa.c rdpsnd_dsp.c rdpsnd_libao.c 
	rdpsnd_oss.c rdpsnd_sgi.c rdpsnd_sun.c 
Log Message:
unify audio-byteswapping as a dsp-function


Index: rdpsnd.h
===================================================================
RCS file: /cvsroot/rdesktop/rdesktop/rdpsnd.h,v
retrieving revision 1.4
retrieving revision 1.5
diff -C2 -d -r1.4 -r1.5
*** rdpsnd.h	17 Sep 2006 14:41:16 -0000	1.4
--- rdpsnd.h	17 Sep 2006 15:25:10 -0000	1.5
***************
*** 37,40 ****
--- 37,41 ----
  	char *name;
  	char *description;
+ 	int need_byteswap_on_be;
  	struct audio_driver *next;
  };

Index: rdpsnd_alsa.c
===================================================================
RCS file: /cvsroot/rdesktop/rdesktop/rdpsnd_alsa.c,v
retrieving revision 1.4
retrieving revision 1.5
diff -C2 -d -r1.4 -r1.5
*** rdpsnd_alsa.c	17 Sep 2006 11:42:22 -0000	1.4
--- rdpsnd_alsa.c	17 Sep 2006 15:25:10 -0000	1.5
***************
*** 298,301 ****
--- 298,302 ----
  	alsa_driver.name = xstrdup("alsa");
  	alsa_driver.description = xstrdup("ALSA output driver, default device: " DEFAULTDEVICE);
+ 	alsa_driver.need_byteswap_on_be = 0;
  	alsa_driver.next = NULL;
  

Index: rdpsnd_dsp.c
===================================================================
RCS file: /cvsroot/rdesktop/rdesktop/rdpsnd_dsp.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** rdpsnd_dsp.c	17 Sep 2006 15:08:48 -0000	1.2
--- rdpsnd_dsp.c	17 Sep 2006 15:25:10 -0000	1.3
***************
*** 36,40 ****
  }
  
! inline void
  rdpsnd_dsp_softvol(unsigned char *buffer, unsigned int size, WAVEFORMATEX * format)
  {
--- 36,40 ----
  }
  
! void
  rdpsnd_dsp_softvol(unsigned char *buffer, unsigned int size, WAVEFORMATEX * format)
  {
***************
*** 97,100 ****
--- 97,117 ----
  }
  
+ void
+ rdpsnd_dsp_swapbytes(unsigned char *buffer, unsigned int size, WAVEFORMATEX * format)
+ {
+ 	int i;
+ 	uint8 swap;
+ 
+ 	if (format->wBitsPerSample == 8)
+ 		return;
+ 
+ 	for (i = 0; i < size; i += 2)
+ 	{
+ 		swap = *(buffer + i);
+ 		*(buffer + i) = *(buffer + i + 1);
+ 		*(buffer + i + 1) = swap;
+ 	}
+ }
+ 
  unsigned char *
  rdpsnd_dsp_process(unsigned char *inbuffer, unsigned int size, struct audio_driver *current_driver,
***************
*** 109,115 ****
  	/* Software volume control */
  	if (current_driver->wave_out_volume == rdpsnd_dsp_softvol_set)
- 	{
  		rdpsnd_dsp_softvol(outbuffer, size, format);
! 	}
  
  	return outbuffer;
--- 126,135 ----
  	/* Software volume control */
  	if (current_driver->wave_out_volume == rdpsnd_dsp_softvol_set)
  		rdpsnd_dsp_softvol(outbuffer, size, format);
! 
! #ifdef B_ENDIAN
! 	if (current_driver->need_byteswap_on_be)
! 		rdpsnd_dsp_swapbytes(outbuffer, size, format);
! #endif
  
  	return outbuffer;

Index: rdpsnd_libao.c
===================================================================
RCS file: /cvsroot/rdesktop/rdesktop/rdpsnd_libao.c,v
retrieving revision 1.18
retrieving revision 1.19
diff -C2 -d -r1.18 -r1.19
*** rdpsnd_libao.c	17 Sep 2006 14:41:16 -0000	1.18
--- rdpsnd_libao.c	17 Sep 2006 15:25:10 -0000	1.19
***************
*** 244,247 ****
--- 244,248 ----
  	libao_driver.name = xstrdup("libao");
  	libao_driver.description = xstrdup("libao output driver");
+ 	libao_driver.need_byteswap_on_be = 0;
  	libao_driver.next = NULL;
  

Index: rdpsnd_oss.c
===================================================================
RCS file: /cvsroot/rdesktop/rdesktop/rdpsnd_oss.c,v
retrieving revision 1.23
retrieving revision 1.24
diff -C2 -d -r1.23 -r1.24
*** rdpsnd_oss.c	17 Sep 2006 11:42:22 -0000	1.23
--- rdpsnd_oss.c	17 Sep 2006 15:25:10 -0000	1.24
***************
*** 268,271 ****
--- 268,272 ----
  	oss_driver.description =
  		xstrdup("OSS output driver, default device: " DEFAULTDEVICE " or $AUDIODEV");
+ 	oss_driver.need_byteswap_on_be = 0;
  	oss_driver.next = NULL;
  

Index: rdpsnd_sgi.c
===================================================================
RCS file: /cvsroot/rdesktop/rdesktop/rdpsnd_sgi.c,v
retrieving revision 1.12
retrieving revision 1.13
diff -C2 -d -r1.12 -r1.13
*** rdpsnd_sgi.c	17 Sep 2006 11:42:22 -0000	1.12
--- rdpsnd_sgi.c	17 Sep 2006 15:25:10 -0000	1.13
***************
*** 32,38 ****
  ALport output_port;
  
- static BOOL g_swapaudio;
  static int g_snd_rate;
- static BOOL g_swapaudio;
  static int width = AL_SAMPLE_16;
  static char *sgi_output_device = NULL;
--- 32,36 ----
***************
*** 142,158 ****
  #endif
  
- 	g_swapaudio = False;
  	if (pwfx->wBitsPerSample == 8)
  		width = AL_SAMPLE_8;
  	else if (pwfx->wBitsPerSample == 16)
- 	{
  		width = AL_SAMPLE_16;
- 		/* Do we need to swap the 16bit values? (Are we BigEndian) */
- #if (defined(B_ENDIAN))
- 		g_swapaudio = 1;
- #else
- 		g_swapaudio = 0;
- #endif
- 	}
  
  	/* Limited support to configure an opened audio port in IRIX.  The
--- 140,147 ----
***************
*** 254,260 ****
  	ssize_t len;
  	unsigned int i;
- 	uint8 swap;
  	STREAM out;
- 	static BOOL swapped = False;
  	int gf;
  
--- 243,247 ----
***************
*** 270,285 ****
  		out = &packet->s;
  
- 		/* Swap the current packet, but only once */
- 		if (g_swapaudio && !swapped)
- 		{
- 			for (i = 0; i < out->end - out->p; i += 2)
- 			{
- 				swap = *(out->p + i);
- 				*(out->p + i) = *(out->p + i + 1);
- 				*(out->p + i + 1) = swap;
- 			}
- 			swapped = True;
- 		}
- 
  		len = out->end - out->p;
  
--- 257,260 ----
***************
*** 294,298 ****
  				rdpsnd_send_completion(packet->tick, packet->index);
  				rdpsnd_queue_next();
- 				swapped = False;
  			}
  			else
--- 269,272 ----
***************
*** 323,326 ****
--- 297,301 ----
  	sgi_driver.name = xstrdup("sgi");
  	sgi_driver.description = xstrdup("SGI output driver");
+ 	sgi_driver.need_byteswap_on_be = 1;
  	sgi_driver.next = NULL;
  

Index: rdpsnd_sun.c
===================================================================
RCS file: /cvsroot/rdesktop/rdesktop/rdpsnd_sun.c,v
retrieving revision 1.19
retrieving revision 1.20
diff -C2 -d -r1.19 -r1.20
*** rdpsnd_sun.c	17 Sep 2006 11:42:22 -0000	1.19
--- rdpsnd_sun.c	17 Sep 2006 15:25:10 -0000	1.20
***************
*** 36,40 ****
  
  static BOOL g_reopened;
- static BOOL g_swapaudio;
  static short g_samplewidth;
  static char *dsp_dev;
--- 36,39 ----
***************
*** 98,102 ****
  
  	ioctl(g_dsp_fd, AUDIO_DRAIN, 0);
- 	g_swapaudio = False;
  	AUDIO_INITINFO(&info);
  
--- 97,100 ----
***************
*** 109,118 ****
  	{
  		info.play.encoding = AUDIO_ENCODING_LINEAR;
- 		/* Do we need to swap the 16bit values? (Are we BigEndian) */
- #ifdef B_ENDIAN
- 		g_swapaudio = 1;
- #else
- 		g_swapaudio = 0;
- #endif
  	}
  
--- 107,110 ----
***************
*** 185,191 ****
  	ssize_t len;
  	unsigned int i;
- 	uint8 swap;
  	STREAM out;
- 	static BOOL swapped = False;
  	static BOOL sentcompletion = True;
  	static uint32 samplecnt = 0;
--- 177,181 ----
***************
*** 198,202 ****
  			/* Device was just (re)openend */
  			samplecnt = 0;
- 			swapped = False;
  			sentcompletion = True;
  			g_reopened = False;
--- 188,191 ----
***************
*** 212,227 ****
  		out = &packet->s;
  
- 		/* Swap the current packet, but only once */
- 		if (g_swapaudio && !swapped)
- 		{
- 			for (i = 0; i < out->end - out->p; i += 2)
- 			{
- 				swap = *(out->p + i);
- 				*(out->p + i) = *(out->p + i + 1);
- 				*(out->p + i + 1) = swap;
- 			}
- 			swapped = True;
- 		}
- 
  		if (sentcompletion)
  		{
--- 201,204 ----
***************
*** 261,265 ****
  				rdpsnd_send_completion(packet->tick + 50, packet->index);
  				rdpsnd_queue_next();
- 				swapped = False;
  				sentcompletion = True;
  			}
--- 238,241 ----
***************
*** 288,291 ****
--- 264,268 ----
  	sun_driver.description =
  		xstrdup("SUN/BSD output driver, default device: " DEFAULTDEVICE " or $AUDIODEV");
+ 	sun_driver.need_byteswap_on_be = 1;
  	sun_driver.next = NULL;
  


-------------------------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642