40 lines
1.7 KiB
Diff
40 lines
1.7 KiB
Diff
From: Lyon Wang <lyon.wang@freescale.com>
|
|
Date: Thu, 18 Jun 2015 17:38:09 +0800
|
|
Subject: [PATCH] audioringbuffer: Fix alaw/mulaw channel positions
|
|
|
|
For alaw/mulaw we should also try to initialize the channel positions in the
|
|
ringbuffer's audio info. This allow pulsesink to directly use the channel
|
|
positions instead of using the default zero-initialized ones, which doesn't
|
|
work well.
|
|
|
|
Bugzilla URL: https://bugzilla.gnome.org/show_bug.cgi?id=751144
|
|
|
|
Upstream-Status: Backport [1.5.2]
|
|
|
|
diff --git a/gst-libs/gst/audio/gstaudioringbuffer.c b/gst-libs/gst/audio/gstaudioringbuffer.c
|
|
index 7f4b17b017d6..66335250fc5c 100644
|
|
--- a/gst-libs/gst/audio/gstaudioringbuffer.c
|
|
+++ b/gst-libs/gst/audio/gstaudioringbuffer.c
|
|
@@ -218,6 +218,10 @@ gst_audio_ring_buffer_parse_caps (GstAudioRingBufferSpec * spec, GstCaps * caps)
|
|
gst_structure_get_int (structure, "channels", &info.channels)))
|
|
goto parse_error;
|
|
|
|
+ if (!(gst_audio_channel_positions_from_mask (info.channels, 0,
|
|
+ info.position)))
|
|
+ goto parse_error;
|
|
+
|
|
spec->type = GST_AUDIO_RING_BUFFER_FORMAT_TYPE_A_LAW;
|
|
info.bpf = info.channels;
|
|
} else if (g_str_equal (mimetype, "audio/x-mulaw")) {
|
|
@@ -226,6 +230,10 @@ gst_audio_ring_buffer_parse_caps (GstAudioRingBufferSpec * spec, GstCaps * caps)
|
|
gst_structure_get_int (structure, "channels", &info.channels)))
|
|
goto parse_error;
|
|
|
|
+ if (!(gst_audio_channel_positions_from_mask (info.channels, 0,
|
|
+ info.position)))
|
|
+ goto parse_error;
|
|
+
|
|
spec->type = GST_AUDIO_RING_BUFFER_FORMAT_TYPE_MU_LAW;
|
|
info.bpf = info.channels;
|
|
} else if (g_str_equal (mimetype, "audio/x-iec958")) {
|