Added alsa docs.

Original commit message from CVS:
* docs/plugins/Makefile.am:
* docs/plugins/gst-plugins-base-plugins-docs.sgml:
* docs/plugins/gst-plugins-base-plugins-sections.txt:
* ext/alsa/gstalsamixer.c:
* ext/alsa/gstalsamixer.h:
* ext/alsa/gstalsamixerelement.c:
(gst_alsa_mixer_element_class_init), (gst_alsa_mixer_element_init):
* ext/alsa/gstalsamixerelement.h:
* ext/alsa/gstalsasink.c:
* ext/alsa/gstalsasink.h:
* ext/alsa/gstalsasrc.c: (gst_alsasrc_class_init),
(gst_alsasrc_init):
* ext/alsa/gstalsasrc.h:
Added alsa docs.
Small code cleanups.
This commit is contained in:
Wim Taymans 2006-03-01 18:25:18 +00:00
parent cf82f2445e
commit b6e0165934
12 changed files with 176 additions and 21 deletions

View file

@ -1,3 +1,21 @@
2006-03-01 Wim Taymans <wim@fluendo.com>
* docs/plugins/Makefile.am:
* docs/plugins/gst-plugins-base-plugins-docs.sgml:
* docs/plugins/gst-plugins-base-plugins-sections.txt:
* ext/alsa/gstalsamixer.c:
* ext/alsa/gstalsamixer.h:
* ext/alsa/gstalsamixerelement.c:
(gst_alsa_mixer_element_class_init), (gst_alsa_mixer_element_init):
* ext/alsa/gstalsamixerelement.h:
* ext/alsa/gstalsasink.c:
* ext/alsa/gstalsasink.h:
* ext/alsa/gstalsasrc.c: (gst_alsasrc_class_init),
(gst_alsasrc_init):
* ext/alsa/gstalsasrc.h:
Added alsa docs.
Small code cleanups.
2006-03-01 Wim Taymans <wim@fluendo.com>
* ext/theora/Makefile.am:

View file

@ -74,6 +74,9 @@ IGNORE_CFILES = utils.c mem.c imgconvert.c
# the registry won't have the element
EXTRA_HFILES = \
$(top_srcdir)/ext/alsa/gstalsamixerelement.h \
$(top_srcdir)/ext/alsa/gstalsasink.h \
$(top_srcdir)/ext/alsa/gstalsasrc.h \
$(top_srcdir)/ext/gnomevfs/gstgnomevfssink.h \
$(top_srcdir)/ext/gnomevfs/gstgnomevfssrc.h \
$(top_srcdir)/ext/pango/gstclockoverlay.h \

View file

@ -12,6 +12,9 @@
<chapter>
<title>gst-plugins-base Elements</title>
<xi:include href="xml/element-alsamixer.xml" />
<xi:include href="xml/element-alsasink.xml" />
<xi:include href="xml/element-alsasrc.xml" />
<xi:include href="xml/element-audioconvert.xml" />
<xi:include href="xml/element-audiotestsrc.xml" />
<xi:include href="xml/element-clockoverlay.xml" />

View file

@ -1,3 +1,49 @@
<SECTION>
<FILE>element-alsamixer</FILE>
GstAlsaMixerElement
<TITLE>alsamixer</TITLE>
<SUBSECTION Standard>
GstAlsaMixerElementClass
GST_ALSA_MIXER_ELEMENT
GST_IS_ALSA_MIXER_ELEMENT
GST_TYPE_ALSA_MIXER_ELEMENT
gst_alsa_mixer_element_get_type
GST_ALSA_MIXER_ELEMENT_CLASS
GST_IS_ALSA_MIXER_ELEMENT_CLASS
</SECTION>
<SECTION>
<FILE>element-alsasink</FILE>
GstAlsaSink
<TITLE>alsasink</TITLE>
<SUBSECTION Standard>
GstAlsaSinkClass
GST_ALSA_SINK
GST_ALSA_SINK_CAST
GST_ALSA_GET_LOCK
GST_ALSA_LOCK
GST_ALSA_UNLOCK
GST_IS_ALSA_SINK
GST_TYPE_ALSA_SINK
gst_alsasink_get_type
GST_ALSA_SINK_CLASS
GST_IS_ALSA_SINK_CLASS
</SECTION>
<SECTION>
<FILE>element-alsasrc</FILE>
GstAlsaSrc
<TITLE>alsasrc</TITLE>
<SUBSECTION Standard>
GstAlsaSrcClass
GST_ALSA_SRC
GST_IS_ALSA_SRC
GST_TYPE_ALSA_SRC
gst_alsasrc_get_type
GST_ALSA_SRC_CLASS
GST_IS_ALSA_SRC_CLASS
</SECTION>
<SECTION>
<FILE>element-audioconvert</FILE>
<TITLE>audioconvert</TITLE>

View file

@ -17,6 +17,24 @@
* Boston, MA 02111-1307, USA.
*/
/**
* SECTION:element-alsamixer
* @short_description: control properties of an audio device
* @see_also: alsasink, alsasrc
*
* <refsect2>
* <para>
* This element controls various aspects such as the volume and balance
* of an audio device using the ALSA api.
* </para>
* <para>
* The application should query and use the interfaces provided by this
* element to control the device.
* </para>
* </refsect2>
*
* Last reviewed on 2006-03-01 (0.10.4)
*/
#ifdef HAVE_CONFIG_H
#include "config.h"

View file

@ -33,18 +33,21 @@ G_BEGIN_DECLS
/* This does not get you what you think it does, use obj->mixer */
/* #define GST_ALSA_MIXER(obj) ((GstAlsaMixer*)(obj)) */
typedef struct _GstAlsaMixer GstAlsaMixer;
typedef enum {
GST_ALSA_MIXER_CAPTURE = 1<<0,
GST_ALSA_MIXER_PLAYBACK = 1<<1,
GST_ALSA_MIXER_ALL = GST_ALSA_MIXER_CAPTURE | GST_ALSA_MIXER_PLAYBACK
} GstAlsaMixerDirection;
typedef struct _GstAlsaMixer GstAlsaMixer;
struct _GstAlsaMixer {
/**
* GstAlsaMixer:
*
* Opaque data structure
*/
struct _GstAlsaMixer
{
GList * tracklist; /* list of available tracks */
snd_mixer_t * handle;

View file

@ -25,9 +25,13 @@
#include "gstalsamixerelement.h"
#include "gstalsadeviceprobe.h"
#define DEFAULT_PROP_DEVICE "default"
#define DEFAULT_PROP_DEVICE_NAME ""
enum
{
PROP_DEVICE = 1,
PROP_0,
PROP_DEVICE,
PROP_DEVICE_NAME
};
@ -118,11 +122,12 @@ gst_alsa_mixer_element_class_init (GstAlsaMixerElementClass * klass)
g_object_class_install_property (gobject_class, PROP_DEVICE,
g_param_spec_string ("device", "Device",
"ALSA device, as defined in an asound configuration file",
"default", G_PARAM_READWRITE));
DEFAULT_PROP_DEVICE, G_PARAM_READWRITE));
g_object_class_install_property (gobject_class, PROP_DEVICE_NAME,
g_param_spec_string ("device-name", "Device name",
"Human-readable name of the sound device", "", G_PARAM_READABLE));
"Human-readable name of the sound device",
DEFAULT_PROP_DEVICE_NAME, G_PARAM_READABLE));
element_class->change_state =
GST_DEBUG_FUNCPTR (gst_alsa_mixer_element_change_state);
@ -143,7 +148,7 @@ gst_alsa_mixer_element_init (GstAlsaMixerElement * this,
GstAlsaMixerElementClass * klass)
{
this->mixer = NULL;
this->device = g_strdup ("default");
this->device = g_strdup (DEFAULT_PROP_DEVICE);
}
static void

View file

@ -25,21 +25,22 @@
#include "gstalsamixer.h"
#include "gstalsadeviceprobe.h"
G_BEGIN_DECLS
#define GST_ALSA_MIXER_ELEMENT(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_ALSA_MIXER_ELEMENT,GstAlsaMixerElement))
#define GST_ALSA_MIXER_ELEMENT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_ALSA_MIXER_ELEMENT,GstAlsaMixerElementClass))
#define GST_IS_ALSA_MIXER_ELEMENT(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_ALSA_MIXER_ELEMENT))
#define GST_IS_ALSA_MIXER_ELEMENT_CLASS(obj) (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_ALSA_MIXER_ELEMENT))
#define GST_TYPE_ALSA_MIXER_ELEMENT (gst_alsa_mixer_element_get_type())
typedef struct _GstAlsaMixerElement GstAlsaMixerElement;
typedef struct _GstAlsaMixerElementClass GstAlsaMixerElementClass;
/**
* GstAlsaMixerElement
*
* Opaque datastructure.
*/
struct _GstAlsaMixerElement {
GstElement parent;

View file

@ -19,6 +19,27 @@
* Boston, MA 02111-1307, USA.
*/
/**
* SECTION:element-alsasink
* @short_description: play audio to an ALSA device
* @see_also: alsasrc, alsamixer
*
* <refsect2>
* <para>
* This element renders raw audio samples using the ALSA api.
* </para>
* <title>Example pipelines</title>
* <para>
* Play an Ogg/Vorbis file.
* </para>
* <programlisting>
* gst-launch -v filesrc location=sine.ogg ! oggdemux ! vorbisdec ! audioconvert ! alsasink
* </programlisting>
* </refsect2>
*
* Last reviewed on 2006-03-01 (0.10.4)
*/
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif

View file

@ -23,12 +23,10 @@
#ifndef __GST_ALSASINK_H__
#define __GST_ALSASINK_H__
#include <gst/gst.h>
#include <gst/audio/gstaudiosink.h>
#include <alsa/asoundlib.h>
G_BEGIN_DECLS
#define GST_TYPE_ALSA_SINK (gst_alsasink_get_type())
@ -45,6 +43,11 @@ typedef struct _GstAlsaSinkClass GstAlsaSinkClass;
#define GST_ALSA_LOCK(obj) (g_mutex_lock (GST_ALSA_GET_LOCK (obj)))
#define GST_ALSA_UNLOCK(obj) (g_mutex_unlock (GST_ALSA_GET_LOCK (obj)))
/**
* GstAlsaSink:
*
* Opaque data structure
*/
struct _GstAlsaSink {
GstAudioSink sink;

View file

@ -19,6 +19,27 @@
* Boston, MA 02111-1307, USA.
*/
/**
* SECTION:element-alsasrc
* @short_description: capture audio from an alsa device
* @see_also: alsasink, alsamixer
*
* <refsect2>
* <para>
* This element reads data from an audio card using the ALSA API.
* </para>
* <title>Example pipelines</title>
* <para>
* Record from a sound card using ALSA and encode to Ogg/Vorbis.
* </para>
* <programlisting>
* gst-launch -v alsasrc ! audioconvert ! vorbisenc ! oggmux ! filesink location=alsasrc.ogg
* </programlisting>
* </refsect2>
*
* Last reviewed on 2006-03-01 (0.10.4)
*/
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
@ -41,6 +62,9 @@ GST_ELEMENT_DETAILS ("Audio Src (ALSA)",
"Read from a sound card via ALSA",
"Wim Taymans <wim@fluendo.com>");
#define DEFAULT_PROP_DEVICE "default"
#define DEFAULT_PROP_DEVICE_NAME ""
enum
{
PROP_0,
@ -76,12 +100,18 @@ enum
LAST_SIGNAL
};
#if (G_BYTE_ORDER == G_LITTLE_ENDIAN)
# define ALSA_SRC_FACTORY_ENDIANNESS "LITTLE_ENDIAN, BIG_ENDIAN"
#else
# define ALSA_SRC_FACTORY_ENDIANNESS "BIG_ENDIAN, LITTLE_ENDIAN"
#endif
static GstStaticPadTemplate alsasrc_src_factory =
GST_STATIC_PAD_TEMPLATE ("src",
GST_PAD_SRC,
GST_PAD_ALWAYS,
GST_STATIC_CAPS ("audio/x-raw-int, "
"endianness = (int) { LITTLE_ENDIAN, BIG_ENDIAN }, "
"endianness = (int) { " ALSA_SRC_FACTORY_ENDIANNESS " }, "
"signed = (boolean) { TRUE, FALSE }, "
"width = (int) 16, "
"depth = (int) 16, "
@ -142,11 +172,12 @@ gst_alsasrc_class_init (GstAlsaSrcClass * klass)
g_object_class_install_property (gobject_class, PROP_DEVICE,
g_param_spec_string ("device", "Device",
"ALSA device, as defined in an asound configuration file",
"default", G_PARAM_READWRITE));
DEFAULT_PROP_DEVICE, G_PARAM_READWRITE));
g_object_class_install_property (gobject_class, PROP_DEVICE_NAME,
g_param_spec_string ("device-name", "Device name",
"Human-readable name of the sound device", "", G_PARAM_READABLE));
"Human-readable name of the sound device",
DEFAULT_PROP_DEVICE_NAME, G_PARAM_READABLE));
}
static void
@ -204,7 +235,7 @@ gst_alsasrc_init (GstAlsaSrc * alsasrc, GstAlsaSrcClass * g_class)
{
GST_DEBUG_OBJECT (alsasrc, "initializing");
alsasrc->device = g_strdup ("default");
alsasrc->device = g_strdup (DEFAULT_PROP_DEVICE);
}
static GstCaps *

View file

@ -23,12 +23,10 @@
#ifndef __GST_ALSASRC_H__
#define __GST_ALSASRC_H__
#include <gst/audio/gstaudiosrc.h>
#include "gstalsa.h"
#include "gstalsamixer.h"
G_BEGIN_DECLS
#define GST_TYPE_ALSA_SRC (gst_alsasrc_get_type())
@ -40,6 +38,11 @@ G_BEGIN_DECLS
typedef struct _GstAlsaSrc GstAlsaSrc;
typedef struct _GstAlsaSrcClass GstAlsaSrcClass;
/**
* GstAlsaSrc:
*
* Opaque data structure
*/
struct _GstAlsaSrc {
GstAudioSrc src;