diff options
Diffstat (limited to 'src/audio_format.c')
-rw-r--r-- | src/audio_format.c | 37 |
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; |