Index: uspace/lib/hound/src/protocol.c
===================================================================
--- uspace/lib/hound/src/protocol.c	(revision 35ab943cbb0162f23c86c28b47e8d730a630befa)
+++ uspace/lib/hound/src/protocol.c	(revision 6133470b77e0c859395a7aded61ec6750499588d)
@@ -58,4 +58,14 @@
 };
 
+typedef union {
+	struct {
+		uint16_t rate;
+		uint8_t channels;
+		uint8_t format;
+	} f __attribute__((packed));
+	sysarg_t arg;
+} format_convert_t;
+
+
 /****
  * CLIENT
@@ -224,10 +234,11 @@
     int flags, pcm_format_t format, size_t bsize)
 {
-	union {
-		sysarg_t arg;
-		pcm_format_t format;
-	} convert = { .format = format };
+	const format_convert_t c = { .f = {
+		.channels = format.channels,
+		.rate = format.sampling_rate / 100,
+		.format = format.sample_format,
+	}};
 	return async_req_4_0(exch, IPC_M_HOUND_STREAM_ENTER, id, flags,
-	    convert.arg, bsize);
+	    c.arg, bsize);
 }
 
@@ -420,13 +431,15 @@
 
 			hound_context_id_t id = IPC_GET_ARG1(call);
-			int flags = IPC_GET_ARG2(call);
-			union {
-				sysarg_t arg;
-				pcm_format_t format;
-			} convert = { .arg = IPC_GET_ARG3(call) };
+			const int flags = IPC_GET_ARG2(call);
+			const format_convert_t c = {.arg = IPC_GET_ARG3(call)};
+			const pcm_format_t f = {
+			    .sampling_rate = c.f.rate * 100,
+			    .channels = c.f.channels,
+			    .sample_format = c.f.format,
+			};
 			size_t bsize = IPC_GET_ARG4(call);
 			void *stream;
 			int ret = server_iface->add_stream(server_iface->server,
-			    id, flags, convert.format, bsize, &stream);
+			    id, flags, f, bsize, &stream);
 			if (ret != EOK) {
 				async_answer_0(callid, ret);
