aboutsummaryrefslogtreecommitdiffstats
path: root/src/audio_format.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/audio_format.c')
-rw-r--r--src/audio_format.c37
1 files changed, 26 insertions, 11 deletions
diff --git a/src/audio_format.c b/src/audio_format.c
index 13403fbc1..45d94a853 100644
--- a/src/audio_format.c
+++ b/src/audio_format.c
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2003-2010 The Music Player Daemon Project
+ * Copyright (C) 2003-2011 The Music Player Daemon Project
* http://www.musicpd.org
*
* This program is free software; you can redistribute it and/or modify
@@ -22,11 +22,24 @@
#include <assert.h>
#include <stdio.h>
-#if G_BYTE_ORDER == G_BIG_ENDIAN
-#define REVERSE_ENDIAN_SUFFIX "_le"
-#else
-#define REVERSE_ENDIAN_SUFFIX "_be"
-#endif
+void
+audio_format_mask_apply(struct audio_format *af,
+ const struct audio_format *mask)
+{
+ assert(audio_format_valid(af));
+ assert(audio_format_mask_valid(mask));
+
+ if (mask->sample_rate != 0)
+ af->sample_rate = mask->sample_rate;
+
+ if (mask->format != SAMPLE_FORMAT_UNDEFINED)
+ af->format = mask->format;
+
+ if (mask->channels != 0)
+ af->channels = mask->channels;
+
+ assert(audio_format_valid(af));
+}
const char *
sample_format_to_string(enum sample_format format)
@@ -41,14 +54,17 @@ sample_format_to_string(enum sample_format format)
case SAMPLE_FORMAT_S16:
return "16";
- case SAMPLE_FORMAT_S24:
- return "24_3";
-
case SAMPLE_FORMAT_S24_P32:
return "24";
case SAMPLE_FORMAT_S32:
return "32";
+
+ case SAMPLE_FORMAT_FLOAT:
+ return "f";
+
+ case SAMPLE_FORMAT_DSD:
+ return "dsd";
}
/* unreachable */
@@ -63,9 +79,8 @@ audio_format_to_string(const struct audio_format *af,
assert(af != NULL);
assert(s != NULL);
- snprintf(s->buffer, sizeof(s->buffer), "%u:%s%s:%u",
+ snprintf(s->buffer, sizeof(s->buffer), "%u:%s:%u",
af->sample_rate, sample_format_to_string(af->format),
- af->reverse_endian ? REVERSE_ENDIAN_SUFFIX : "",
af->channels);
return s->buffer;