From: Ronald S. Bultje Date: Thu, 29 Apr 2004 00:40:14 +0000 (+0000) Subject: ext/alsa/gstalsa.c: Don't probe for playback device if we're a source element. Fixes... X-Git-Tag: 1.19.3~511^2~14324 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=df0008971f9122f10a6f89eedd723360d753b7cc;p=platform%2Fupstream%2Fgstreamer.git ext/alsa/gstalsa.c: Don't probe for playback device if we're a source element. Fixes #139658. Original commit message from CVS: * ext/alsa/gstalsa.c: (gst_alsa_class_probe_devices): Don't probe for playback device if we're a source element. Fixes #139658. --- diff --git a/ChangeLog b/ChangeLog index 7fc40e8..419346b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2004-04-28 Ronald Bultje + + * ext/alsa/gstalsa.c: (gst_alsa_class_probe_devices): + Don't probe for playback device if we're a source element. Fixes + #139658. + 2004-04-29 Benjamin Otte * ext/mad/gstid3tag.c: (gst_id3_tag_handle_event), diff --git a/ext/alsa/gstalsa.c b/ext/alsa/gstalsa.c index dbdd363..9358857 100644 --- a/ext/alsa/gstalsa.c +++ b/ext/alsa/gstalsa.c @@ -326,11 +326,23 @@ gst_alsa_class_probe_devices (GstAlsaClass * klass, gboolean check) gint num, res; gchar *dev; snd_pcm_t *pcm; + snd_pcm_stream_t mode = 0; + const GList *templates; + + /* we assume one pad template at max [zero=mixer] */ + templates = + gst_element_class_get_pad_template_list (GST_ELEMENT_CLASS (klass)); + if (templates) { + if (GST_PAD_TEMPLATE_DIRECTION (templates->data) == GST_PAD_SRC) + mode = SND_PCM_STREAM_CAPTURE; + else + mode = SND_PCM_STREAM_PLAYBACK; + } for (num = 0; num < MAX_DEVICES; num++) { dev = g_strdup_printf ("hw:%d", num); - if (!(res = snd_pcm_open (&pcm, dev, 0, SND_PCM_NONBLOCK)) || + if (!(res = snd_pcm_open (&pcm, dev, mode, SND_PCM_NONBLOCK)) || res == -EBUSY) { klass->devices = g_list_append (klass->devices, dev);