diff -bur ./glc/capture/alsa_capture.c /home/peter/code/glc/src/glc/capture/alsa_capture.c
--- ./glc/capture/alsa_capture.c	2009-07-20 18:46:10.000000000 +0200
+++ /home/peter/code/glc/src/glc/capture/alsa_capture.c	2013-05-15 20:51:08.046235541 +0200
@@ -293,6 +293,8 @@
 		return GLC_AUDIO_S24_LE;
 	case SND_PCM_FORMAT_S32_LE:
 		return GLC_AUDIO_S32_LE;
+	case SND_PCM_FORMAT_FLOAT_LE:
+		return GLC_AUDIO_FLOAT_LE;
 	default:
 		return 0;
 	}
diff -bur ./glc/capture/alsa_hook.c /home/peter/code/glc/src/glc/capture/alsa_hook.c
--- ./glc/capture/alsa_hook.c	2009-07-20 18:46:10.000000000 +0200
+++ /home/peter/code/glc/src/glc/capture/alsa_hook.c	2013-05-15 20:51:08.046235541 +0200
@@ -236,6 +236,8 @@
 		return GLC_AUDIO_S24_LE;
 	case SND_PCM_FORMAT_S32_LE:
 		return GLC_AUDIO_S32_LE;
+	case SND_PCM_FORMAT_FLOAT_LE:
+		return GLC_AUDIO_FLOAT_LE;
 	default:
 		return 0;
 	}
diff -bur ./glc/capture/audio_capture.c /home/peter/code/glc/src/glc/capture/audio_capture.c
--- ./glc/capture/audio_capture.c	2009-07-20 18:46:10.000000000 +0200
+++ /home/peter/code/glc/src/glc/capture/audio_capture.c	2013-05-15 20:51:08.046235541 +0200
@@ -103,6 +103,7 @@
 		audio_capture->format = format;
 		audio_capture->flags |= AUDIO_CAPTURE_CFG_CHANGED;
 	}
+	return 0;
 }
 
 int audio_capture_set_rate(audio_capture_t audio_capture,
diff -bur ./glc/capture/audio_capture.h /home/peter/code/glc/src/glc/capture/audio_capture.h
--- ./glc/capture/audio_capture.h	2009-07-20 18:46:10.000000000 +0200
+++ /home/peter/code/glc/src/glc/capture/audio_capture.h	2013-05-15 20:51:08.047235500 +0200
@@ -53,6 +53,7 @@
  *  * GLC_AUDIO_S16_LE
  *  * GLC_AUDIO_S24_LE
  *  * GLC_AUDIO_S32_LE
+ *  * GLC_AUDIO_FLOAT_LE
  * \param audio_capture audio_capture object
  * \param format format
  * \return 0 on success otherwise an error code
diff -bur ./glc/common/glc.h /home/peter/code/glc/src/glc/common/glc.h
--- ./glc/common/glc.h	2009-07-20 18:46:10.000000000 +0200
+++ /home/peter/code/glc/src/glc/common/glc.h	2013-05-15 20:51:08.047235500 +0200
@@ -277,6 +277,8 @@
 #define GLC_AUDIO_S24_LE                0x2
 /** signed 32bit little-endian */
 #define GLC_AUDIO_S32_LE                0x3
+/** signed 32bit little-endian */
+#define GLC_AUDIO_FLOAT_LE                0xe
 
 /**
  * \brief audio format message
diff -bur ./glc/common/thread.c /home/peter/code/glc/src/glc/common/thread.c
--- ./glc/common/thread.c	2009-07-20 18:46:10.000000000 +0200
+++ /home/peter/code/glc/src/glc/common/thread.c	2013-05-15 20:51:08.047235500 +0200
@@ -123,6 +123,8 @@
 	struct glc_thread_private_s *private = (struct glc_thread_private_s *) argptr;
 	glc_thread_t *thread = private->thread;
 	glc_thread_state_t state;
+	state.header.type = 0;
+	state.threadptr = NULL;
 
 	ps_packet_t read, write;
 
Alleen in ./glc/common: version.h
diff -bur ./glc/core/info.c /home/peter/code/glc/src/glc/core/info.c
--- ./glc/core/info.c	2009-07-20 18:46:10.000000000 +0200
+++ /home/peter/code/glc/src/glc/core/info.c	2013-05-15 20:51:08.048235459 +0200
@@ -377,6 +377,9 @@
 			case GLC_AUDIO_S32_LE:
 				fprintf(info->stream, "GLC_AUDIO_S32_LE\n");
 				break;
+			case GLC_AUDIO_FLOAT_LE:
+				fprintf(info->stream, "GLC_AUDIO_FLOAT_LE\n");
+				break;
 			default:
 				fprintf(info->stream, "unknown format 0x%02x\n",
 					fmt_message->format);
diff -bur ./glc/export/wav.c /home/peter/code/glc/src/glc/export/wav.c
--- ./glc/export/wav.c	2009-07-20 18:46:10.000000000 +0200
+++ /home/peter/code/glc/src/glc/export/wav.c	2013-05-15 20:51:08.048235459 +0200
@@ -191,6 +191,8 @@
 {
 	int sample_size;
 	char *filename;
+        short format_tag = 1;
+        
 
 	if (fmt_msg->id != wav->id)
 		return 0;
@@ -201,6 +203,10 @@
 		sample_size = 3;
 	else if (fmt_msg->format == GLC_AUDIO_S32_LE)
 		sample_size = 4;
+	else if (fmt_msg->format == GLC_AUDIO_FLOAT_LE){
+		sample_size = 4;
+                format_tag = 3;
+        }
 	else {
 		glc_log(wav->glc, GLC_ERROR, "wav",
 			 "unsupported format 0x%02x (stream %d)", fmt_msg->flags, fmt_msg->id);
@@ -227,7 +233,7 @@
 	struct wav_hdr hdr = {0x46464952, 0xffffffff, 0x45564157};
 	struct wav_fmt fmt = {0x20746D66, /* id */
 			      16, /* chunk size */
-			      1, /* compression */
+			      format_tag, /* compression */
 			      fmt_msg->channels, /* channels */
 			      fmt_msg->rate, /* rate */
 			      fmt_msg->rate * sample_size * fmt_msg->channels, /* bps */
diff -bur ./glc/play/alsa_play.c /home/peter/code/glc/src/glc/play/alsa_play.c
--- ./glc/play/alsa_play.c	2009-07-20 18:46:10.000000000 +0200
+++ /home/peter/code/glc/src/glc/play/alsa_play.c	2013-05-15 20:51:08.049235419 +0200
@@ -69,6 +69,8 @@
 			return SND_PCM_FORMAT_S24_LE;
 		case GLC_AUDIO_S32_LE:
 			return SND_PCM_FORMAT_S32_LE;
+		case GLC_AUDIO_FLOAT_LE:
+			return SND_PCM_FORMAT_FLOAT_LE;
 	}
 	return 0;
 }
diff -bur ./glc/play/gl_play.c /home/peter/code/glc/src/glc/play/gl_play.c
--- ./glc/play/gl_play.c	2009-07-20 18:46:10.000000000 +0200
+++ /home/peter/code/glc/src/glc/play/gl_play.c	2013-05-15 20:51:08.049235419 +0200
@@ -193,8 +193,8 @@
 
 int gl_play_draw_video_frame_messageture(gl_play_t gl_play, char *from)
 {
-	unsigned int width_r = gl_play->w;
-	unsigned int height_r = gl_play->h;
+	unsigned int width_r;
+	unsigned int height_r;
 	unsigned int tile_w, tile_h;
 	unsigned int c = 0;
 
@@ -420,6 +420,9 @@
 	gl_play->tiles_x = 0;
 	gl_play->tiles_y = 0;
 
+	if(height_r <= 0 || width_r <= 0)
+		return 1;
+
 	while (height_r > 0) {
 		height_r -= gl_play_next_texture_size(gl_play, height_r);
 		gl_play->tiles_y++;
diff -bur ./hook/alsa.c /home/peter/code/glc/src/hook/alsa.c
--- ./hook/alsa.c	2009-07-20 18:46:10.000000000 +0200
+++ /home/peter/code/glc/src/hook/alsa.c	2013-05-15 21:06:16.504395578 +0200
@@ -214,7 +214,7 @@
 
 	while (stream != NULL) {
 		if (stream->capture)
-			alsa_capture_start(stream->capture);
+			alsa_capture_stop(stream->capture);
 		stream = stream->next;
 	}
 
Alleen in /home/peter/code/glc/src/hook: pulse.c
diff -bur ./play.c /home/peter/code/glc/src/play.c
--- ./play.c	2009-07-20 18:46:10.000000000 +0200
+++ /home/peter/code/glc/src/play.c	2013-05-15 20:51:08.050235378 +0200
@@ -82,7 +82,7 @@
 	struct play_s play;
 	play.action = action_play;
 	const char *val_str = NULL;
-	int opt, option_index;
+	int opt;
 
 	struct option long_options[] = {
 		{"info",		1, NULL, 'i'},
@@ -105,7 +105,6 @@
 		{"version",		0, NULL, 'V'},
 		{0, 0, 0, 0}
 	};
-	option_index = 0;
 
 	play.fps = 0;
 
