Index: uspace/lib/c/include/pcm_sample_format.h
===================================================================
--- uspace/lib/c/include/pcm_sample_format.h	(revision 039337e876bac63fc665c6a329158defd6664911)
+++ uspace/lib/c/include/pcm_sample_format.h	(revision 2cc5c8357bcdbc4c5d0ca79839a7c7e2aadfde62)
@@ -37,4 +37,6 @@
 #define PCM_SAMPLE_FORMAT_H_
 
+#include <bool.h>
+
 typedef enum {
 	PCM_SAMPLE_UINT8,
@@ -57,5 +59,34 @@
 	PCM_SAMPLE_SINT32_BE,
 	PCM_SAMPLE_FLOAT32,
+	PCM_SAMPLE_FORMAT_LAST = PCM_SAMPLE_FLOAT32,
 } pcm_sample_format_t;
+
+static inline bool pcm_sample_format_is_signed(pcm_sample_format_t format)
+{
+	switch(format) {
+	case PCM_SAMPLE_SINT8:
+	case PCM_SAMPLE_SINT16_LE:
+	case PCM_SAMPLE_SINT16_BE:
+	case PCM_SAMPLE_SINT24_LE:
+	case PCM_SAMPLE_SINT24_BE:
+	case PCM_SAMPLE_SINT24_32_LE:
+	case PCM_SAMPLE_SINT24_32_BE:
+	case PCM_SAMPLE_SINT32_LE:
+	case PCM_SAMPLE_SINT32_BE:
+		return true;
+	case PCM_SAMPLE_UINT8:
+	case PCM_SAMPLE_UINT16_LE:
+	case PCM_SAMPLE_UINT16_BE:
+	case PCM_SAMPLE_UINT24_LE:
+	case PCM_SAMPLE_UINT24_BE:
+	case PCM_SAMPLE_UINT24_32_LE:
+	case PCM_SAMPLE_UINT24_32_BE:
+	case PCM_SAMPLE_UINT32_LE:
+	case PCM_SAMPLE_UINT32_BE:
+	case PCM_SAMPLE_FLOAT32:
+	default:
+		return false;
+	}
+}
 
 static inline size_t pcm_sample_format_size(pcm_sample_format_t format)
