diff options
-rw-r--r-- | src/pcm_convert.c | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/src/pcm_convert.c b/src/pcm_convert.c index b507999fa..4dbeee41f 100644 --- a/src/pcm_convert.c +++ b/src/pcm_convert.c @@ -269,6 +269,20 @@ pcm_convert(struct pcm_convert_state *state, size_t *dest_size_r, GError **error_r) { + if (src_format->reverse_endian) { + /* convert to host byte order, because all of our + conversion libraries assume host byte order */ + + src = pcm_byteswap(&state->byteswap_buffer, src_format->format, + src, src_size); + if (src == NULL) { + g_set_error(error_r, pcm_convert_quark(), 0, + "PCM byte order change of format '%s' is not implemented", + sample_format_to_string(src_format->format)); + return NULL; + } + } + switch (dest_format->format) { case SAMPLE_FORMAT_S16: return pcm_convert_16(state, |