alsa: add some debugging output to alsa_detect_channels_mapping()

https://bugzilla.gnome.org/show_bug.cgi?id=763985
This commit is contained in:
Guillaume Desmottes 2016-03-21 11:58:13 +01:00 committed by Nicolas Dufresne
parent 3cb08304da
commit eef7312169

View file

@ -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);
}
free (chmap);
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);
}
#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 */