hal is not developed anymore and nobody is using the plugin nowadays.
GST_PLUGINS_NONPORTED=" deinterlace flx goom goom2k1 icydemux id3demux \
imagefreeze interleave isomp4 law matroska monoscope shapewipe smpte \
videobox videocrop videomixer \
- annodex apetag cairo dv1394 flac gdk_pixbuf hal jpeg libdv libpng \
+ annodex apetag cairo dv1394 flac gdk_pixbuf jpeg libdv libpng \
oss oss4 shout2 \
soup taglib wavpack "
AC_SUBST(GST_PLUGINS_NONPORTED)
AG_GST_PKG_CHECK_MODULES(GDK_PIXBUF, gdk-pixbuf-2.0 >= 2.8.0)
])
-dnl *** HAL ***
-translit(dnm, m, l) AM_CONDITIONAL(USE_HAL, true)
-AG_GST_CHECK_FEATURE(HAL, [HAL libraries], halelements, [
- AG_GST_PKG_CHECK_MODULES(HAL, [hal >= 0.5.6, dbus-1 >= 0.32])
-])
-
dnl *** Jack ***
translit(dnm, m, l) AM_CONDITIONAL(USE_JACK, true)
AG_GST_CHECK_FEATURE(JACK, Jack, jack, [
AM_CONDITIONAL(USE_FLAC, false)
AM_CONDITIONAL(USE_GDK_PIXBUF, false)
AM_CONDITIONAL(USE_GST_V4L2, false)
-AM_CONDITIONAL(USE_HAL, false)
AM_CONDITIONAL(USE_JACK, false)
AM_CONDITIONAL(USE_JPEG, false)
AM_CONDITIONAL(USE_LIBCACA, false)
ext/dv/Makefile
ext/flac/Makefile
ext/gdk_pixbuf/Makefile
-ext/hal/Makefile
ext/jack/Makefile
ext/jpeg/Makefile
ext/libcaca/Makefile
GDK_PIXBUF_DIR =
endif
-if USE_HAL
-HAL_DIR = hal
-else
-HAL_DIR =
-endif
-
if USE_JACK
JACK_DIR=jack
else
$(DV1394_DIR) \
$(FLAC_DIR) \
$(GDK_PIXBUF_DIR) \
- $(HAL_DIR) \
$(JACK_DIR) \
$(JPEG_DIR) \
$(LIBCACA_DIR) \
dv \
flac \
gdk_pixbuf \
- hal \
jack \
jpeg \
libcaca \
+++ /dev/null
-plugin_LTLIBRARIES = libgsthalelements.la
-
-libgsthalelements_la_SOURCES = \
- gsthalaudiosink.c \
- gsthalaudiosrc.c \
- gsthalelements.c \
- hal.c
-
-libgsthalelements_la_CFLAGS = $(GST_CFLAGS) $(HAL_CFLAGS)
-libgsthalelements_la_LIBADD = $(GST_LIBS) $(HAL_LIBS)
-libgsthalelements_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
-libgsthalelements_la_LIBTOOLFLAGS = --tag=disable-static
-
-noinst_HEADERS = \
- gsthalaudiosink.h \
- gsthalaudiosrc.h \
- gsthalelements.h \
- hal.h
+++ /dev/null
-/* GStreamer
- * (c) 2005 Ronald S. Bultje <rbultje@ronald.bitfreak.net>
- * (c) 2006 Jürg Billeter <j@bitron.ch>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-/**
- * SECTION:element-halaudiosink
- *
- * HalAudioSink allows access to output of sound devices by specifying the
- * corresponding persistent Unique Device Id (UDI) from the Hardware Abstraction
- * Layer (HAL) in the #GstHalAudioSink:udi property.
- * It currently always embeds alsasink or osssink as HAL doesn't support other
- * sound systems yet. You can also specify the UDI of a device that has ALSA or
- * OSS subdevices. If both are present ALSA is preferred.
- *
- * <refsect2>
- * <title>Examples</title>
- * |[
- * hal-find-by-property --key alsa.type --string playback
- * ]| list the UDIs of all your ALSA output devices
- * |[
- * gst-launch -v audiotestsrc ! halaudiosink udi=/org/freedesktop/Hal/devices/pci_8086_27d8_alsa_playback_0
- * ]| test your soundcard by playing a test signal on the specified sound device.
- * </refsect2>
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "gsthalelements.h"
-#include "gsthalaudiosink.h"
-
-static void gst_hal_audio_sink_dispose (GObject * object);
-static GstStateChangeReturn
-gst_hal_audio_sink_change_state (GstElement * element,
- GstStateChange transition);
-
-enum
-{
- PROP_0,
- PROP_UDI
-};
-
-GST_BOILERPLATE (GstHalAudioSink, gst_hal_audio_sink, GstBin, GST_TYPE_BIN);
-
-static void gst_hal_audio_sink_set_property (GObject * object, guint prop_id,
- const GValue * value, GParamSpec * pspec);
-static void gst_hal_audio_sink_get_property (GObject * object, guint prop_id,
- GValue * value, GParamSpec * pspec);
-
-static void
-gst_hal_audio_sink_base_init (gpointer klass)
-{
- GstElementClass *eklass = GST_ELEMENT_CLASS (klass);
-
- static GstStaticPadTemplate sink_template = GST_STATIC_PAD_TEMPLATE ("sink",
- GST_PAD_SINK,
- GST_PAD_ALWAYS,
- GST_STATIC_CAPS_ANY);
-
- gst_element_class_add_pad_template (eklass,
- gst_static_pad_template_get (&sink_template));
- gst_element_class_set_details_simple (eklass, "HAL audio sink",
- "Sink/Audio",
- "Audio sink for sound device access via HAL",
- "Jürg Billeter <j@bitron.ch>");
-}
-
-static void
-gst_hal_audio_sink_class_init (GstHalAudioSinkClass * klass)
-{
- GObjectClass *oklass = G_OBJECT_CLASS (klass);
- GstElementClass *eklass = GST_ELEMENT_CLASS (klass);
-
- oklass->set_property = gst_hal_audio_sink_set_property;
- oklass->get_property = gst_hal_audio_sink_get_property;
- oklass->dispose = gst_hal_audio_sink_dispose;
- eklass->change_state = gst_hal_audio_sink_change_state;
-
- g_object_class_install_property (oklass, PROP_UDI,
- g_param_spec_string ("udi",
- "UDI", "Unique Device Id", NULL,
- G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
-}
-
-/*
- * Hack to make negotiation work.
- */
-
-static void
-gst_hal_audio_sink_reset (GstHalAudioSink * sink)
-{
- GstPad *targetpad;
-
- /* fakesink */
- if (sink->kid) {
- gst_element_set_state (sink->kid, GST_STATE_NULL);
- gst_bin_remove (GST_BIN (sink), sink->kid);
- }
- sink->kid = gst_element_factory_make ("fakesink", "testsink");
- gst_bin_add (GST_BIN (sink), sink->kid);
-
- targetpad = gst_element_get_static_pad (sink->kid, "sink");
- gst_ghost_pad_set_target (GST_GHOST_PAD (sink->pad), targetpad);
- gst_object_unref (targetpad);
-}
-
-static void
-gst_hal_audio_sink_init (GstHalAudioSink * sink, GstHalAudioSinkClass * g_class)
-{
- sink->pad = gst_ghost_pad_new_no_target ("sink", GST_PAD_SINK);
- gst_element_add_pad (GST_ELEMENT (sink), sink->pad);
-
- gst_hal_audio_sink_reset (sink);
-}
-
-static void
-gst_hal_audio_sink_dispose (GObject * object)
-{
- GstHalAudioSink *sink = GST_HAL_AUDIO_SINK (object);
-
- if (sink->udi) {
- g_free (sink->udi);
- sink->udi = NULL;
- }
-
- GST_CALL_PARENT (G_OBJECT_CLASS, dispose, (object));
-}
-
-static gboolean
-do_toggle_element (GstHalAudioSink * sink)
-{
- GstPad *targetpad;
-
- /* kill old element */
- if (sink->kid) {
- GST_DEBUG_OBJECT (sink, "Removing old kid");
- gst_element_set_state (sink->kid, GST_STATE_NULL);
- gst_bin_remove (GST_BIN (sink), sink->kid);
- sink->kid = NULL;
- }
-
- GST_DEBUG_OBJECT (sink, "Creating new kid");
- if (!sink->udi)
- GST_INFO_OBJECT (sink, "No UDI set for device, using default one");
-
- if (!(sink->kid = gst_hal_get_audio_sink (sink->udi))) {
- GST_ELEMENT_ERROR (sink, LIBRARY, SETTINGS, (NULL),
- ("Failed to render audio sink from Hal"));
- return FALSE;
- }
- gst_element_set_state (sink->kid, GST_STATE (sink));
- gst_bin_add (GST_BIN (sink), sink->kid);
-
- /* re-attach ghostpad */
- GST_DEBUG_OBJECT (sink, "Creating new ghostpad");
- targetpad = gst_element_get_static_pad (sink->kid, "sink");
- gst_ghost_pad_set_target (GST_GHOST_PAD (sink->pad), targetpad);
- gst_object_unref (targetpad);
- GST_DEBUG_OBJECT (sink, "done changing hal audio sink");
-
- return TRUE;
-}
-
-static void
-gst_hal_audio_sink_set_property (GObject * object, guint prop_id,
- const GValue * value, GParamSpec * pspec)
-{
- GstHalAudioSink *this = GST_HAL_AUDIO_SINK (object);
-
- GST_OBJECT_LOCK (this);
-
- switch (prop_id) {
- case PROP_UDI:
- if (this->udi)
- g_free (this->udi);
- this->udi = g_value_dup_string (value);
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
- break;
- }
-
- GST_OBJECT_UNLOCK (this);
-}
-
-static void
-gst_hal_audio_sink_get_property (GObject * object, guint prop_id,
- GValue * value, GParamSpec * pspec)
-{
- GstHalAudioSink *this = GST_HAL_AUDIO_SINK (object);
-
- GST_OBJECT_LOCK (this);
-
- switch (prop_id) {
- case PROP_UDI:
- g_value_set_string (value, this->udi);
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
- break;
- }
-
- GST_OBJECT_UNLOCK (this);
-}
-
-static GstStateChangeReturn
-gst_hal_audio_sink_change_state (GstElement * element,
- GstStateChange transition)
-{
- GstStateChangeReturn ret = GST_STATE_CHANGE_SUCCESS;
- GstHalAudioSink *sink = GST_HAL_AUDIO_SINK (element);
-
- switch (transition) {
- case GST_STATE_CHANGE_NULL_TO_READY:
- if (!do_toggle_element (sink))
- return GST_STATE_CHANGE_FAILURE;
- break;
- default:
- break;
- }
-
- ret = GST_CALL_PARENT_WITH_DEFAULT (GST_ELEMENT_CLASS, change_state,
- (element, transition), GST_STATE_CHANGE_SUCCESS);
-
- switch (transition) {
- case GST_STATE_CHANGE_READY_TO_NULL:
- gst_hal_audio_sink_reset (sink);
- break;
- default:
- break;
- }
-
- return ret;
-}
+++ /dev/null
-/* GStreamer
- * (c) 2005 Ronald S. Bultje <rbultje@ronald.bitfreak.net>
- * (c) 2006 Jürg Billeter <j@bitron.ch>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#ifndef __GST_HAL_AUDIO_SINK_H__
-#define __GST_HAL_AUDIO_SINK_H__
-
-#include <gst/gst.h>
-
-G_BEGIN_DECLS
-
-#define GST_TYPE_HAL_AUDIO_SINK \
- (gst_hal_audio_sink_get_type ())
-#define GST_HAL_AUDIO_SINK(obj) \
- (G_TYPE_CHECK_INSTANCE_CAST ((obj), GST_TYPE_HAL_AUDIO_SINK, \
- GstHalAudioSink))
-#define GST_HAL_AUDIO_SINK_CLASS(klass) \
- (G_TYPE_CHECK_CLASS_CAST ((klass), GST_TYPE_HAL_AUDIO_SINK, \
- GstHalAudioSinkClass))
-#define GST_IS_HAL_AUDIO_SINK(obj) \
- (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GST_TYPE_HAL_AUDIO_SINK))
-#define GST_IS_HAL_AUDIO_SINK_CLASS(klass) \
- (G_TYPE_CHECK_CLASS_TYPE ((klass), GST_TYPE_HAL_AUDIO_SINK))
-
-typedef struct _GstHalAudioSink {
- GstBin parent;
-
- /* explicit pointers to stuff used */
- gchar *udi;
- GstElement *kid;
- GstPad *pad;
-} GstHalAudioSink;
-
-typedef struct _GstHalAudioSinkClass {
- GstBinClass parent_class;
-} GstHalAudioSinkClass;
-
-GType gst_hal_audio_sink_get_type (void);
-
-G_END_DECLS
-
-#endif /* __GST_HAL_AUDIO_SINK_H__ */
+++ /dev/null
-/* GStreamer
- * (c) 2005 Ronald S. Bultje <rbultje@ronald.bitfreak.net>
- * (c) 2005 Tim-Philipp Müller <tim centricular net>
- * (c) 2006 Jürg Billeter <j@bitron.ch>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-/**
- * SECTION:element-halaudiosrc
- *
- * HalAudioSrc allows access to input of sound devices by specifying the
- * corresponding persistent Unique Device Id (UDI) from the Hardware Abstraction
- * Layer (HAL) in the #GstHalAudioSrc:udi property.
- * It currently always embeds alsasrc or osssrc as HAL doesn't support other
- * sound systems yet. You can also specify the UDI of a device that has ALSA or
- * OSS subdevices. If both are present ALSA is preferred.
- *
- * <refsect2>
- * <title>Examples</title>
- * |[
- * hal-find-by-property --key alsa.type --string capture
- * ]| list the UDIs of all your ALSA input devices
- * |[
- * gst-launch -v halaudiosrc udi=/org/freedesktop/Hal/devices/pci_8086_27d8_alsa_capture_0 ! autoaudiosink
- * ]| You should now hear yourself with a small delay if you have a microphone
- * connected to the specified sound device.
- * </refsect2>
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "gsthalelements.h"
-#include "gsthalaudiosrc.h"
-
-static void gst_hal_audio_src_dispose (GObject * object);
-static GstStateChangeReturn
-gst_hal_audio_src_change_state (GstElement * element,
- GstStateChange transition);
-
-enum
-{
- PROP_0,
- PROP_UDI
-};
-
-GST_BOILERPLATE (GstHalAudioSrc, gst_hal_audio_src, GstBin, GST_TYPE_BIN);
-
-static void gst_hal_audio_src_set_property (GObject * object, guint prop_id,
- const GValue * value, GParamSpec * pspec);
-static void gst_hal_audio_src_get_property (GObject * object, guint prop_id,
- GValue * value, GParamSpec * pspec);
-
-static void
-gst_hal_audio_src_base_init (gpointer klass)
-{
- GstElementClass *eklass = GST_ELEMENT_CLASS (klass);
-
- static GstStaticPadTemplate src_template = GST_STATIC_PAD_TEMPLATE ("src",
- GST_PAD_SRC,
- GST_PAD_ALWAYS,
- GST_STATIC_CAPS_ANY);
-
- gst_element_class_add_pad_template (eklass,
- gst_static_pad_template_get (&src_template));
- gst_element_class_set_details_simple (eklass, "HAL audio source",
- "Source/Audio",
- "Audio source for sound device access via HAL",
- "Jürg Billeter <j@bitron.ch>");
-}
-
-static void
-gst_hal_audio_src_class_init (GstHalAudioSrcClass * klass)
-{
- GObjectClass *oklass = G_OBJECT_CLASS (klass);
- GstElementClass *eklass = GST_ELEMENT_CLASS (klass);
-
- oklass->set_property = gst_hal_audio_src_set_property;
- oklass->get_property = gst_hal_audio_src_get_property;
- oklass->dispose = gst_hal_audio_src_dispose;
- eklass->change_state = gst_hal_audio_src_change_state;
-
- g_object_class_install_property (oklass, PROP_UDI,
- g_param_spec_string ("udi",
- "UDI", "Unique Device Id", NULL,
- G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
-}
-
-/*
- * Hack to make negotiation work.
- */
-
-static void
-gst_hal_audio_src_reset (GstHalAudioSrc * src)
-{
- GstPad *targetpad;
-
- /* fakesrc */
- if (src->kid) {
- gst_element_set_state (src->kid, GST_STATE_NULL);
- gst_bin_remove (GST_BIN (src), src->kid);
- }
- src->kid = gst_element_factory_make ("fakesrc", "testsrc");
- gst_bin_add (GST_BIN (src), src->kid);
-
- targetpad = gst_element_get_static_pad (src->kid, "src");
- gst_ghost_pad_set_target (GST_GHOST_PAD (src->pad), targetpad);
- gst_object_unref (targetpad);
-}
-
-static void
-gst_hal_audio_src_init (GstHalAudioSrc * src, GstHalAudioSrcClass * g_class)
-{
- src->pad = gst_ghost_pad_new_no_target ("src", GST_PAD_SRC);
- gst_element_add_pad (GST_ELEMENT (src), src->pad);
-
- gst_hal_audio_src_reset (src);
-}
-
-static void
-gst_hal_audio_src_dispose (GObject * object)
-{
- GstHalAudioSrc *src = GST_HAL_AUDIO_SRC (object);
-
- if (src->udi) {
- g_free (src->udi);
- src->udi = NULL;
- }
-
- GST_CALL_PARENT (G_OBJECT_CLASS, dispose, (object));
-}
-
-static gboolean
-do_toggle_element (GstHalAudioSrc * src)
-{
- GstPad *targetpad;
-
- /* kill old element */
- if (src->kid) {
- GST_DEBUG_OBJECT (src, "Removing old kid");
- gst_element_set_state (src->kid, GST_STATE_NULL);
- gst_bin_remove (GST_BIN (src), src->kid);
- src->kid = NULL;
- }
-
- GST_DEBUG_OBJECT (src, "Creating new kid");
- if (!src->udi)
- GST_INFO_OBJECT (src, "No UDI set for device, using default one");
-
- if (!(src->kid = gst_hal_get_audio_src (src->udi))) {
- GST_ELEMENT_ERROR (src, LIBRARY, SETTINGS, (NULL),
- ("Failed to render audio source from Hal"));
- return FALSE;
- }
- gst_element_set_state (src->kid, GST_STATE (src));
- gst_bin_add (GST_BIN (src), src->kid);
-
- /* re-attach ghostpad */
- GST_DEBUG_OBJECT (src, "Creating new ghostpad");
- targetpad = gst_element_get_static_pad (src->kid, "src");
- gst_ghost_pad_set_target (GST_GHOST_PAD (src->pad), targetpad);
- gst_object_unref (targetpad);
- GST_DEBUG_OBJECT (src, "done changing hal audio source");
-
- return TRUE;
-}
-
-static void
-gst_hal_audio_src_set_property (GObject * object, guint prop_id,
- const GValue * value, GParamSpec * pspec)
-{
- GstHalAudioSrc *this = GST_HAL_AUDIO_SRC (object);
-
- GST_OBJECT_LOCK (this);
-
- switch (prop_id) {
- case PROP_UDI:
- if (this->udi)
- g_free (this->udi);
- this->udi = g_value_dup_string (value);
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
- break;
- }
-
- GST_OBJECT_UNLOCK (this);
-}
-
-static void
-gst_hal_audio_src_get_property (GObject * object, guint prop_id,
- GValue * value, GParamSpec * pspec)
-{
- GstHalAudioSrc *this = GST_HAL_AUDIO_SRC (object);
-
- GST_OBJECT_LOCK (this);
-
- switch (prop_id) {
- case PROP_UDI:
- g_value_set_string (value, this->udi);
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
- break;
- }
-
- GST_OBJECT_UNLOCK (this);
-}
-
-static GstStateChangeReturn
-gst_hal_audio_src_change_state (GstElement * element, GstStateChange transition)
-{
- GstStateChangeReturn ret = GST_STATE_CHANGE_SUCCESS;
- GstHalAudioSrc *src = GST_HAL_AUDIO_SRC (element);
-
- switch (transition) {
- case GST_STATE_CHANGE_NULL_TO_READY:
- if (!do_toggle_element (src))
- return GST_STATE_CHANGE_FAILURE;
- break;
- default:
- break;
- }
-
- ret = GST_CALL_PARENT_WITH_DEFAULT (GST_ELEMENT_CLASS, change_state,
- (element, transition), GST_STATE_CHANGE_SUCCESS);
-
- switch (transition) {
- case GST_STATE_CHANGE_READY_TO_NULL:
- gst_hal_audio_src_reset (src);
- break;
- default:
- break;
- }
-
- return ret;
-}
+++ /dev/null
-/* GStreamer
- * (c) 2005 Ronald S. Bultje <rbultje@ronald.bitfreak.net>
- * (c) 2005 Tim-Philipp Müller <tim centricular net>
- * (c) 2006 Jürg Billeter <j@bitron.ch>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#ifndef __GST_HAL_AUDIO_SRC_H__
-#define __GST_HAL_AUDIO_SRC_H__
-
-#include <gst/gst.h>
-
-G_BEGIN_DECLS
-
-#define GST_TYPE_HAL_AUDIO_SRC (gst_hal_audio_src_get_type ())
-#define GST_HAL_AUDIO_SRC(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GST_TYPE_HAL_AUDIO_SRC, GstHalAudioSrc))
-#define GST_HAL_AUDIO_SRC_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GST_TYPE_HAL_AUDIO_SRC, GstHalAudioSrcClass))
-#define GST_IS_HAL_AUDIO_SRC(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GST_TYPE_HAL_AUDIO_SRC))
-#define GST_IS_HAL_AUDIO_SRC_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GST_TYPE_HAL_AUDIO_SRC))
-
-typedef struct _GstHalAudioSrc {
- GstBin parent;
-
- /* explicit pointers to stuff used */
- gchar *udi;
- GstElement *kid;
- GstPad *pad;
-} GstHalAudioSrc;
-
-typedef struct _GstHalAudioSrcClass {
- GstBinClass parent_class;
-} GstHalAudioSrcClass;
-
-GType gst_hal_audio_src_get_type (void);
-
-G_END_DECLS
-
-#endif /* __GST_HAL_AUDIO_SRC_H__ */
+++ /dev/null
-/* GStreamer
- * (c) 2005 Ronald S. Bultje <rbultje@ronald.bitfreak.net>
- * (c) 2006 Jürg Billeter <j@bitron.ch>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include <gst/gst.h>
-
-#include "gsthalelements.h"
-
-#include "gsthalaudiosink.h"
-#include "gsthalaudiosrc.h"
-
-GST_DEBUG_CATEGORY (hal_debug);
-
-static gboolean
-plugin_init (GstPlugin * plugin)
-{
- GST_DEBUG_CATEGORY_INIT (hal_debug, "hal", 0,
- "HAL/GStreamer audio input/output wrapper elements");
-
- if (!gst_element_register (plugin, "halaudiosink",
- GST_RANK_NONE, GST_TYPE_HAL_AUDIO_SINK) ||
- !gst_element_register (plugin, "halaudiosrc",
- GST_RANK_NONE, GST_TYPE_HAL_AUDIO_SRC)) {
- return FALSE;
- }
-
- return TRUE;
-}
-
-GST_PLUGIN_DEFINE (GST_VERSION_MAJOR,
- GST_VERSION_MINOR,
- "halelements",
- "elements wrapping the GStreamer/HAL audio input/output devices",
- plugin_init, VERSION, GST_LICENSE, GST_PACKAGE_NAME, GST_PACKAGE_ORIGIN)
+++ /dev/null
-/* GStreamer
- * (c) 2005 Ronald S. Bultje <rbultje@ronald.bitfreak.net>
- * (c) 2006 Ronald S. Bultje <rbultje@ronald.bitfreak.net>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#ifndef __GST_HAL_ELEMENTS_H__
-#define __GST_HAL_ELEMENTS_H__
-
-#include <hal.h>
-
-GST_DEBUG_CATEGORY_EXTERN (hal_debug);
-#define GST_CAT_DEFAULT hal_debug
-
-#endif /* __GST_HAL_ELEMENTS_H__ */
+++ /dev/null
-/* GStreamer
- * Copyright (C) <2002> Thomas Vander Stichele <thomas@apestaart.org>
- * Copyright (C) <2006> Jürg Billeter <j@bitron.ch>
- * Copyright (C) <2007> Sebastian Dröge <slomo@circular-chaos.org>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-/*
- * this library handles interaction with Hal
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include <string.h>
-#include <glib.h>
-#include "hal.h"
-
-GST_DEBUG_CATEGORY_EXTERN (hal_debug);
-
-#define GST_CAT_DEFAULT hal_debug
-
-/* compat for older libhal */
-#ifndef LIBHAL_FREE_DBUS_ERROR
-#define LIBHAL_FREE_DBUS_ERROR(e) dbus_error_free (e)
-#endif
-
-/*
- * gst_hal_get_alsa_element:
- * @ctx: a #LibHalContext which should be used for querying HAL.
- * @udi: a #gchar corresponding to the UDI you want to get.
- * @device_type: a #GstHalDeviceType specifying the wanted device type.
- *
- * Get Hal UDI @udi's string value.
- *
- * Returns: a newly allocated #gchar string containing the appropriate pipeline
- * for UDI @udi, or NULL in the case of an error..
- */
-static gchar *
-gst_hal_get_alsa_element (LibHalContext * ctx, const gchar * udi,
- GstHalDeviceType device_type)
-{
- char *type, *string = NULL;
- const char *element = NULL;
- DBusError error;
-
- dbus_error_init (&error);
-
- if (!libhal_device_query_capability (ctx, udi, "alsa", &error)) {
- if (dbus_error_is_set (&error)) {
- GST_DEBUG ("Failed querying %s for alsa capability: %s: %s",
- udi, error.name, error.message);
- LIBHAL_FREE_DBUS_ERROR (&error);
- } else {
- GST_DEBUG ("UDI %s has no alsa capability", udi);
- }
- return NULL;
- }
-
- type = libhal_device_get_property_string (ctx, udi, "alsa.type", &error);
-
- if (dbus_error_is_set (&error)) {
- GST_DEBUG ("UDI %s has alsa capabilities but no alsa.type property: %s, %s",
- udi, error.name, error.message);
- LIBHAL_FREE_DBUS_ERROR (&error);
- return NULL;
- } else if (!type) {
- GST_DEBUG ("UDI %s has empty alsa.type property", udi);
- return NULL;
- }
-
- if (strcmp (type, "playback") == 0 && device_type == GST_HAL_AUDIOSINK)
- element = "alsasink";
- else if (strcmp (type, "capture") == 0 && device_type == GST_HAL_AUDIOSRC)
- element = "alsasrc";
-
- libhal_free_string (type);
-
- if (element) {
- int card, device;
-
- card = libhal_device_get_property_int (ctx, udi, "alsa.card", &error);
- if (dbus_error_is_set (&error)) {
- GST_DEBUG ("UDI %s has no alsa.card property: %s: %s", udi, error.name,
- error.message);
- LIBHAL_FREE_DBUS_ERROR (&error);
- return NULL;
- } else if (card == -1) {
- GST_DEBUG ("UDI %s has no alsa.card property", udi);
- return NULL;
- }
-
- device = libhal_device_get_property_int (ctx, udi, "alsa.device", &error);
- if (dbus_error_is_set (&error)) {
- GST_DEBUG ("UDI %s has no alsa.device property: %s: %s", udi, error.name,
- error.message);
- LIBHAL_FREE_DBUS_ERROR (&error);
- return NULL;
- } else if (device == -1) {
- GST_DEBUG ("UDI %s has no alsa.device property", udi);
- return NULL;
- }
-
- /* This is a bit dodgy, since it makes lots of assumptions about the way
- * alsa is set up. In any case, only munge the device string for playback */
- if (strcmp (element, "alsasink") == 0 && device == 0) {
- /* handle default device specially to use
- * dmix, dsnoop, and softvol if appropriate */
- string = g_strdup_printf ("%s device=default:%d", element, card);
- } else {
- string =
- g_strdup_printf ("%s device=plughw:%d,%d", element, card, device);
- }
- }
-
- return string;
-}
-
-/*
- * gst_hal_get_oss_element:
- * @ctx: a #LibHalContext which should be used for querying HAL.
- * @udi: a #gchar corresponding to the UDI you want to get.
- * @device_type: a #GstHalDeviceType specifying the wanted device type.
- *
- * Get Hal UDI @udi's string value.
- *
- * Returns: a newly allocated #gchar string containing the appropriate pipeline
- * for UDI @udi, or NULL in the case of an error..
- */
-static gchar *
-gst_hal_get_oss_element (LibHalContext * ctx, const gchar * udi,
- GstHalDeviceType device_type)
-{
- char *type, *string = NULL;
- const char *element = NULL;
- DBusError error;
-
- dbus_error_init (&error);
-
- if (!libhal_device_query_capability (ctx, udi, "oss", &error)) {
- if (dbus_error_is_set (&error)) {
- GST_DEBUG ("Failed querying %s for oss capability: %s: %s", udi,
- error.name, error.message);
- LIBHAL_FREE_DBUS_ERROR (&error);
- } else {
- GST_DEBUG ("UDI %s has no oss capability", udi);
- }
- return NULL;
- }
-
- type = libhal_device_get_property_string (ctx, udi, "oss.type", &error);
- if (dbus_error_is_set (&error)) {
- GST_DEBUG ("UDI %s has oss capabilities but no oss.type property: %s, %s",
- udi, error.name, error.message);
- LIBHAL_FREE_DBUS_ERROR (&error);
- return NULL;
- } else if (!type) {
- GST_DEBUG ("UDI %s has empty oss.type property", udi);
- return NULL;
- }
-
- if (strcmp (type, "pcm") == 0) {
- if (device_type == GST_HAL_AUDIOSINK)
- element = "osssink";
- else if (device_type == GST_HAL_AUDIOSRC)
- element = "osssrc";
- }
- libhal_free_string (type);
-
- if (element) {
- char *device = NULL;
-
- device =
- libhal_device_get_property_string (ctx, udi, "oss.device_file", &error);
- if (dbus_error_is_set (&error)) {
- GST_DEBUG
- ("UDI %s has oss capabilities but no oss.device_file property: %s, %s",
- udi, error.name, error.message);
- LIBHAL_FREE_DBUS_ERROR (&error);
- return NULL;
- } else if (!device) {
- GST_DEBUG ("UDI %s has empty oss.device_file property", udi);
- return NULL;
- }
-
- string = g_strdup_printf ("%s device=%s", element, device);
- libhal_free_string (device);
- }
-
- return string;
-}
-
-/*
- * gst_hal_get_string:
- * @udi: a #gchar corresponding to the UDI you want to get.
- * @device_type: a #GstHalDeviceType specifying the wanted device type.
- *
- * Get Hal UDI @udi's string value.
- *
- * Returns: a newly allocated #gchar string containing the appropriate pipeline
- * for UDI @udi, or NULL in the case of an error..
- */
-static gchar *
-gst_hal_get_string (const gchar * udi, GstHalDeviceType device_type)
-{
- DBusError error;
- LibHalContext *ctx;
- char *string = NULL;
-
- /* Don't query HAL for NULL UDIs. Passing NULL as UDI to HAL gives
- * an assertion failure in D-Bus when running with
- * DBUS_FATAL_WARNINGS=1. */
- if (!udi)
- return NULL;
-
- dbus_error_init (&error);
-
- ctx = libhal_ctx_new ();
- /* Should only happen on OOM */
- g_return_val_if_fail (ctx != NULL, NULL);
-
- if (!libhal_ctx_set_dbus_connection (ctx, dbus_bus_get (DBUS_BUS_SYSTEM,
- &error))) {
- GST_DEBUG ("Unable to set DBus connection: %s: %s", error.name,
- error.message);
- LIBHAL_FREE_DBUS_ERROR (&error);
- goto ctx_free;
- }
-
- if (!libhal_ctx_init (ctx, &error)) {
- GST_DEBUG ("Unable to set init HAL context: %s: %s", error.name,
- error.message);
- LIBHAL_FREE_DBUS_ERROR (&error);
- goto ctx_free;
- }
-
- /* Now first check if UDI is an alsa device, then oss and then
- * check the childs of the given device. If there are alsa and oss
- * children the first alsa one is used. */
-
- string = gst_hal_get_alsa_element (ctx, udi, device_type);
-
- if (!string)
- string = gst_hal_get_oss_element (ctx, udi, device_type);
-
- if (!string) {
- int num_childs;
- char **childs = NULL;
-
- /* now try if one of the direct subdevices supports ALSA or OSS */
- childs =
- libhal_manager_find_device_string_match (ctx, "info.parent", udi,
- &num_childs, &error);
- if (dbus_error_is_set (&error)) {
- GST_DEBUG ("Unable to retrieve childs of %s: %s: %s", udi, error.name,
- error.message);
- LIBHAL_FREE_DBUS_ERROR (&error);
- goto ctx_shutdown;
- }
-
- if (childs && num_childs > 0) {
- int i;
- char *alsa_string = NULL, *oss_string = NULL;
-
- for (i = 0; i < num_childs && !alsa_string; i++) {
- alsa_string = gst_hal_get_alsa_element (ctx, childs[i], device_type);
-
- if (!oss_string)
- oss_string = gst_hal_get_oss_element (ctx, childs[i], device_type);
- }
-
- if (alsa_string) {
- string = alsa_string;
- g_free (oss_string);
- } else if (oss_string) {
- string = oss_string;
- }
- }
- libhal_free_string_array (childs);
- }
-
-ctx_shutdown:
- if (!libhal_ctx_shutdown (ctx, &error)) {
- GST_DEBUG ("Closing connection to HAL failed: %s: %s", error.name,
- error.message);
- LIBHAL_FREE_DBUS_ERROR (&error);
- }
-
-ctx_free:
- libhal_ctx_free (ctx);
-
- if (string == NULL) {
- GST_WARNING ("Problem finding a HAL audio device for udi %s", udi);
- } else {
- GST_INFO ("Using %s", string);
- }
-
- return string;
-}
-
-/* external functions */
-
-/**
- * gst_hal_render_bin_from_udi:
- * @udi: a #gchar string corresponding to a Hal UDI.
- *
- * Render bin from Hal UDI @udi.
- *
- * Returns: a #GstElement containing the rendered bin.
- */
-GstElement *
-gst_hal_render_bin_from_udi (const gchar * udi, GstHalDeviceType type)
-{
- GstElement *bin = NULL;
- gchar *value;
-
- value = gst_hal_get_string (udi, type);
- if (value)
- bin = gst_parse_bin_from_description (value, TRUE, NULL);
- g_free (value);
- return bin;
-}
-
-/**
- * gst_hal_get_audio_sink:
- * @udi: a #gchar string corresponding to a Hal UDI.
- *
- * Render audio output bin from GStreamer Hal UDI.
- * If no device with the specified UDI exists or @udi is NULL,
- * the default audio sink for the platform is used
- * (typically alsasink, osssink or sunaudiosink).
- *
- * Returns: a #GstElement containing the audio output bin, or NULL if
- * everything failed.
- */
-GstElement *
-gst_hal_get_audio_sink (const gchar * udi)
-{
- GstElement *ret = NULL;
-
- if (udi)
- ret = gst_hal_render_bin_from_udi (udi, GST_HAL_AUDIOSINK);
-
- if (!ret) {
- ret = gst_element_factory_make (DEFAULT_AUDIOSINK, NULL);
-
- if (!ret)
- GST_ERROR ("Hal audio sink and %s don't work", DEFAULT_AUDIOSINK);
- }
-
- return ret;
-}
-
-/**
- * gst_hal_get_audio_src:
- * @udi: a #gchar string corresponding to a Hal UDI.
- *
- * Render audio acquisition bin from GStreamer Hal UDI.
- * If no device with the specified UDI exists or @udi is NULL,
- * the default audio source for the plaform is used
- * (typically alsasrc, osssrc or sunaudiosrc).
- *
- * Returns: a #GstElement containing the audio source bin, or NULL if
- * everything failed.
- */
-GstElement *
-gst_hal_get_audio_src (const gchar * udi)
-{
- GstElement *ret = NULL;
-
- if (udi)
- ret = gst_hal_render_bin_from_udi (udi, GST_HAL_AUDIOSRC);
-
- if (!ret) {
- ret = gst_element_factory_make (DEFAULT_AUDIOSRC, NULL);
-
- if (!ret)
- GST_ERROR ("Hal audio src and %s don't work", DEFAULT_AUDIOSRC);
- }
-
- return ret;
-}
+++ /dev/null
-/* GStreamer
- * Copyright (C) <2002> Thomas Vander Stichele <thomas@apestaart.org>
- * Copyright (C) <2006> Jürg Billeter <j@bitron.ch>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#ifndef GST_HAL_H
-#define GST_HAL_H
-
-/*
- * this library handles interaction with Hal
- */
-
-#include <gst/gst.h>
-#include <dbus/dbus.h>
-#include <libhal.h>
-
-G_BEGIN_DECLS
-
-typedef enum
-{
- GST_HAL_AUDIOSINK,
- GST_HAL_AUDIOSRC
-} GstHalDeviceType;
-
-GstElement *gst_hal_render_bin_from_udi (const gchar * udi,
- GstHalDeviceType type);
-
-GstElement *gst_hal_get_audio_sink (const gchar * udi);
-GstElement *gst_hal_get_audio_src (const gchar * udi);
-
-G_END_DECLS
-
-#endif /* GST_HAL_H */