From: Guillaume Desmottes Date: Mon, 21 Mar 2016 10:58:13 +0000 (+0100) Subject: alsa: add some debugging output to alsa_detect_channels_mapping() X-Git-Tag: 1.19.3~511^2~2894 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=eef7312169f0de0d48dc857dbace01fcc2ce1315;p=platform%2Fupstream%2Fgstreamer.git alsa: add some debugging output to alsa_detect_channels_mapping() https://bugzilla.gnome.org/show_bug.cgi?id=763985 --- diff --git a/ext/alsa/gstalsa.c b/ext/alsa/gstalsa.c index ea4b74b..b9bb291 100644 --- a/ext/alsa/gstalsa.c +++ b/ext/alsa/gstalsa.c @@ -766,14 +766,41 @@ void alsa_detect_channels_mapping (GstObject * obj, snd_pcm_t * handle, GstAudioRingBufferSpec * spec, guint channels, GstAudioRingBuffer * buf) { - if (spec->type == GST_AUDIO_RING_BUFFER_FORMAT_TYPE_RAW && channels < 9) { - snd_pcm_chmap_t *chmap = snd_pcm_get_chmap (handle); - if (chmap && chmap->channels == channels) { - GstAudioChannelPosition pos[8]; - if (alsa_chmap_to_channel_positions (chmap, pos)) - gst_audio_ring_buffer_set_channel_positions (buf, pos); + snd_pcm_chmap_t *chmap; + GstAudioChannelPosition pos[8]; + + if (spec->type != GST_AUDIO_RING_BUFFER_FORMAT_TYPE_RAW || channels >= 9) + return; + + chmap = snd_pcm_get_chmap (handle); + if (!chmap) { + GST_LOG_OBJECT (obj, "ALSA driver does not implement channels mapping API"); + return; + } + + if (chmap->channels != channels) { + GST_LOG_OBJECT (obj, + "got channels mapping for %u channels but stream has %u channels; ignoring", + chmap->channels, channels); + goto out; + } + + if (alsa_chmap_to_channel_positions (chmap, pos)) { +#ifndef GST_DISABLE_GST_DEBUG + { + gchar *tmp = gst_audio_channel_positions_to_string (pos, channels); + + GST_LOG_OBJECT (obj, "got channels mapping %s", tmp); + g_free (tmp); } - free (chmap); +#endif /* GST_DISABLE_GST_DEBUG */ + + gst_audio_ring_buffer_set_channel_positions (buf, pos); + } else { + GST_LOG_OBJECT (obj, "failed to convert ALSA channels mapping"); } + +out: + free (chmap); } #endif /* SND_CHMAP_API_VERSION */