alsasink: endianess fix for iec61937
if format supported by driver is S16_LE, data should be swapped only for big endian systems
https://bugzilla.gnome.org/show_bug.cgi?id=757258
Signed-off-by: Arnaud Pouliquen <arnaud.pouliquen@st.com>
diff --git a/ext/alsa/gstalsasink.c b/ext/alsa/gstalsasink.c
index e1bb7d7..282e91d 100644
--- a/ext/alsa/gstalsasink.c
+++ b/ext/alsa/gstalsasink.c
@@ -451,10 +451,12 @@
/* Try to use big endian first else fallback to le and swap bytes */
if (snd_pcm_hw_params_set_format (alsa->handle, params, alsa->format) < 0) {
alsa->format = SND_PCM_FORMAT_S16_LE;
- alsa->need_swap = TRUE;
+ /* swap needed if system is big endian */
+ alsa->need_swap = (G_BYTE_ORDER == G_BIG_ENDIAN);
GST_DEBUG_OBJECT (alsa, "falling back to little endian with swapping");
} else {
- alsa->need_swap = FALSE;
+ /* swap needed if system is little endian */
+ alsa->need_swap = (G_BYTE_ORDER != G_BIG_ENDIAN);
}
}
CHECK (snd_pcm_hw_params_set_format (alsa->handle, params, alsa->format),