summaryrefslogtreecommitdiffstats
path: root/sys/oss
diff options
context:
space:
mode:
authorThomas Vander Stichele <thomas@apestaart.org>2004-03-14 22:34:33 +0000
committerThomas Vander Stichele <thomas@apestaart.org>2004-03-14 22:34:33 +0000
commit5d25c00e4b613b9cdf2c04fa3a68dffa03834a68 (patch)
tree74a5b1eaf3a324b520e64e87404fd0b3018a7829 /sys/oss
parent1e83b097f7b732ae49e294a5a398bdc3e88854a8 (diff)
gst-indent
Original commit message from CVS: gst-indent
Diffstat (limited to 'sys/oss')
-rw-r--r--sys/oss/gstossaudio.c24
-rw-r--r--sys/oss/gstosselement.c570
-rw-r--r--sys/oss/gstosselement.h82
-rw-r--r--sys/oss/gstossmixer.c207
-rw-r--r--sys/oss/gstossmixer.h23
-rw-r--r--sys/oss/gstosssink.c397
-rw-r--r--sys/oss/gstosssink.h40
-rw-r--r--sys/oss/gstosssrc.c332
-rw-r--r--sys/oss/gstosssrc.h30
9 files changed, 853 insertions, 852 deletions
diff --git a/sys/oss/gstossaudio.c b/sys/oss/gstossaudio.c
index 4387eb07..ecbbd9bc 100644
--- a/sys/oss/gstossaudio.c
+++ b/sys/oss/gstossaudio.c
@@ -32,17 +32,17 @@ extern gchar *__gst_oss_plugin_dir;
GST_DEBUG_CATEGORY (oss_debug);
static gboolean
-plugin_init (GstPlugin *plugin)
+plugin_init (GstPlugin * plugin)
{
if (!gst_library_load ("gstaudio"))
return FALSE;
if (!gst_element_register (plugin, "ossmixer", GST_RANK_PRIMARY,
- GST_TYPE_OSSELEMENT) ||
+ GST_TYPE_OSSELEMENT) ||
!gst_element_register (plugin, "osssrc", GST_RANK_PRIMARY,
- GST_TYPE_OSSSRC) ||
+ GST_TYPE_OSSSRC) ||
!gst_element_register (plugin, "osssink", GST_RANK_PRIMARY,
- GST_TYPE_OSSSINK)) {
+ GST_TYPE_OSSSINK)) {
return FALSE;
}
@@ -56,14 +56,8 @@ plugin_init (GstPlugin *plugin)
return TRUE;
}
-GST_PLUGIN_DEFINE (
- GST_VERSION_MAJOR,
- GST_VERSION_MINOR,
- "ossaudio",
- "OSS (Open Sound System) support for GStreamer",
- plugin_init,
- VERSION,
- GST_LICENSE,
- GST_PACKAGE,
- GST_ORIGIN
-)
+GST_PLUGIN_DEFINE (GST_VERSION_MAJOR,
+ GST_VERSION_MINOR,
+ "ossaudio",
+ "OSS (Open Sound System) support for GStreamer",
+ plugin_init, VERSION, GST_LICENSE, GST_PACKAGE, GST_ORIGIN)
diff --git a/sys/oss/gstosselement.c b/sys/oss/gstosselement.c
index 7dfac627..56dd20da 100644
--- a/sys/oss/gstosselement.c
+++ b/sys/oss/gstosselement.c
@@ -39,7 +39,8 @@
#include "gstosselement.h"
#include "gstossmixer.h"
-enum {
+enum
+{
ARG_0,
ARG_DEVICE,
ARG_MIXERDEV,
@@ -47,49 +48,45 @@ enum {
};
/* elementfactory information */
-static GstElementDetails gst_osselement_details = GST_ELEMENT_DETAILS (
- "Audio Mixer (OSS)",
- "Generic/Audio",
- "OSS-based mixer element",
- "Ronald Bultje <rbultje@ronald.bitfreak.net>"
-);
-
-static void gst_osselement_base_init (GstOssElementClass *klass);
-static void gst_osselement_class_init (GstOssElementClass *klass);
-
-static void gst_ossprobe_interface_init (GstPropertyProbeInterface *iface);
-static void gst_osselement_init (GstOssElement *oss);
-static void gst_osselement_dispose (GObject *object);
-
-static void gst_osselement_set_property (GObject *object,
- guint prop_id,
- const GValue *value,
- GParamSpec *pspec);
-static void gst_osselement_get_property (GObject *object,
- guint prop_id,
- GValue *value,
- GParamSpec *pspec);
-static GstElementStateReturn gst_osselement_change_state (GstElement *element);
+static GstElementDetails gst_osselement_details =
+GST_ELEMENT_DETAILS ("Audio Mixer (OSS)",
+ "Generic/Audio",
+ "OSS-based mixer element",
+ "Ronald Bultje <rbultje@ronald.bitfreak.net>");
+
+static void gst_osselement_base_init (GstOssElementClass * klass);
+static void gst_osselement_class_init (GstOssElementClass * klass);
+
+static void gst_ossprobe_interface_init (GstPropertyProbeInterface * iface);
+static void gst_osselement_init (GstOssElement * oss);
+static void gst_osselement_dispose (GObject * object);
+
+static void gst_osselement_set_property (GObject * object,
+ guint prop_id, const GValue * value, GParamSpec * pspec);
+static void gst_osselement_get_property (GObject * object,
+ guint prop_id, GValue * value, GParamSpec * pspec);
+static GstElementStateReturn gst_osselement_change_state (GstElement * element);
static GstElementClass *parent_class = NULL;
+
/*static guint gst_osssrc_signals[LAST_SIGNAL] = { 0 }; */
GType
-gst_osselement_get_type (void)
+gst_osselement_get_type (void)
{
static GType osselement_type = 0;
if (!osselement_type) {
static const GTypeInfo osselement_info = {
- sizeof(GstOssElementClass),
- (GBaseInitFunc)gst_osselement_base_init,
+ sizeof (GstOssElementClass),
+ (GBaseInitFunc) gst_osselement_base_init,
NULL,
- (GClassInitFunc)gst_osselement_class_init,
+ (GClassInitFunc) gst_osselement_class_init,
NULL,
NULL,
- sizeof(GstOssElement),
+ sizeof (GstOssElement),
0,
- (GInstanceInitFunc)gst_osselement_init
+ (GInstanceInitFunc) gst_osselement_init
};
static const GInterfaceInfo ossiface_info = {
(GInterfaceInitFunc) gst_oss_interface_init,
@@ -108,24 +105,20 @@ gst_osselement_get_type (void)
};
osselement_type = g_type_register_static (GST_TYPE_ELEMENT,
- "GstOssElement",
- &osselement_info, 0);
+ "GstOssElement", &osselement_info, 0);
g_type_add_interface_static (osselement_type,
- GST_TYPE_IMPLEMENTS_INTERFACE,
- &ossiface_info);
+ GST_TYPE_IMPLEMENTS_INTERFACE, &ossiface_info);
g_type_add_interface_static (osselement_type,
- GST_TYPE_MIXER,
- &ossmixer_info);
+ GST_TYPE_MIXER, &ossmixer_info);
g_type_add_interface_static (osselement_type,
- GST_TYPE_PROPERTY_PROBE,
- &ossprobe_info);
+ GST_TYPE_PROPERTY_PROBE, &ossprobe_info);
}
return osselement_type;
}
static void
-gst_osselement_base_init (GstOssElementClass *klass)
+gst_osselement_base_init (GstOssElementClass * klass)
{
GstElementClass *element_class = GST_ELEMENT_CLASS (klass);
@@ -135,36 +128,36 @@ gst_osselement_base_init (GstOssElementClass *klass)
}
static void
-gst_osselement_class_init (GstOssElementClass *klass)
+gst_osselement_class_init (GstOssElementClass * klass)
{
GObjectClass *gobject_class;
GstElementClass *gstelement_class;
- gobject_class = (GObjectClass*)klass;
- gstelement_class = (GstElementClass*)klass;
+ gobject_class = (GObjectClass *) klass;
+ gstelement_class = (GstElementClass *) klass;
parent_class = g_type_class_ref (GST_TYPE_ELEMENT);
- g_object_class_install_property(G_OBJECT_CLASS(klass), ARG_DEVICE,
- g_param_spec_string ("device", "Device", "OSS device (/dev/dspN usually)",
- "default", G_PARAM_READWRITE));
- g_object_class_install_property(G_OBJECT_CLASS(klass), ARG_MIXERDEV,
- g_param_spec_string ("mixerdev", "Mixer device",
- "OSS mixer device (/dev/mixerN usually)",
- "default", G_PARAM_READWRITE));
- g_object_class_install_property(G_OBJECT_CLASS(klass), ARG_DEVICE_NAME,
- g_param_spec_string ("device_name", "Device name", "Name of the device",
- NULL, G_PARAM_READABLE));
-
+ g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_DEVICE,
+ g_param_spec_string ("device", "Device", "OSS device (/dev/dspN usually)",
+ "default", G_PARAM_READWRITE));
+ g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_MIXERDEV,
+ g_param_spec_string ("mixerdev", "Mixer device",
+ "OSS mixer device (/dev/mixerN usually)",
+ "default", G_PARAM_READWRITE));
+ g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_DEVICE_NAME,
+ g_param_spec_string ("device_name", "Device name", "Name of the device",
+ NULL, G_PARAM_READABLE));
+
gobject_class->set_property = gst_osselement_set_property;
gobject_class->get_property = gst_osselement_get_property;
- gobject_class->dispose = gst_osselement_dispose;
+ gobject_class->dispose = gst_osselement_dispose;
gstelement_class->change_state = gst_osselement_change_state;
}
static const GList *
-gst_ossprobe_get_properties (GstPropertyProbe *probe)
+gst_ossprobe_get_properties (GstPropertyProbe * probe)
{
GObjectClass *klass = G_OBJECT_GET_CLASS (probe);
static GList *list = NULL;
@@ -180,10 +173,8 @@ gst_ossprobe_get_properties (GstPropertyProbe *probe)
#define MAX_OSS_DEVICES 16
static void
-gst_osselement_probe (gchar *device_base,
- gint device_num,
- gchar **name,
- dev_t *devno)
+gst_osselement_probe (gchar * device_base,
+ gint device_num, gchar ** name, dev_t * devno)
{
gchar *device = NULL;
struct stat s;
@@ -208,22 +199,22 @@ gst_osselement_probe (gchar *device_base,
*name = device;
*devno = s.st_rdev;
- return;
+ return;
end:
g_free (device);
}
-static GList*
-device_combination_append (GList *device_combinations,
- GstOssDeviceCombination *combi)
+static GList *
+device_combination_append (GList * device_combinations,
+ GstOssDeviceCombination * combi)
{
GList *it;
for (it = device_combinations; it != NULL; it = it->next) {
GstOssDeviceCombination *cur;
- cur = (GstOssDeviceCombination*)it->data;
+ cur = (GstOssDeviceCombination *) it->data;
if (cur->dev == combi->dev) {
return device_combinations;
}
@@ -233,8 +224,7 @@ device_combination_append (GList *device_combinations,
}
static gboolean
-gst_osselement_class_probe_devices (GstOssElementClass *klass,
- gboolean check)
+gst_osselement_class_probe_devices (GstOssElementClass * klass, gboolean check)
{
GstElementClass *eklass = GST_ELEMENT_CLASS (klass);
static gboolean init = FALSE;
@@ -249,6 +239,7 @@ gst_osselement_class_probe_devices (GstOssElementClass *klass,
padtempllist = gst_element_class_get_pad_template_list (eklass);
if (padtempllist != NULL) {
GstPadTemplate *firstpadtempl = padtempllist->data;
+
if (GST_PAD_TEMPLATE_DIRECTION (firstpadtempl) == GST_PAD_SINK) {
openmode = O_WRONLY;
}
@@ -258,9 +249,12 @@ gst_osselement_class_probe_devices (GstOssElementClass *klass,
if (!init && !check) {
#define MIXER 0
#define DSP 1
- gchar *dev_base[][2] = { {"/dev/mixer", "/dev/dsp"},
- {"/dev/sound/mixer", "/dev/sound/dsp"},
- {NULL, NULL}};
+ gchar *dev_base[][2] = { {"/dev/mixer", "/dev/dsp"}
+ ,
+ {"/dev/sound/mixer", "/dev/sound/dsp"}
+ ,
+ {NULL, NULL}
+ };
gint n;
gint base;
@@ -285,36 +279,36 @@ gst_osselement_class_probe_devices (GstOssElementClass *klass,
dev_t dsp_dev;
dev_t mixer_dev;
- gst_osselement_probe (dev_base[base][DSP], n, &dsp, &dsp_dev);
+ gst_osselement_probe (dev_base[base][DSP], n, &dsp, &dsp_dev);
if (dsp == NULL) {
continue;
}
gst_osselement_probe (dev_base[base][MIXER], n, &mixer, &mixer_dev);
/* does the device exist (can we open them)? */
-
+
/* we just check the dsp. we assume the mixer always works.
* we don't need a mixer anyway (says OSS)... If we are a
* mixer element, we use the mixer anyway. */
if ((fd = open (mixer ? mixer :
- dsp, openmode | O_NONBLOCK)) > 0 || errno == EBUSY) {
+ dsp, openmode | O_NONBLOCK)) > 0 || errno == EBUSY) {
GstOssDeviceCombination *combi;
-
+
if (fd > 0)
close (fd);
-
+
/* yay! \o/ */
combi = g_new0 (GstOssDeviceCombination, 1);
- combi->dsp = dsp;
+ combi->dsp = dsp;
combi->mixer = mixer;
device_combinations = device_combination_append (device_combinations,
- combi);
+ combi);
} else {
g_free (dsp);
g_free (mixer);
}
}
}
-
+
init = TRUE;
}
@@ -324,7 +318,7 @@ gst_osselement_class_probe_devices (GstOssElementClass *klass,
}
static GValueArray *
-gst_osselement_class_list_devices (GstOssElementClass *klass)
+gst_osselement_class_list_devices (GstOssElementClass * klass)
{
GValueArray *array;
GValue value = { 0 };
@@ -350,9 +344,8 @@ gst_osselement_class_list_devices (GstOssElementClass *klass)
}
static void
-gst_ossprobe_probe_property (GstPropertyProbe *probe,
- guint prop_id,
- const GParamSpec *pspec)
+gst_ossprobe_probe_property (GstPropertyProbe * probe,
+ guint prop_id, const GParamSpec * pspec)
{
GstOssElementClass *klass = GST_OSSELEMENT_GET_CLASS (probe);
@@ -367,9 +360,8 @@ gst_ossprobe_probe_property (GstPropertyProbe *probe,
}
static gboolean
-gst_ossprobe_needs_probe (GstPropertyProbe *probe,
- guint prop_id,
- const GParamSpec *pspec)
+gst_ossprobe_needs_probe (GstPropertyProbe * probe,
+ guint prop_id, const GParamSpec * pspec)
{
GstOssElementClass *klass = GST_OSSELEMENT_GET_CLASS (probe);
gboolean ret = FALSE;
@@ -387,9 +379,8 @@ gst_ossprobe_needs_probe (GstPropertyProbe *probe,
}
static GValueArray *
-gst_ossprobe_get_values (GstPropertyProbe *probe,
- guint prop_id,
- const GParamSpec *pspec)
+gst_ossprobe_get_values (GstPropertyProbe * probe,
+ guint prop_id, const GParamSpec * pspec)
{
GstOssElementClass *klass = GST_OSSELEMENT_GET_CLASS (probe);
GValueArray *array = NULL;
@@ -407,16 +398,16 @@ gst_ossprobe_get_values (GstPropertyProbe *probe,
}
static void
-gst_ossprobe_interface_init (GstPropertyProbeInterface *iface)
+gst_ossprobe_interface_init (GstPropertyProbeInterface * iface)
{
iface->get_properties = gst_ossprobe_get_properties;
iface->probe_property = gst_ossprobe_probe_property;
- iface->needs_probe = gst_ossprobe_needs_probe;
- iface->get_values = gst_ossprobe_get_values;
+ iface->needs_probe = gst_ossprobe_needs_probe;
+ iface->get_values = gst_ossprobe_get_values;
}
-static void
-gst_osselement_init (GstOssElement *oss)
+static void
+gst_osselement_init (GstOssElement * oss)
{
oss->device = g_strdup ("/dev/dsp");
oss->mixer_dev = g_strdup ("/dev/mixer");
@@ -429,7 +420,7 @@ gst_osselement_init (GstOssElement *oss)
}
static void
-gst_osselement_dispose (GObject *object)
+gst_osselement_dispose (GObject * object)
{
GstOssElement *oss = (GstOssElement *) object;
@@ -439,8 +430,8 @@ gst_osselement_dispose (GObject *object)
G_OBJECT_CLASS (parent_class)->dispose (object);
}
-void
-gst_osselement_reset (GstOssElement *oss)
+void
+gst_osselement_reset (GstOssElement * oss)
{
oss->law = 0;
oss->endianness = G_BYTE_ORDER;
@@ -457,14 +448,14 @@ gst_osselement_reset (GstOssElement *oss)
oss->format = AFMT_S16_BE;
#else
oss->format = AFMT_S16_LE;
-#endif /* WORDS_BIGENDIAN */
+#endif /* WORDS_BIGENDIAN */
}
-static gboolean
-gst_ossformat_get (gint law, gint endianness, gboolean sign, gint width, gint depth,
- gint *format, gint *bps)
+static gboolean
+gst_ossformat_get (gint law, gint endianness, gboolean sign, gint width,
+ gint depth, gint * format, gint * bps)
{
- if (width != depth)
+ if (width != depth)
return FALSE;
*bps = 1;
@@ -472,52 +463,39 @@ gst_ossformat_get (gint law, gint endianness, gboolean sign, gint width, gint de
if (law == 0) {
if (width == 16) {
if (sign == TRUE) {
- if (endianness == G_LITTLE_ENDIAN) {
+ if (endianness == G_LITTLE_ENDIAN) {
*format = AFMT_S16_LE;
- GST_DEBUG (
- "16 bit signed LE, no law (%d)", *format);
- }
- else if (endianness == G_BIG_ENDIAN) {
+ GST_DEBUG ("16 bit signed LE, no law (%d)", *format);
+ } else if (endianness == G_BIG_ENDIAN) {
*format = AFMT_S16_BE;
- GST_DEBUG (
- "16 bit signed BE, no law (%d)", *format);
+ GST_DEBUG ("16 bit signed BE, no law (%d)", *format);
}
- }
- else {
- if (endianness == G_LITTLE_ENDIAN) {
+ } else {
+ if (endianness == G_LITTLE_ENDIAN) {
*format = AFMT_U16_LE;
- GST_DEBUG (
- "16 bit unsigned LE, no law (%d)", *format);
- }
- else if (endianness == G_BIG_ENDIAN) {
+ GST_DEBUG ("16 bit unsigned LE, no law (%d)", *format);
+ } else if (endianness == G_BIG_ENDIAN) {
*format = AFMT_U16_BE;
- GST_DEBUG (
- "16 bit unsigned BE, no law (%d)", *format);
+ GST_DEBUG ("16 bit unsigned BE, no law (%d)", *format);
}
}
*bps = 2;
- }
- else if (width == 8) {
+ } else if (width == 8) {
if (sign == TRUE) {
*format = AFMT_S8;
- GST_DEBUG (
- "8 bit signed, no law (%d)", *format);
- }
- else {
- *format = AFMT_U8;
- GST_DEBUG (
- "8 bit unsigned, no law (%d)", *format);
+ GST_DEBUG ("8 bit signed, no law (%d)", *format);
+ } else {
+ *format = AFMT_U8;
+ GST_DEBUG ("8 bit unsigned, no law (%d)", *format);
}
*bps = 1;
}
} else if (law == 1) {
*format = AFMT_MU_LAW;
- GST_DEBUG (
- "mu law (%d)", *format);
+ GST_DEBUG ("mu law (%d)", *format);
} else if (law == 2) {
*format = AFMT_A_LAW;
- GST_DEBUG (
- "a law (%d)", *format);
+ GST_DEBUG ("a law (%d)", *format);
} else {
g_critical ("unknown law");
return FALSE;
@@ -526,34 +504,33 @@ gst_ossformat_get (gint law, gint endianness, gboolean sign, gint width, gint de
return TRUE;
}
-gboolean
-gst_osselement_parse_caps (GstOssElement *oss, const GstCaps *caps)
+gboolean
+gst_osselement_parse_caps (GstOssElement * oss, const GstCaps * caps)
{
gint bps, format;
GstStructure *structure;
structure = gst_caps_get_structure (caps, 0);
- gst_structure_get_int (structure, "width", &oss->width);
- gst_structure_get_int (structure, "depth", &oss->depth);
-
- if (oss->width != oss->depth)
+ gst_structure_get_int (structure, "width", &oss->width);
+ gst_structure_get_int (structure, "depth", &oss->depth);
+
+ if (oss->width != oss->depth)
+ return FALSE;
+
+ gst_structure_get_int (structure, "law", &oss->law);
+ gst_structure_get_int (structure, "endianness", &oss->endianness);
+ gst_structure_get_boolean (structure, "signed", &oss->sign);
+
+ if (!gst_ossformat_get (oss->law, oss->endianness, oss->sign,
+ oss->width, oss->depth, &format, &bps)) {
+ GST_DEBUG ("could not get format");
return FALSE;
-
- gst_structure_get_int (structure, "law", &oss->law);
- gst_structure_get_int (structure, "endianness", &oss->endianness);
- gst_structure_get_boolean (structure, "signed", &oss->sign);
-
- if (!gst_ossformat_get (oss->law, oss->endianness, oss->sign,
- oss->width, oss->depth, &format, &bps))
- {
- GST_DEBUG ("could not get format");
- return FALSE;
}
- gst_structure_get_int (structure, "channels", &oss->channels);
- gst_structure_get_int (structure, "rate", &oss->rate);
-
+ gst_structure_get_int (structure, "channels", &oss->channels);
+ gst_structure_get_int (structure, "rate", &oss->rate);
+
oss->bps = bps * oss->channels * oss->rate;
oss->format = format;
@@ -571,38 +548,37 @@ G_STMT_START { \
gst_structure_get_boolean (structure, name, dest); \
} G_STMT_END
-gboolean
-gst_osselement_merge_fixed_caps (GstOssElement *oss, GstCaps *caps)
+gboolean
+gst_osselement_merge_fixed_caps (GstOssElement * oss, GstCaps * caps)
{
gint bps, format;
GstStructure *structure;
structure = gst_caps_get_structure (caps, 0);
-
+
/* peel off fixed stuff from the caps */
- gst_structure_get_int (structure, "law", &oss->law);
+ gst_structure_get_int (structure, "law", &oss->law);
gst_structure_get_int (structure, "endianness", &oss->endianness);
- gst_structure_get_boolean (structure, "signed", &oss->sign);
- gst_structure_get_int (structure, "width", &oss->width);
- gst_structure_get_int (structure, "depth", &oss->depth);
-
- if (!gst_ossformat_get (oss->law, oss->endianness, oss->sign,
- oss->width, oss->depth, &format, &bps))
- {
- return FALSE;
+ gst_structure_get_boolean (structure, "signed", &oss->sign);
+ gst_structure_get_int (structure, "width", &oss->width);
+ gst_structure_get_int (structure, "depth", &oss->depth);
+
+ if (!gst_ossformat_get (oss->law, oss->endianness, oss->sign,
+ oss->width, oss->depth, &format, &bps)) {
+ return FALSE;
}
- gst_structure_get_int (structure, "rate", &oss->rate);
- gst_structure_get_int (structure, "channels", &oss->channels);
-
+ gst_structure_get_int (structure, "rate", &oss->rate);
+ gst_structure_get_int (structure, "channels", &oss->channels);
+
oss->bps = bps * oss->channels * oss->rate;
oss->format = format;
-
+
return TRUE;
}
-gboolean
-gst_osselement_sync_parms (GstOssElement *oss)
+gboolean
+gst_osselement_sync_parms (GstOssElement * oss)
{
audio_buf_info space;
int frag;
@@ -613,33 +589,32 @@ gst_osselement_sync_parms (GstOssElement *oss)
if (oss->fd == -1)
return FALSE;
-
+
if (oss->fragment >> 16)
frag = oss->fragment;
else
frag = 0x7FFF0000 | oss->fragment;
-
- GST_INFO ("osselement: setting sound card to %dHz %d format %s (%08x fragment)",
- oss->rate, oss->format,
- (oss->channels == 2) ? "stereo" : "mono", frag);
+
+ GST_INFO
+ ("osselement: setting sound card to %dHz %d format %s (%08x fragment)",
+ oss->rate, oss->format, (oss->channels == 2) ? "stereo" : "mono", frag);
ioctl (oss->fd, SNDCTL_DSP_SETFRAGMENT, &frag);
ioctl (oss->fd, SNDCTL_DSP_RESET, 0);
- target_format = oss->format;
+ target_format = oss->format;
target_channels = oss->channels;
- target_rate = oss->rate;
+ target_rate = oss->rate;
- ioctl (oss->fd, SNDCTL_DSP_SETFMT, &oss->format);
+ ioctl (oss->fd, SNDCTL_DSP_SETFMT, &oss->format);
ioctl (oss->fd, SNDCTL_DSP_CHANNELS, &oss->channels);
- ioctl (oss->fd, SNDCTL_DSP_SPEED, &oss->rate);
+ ioctl (oss->fd, SNDCTL_DSP_SPEED, &oss->rate);
ioctl (oss->fd, SNDCTL_DSP_GETBLKSIZE, &oss->fragment_size);
if (oss->mode == GST_OSSELEMENT_WRITE) {
ioctl (oss->fd, SNDCTL_DSP_GETOSPACE, &space);
- }
- else {
+ } else {
ioctl (oss->fd, SNDCTL_DSP_GETISPACE, &space);
}
@@ -651,25 +626,26 @@ gst_osselement_sync_parms (GstOssElement *oss)
frag_ln++;
}
oss->fragment = space.fragstotal << 16 | frag_ln;
-
+
GST_INFO ("osselement: set sound card to %dHz, %d format, %s "
- "(%d bytes buffer, %08x fragment)",
- oss->rate, oss->format,
- (oss->channels == 2) ? "stereo" : "mono",
- space.bytes, oss->fragment);
+ "(%d bytes buffer, %08x fragment)",
+ oss->rate, oss->format,
+ (oss->channels == 2) ? "stereo" : "mono", space.bytes, oss->fragment);
oss->fragment_time = (GST_SECOND * oss->fragment_size) / oss->bps;
- GST_INFO ("fragment time %u %" G_GUINT64_FORMAT "\n",
- oss->bps, oss->fragment_time);
+ GST_INFO ("fragment time %u %" G_GUINT64_FORMAT "\n",
+ oss->bps, oss->fragment_time);
- if (target_format != oss->format ||
- target_channels != oss->channels ||
- target_rate != oss->rate)
- {
+ if (target_format != oss->format ||
+ target_channels != oss->channels || target_rate != oss->rate) {
if (target_channels != oss->channels)
- g_warning ("couldn't set the right number of channels (wanted %d, got %d), enjoy the tone difference", target_channels, oss->channels);
+ g_warning
+ ("couldn't set the right number of channels (wanted %d, got %d), enjoy the tone difference",
+ target_channels, oss->channels);
if (target_rate != oss->rate)
- g_warning ("couldn't set the right sample rate (wanted %d, got %d), enjoy the speed difference", target_rate, oss->rate);
+ g_warning
+ ("couldn't set the right sample rate (wanted %d, got %d), enjoy the speed difference",
+ target_rate, oss->rate);
if (target_format != oss->format)
g_warning ("couldn't set requested OSS format, enjoy the noise :)");
/* we could eventually return FALSE here, or just do some additional tests
@@ -679,7 +655,7 @@ gst_osselement_sync_parms (GstOssElement *oss)
}
static gboolean
-gst_osselement_open_audio (GstOssElement *oss)
+gst_osselement_open_audio (GstOssElement * oss)
{
gint caps;
GstOssOpenMode mode = GST_OSSELEMENT_READ;
@@ -693,6 +669,7 @@ gst_osselement_open_audio (GstOssElement *oss)
padlist = gst_element_get_pad_list (GST_ELEMENT (oss));
if (padlist != NULL) {
GstPad *firstpad = padlist->data;
+
if (GST_PAD_IS_SINK (firstpad)) {
mode = GST_OSSELEMENT_WRITE;
}
@@ -708,12 +685,11 @@ gst_osselement_open_audio (GstOssElement *oss)
if (oss->fd >= 0) {
close (oss->fd);
-
+
/* re-open the sound device in blocking mode */
oss->fd = open (oss->device, O_WRONLY);
}
- }
- else {
+ } else {
oss->fd = open (oss->device, O_RDONLY);
}
@@ -721,37 +697,37 @@ gst_osselement_open_audio (GstOssElement *oss)
switch (errno) {
case EBUSY:
GST_ELEMENT_ERROR (oss, RESOURCE, BUSY,
- (_("OSS device \"%s\" is already in use by another program."), oss->device),
- (NULL));
+ (_("OSS device \"%s\" is already in use by another program."),
+ oss->device), (NULL));
break;
case EACCES:
case ETXTBSY:
- if (mode == GST_OSSELEMENT_WRITE)
+ if (mode == GST_OSSELEMENT_WRITE)
GST_ELEMENT_ERROR (oss, RESOURCE, OPEN_WRITE,
- (_("Could not access device \"%s\", check its permissions."), oss->device),
- GST_ERROR_SYSTEM);
- else
+ (_("Could not access device \"%s\", check its permissions."),
+ oss->device), GST_ERROR_SYSTEM);
+ else
GST_ELEMENT_ERROR (oss, RESOURCE, OPEN_READ,
- (_("Could not access device \"%s\", check its permissions."), oss->device),
- GST_ERROR_SYSTEM);
+ (_("Could not access device \"%s\", check its permissions."),
+ oss->device), GST_ERROR_SYSTEM);
break;
case ENXIO:
case ENODEV:
case ENOENT:
GST_ELEMENT_ERROR (oss, RESOURCE, NOT_FOUND,
- (_("Device \"%s\" does not exist."), oss->device),
- GST_ERROR_SYSTEM);
+ (_("Device \"%s\" does not exist."), oss->device),
+ GST_ERROR_SYSTEM);
break;
default:
/* FIXME: strerror is not threadsafe */
- if (mode == GST_OSSELEMENT_WRITE)
+ if (mode == GST_OSSELEMENT_WRITE)
GST_ELEMENT_ERROR (oss, RESOURCE, OPEN_WRITE,
- (_("Could not open device \"%s\" for writing."), oss->device),
- GST_ERROR_SYSTEM);
- else
+ (_("Could not open device \"%s\" for writing."), oss->device),
+ GST_ERROR_SYSTEM);
+ else
GST_ELEMENT_ERROR (oss, RESOURCE, OPEN_READ,
- (_("Could not open device \"%s\" for reading."), oss->device),
- GST_ERROR_SYSTEM);
+ (_("Could not open device \"%s\" for reading."), oss->device),
+ GST_ERROR_SYSTEM);
break;
}
return FALSE;
@@ -765,40 +741,58 @@ gst_osselement_open_audio (GstOssElement *oss)
GST_INFO ("osselement: Capabilities %08x", caps);
- if (caps & DSP_CAP_DUPLEX) GST_INFO ( "osselement: Full duplex");
- if (caps & DSP_CAP_REALTIME) GST_INFO ( "osselement: Realtime");
- if (caps & DSP_CAP_BATCH) GST_INFO ( "osselement: Batch");
- if (caps & DSP_CAP_COPROC) GST_INFO ( "osselement: Has coprocessor");
- if (caps & DSP_CAP_TRIGGER) GST_INFO ( "osselement: Trigger");
- if (caps & DSP_CAP_MMAP) GST_INFO ( "osselement: Direct access");
+ if (caps & DSP_CAP_DUPLEX)
+ GST_INFO ("osselement: Full duplex");
+ if (caps & DSP_CAP_REALTIME)
+ GST_INFO ("osselement: Realtime");
+ if (caps & DSP_CAP_BATCH)
+ GST_INFO ("osselement: Batch");
+ if (caps & DSP_CAP_COPROC)
+ GST_INFO ("osselement: Has coprocessor");
+ if (caps & DSP_CAP_TRIGGER)
+ GST_INFO ("osselement: Trigger");
+ if (caps & DSP_CAP_MMAP)
+ GST_INFO ("osselement: Direct access");
#ifdef DSP_CAP_MULTI
- if (caps & DSP_CAP_MULTI) GST_INFO ( "osselement: Multiple open");
+ if (caps & DSP_CAP_MULTI)
+ GST_INFO ("osselement: Multiple open");
#endif /* DSP_CAP_MULTI */
#ifdef DSP_CAP_BIND
- if (caps & DSP_CAP_BIND) GST_INFO ( "osselement: Channel binding");
+ if (caps & DSP_CAP_BIND)
+ GST_INFO ("osselement: Channel binding");
#endif /* DSP_CAP_BIND */
- ioctl(oss->fd, SNDCTL_DSP_GETFMTS, &caps);
-
- GST_INFO ( "osselement: Formats %08x", caps);
- if (caps & AFMT_MU_LAW) GST_INFO ( "osselement: MU_LAW");
- if (caps & AFMT_A_LAW) GST_INFO ( "osselement: A_LAW");
- if (caps & AFMT_IMA_ADPCM) GST_INFO ( "osselement: IMA_ADPCM");
- if (caps & AFMT_U8) GST_INFO ( "osselement: U8");
- if (caps & AFMT_S16_LE) GST_INFO ( "osselement: S16_LE");
- if (caps & AFMT_S16_BE) GST_INFO ( "osselement: S16_BE");
- if (caps & AFMT_S8) GST_INFO ( "osselement: S8");
- if (caps & AFMT_U16_LE) GST_INFO ( "osselement: U16_LE");
- if (caps & AFMT_U16_BE) GST_INFO ( "osselement: U16_BE");
- if (caps & AFMT_MPEG) GST_INFO ( "osselement: MPEG");
+ ioctl (oss->fd, SNDCTL_DSP_GETFMTS, &caps);
+
+ GST_INFO ("osselement: Formats %08x", caps);
+ if (caps & AFMT_MU_LAW)
+ GST_INFO ("osselement: MU_LAW");
+ if (caps & AFMT_A_LAW)
+ GST_INFO ("osselement: A_LAW");
+ if (caps & AFMT_IMA_ADPCM)
+ GST_INFO ("osselement: IMA_ADPCM");
+ if (caps & AFMT_U8)
+ GST_INFO ("osselement: U8");
+ if (caps & AFMT_S16_LE)
+ GST_INFO ("osselement: S16_LE");
+ if (caps & AFMT_S16_BE)
+ GST_INFO ("osselement: S16_BE");
+ if (caps & AFMT_S8)
+ GST_INFO ("osselement: S8");
+ if (caps & AFMT_U16_LE)
+ GST_INFO ("osselement: U16_LE");
+ if (caps & AFMT_U16_BE)
+ GST_INFO ("osselement: U16_BE");
+ if (caps & AFMT_MPEG)
+ GST_INFO ("osselement: MPEG");
#ifdef AFMT_AC3
- if (caps & AFMT_AC3) GST_INFO ( "osselement: AC3");
+ if (caps & AFMT_AC3)
+ GST_INFO ("osselement: AC3");
#endif
- GST_INFO ("osselement: opened audio (%s) with fd=%d",
- oss->device, oss->fd);
+ GST_INFO ("osselement: opened audio (%s) with fd=%d", oss->device, oss->fd);
oss->caps = caps;
@@ -809,23 +803,21 @@ do_mixer:
}
static void
-gst_osselement_close_audio (GstOssElement *oss)
+gst_osselement_close_audio (GstOssElement * oss)
{
gst_ossmixer_free_list (oss);
- if (oss->fd < 0)
+ if (oss->fd < 0)
return;
- close(oss->fd);
+ close (oss->fd);
oss->fd = -1;
}
gboolean
-gst_osselement_convert (GstOssElement *oss,
- GstFormat src_format,
- gint64 src_value,
- GstFormat *dest_format,
- gint64 *dest_value)
+gst_osselement_convert (GstOssElement * oss,
+ GstFormat src_format,
+ gint64 src_value, GstFormat * dest_format, gint64 * dest_value)
{
gboolean res = TRUE;
@@ -840,38 +832,38 @@ gst_osselement_convert (GstOssElement *oss,
switch (src_format) {
case GST_FORMAT_BYTES:
switch (*dest_format) {
- case GST_FORMAT_TIME:
+ case GST_FORMAT_TIME:
*dest_value = src_value * GST_SECOND / oss->bps;
- break;
- case GST_FORMAT_DEFAULT:
+ break;
+ case GST_FORMAT_DEFAULT:
*dest_value = src_value / (oss->width * oss->channels / 8);
- break;
- default:
- res = FALSE;
+ break;
+ default:
+ res = FALSE;
}
break;
case GST_FORMAT_TIME:
switch (*dest_format) {
- case GST_FORMAT_BYTES:
+ case GST_FORMAT_BYTES:
*dest_value = src_value * oss->bps / GST_SECOND;
- break;
- case GST_FORMAT_DEFAULT:
+ break;
+ case GST_FORMAT_DEFAULT:
*dest_value = src_value * oss->rate / GST_SECOND;
- break;
- default:
- res = FALSE;
+ break;
+ default:
+ res = FALSE;
}
break;
case GST_FORMAT_DEFAULT:
switch (*dest_format) {
- case GST_FORMAT_TIME:
+ case GST_FORMAT_TIME:
*dest_value = src_value * GST_SECOND / oss->rate;
- break;
- case GST_FORMAT_BYTES:
+ break;
+ case GST_FORMAT_BYTES:
*dest_value = src_value * oss->width * oss->channels / 8;
- break;
- default:
- res = FALSE;
+ break;
+ default:
+ res = FALSE;
}
break;
default:
@@ -881,11 +873,9 @@ gst_osselement_convert (GstOssElement *oss,
return res;
}
-static void
-gst_osselement_set_property (GObject *object,
- guint prop_id,
- const GValue *value,
- GParamSpec *pspec)
+static void
+gst_osselement_set_property (GObject * object,
+ guint prop_id, const GValue * value, GParamSpec * pspec)
{
GstOssElement *oss = GST_OSSELEMENT (object);
@@ -894,34 +884,34 @@ gst_osselement_set_property (GObject *object,
/* disallow changing the device while it is opened
get_property("device") should return the right one */
if (gst_element_get_state (GST_ELEMENT (oss)) == GST_STATE_NULL) {
- g_free (oss->device);
- oss->device = g_strdup (g_value_get_string (value));
+ g_free (oss->device);
+ oss->device = g_strdup (g_value_get_string (value));
- /* let's assume that if we have a device map for the mixer,
+ /* let's assume that if we have a device map for the mixer,
* we're allowed to do all that automagically here */
- if (GST_OSSELEMENT_GET_CLASS (oss)->device_combinations != NULL) {
- GList *list = GST_OSSELEMENT_GET_CLASS (oss)->device_combinations;
+ if (GST_OSSELEMENT_GET_CLASS (oss)->device_combinations != NULL) {
+ GList *list = GST_OSSELEMENT_GET_CLASS (oss)->device_combinations;
- while (list) {
- GstOssDeviceCombination *combi = list->data;
+ while (list) {
+ GstOssDeviceCombination *combi = list->data;
- if (!strcmp (combi->dsp, oss->device)) {
- g_free (oss->mixer_dev);
- oss->mixer_dev = g_strdup (combi->mixer);
- break;
- }
+ if (!strcmp (combi->dsp, oss->device)) {
+ g_free (oss->mixer_dev);
+ oss->mixer_dev = g_strdup (combi->mixer);
+ break;
+ }
- list = list->next;
- }
- }
+ list = list->next;
+ }
+ }
}
break;
case ARG_MIXERDEV:
/* disallow changing the device while it is opened
get_property("mixerdev") should return the right one */
if (gst_element_get_state (GST_ELEMENT (oss)) == GST_STATE_NULL) {
- g_free (oss->mixer_dev);
- oss->mixer_dev = g_strdup (g_value_get_string (value));
+ g_free (oss->mixer_dev);
+ oss->mixer_dev = g_strdup (g_value_get_string (value));
}
break;
default:
@@ -929,11 +919,9 @@ gst_osselement_set_property (GObject *object,
}
}
-static void
-gst_osselement_get_property (GObject *object,
- guint prop_id,
- GValue *value,
- GParamSpec *pspec)
+static void
+gst_osselement_get_property (GObject * object,
+ guint prop_id, GValue * value, GParamSpec * pspec)
{
GstOssElement *oss = GST_OSSELEMENT (object);
@@ -953,15 +941,15 @@ gst_osselement_get_property (GObject *object,
}
}
-static GstElementStateReturn
-gst_osselement_change_state (GstElement *element)
+static GstElementStateReturn
+gst_osselement_change_state (GstElement * element)
{
GstOssElement *oss = GST_OSSELEMENT (element);
switch (GST_STATE_TRANSITION (element)) {
case GST_STATE_NULL_TO_READY:
if (!gst_osselement_open_audio (oss)) {
- return GST_STATE_FAILURE;
+ return GST_STATE_FAILURE;
}
GST_INFO ("osselement: opened sound device");
break;
@@ -973,7 +961,7 @@ gst_osselement_change_state (GstElement *element)
default:
break;
}
-
+
if (GST_ELEMENT_CLASS (parent_class)->change_state)
return GST_ELEMENT_CLASS (parent_class)->change_state (element);
diff --git a/sys/oss/gstosselement.h b/sys/oss/gstosselement.h
index 3ce84a2c..1b73ec49 100644
--- a/sys/oss/gstosselement.h
+++ b/sys/oss/gstosselement.h
@@ -30,7 +30,6 @@ GST_DEBUG_CATEGORY_EXTERN (oss_debug);
#define GST_CAT_DEFAULT oss_debug
G_BEGIN_DECLS
-
#define GST_TYPE_OSSELEMENT \
(gst_osselement_get_type())
#define GST_OSSELEMENT(obj) \
@@ -43,16 +42,17 @@ G_BEGIN_DECLS
(G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_OSSELEMENT))
#define GST_OSSELEMENT_GET_CLASS(obj) \
(G_TYPE_INSTANCE_GET_CLASS ((obj), GST_TYPE_OSSELEMENT, GstOssElementClass))
-
typedef struct _GstOssElement GstOssElement;
typedef struct _GstOssElementClass GstOssElementClass;
-typedef enum {
+typedef enum
+{
GST_OSSELEMENT_READ,
GST_OSSELEMENT_WRITE,
} GstOssOpenMode;
-typedef struct _GstOssDeviceCombination {
+typedef struct _GstOssDeviceCombination
+{
gchar *dsp, *mixer;
dev_t dev;
} GstOssDeviceCombination;
@@ -60,65 +60,57 @@ typedef struct _GstOssDeviceCombination {
struct _GstOssElement
{
/* yes, we're a gstelement too */
- GstElement parent;
+ GstElement parent;
- gchar *device,
- *mixer_dev;
+ gchar *device, *mixer_dev;
/* device state */
- int fd;
- int caps; /* the capabilities */
- gint format;
- gint fragment;
- guint64 fragment_time;
- gint fragment_size;
+ int fd;
+ int caps; /* the capabilities */
+ gint format;
+ gint fragment;
+ guint64 fragment_time;
+ gint fragment_size;
GstOssOpenMode mode;
/* stats bytes per *second* */
- guint bps;
+ guint bps;
/* parameters */
- gint law;
- gint endianness;
- gboolean sign;
- gint width;
- gint depth;
- gint channels;
- gint rate;
+ gint law;
+ gint endianness;
+ gboolean sign;
+ gint width;
+ gint depth;
+ gint channels;
+ gint rate;
/* mixer stuff */
- GList *tracklist;
- guint32 stereomask,
- recdevs,
- recmask,
- mixcaps;
- gint mixer_fd;
- gchar *device_name;
+ GList *tracklist;
+ guint32 stereomask, recdevs, recmask, mixcaps;
+ gint mixer_fd;
+ gchar *device_name;
};
-struct _GstOssElementClass {
+struct _GstOssElementClass
+{
GstElementClass klass;
- GList *device_combinations;
+ GList *device_combinations;
};
-GType gst_osselement_get_type (void);
+GType gst_osselement_get_type (void);
/* some useful functions */
-gboolean gst_osselement_parse_caps (GstOssElement *oss,
- const GstCaps *caps);
-gboolean gst_osselement_merge_fixed_caps (GstOssElement *oss,
- GstCaps *caps);
-
-gboolean gst_osselement_sync_parms (GstOssElement *oss);
-void gst_osselement_reset (GstOssElement *oss);
-
-gboolean gst_osselement_convert (GstOssElement *oss,
- GstFormat src_format,
- gint64 src_value,
- GstFormat *dest_format,
- gint64 *dest_value);
+gboolean gst_osselement_parse_caps (GstOssElement * oss, const GstCaps * caps);
+gboolean gst_osselement_merge_fixed_caps (GstOssElement * oss, GstCaps * caps);
-G_END_DECLS
+gboolean gst_osselement_sync_parms (GstOssElement * oss);
+void gst_osselement_reset (GstOssElement * oss);
+gboolean gst_osselement_convert (GstOssElement * oss,
+ GstFormat src_format,
+ gint64 src_value, GstFormat * dest_format, gint64 * dest_value);
+
+G_END_DECLS
#endif /* __GST_OSS_ELEMENT_H__ */
diff --git a/sys/oss/gstossmixer.c b/sys/oss/gstossmixer.c
index 6bc89ccd..a9e7222c 100644
--- a/sys/oss/gstossmixer.c
+++ b/sys/oss/gstossmixer.c
@@ -37,27 +37,22 @@
#define MASK_BIT_IS_SET(mask, bit) \
(mask & (1 << bit))
-static void gst_ossmixer_track_class_init (GstOssMixerTrackClass *klass);
-static void gst_ossmixer_track_init (GstOssMixerTrack *track);
+static void gst_ossmixer_track_class_init (GstOssMixerTrackClass * klass);
+static void gst_ossmixer_track_init (GstOssMixerTrack * track);
-static gboolean gst_ossmixer_supported (GstImplementsInterface *iface,
- GType iface_type);
-static const GList *
- gst_ossmixer_list_tracks (GstMixer *ossmixer);
-
-static void gst_ossmixer_set_volume (GstMixer *ossmixer,
- GstMixerTrack *track,
- gint *volumes);
-static void gst_ossmixer_get_volume (GstMixer *ossmixer,
- GstMixerTrack *track,
- gint *volumes);
-
-static void gst_ossmixer_set_record (GstMixer *ossmixer,
- GstMixerTrack *track,
- gboolean record);
-static void gst_ossmixer_set_mute (GstMixer *ossmixer,
- GstMixerTrack *track,
- gboolean mute);
+static gboolean gst_ossmixer_supported (GstImplementsInterface * iface,
+ GType iface_type);
+static const GList *gst_ossmixer_list_tracks (GstMixer * ossmixer);
+
+static void gst_ossmixer_set_volume (GstMixer * ossmixer,
+ GstMixerTrack * track, gint * volumes);
+static void gst_ossmixer_get_volume (GstMixer * ossmixer,
+ GstMixerTrack * track, gint * volumes);
+
+static void gst_ossmixer_set_record (GstMixer * ossmixer,
+ GstMixerTrack * track, gboolean record);
+static void gst_ossmixer_set_mute (GstMixer * ossmixer,
+ GstMixerTrack * track, gboolean mute);
static const gchar **labels = NULL;
static GstMixerTrackClass *parent_class = NULL;
@@ -76,39 +71,41 @@ fill_labels (void)
{
gint i, pos;
gchar *origs[SOUND_MIXER_NRDEVICES] = SOUND_DEVICE_LABELS;
- struct {
+ struct
+ {
gchar *given, *wanted;
} cases[] = {
/* Note: this list is simply ripped from soundcard.h. For
* some people, some values might be missing (3D surround,
* etc.) - feel free to add them. That's the reason why
* I'm doing this in such a horribly complicated way. */
- { "Vol ", _("Volume") },
- { "Bass ", _("Bass") },
- { "Trebl", _("Treble") },
- { "Synth", _("Synth") },
- { "Pcm ", _("PCM") },
- { "Spkr ", _("Speaker") },
- { "Line ", _("Line-in") },
- { "Mic ", _("Microphone") },
- { "CD ", _("CD") },
- { "Mix ", _("Mixer") },
- { "Pcm2 ", _("PCM-2") },
- { "Rec ", _("Record") },
- { "IGain", _("In-gain") },
- { "OGain", _("Out-gain") },
- { "Line1", _("Line-1") },
- { "Line2", _("Line-2") },
- { "Line3", _("Line-3") },
- { "Digital1", _("Digital-1") },
- { "Digital2", _("Digital-2") },
- { "Digital3", _("Digital-3") },
- { "PhoneIn", _("Phone-in") },
- { "PhoneOut", _("Phone-out") },
- { "Video", _("Video") },
- { "Radio", _("Radio") },
- { "Monitor", _("Monitor") },
- { NULL, NULL }
+ {
+ "Vol ", _("Volume")}, {
+ "Bass ", _("Bass")}, {
+ "Trebl", _("Treble")}, {
+ "Synth", _("Synth")}, {
+ "Pcm ", _("PCM")}, {
+ "Spkr ", _("Speaker")}, {
+ "Line ", _("Line-in")}, {
+ "Mic ", _("Microphone")}, {
+ "CD ", _("CD")}, {
+ "Mix ", _("Mixer")}, {
+ "Pcm2 ", _("PCM-2")}, {
+ "Rec ", _("Record")}, {
+ "IGain", _("In-gain")}, {
+ "OGain", _("Out-gain")}, {
+ "Line1", _("Line-1")}, {
+ "Line2", _("Line-2")}, {
+ "Line3", _("Line-3")}, {
+ "Digital1", _("Digital-1")}, {
+ "Digital2", _("Digital-2")}, {
+ "Digital3", _("Digital-3")}, {
+ "PhoneIn", _("Phone-in")}, {
+ "PhoneOut", _("Phone-out")}, {
+ "Video", _("Video")}, {
+ "Radio", _("Radio")}, {
+ "Monitor", _("Monitor")}, {
+ NULL, NULL}
};
labels = g_malloc (sizeof (gchar *) * SOUND_MIXER_NRDEVICES);
@@ -116,8 +113,8 @@ fill_labels (void)
for (i = 0; i < SOUND_MIXER_NRDEVICES; i++) {
for (pos = 0; cases[pos].given != NULL; pos++) {
if (!strcmp (cases[pos].given, origs[i])) {
- labels[i] = g_strdup (cases[pos].wanted);
- break;
+ labels[i] = g_strdup (cases[pos].wanted);
+ break;
}
}
if (cases[pos].given == NULL)
@@ -146,31 +143,28 @@ gst_ossmixer_track_get_type (void)
gst_ossmixer_track_type =
g_type_register_static (GST_TYPE_MIXER_TRACK,
- "GstOssMixerTrack",
- &ossmixer_track_info, 0);
+ "GstOssMixerTrack", &ossmixer_track_info, 0);
}
return gst_ossmixer_track_type;
}
static void
-gst_ossmixer_track_class_init (GstOssMixerTrackClass *klass)
+gst_ossmixer_track_class_init (GstOssMixerTrackClass * klass)
{
parent_class = g_type_class_ref (GST_TYPE_MIXER_TRACK);
}
static void
-gst_ossmixer_track_init (GstOssMixerTrack *track)
+gst_ossmixer_track_init (GstOssMixerTrack * track)
{
track->lvol = track->rvol = 0;
track->track_num = 0;
}
GstMixerTrack *
-gst_ossmixer_track_new (GstOssElement *oss,
- gint track_num,
- gint max_chans,
- gint flags)
+gst_ossmixer_track_new (GstOssElement * oss,
+ gint track_num, gint max_chans, gint flags)
{
GstOssMixerTrack *osstrack;
GstMixerTrack *track;
@@ -189,9 +183,9 @@ gst_ossmixer_track_new (GstOssElement *oss,
osstrack->track_num = track_num;
/* volume */
- if (ioctl(oss->mixer_fd, MIXER_READ (osstrack->track_num), &volume) < 0) {
- g_warning("Error getting device (%d) volume: %s",
- osstrack->track_num, strerror(errno));
+ if (ioctl (oss->mixer_fd, MIXER_READ (osstrack->track_num), &volume) < 0) {
+ g_warning ("Error getting device (%d) volume: %s",
+ osstrack->track_num, strerror (errno));
volume = 0;
}
osstrack->lvol = (volume & 0xff);
@@ -203,17 +197,17 @@ gst_ossmixer_track_new (GstOssElement *oss,
}
void
-gst_oss_interface_init (GstImplementsInterfaceClass *klass)
+gst_oss_interface_init (GstImplementsInterfaceClass * klass)
{
/* default virtual functions */
klass->supported = gst_ossmixer_supported;
}
void
-gst_ossmixer_interface_init (GstMixerClass *klass)
+gst_ossmixer_interface_init (GstMixerClass * klass)
{
GST_MIXER_TYPE (klass) = GST_MIXER_HARDWARE;
-
+
/* default virtual functions */
klass->list_tracks = gst_ossmixer_list_tracks;
klass->set_volume = gst_ossmixer_set_volume;
@@ -223,8 +217,7 @@ gst_ossmixer_interface_init (GstMixerClass *klass)
}
static gboolean
-gst_ossmixer_supported (GstImplementsInterface *iface,
- GType iface_type)
+gst_ossmixer_supported (GstImplementsInterface * iface, GType iface_type)
{
g_assert (iface_type == GST_TYPE_MIXER);
@@ -232,8 +225,7 @@ gst_ossmixer_supported (GstImplementsInterface *iface,
}
static gboolean
-gst_ossmixer_contains_track (GstOssElement *oss,
- GstOssMixerTrack *osstrack)
+gst_ossmixer_contains_track (GstOssElement * oss, GstOssMixerTrack * osstrack)
{
const GList *item;
@@ -245,15 +237,14 @@ gst_ossmixer_contains_track (GstOssElement *oss,
}
static const GList *
-gst_ossmixer_list_tracks (GstMixer *mixer)
+gst_ossmixer_list_tracks (GstMixer * mixer)
{
return (const GList *) GST_OSSELEMENT (mixer)->tracklist;
}
static void
-gst_ossmixer_get_volume (GstMixer *mixer,
- GstMixerTrack *track,
- gint *volumes)
+gst_ossmixer_get_volume (GstMixer * mixer,
+ GstMixerTrack * track, gint * volumes)
{
gint volume;
GstOssElement *oss = GST_OSSELEMENT (mixer);
@@ -270,9 +261,9 @@ gst_ossmixer_get_volume (GstMixer *mixer,
}
} else {
/* get */
- if (ioctl(oss->mixer_fd, MIXER_READ (osstrack->track_num), &volume) < 0) {
- g_warning("Error getting recording device (%d) volume: %s",
- osstrack->track_num, strerror(errno));
+ if (ioctl (oss->mixer_fd, MIXER_READ (osstrack->track_num), &volume) < 0) {
+ g_warning ("Error getting recording device (%d) volume: %s",
+ osstrack->track_num, strerror (errno));
volume = 0;
}
@@ -284,9 +275,8 @@ gst_ossmixer_get_volume (GstMixer *mixer,
}
static void
-gst_ossmixer_set_volume (GstMixer *mixer,
- GstMixerTrack *track,
- gint *volumes)
+gst_ossmixer_set_volume (GstMixer * mixer,
+ GstMixerTrack * track, gint * volumes)
{
gint volume;
GstOssElement *oss = GST_OSSELEMENT (mixer);
@@ -304,9 +294,9 @@ gst_ossmixer_set_volume (GstMixer *mixer,
}
/* set */
- if (ioctl(oss->mixer_fd, MIXER_WRITE (osstrack->track_num), &volume) < 0) {
- g_warning("Error setting recording device (%d) volume (0x%x): %s",
- osstrack->track_num, volume, strerror(errno));
+ if (ioctl (oss->mixer_fd, MIXER_WRITE (osstrack->track_num), &volume) < 0) {
+ g_warning ("Error setting recording device (%d) volume (0x%x): %s",
+ osstrack->track_num, volume, strerror (errno));
return;
}
}
@@ -318,9 +308,7 @@ gst_ossmixer_set_volume (GstMixer *mixer,
}
static void
-gst_ossmixer_set_mute (GstMixer *mixer,
- GstMixerTrack *track,
- gboolean mute)
+gst_ossmixer_set_mute (GstMixer * mixer, GstMixerTrack * track, gboolean mute)
{
int volume;
GstOssElement *oss = GST_OSSELEMENT (mixer);
@@ -339,9 +327,9 @@ gst_ossmixer_set_mute (GstMixer *mixer,
}
}
- if (ioctl(oss->mixer_fd, MIXER_WRITE(osstrack->track_num), &volume) < 0) {
- g_warning("Error setting mixer recording device volume (0x%x): %s",
- volume, strerror(errno));
+ if (ioctl (oss->mixer_fd, MIXER_WRITE (osstrack->track_num), &volume) < 0) {
+ g_warning ("Error setting mixer recording device volume (0x%x): %s",
+ volume, strerror (errno));
return;
}
@@ -353,9 +341,8 @@ gst_ossmixer_set_mute (GstMixer *mixer,
}
static void
-gst_ossmixer_set_record (GstMixer *mixer,
- GstMixerTrack *track,
- gboolean record)
+gst_ossmixer_set_record (GstMixer * mixer,
+ GstMixerTrack * track, gboolean record)
{
GstOssElement *oss = GST_OSSELEMENT (mixer);
GstOssMixerTrack *osstrack = GST_OSSMIXER_TRACK (track);
@@ -372,8 +359,10 @@ gst_ossmixer_set_record (GstMixer *mixer,
/* if we're exclusive, then we need to unset the current one(s) */
if (oss->mixcaps & SOUND_CAP_EXCL_INPUT) {
GList *track;
+
for (track = oss->tracklist; track != NULL; track = track->next) {
GstMixerTrack *turn = (GstMixerTrack *) track->data;
+
turn->flags &= ~GST_MIXER_TRACK_RECORD;
}
oss->recdevs = 0;
@@ -387,9 +376,9 @@ gst_ossmixer_set_record (GstMixer *mixer,
}
/* set it to the device */
- if (ioctl(oss->mixer_fd, SOUND_MIXER_WRITE_RECSRC, &oss->recdevs) < 0) {
- g_warning("Error setting mixer recording devices (0x%x): %s",
- oss->recdevs, strerror(errno));
+ if (ioctl (oss->mixer_fd, SOUND_MIXER_WRITE_RECSRC, &oss->recdevs) < 0) {
+ g_warning ("Error setting mixer recording devices (0x%x): %s",
+ oss->recdevs, strerror (errno));
return;
}
@@ -401,11 +390,12 @@ gst_ossmixer_set_record (GstMixer *mixer,
}
void
-gst_ossmixer_build_list (GstOssElement *oss)
+gst_ossmixer_build_list (GstOssElement * oss)
{
gint i, devmask, master = -1;
const GList *pads = gst_element_get_pad_list (GST_ELEMENT (oss));
GstPadDirection dir = GST_PAD_UNKNOWN;
+
#ifdef SOUND_MIXER_INFO
struct mixer_info minfo;
#endif
@@ -416,7 +406,7 @@ gst_ossmixer_build_list (GstOssElement *oss)
if (oss->mixer_fd == -1) {
/* this is valid. OSS devices don't need to expose a mixer */
GST_DEBUG ("Failed to open mixer device %s, mixing disabled: %s",
- oss->mixer_dev, strerror (errno));
+ oss->mixer_dev, strerror (errno));
return;
}
@@ -427,9 +417,9 @@ gst_ossmixer_build_list (GstOssElement *oss)
/* get masks */
if (ioctl (oss->mixer_fd, SOUND_MIXER_READ_RECMASK, &oss->recmask) < 0 ||
ioctl (oss->mixer_fd, SOUND_MIXER_READ_RECSRC, &oss->recdevs) < 0 ||
- ioctl (oss->mixer_fd, SOUND_MIXER_READ_STEREODEVS, &oss->stereomask) < 0 ||
- ioctl (oss->mixer_fd, SOUND_MIXER_READ_DEVMASK, &devmask) < 0 ||
- ioctl (oss->mixer_fd, SOUND_MIXER_READ_CAPS, &oss->mixcaps) < 0) {
+ ioctl (oss->mixer_fd, SOUND_MIXER_READ_STEREODEVS, &oss->stereomask) < 0
+ || ioctl (oss->mixer_fd, SOUND_MIXER_READ_DEVMASK, &devmask) < 0
+ || ioctl (oss->mixer_fd, SOUND_MIXER_READ_CAPS, &oss->mixcaps) < 0) {
GST_DEBUG ("Failed to get device masks - disabling mixer");
close (oss->mixer_fd);
oss->mixer_fd = -1;
@@ -451,7 +441,7 @@ gst_ossmixer_build_list (GstOssElement *oss)
else if (devmask & SOUND_MASK_PCM)
master = SOUND_MIXER_PCM;
else if (devmask & SOUND_MASK_SPEAKER)
- master = SOUND_MIXER_SPEAKER; /* doubtful... */
+ master = SOUND_MIXER_SPEAKER; /* doubtful... */
/* else: no master, so we won't set any */
/* build track list */
@@ -462,31 +452,30 @@ gst_ossmixer_build_list (GstOssElement *oss)
/* track exists, make up capabilities */
if (MASK_BIT_IS_SET (oss->stereomask, i))
- stereo = TRUE;
+ stereo = TRUE;
if (MASK_BIT_IS_SET (oss->recmask, i))
- input = TRUE;
+ input = TRUE;
if (MASK_BIT_IS_SET (oss->recdevs, i))
- record = TRUE;
+ record = TRUE;
/* do we want this in our list? */
if ((dir == GST_PAD_SRC && input == FALSE) ||
- (dir == GST_PAD_SINK && i != SOUND_MIXER_PCM))
- continue;
+ (dir == GST_PAD_SINK && i != SOUND_MIXER_PCM))
+ continue;
/* add track to list */
track = gst_ossmixer_track_new (oss, i, stereo ? 2 : 1,
- (record ? GST_MIXER_TRACK_RECORD : 0) |
- (input ? GST_MIXER_TRACK_INPUT :
- GST_MIXER_TRACK_OUTPUT) |
- ((master != i) ? 0 :
- GST_MIXER_TRACK_MASTER));
+ (record ? GST_MIXER_TRACK_RECORD : 0) |
+ (input ? GST_MIXER_TRACK_INPUT :
+ GST_MIXER_TRACK_OUTPUT) |
+ ((master != i) ? 0 : GST_MIXER_TRACK_MASTER));
oss->tracklist = g_list_append (oss->tracklist, track);
}
}
}
void
-gst_ossmixer_free_list (GstOssElement *oss)
+gst_ossmixer_free_list (GstOssElement * oss)
{
if (oss->mixer_fd == -1)
return;
diff --git a/sys/oss/gstossmixer.h b/sys/oss/gstossmixer.h
index dd2fb4fc..100d6afd 100644
--- a/sys/oss/gstossmixer.h
+++ b/sys/oss/gstossmixer.h
@@ -27,7 +27,6 @@
#include "gstosselement.h"
G_BEGIN_DECLS
-
#define GST_TYPE_OSSMIXER_TRACK \
(gst_ossmixer_track_get_type ())
#define GST_OSSMIXER_TRACK(obj) \
@@ -40,25 +39,25 @@ G_BEGIN_DECLS
(G_TYPE_CHECK_INSTANCE_TYPE ((obj), GST_TYPE_OSSMIXER_TRACK))
#define GST_IS_OSSMIXER_TRACK_CLASS(klass) \
(G_TYPE_CHECK_CLASS_TYPE ((klass), GST_TYPE_OSSMIXER_TRACK))
-
-typedef struct _GstOssMixerTrack {
+ typedef struct _GstOssMixerTrack
+{
GstMixerTrack parent;
- gint lvol, rvol;
- gint track_num;
+ gint lvol, rvol;
+ gint track_num;
} GstOssMixerTrack;
-typedef struct _GstOssMixerTrackClass {
+typedef struct _GstOssMixerTrackClass
+{
GstMixerTrackClass parent;
} GstOssMixerTrackClass;
-GType gst_ossmixer_track_get_type (void);
+GType gst_ossmixer_track_get_type (void);
-void gst_ossmixer_interface_init (GstMixerClass *klass);
-void gst_oss_interface_init (GstImplementsInterfaceClass *klass);
-void gst_ossmixer_build_list (GstOssElement *oss);
-void gst_ossmixer_free_list (GstOssElement *oss);
+void gst_ossmixer_interface_init (GstMixerClass * klass);
+void gst_oss_interface_init (GstImplementsInterfaceClass * klass);
+void gst_ossmixer_build_list (GstOssElement * oss);
+void gst_ossmixer_free_list (GstOssElement * oss);
G_END_DECLS
-
#endif /* __GST_OSS_MIXER_H__ */
diff --git a/sys/oss/gstosssink.c b/sys/oss/gstosssink.c
index ab56274a..053eba46 100644
--- a/sys/oss/gstosssink.c
+++ b/sys/oss/gstosssink.c
@@ -32,50 +32,52 @@
#include "gstosssink.h"
/* elementfactory information */
-static GstElementDetails gst_osssink_details = GST_ELEMENT_DETAILS (
- "Audio Sink (OSS)",
- "Sink/Audio",
- "Output to a sound card via OSS",
- "Erik Walthinsen <omega@cse.ogi.edu>, "
- "Wim Taymans <wim.taymans@chello.be>"
-);
-
-static void gst_osssink_base_init (gpointer g_class);
-static void gst_osssink_class_init (GstOssSinkClass *klass);
-static void gst_osssink_init (GstOssSink *osssink);
-static void gst_osssink_dispose (GObject *object);
-
-static GstElementStateReturn gst_osssink_change_state (GstElement *element);
-static void gst_osssink_set_clock (GstElement *element, GstClock *clock);
-static GstClock* gst_osssink_get_clock (GstElement *element);
-static GstClockTime gst_osssink_get_time (GstClock *clock, gpointer data);
-
-static const GstFormat* gst_osssink_get_formats (GstPad *pad);
-static gboolean gst_osssink_convert (GstPad *pad, GstFormat src_format, gint64 src_value,
- GstFormat *dest_format, gint64 *dest_value);
-static const GstQueryType* gst_osssink_get_query_types (GstPad *pad);
-static gboolean gst_osssink_query (GstElement *element, GstQueryType type,
- GstFormat *format, gint64 *value);
-static gboolean gst_osssink_sink_query (GstPad *pad, GstQueryType type,
- GstFormat *format, gint64 *value);
-
-static GstCaps * gst_osssink_sink_fixate (GstPad *pad, const GstCaps *caps);
-static GstPadLinkReturn gst_osssink_sinkconnect (GstPad *pad, const GstCaps *caps);
-
-static void gst_osssink_set_property (GObject *object, guint prop_id, const GValue *value,
- GParamSpec *pspec);
-static void gst_osssink_get_property (GObject *object, guint prop_id, GValue *value,
- GParamSpec *pspec);
-
-static void gst_osssink_chain (GstPad *pad,GstData *_data);
+static GstElementDetails gst_osssink_details =
+GST_ELEMENT_DETAILS ("Audio Sink (OSS)",
+ "Sink/Audio",
+ "Output to a sound card via OSS",
+ "Erik Walthinsen <omega@cse.ogi.edu>, "
+ "Wim Taymans <wim.taymans@chello.be>");
+
+static void gst_osssink_base_init (gpointer g_class);
+static void gst_osssink_class_init (GstOssSinkClass * klass);
+static void gst_osssink_init (GstOssSink * osssink);
+static void gst_osssink_dispose (GObject * object);
+
+static GstElementStateReturn gst_osssink_change_state (GstElement * element);
+static void gst_osssink_set_clock (GstElement * element, GstClock * clock);
+static GstClock *gst_osssink_get_clock (GstElement * element);
+static GstClockTime gst_osssink_get_time (GstClock * clock, gpointer data);
+
+static const GstFormat *gst_osssink_get_formats (GstPad * pad);
+static gboolean gst_osssink_convert (GstPad * pad, GstFormat src_format,
+ gint64 src_value, GstFormat * dest_format, gint64 * dest_value);
+static const GstQueryType *gst_osssink_get_query_types (GstPad * pad);
+static gboolean gst_osssink_query (GstElement * element, GstQueryType type,
+ GstFormat * format, gint64 * value);
+static gboolean gst_osssink_sink_query (GstPad * pad, GstQueryType type,
+ GstFormat * format, gint64 * value);
+
+static GstCaps *gst_osssink_sink_fixate (GstPad * pad, const GstCaps * caps);
+static GstPadLinkReturn gst_osssink_sinkconnect (GstPad * pad,
+ const GstCaps * caps);
+
+static void gst_osssink_set_property (GObject * object, guint prop_id,
+ const GValue * value, GParamSpec * pspec);
+static void gst_osssink_get_property (GObject * object, guint prop_id,
+ GValue * value, GParamSpec * pspec);
+
+static void gst_osssink_chain (GstPad * pad, GstData * _data);
/* OssSink signals and args */
-enum {
+enum
+{
SIGNAL_HANDOFF,
LAST_SIGNAL
};
-enum {
+enum
+{
ARG_0,
ARG_MUTE,
ARG_FRAGMENT,
@@ -86,19 +88,16 @@ enum {
};
static GstStaticPadTemplate osssink_sink_factory =
-GST_STATIC_PAD_TEMPLATE (
- "sink",
- GST_PAD_SINK,
- GST_PAD_ALWAYS,
- GST_STATIC_CAPS ("audio/x-raw-int, "
- "endianness = (int) BYTE_ORDER, "
- "signed = (boolean) { TRUE, FALSE }, "
- "width = (int) { 8, 16 }, "
- "depth = (int) { 8, 16 }, "
- "rate = (int) [ 1000, 48000 ], "
- "channels = (int) [ 1, 2 ]"
- )
-);
+GST_STATIC_PAD_TEMPLATE ("sink",
+ GST_PAD_SINK,
+ GST_PAD_ALWAYS,
+ GST_STATIC_CAPS ("audio/x-raw-int, "
+ "endianness = (int) BYTE_ORDER, "
+ "signed = (boolean) { TRUE, FALSE }, "
+ "width = (int) { 8, 16 }, "
+ "depth = (int) { 8, 16 }, "
+ "rate = (int) [ 1000, 48000 ], " "channels = (int) [ 1, 2 ]")
+ );
static GstElementClass *parent_class = NULL;
static guint gst_osssink_signals[LAST_SIGNAL] = { 0 };
@@ -110,24 +109,26 @@ gst_osssink_get_type (void)
if (!osssink_type) {
static const GTypeInfo osssink_info = {
- sizeof(GstOssSinkClass),
+ sizeof (GstOssSinkClass),
gst_osssink_base_init,
NULL,
- (GClassInitFunc)gst_osssink_class_init,
+ (GClassInitFunc) gst_osssink_class_init,
NULL,
NULL,
- sizeof(GstOssSink),
+ sizeof (GstOssSink),
0,
- (GInstanceInitFunc)gst_osssink_init,
+ (GInstanceInitFunc) gst_osssink_init,
};
- osssink_type = g_type_register_static (GST_TYPE_OSSELEMENT, "GstOssSink", &osssink_info, 0);
+ osssink_type =
+ g_type_register_static (GST_TYPE_OSSELEMENT, "GstOssSink",
+ &osssink_info, 0);
}
return osssink_type;
}
static void
-gst_osssink_dispose (GObject *object)
+gst_osssink_dispose (GObject * object)
{
GstOssSink *osssink = (GstOssSink *) object;
@@ -140,65 +141,71 @@ static void
gst_osssink_base_init (gpointer g_class)
{
GstElementClass *element_class = GST_ELEMENT_CLASS (g_class);
-
+
gst_element_class_set_details (element_class, &gst_osssink_details);
- gst_element_class_add_pad_template (element_class, gst_static_pad_template_get (&osssink_sink_factory));
+ gst_element_class_add_pad_template (element_class,
+ gst_static_pad_template_get (&osssink_sink_factory));
}
static void
-gst_osssink_class_init (GstOssSinkClass *klass)
+gst_osssink_class_init (GstOssSinkClass * klass)
{
GObjectClass *gobject_class;
GstElementClass *gstelement_class;
- gobject_class = (GObjectClass*)klass;
- gstelement_class = (GstElementClass*)klass;
+ gobject_class = (GObjectClass *) klass;
+ gstelement_class = (GstElementClass *) klass;
- parent_class = g_type_class_ref(GST_TYPE_OSSELEMENT);
+ parent_class = g_type_class_ref (GST_TYPE_OSSELEMENT);
g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_MUTE,
- g_param_spec_boolean ("mute", "Mute", "Mute the audio",
- FALSE, G_PARAM_READWRITE));
+ g_param_spec_boolean ("mute", "Mute", "Mute the audio",
+ FALSE, G_PARAM_READWRITE));
g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_SYNC,
- g_param_spec_boolean ("sync", "Sync", "If syncing on timestamps should be enabled",
- TRUE, G_PARAM_READWRITE));
+ g_param_spec_boolean ("sync", "Sync",
+ "If syncing on timestamps should be enabled", TRUE,
+ G_PARAM_READWRITE));
g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_FRAGMENT,
- g_param_spec_int ("fragment", "Fragment",
- "The fragment as 0xMMMMSSSS (MMMM = total fragments, 2^SSSS = fragment size)",
- 0, G_MAXINT, 6, G_PARAM_READWRITE));
+ g_param_spec_int ("fragment", "Fragment",
+ "The fragment as 0xMMMMSSSS (MMMM = total fragments, 2^SSSS = fragment size)",
+ 0, G_MAXINT, 6, G_PARAM_READWRITE));
g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_BUFFER_SIZE,
- g_param_spec_uint ("buffer_size", "Buffer size", "Size of buffers in osssink's bufferpool (bytes)",
- 0, G_MAXINT, 4096, G_PARAM_READWRITE));
+ g_param_spec_uint ("buffer_size", "Buffer size",
+ "Size of buffers in osssink's bufferpool (bytes)", 0, G_MAXINT, 4096,
+ G_PARAM_READWRITE));
g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_CHUNK_SIZE,
- g_param_spec_uint ("chunk_size", "Chunk size", "Write data in chunk sized buffers",
- 0, G_MAXUINT, 4096, G_PARAM_READWRITE));
+ g_param_spec_uint ("chunk_size", "Chunk size",
+ "Write data in chunk sized buffers", 0, G_MAXUINT, 4096,
+ G_PARAM_READWRITE));
gst_osssink_signals[SIGNAL_HANDOFF] =
- g_signal_new ("handoff", G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_LAST,
- G_STRUCT_OFFSET (GstOssSinkClass, handoff), NULL, NULL,
- g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0);
-
+ g_signal_new ("handoff", G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (GstOssSinkClass, handoff), NULL, NULL,
+ g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0);
+
gobject_class->set_property = gst_osssink_set_property;
gobject_class->get_property = gst_osssink_get_property;
- gobject_class->dispose = gst_osssink_dispose;
-
+ gobject_class->dispose = gst_osssink_dispose;
+
gstelement_class->change_state = GST_DEBUG_FUNCPTR (gst_osssink_change_state);
- gstelement_class->query = GST_DEBUG_FUNCPTR (gst_osssink_query);
- gstelement_class->set_clock = gst_osssink_set_clock;
- gstelement_class->get_clock = gst_osssink_get_clock;
-
+ gstelement_class->query = GST_DEBUG_FUNCPTR (gst_osssink_query);
+ gstelement_class->set_clock = gst_osssink_set_clock;
+ gstelement_class->get_clock = gst_osssink_get_clock;
+
}
-static void
-gst_osssink_init (GstOssSink *osssink)
+static void
+gst_osssink_init (GstOssSink * osssink)
{
- osssink->sinkpad = gst_pad_new_from_template (
- gst_static_pad_template_get (&osssink_sink_factory), "sink");
+ osssink->sinkpad =
+ gst_pad_new_from_template (gst_static_pad_template_get
+ (&osssink_sink_factory), "sink");
gst_element_add_pad (GST_ELEMENT (osssink), osssink->sinkpad);
gst_pad_set_link_function (osssink->sinkpad, gst_osssink_sinkconnect);
gst_pad_set_fixate_function (osssink->sinkpad, gst_osssink_sink_fixate);
gst_pad_set_convert_function (osssink->sinkpad, gst_osssink_convert);
gst_pad_set_query_function (osssink->sinkpad, gst_osssink_sink_query);
- gst_pad_set_query_type_function (osssink->sinkpad, gst_osssink_get_query_types);
+ gst_pad_set_query_type_function (osssink->sinkpad,
+ gst_osssink_get_query_types);
gst_pad_set_formats_function (osssink->sinkpad, gst_osssink_get_formats);
gst_pad_set_chain_function (osssink->sinkpad, gst_osssink_chain);
@@ -209,8 +216,10 @@ gst_osssink_init (GstOssSink *osssink)
osssink->mute = FALSE;
osssink->sync = TRUE;
osssink->resync = TRUE;
- osssink->provided_clock = gst_audio_clock_new ("ossclock", gst_osssink_get_time, osssink);
- gst_object_set_parent (GST_OBJECT (osssink->provided_clock), GST_OBJECT (osssink));
+ osssink->provided_clock =
+ gst_audio_clock_new ("ossclock", gst_osssink_get_time, osssink);
+ gst_object_set_parent (GST_OBJECT (osssink->provided_clock),
+ GST_OBJECT (osssink));
osssink->handled = 0;
GST_FLAG_SET (osssink, GST_ELEMENT_THREAD_SUGGESTED);
@@ -218,12 +227,14 @@ gst_osssink_init (GstOssSink *osssink)
}
static GstCaps *
-gst_osssink_sink_fixate (GstPad *pad, const GstCaps *caps)
+gst_osssink_sink_fixate (GstPad * pad, const GstCaps * caps)
{
GstCaps *newcaps;
GstStructure *structure;
- newcaps = gst_caps_new_full (gst_structure_copy(gst_caps_get_structure (caps, 0)), NULL);
+ newcaps =
+ gst_caps_new_full (gst_structure_copy (gst_caps_get_structure (caps, 0)),
+ NULL);
structure = gst_caps_get_structure (newcaps, 0);
if (gst_caps_structure_fixate_field_nearest_int (structure, "rate", 44100)) {
@@ -244,8 +255,8 @@ gst_osssink_sink_fixate (GstPad *pad, const GstCaps *caps)
return NULL;
}
-static GstPadLinkReturn
-gst_osssink_sinkconnect (GstPad *pad, const GstCaps *caps)
+static GstPadLinkReturn
+gst_osssink_sinkconnect (GstPad * pad, const GstCaps * caps)
{
GstOssSink *osssink = GST_OSSSINK (gst_pad_get_parent (pad));
@@ -260,7 +271,7 @@ gst_osssink_sinkconnect (GstPad *pad, const GstCaps *caps)
}
static inline gint
-gst_osssink_get_delay (GstOssSink *osssink)
+gst_osssink_get_delay (GstOssSink * osssink)
{
gint delay = 0;
gint ret;
@@ -275,19 +286,19 @@ gst_osssink_get_delay (GstOssSink *osssink)
#endif
if (ret < 0) {
audio_buf_info info;
+
if (ioctl (GST_OSSELEMENT (osssink)->fd, SNDCTL_DSP_GETOSPACE, &info) < 0) {
delay = 0;
- }
- else {
- delay = (info.fragstotal * info.fragsize) - info.bytes;
+ } else {
+ delay = (info.fragstotal * info.fragsize) - info.bytes;
}
}
return delay;
}
-static GstClockTime
-gst_osssink_get_time (GstClock *clock, gpointer data)
+static GstClockTime
+gst_osssink_get_time (GstClock * clock, gpointer data)
{
GstOssSink *osssink = GST_OSSSINK (data);
gint delay;
@@ -305,39 +316,41 @@ gst_osssink_get_time (GstClock *clock, gpointer data)
* happen anymore, so remove the second code path after april 2004 */
if (delay > (gint64) osssink->handled) {
/*g_warning ("Delay %d > osssink->handled %" G_GUINT64_FORMAT
- ", setting to osssink->handled",
- delay, osssink->handled);*/
+ ", setting to osssink->handled",
+ delay, osssink->handled); */
delay = osssink->handled;
}
- res = ((gint64) osssink->handled - delay) * GST_SECOND / GST_OSSELEMENT (osssink)->bps;
+ res =
+ ((gint64) osssink->handled -
+ delay) * GST_SECOND / GST_OSSELEMENT (osssink)->bps;
if (res < 0)
res = 0;
return res;
}
-static GstClock*
-gst_osssink_get_clock (GstElement *element)
+static GstClock *
+gst_osssink_get_clock (GstElement * element)
{
GstOssSink *osssink;
-
+
osssink = GST_OSSSINK (element);
return GST_CLOCK (osssink->provided_clock);
}
static void
-gst_osssink_set_clock (GstElement *element, GstClock *clock)
+gst_osssink_set_clock (GstElement * element, GstClock * clock)
{
GstOssSink *osssink;
-
+
osssink = GST_OSSSINK (element);
- osssink->clock = clock;
+ osssink->clock = clock;
}
-static void
-gst_osssink_chain (GstPad *pad, GstData *_data)
+static void
+gst_osssink_chain (GstPad * pad, GstData * _data)
{
GstBuffer *buf = GST_BUFFER (_data);
GstOssSink *osssink;
@@ -354,23 +367,25 @@ gst_osssink_chain (GstPad *pad, GstData *_data)
switch (GST_EVENT_TYPE (event)) {
case GST_EVENT_EOS:
- ioctl (GST_OSSELEMENT (osssink)->fd, SNDCTL_DSP_SYNC, 0);
- gst_audio_clock_set_active (GST_AUDIO_CLOCK (osssink->provided_clock), FALSE);
+ ioctl (GST_OSSELEMENT (osssink)->fd, SNDCTL_DSP_SYNC, 0);
+ gst_audio_clock_set_active (GST_AUDIO_CLOCK (osssink->provided_clock),
+ FALSE);
gst_pad_event_default (pad, event);
- return;
+ return;
case GST_EVENT_DISCONTINUOUS:
- osssink->resync = TRUE;
- /* pass-through */
+ osssink->resync = TRUE;
+ /* pass-through */
default:
gst_pad_event_default (pad, event);
- return;
+ return;
}
g_assert_not_reached ();
}
if (!GST_OSSELEMENT (osssink)->bps) {
gst_buffer_unref (buf);
- GST_ELEMENT_ERROR (osssink, CORE, NEGOTIATION, (NULL), ("format wasn't negotiated before chain function"));
+ GST_ELEMENT_ERROR (osssink, CORE, NEGOTIATION, (NULL),
+ ("format wasn't negotiated before chain function"));
return;
}
@@ -388,11 +403,13 @@ gst_osssink_chain (GstPad *pad, GstData *_data)
} else {
buftime = soundtime;
}
- GST_LOG_OBJECT (osssink, "time: real %"G_GUINT64_FORMAT", buffer: %"G_GUINT64_FORMAT,
- soundtime, buftime);
+ GST_LOG_OBJECT (osssink,
+ "time: real %" G_GUINT64_FORMAT ", buffer: %" G_GUINT64_FORMAT, soundtime,
+ buftime);
if (MAX (buftime, soundtime) - MIN (buftime, soundtime) > (GST_SECOND / 10)) {
/* we need to adjust to the buffers here */
- GST_INFO_OBJECT (osssink, "need sync: real %"G_GUINT64_FORMAT", buffer: %"G_GUINT64_FORMAT,
+ GST_INFO_OBJECT (osssink,
+ "need sync: real %" G_GUINT64_FORMAT ", buffer: %" G_GUINT64_FORMAT,
soundtime, buftime);
if (soundtime > buftime) {
/* do *not* throw frames out. It's useless. The next frame will come in
@@ -400,29 +417,35 @@ gst_osssink_chain (GstPad *pad, GstData *_data)
* This is a placeholder for what - some day - should become QoS, i.e.
* sending events upstream to drop buffers. */
} else {
- guint64 to_handle = (((buftime - soundtime) * GST_OSSELEMENT(osssink)->bps / GST_SECOND) /
- ((GST_OSSELEMENT (osssink)->width / 8) * GST_OSSELEMENT (osssink)->channels)) *
- (GST_OSSELEMENT (osssink)->width / 8) * GST_OSSELEMENT (osssink)->channels;
+ guint64 to_handle =
+ (((buftime -
+ soundtime) * GST_OSSELEMENT (osssink)->bps / GST_SECOND) /
+ ((GST_OSSELEMENT (osssink)->width / 8) *
+ GST_OSSELEMENT (osssink)->channels)) *
+ (GST_OSSELEMENT (osssink)->width / 8) *
+ GST_OSSELEMENT (osssink)->channels;
if (!osssink->resync) {
- guint8 *buf = g_new (guint8, to_handle);
-
- memset (buf, (GST_OSSELEMENT (osssink)->width == 8) ? 0 : 128, to_handle);
- while (to_handle > 0) {
- gint done = write (GST_OSSELEMENT (osssink)->fd, buf,
- MIN (to_handle, osssink->chunk_size));
- if (done == -1 && errno != EINTR) {
- break;
- } else {
- to_handle -= done;
- osssink->handled += done;
- }
- }
- g_free(buf);
+ guint8 *buf = g_new (guint8, to_handle);
+
+ memset (buf, (GST_OSSELEMENT (osssink)->width == 8) ? 0 : 128,
+ to_handle);
+ while (to_handle > 0) {
+ gint done = write (GST_OSSELEMENT (osssink)->fd, buf,
+ MIN (to_handle, osssink->chunk_size));
+
+ if (done == -1 && errno != EINTR) {
+ break;
+ } else {
+ to_handle -= done;
+ osssink->handled += done;
+ }
+ }
+ g_free (buf);
} else {
- /* Timestamps at start-of-stream (MPEG) or after seek (hey,
- * again MPEG!) can be borken, therefore this hacklet. */
- osssink->handled += to_handle;
+ /* Timestamps at start-of-stream (MPEG) or after seek (hey,
+ * again MPEG!) can be borken, therefore this hacklet. */
+ osssink->handled += to_handle;
}
}
}
@@ -431,13 +454,13 @@ gst_osssink_chain (GstPad *pad, GstData *_data)
if (!osssink->mute) {
while (to_write > 0) {
- gint done = write (GST_OSSELEMENT (osssink)->fd, data,
- MIN (to_write, osssink->chunk_size));
- if (done == -1) {
- if (errno != EINTR)
+ gint done = write (GST_OSSELEMENT (osssink)->fd, data,
+ MIN (to_write, osssink->chunk_size));
+
+ if (done == -1) {
+ if (errno != EINTR)
break;
- }
- else {
+ } else {
to_write -= done;
data += done;
osssink->handled += done;
@@ -448,13 +471,14 @@ gst_osssink_chain (GstPad *pad, GstData *_data)
}
}
- gst_audio_clock_update_time ((GstAudioClock*)osssink->provided_clock, gst_osssink_get_time (osssink->provided_clock, osssink));
+ gst_audio_clock_update_time ((GstAudioClock *) osssink->provided_clock,
+ gst_osssink_get_time (osssink->provided_clock, osssink));
gst_buffer_unref (buf);
}
-static const GstFormat*
-gst_osssink_get_formats (GstPad *pad)
+static const GstFormat *
+gst_osssink_get_formats (GstPad * pad)
{
static const GstFormat formats[] = {
GST_FORMAT_TIME,
@@ -466,20 +490,19 @@ gst_osssink_get_formats (GstPad *pad)
}
static gboolean
-gst_osssink_convert (GstPad *pad, GstFormat src_format, gint64 src_value,
- GstFormat *dest_format, gint64 *dest_value)
+gst_osssink_convert (GstPad * pad, GstFormat src_format, gint64 src_value,
+ GstFormat * dest_format, gint64 * dest_value)
{
GstOssSink *osssink;
osssink = GST_OSSSINK (gst_pad_get_parent (pad));
-
+
return gst_osselement_convert (GST_OSSELEMENT (osssink),
- src_format, src_value,
- dest_format, dest_value);
+ src_format, src_value, dest_format, dest_value);
}
-static const GstQueryType*
-gst_osssink_get_query_types (GstPad *pad)
+static const GstQueryType *
+gst_osssink_get_query_types (GstPad * pad)
{
static const GstQueryType query_types[] = {
GST_QUERY_LATENCY,
@@ -490,32 +513,33 @@ gst_osssink_get_query_types (GstPad *pad)
}
static gboolean
-gst_osssink_sink_query (GstPad *pad, GstQueryType type, GstFormat *format, gint64 *value)
+gst_osssink_sink_query (GstPad * pad, GstQueryType type, GstFormat * format,
+ gint64 * value)
{
gboolean res = TRUE;
GstOssSink *osssink;
osssink = GST_OSSSINK (gst_pad_get_parent (pad));
-
+
switch (type) {
case GST_QUERY_LATENCY:
- if (!gst_osssink_convert (pad,
- GST_FORMAT_BYTES, gst_osssink_get_delay (osssink),
- format, value))
- {
- res = FALSE;
+ if (!gst_osssink_convert (pad,
+ GST_FORMAT_BYTES, gst_osssink_get_delay (osssink),
+ format, value)) {
+ res = FALSE;
}
break;
case GST_QUERY_POSITION:
- if (!gst_osssink_convert (pad,
- GST_FORMAT_TIME, gst_element_get_time (GST_ELEMENT (osssink)),
- format, value))
- {
- res = FALSE;
+ if (!gst_osssink_convert (pad,
+ GST_FORMAT_TIME, gst_element_get_time (GST_ELEMENT (osssink)),
+ format, value)) {
+ res = FALSE;
}
break;
default:
- res = gst_pad_query (gst_pad_get_peer (osssink->sinkpad), type, format, value);
+ res =
+ gst_pad_query (gst_pad_get_peer (osssink->sinkpad), type, format,
+ value);
break;
}
@@ -523,15 +547,17 @@ gst_osssink_sink_query (GstPad *pad, GstQueryType type, GstFormat *format, gint6
}
static gboolean
-gst_osssink_query (GstElement *element, GstQueryType type, GstFormat *format, gint64 *value)
+gst_osssink_query (GstElement * element, GstQueryType type, GstFormat * format,
+ gint64 * value)
{
GstOssSink *osssink = GST_OSSSINK (element);
return gst_osssink_sink_query (osssink->sinkpad, type, format, value);
}
-static void
-gst_osssink_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec)
+static void
+gst_osssink_set_property (GObject * object, guint prop_id, const GValue * value,
+ GParamSpec * pspec)
{
GstOssSink *osssink;
@@ -563,8 +589,9 @@ gst_osssink_set_property (GObject *object, guint prop_id, const GValue *value, G
}
}
-static void
-gst_osssink_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec)
+static void
+gst_osssink_get_property (GObject * object, guint prop_id, GValue * value,
+ GParamSpec * pspec)
{
GstOssSink *osssink;
@@ -592,8 +619,8 @@ gst_osssink_get_property (GObject *object, guint prop_id, GValue *value, GParamS
}
}
-static GstElementStateReturn
-gst_osssink_change_state (GstElement *element)
+static GstElementStateReturn
+gst_osssink_change_state (GstElement * element)
{
GstOssSink *osssink;
@@ -603,16 +630,18 @@ gst_osssink_change_state (GstElement *element)
case GST_STATE_READY_TO_PAUSED:
break;
case GST_STATE_PAUSED_TO_PLAYING:
- gst_audio_clock_set_active (GST_AUDIO_CLOCK (osssink->provided_clock), TRUE);
+ gst_audio_clock_set_active (GST_AUDIO_CLOCK (osssink->provided_clock),
+ TRUE);
break;
case GST_STATE_PLAYING_TO_PAUSED:
- if (GST_FLAG_IS_SET (element, GST_OSSSINK_OPEN))
- ioctl (GST_OSSELEMENT (osssink)->fd, SNDCTL_DSP_RESET, 0);
- gst_audio_clock_set_active (GST_AUDIO_CLOCK (osssink->provided_clock), FALSE);
+ if (GST_FLAG_IS_SET (element, GST_OSSSINK_OPEN))
+ ioctl (GST_OSSELEMENT (osssink)->fd, SNDCTL_DSP_RESET, 0);
+ gst_audio_clock_set_active (GST_AUDIO_CLOCK (osssink->provided_clock),
+ FALSE);
break;
case GST_STATE_PAUSED_TO_READY:
if (GST_FLAG_IS_SET (element, GST_OSSSINK_OPEN))
- ioctl (GST_OSSELEMENT (osssink)->fd, SNDCTL_DSP_RESET, 0);
+ ioctl (GST_OSSELEMENT (osssink)->fd, SNDCTL_DSP_RESET, 0);
gst_osselement_reset (GST_OSSELEMENT (osssink));
osssink->handled = 0;
osssink->resync = TRUE;
@@ -620,7 +649,7 @@ gst_osssink_change_state (GstElement *element)
default:
break;
}
-
+
if (GST_ELEMENT_CLASS (parent_class)->change_state)
return GST_ELEMENT_CLASS (parent_class)->change_state (element);
diff --git a/sys/oss/gstosssink.h b/sys/oss/gstosssink.h
index f484007b..e633ac52 100644
--- a/sys/oss/gstosssink.h
+++ b/sys/oss/gstosssink.h
@@ -31,7 +31,6 @@
#include <gst/audio/audioclock.h>
G_BEGIN_DECLS
-
#define GST_TYPE_OSSSINK \
(gst_osssink_get_type())
#define GST_OSSSINK(obj) \
@@ -42,41 +41,42 @@ G_BEGIN_DECLS
(G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_OSSSINK))
#define GST_IS_OSSSINK_CLASS(obj) \
(G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_OSSSINK))
+ typedef enum
+{
+ GST_OSSSINK_OPEN = GST_ELEMENT_FLAG_LAST,
-typedef enum {
- GST_OSSSINK_OPEN = GST_ELEMENT_FLAG_LAST,
-
- GST_OSSSINK_FLAG_LAST = GST_ELEMENT_FLAG_LAST+2,
+ GST_OSSSINK_FLAG_LAST = GST_ELEMENT_FLAG_LAST + 2,
} GstOssSinkFlags;
typedef struct _GstOssSink GstOssSink;
typedef struct _GstOssSinkClass GstOssSinkClass;
-struct _GstOssSink {
- GstOssElement element;
+struct _GstOssSink
+{
+ GstOssElement element;
- GstPad *sinkpad;
+ GstPad *sinkpad;
- GstClock *provided_clock;
- GstClock *clock;
- gboolean resync;
- gboolean sync;
- guint64 handled;
+ GstClock *provided_clock;
+ GstClock *clock;
+ gboolean resync;
+ gboolean sync;
+ guint64 handled;
- gboolean mute;
- guint bufsize;
- guint chunk_size;
+ gboolean mute;
+ guint bufsize;
+ guint chunk_size;
};
-struct _GstOssSinkClass {
+struct _GstOssSinkClass
+{
GstOssElementClass parent_class;
/* signals */
- void (*handoff) (GstElement *element,GstPad *pad);
+ void (*handoff) (GstElement * element, GstPad * pad);
};
-GType gst_osssink_get_type(void);
+GType gst_osssink_get_type (void);
G_END_DECLS
-
#endif /* __GST_OSSSINK_H__ */
diff --git a/sys/oss/gstosssrc.c b/sys/oss/gstosssrc.c
index 4bdcb0d2..5803865e 100644
--- a/sys/oss/gstosssrc.c
+++ b/sys/oss/gstosssrc.c
@@ -37,92 +37,93 @@
#include <gst/audio/audioclock.h>
/* elementfactory information */
-static GstElementDetails gst_osssrc_details = GST_ELEMENT_DETAILS (
- "Audio Source (OSS)",
- "Source/Audio",
- "Read from the sound card",
- "Erik Walthinsen <omega@cse.ogi.edu>"
-);
+static GstElementDetails gst_osssrc_details =
+GST_ELEMENT_DETAILS ("Audio Source (OSS)",
+ "Source/Audio",
+ "Read from the sound card",
+ "Erik Walthinsen <omega@cse.ogi.edu>");
/* OssSrc signals and args */
-enum {
+enum
+{
/* FILL ME */
LAST_SIGNAL
};
-enum {
+enum
+{
ARG_0,
ARG_BUFFERSIZE,
ARG_FRAGMENT,
};
-static GstStaticPadTemplate osssrc_src_factory =
-GST_STATIC_PAD_TEMPLATE (
- "src",
- GST_PAD_SRC,
- GST_PAD_ALWAYS,
- GST_STATIC_CAPS ("audio/x-raw-int, "
- "endianness = (int) BYTE_ORDER, "
- "signed = (boolean) { TRUE, FALSE }, "
- "width = (int) { 8, 16 }, "
- "depth = (int) { 8, 16 }, "
- "rate = (int) [ 1000, 48000 ], "
- "channels = (int) [ 1, 2 ]"
- )
-);
-
-static void gst_osssrc_base_init (gpointer g_class);
-static void gst_osssrc_class_init (GstOssSrcClass *klass);
-static void gst_osssrc_init (GstOssSrc *osssrc);
-static void gst_osssrc_dispose (GObject *object);
-
-static GstPadLinkReturn gst_osssrc_srcconnect (GstPad *pad, const GstCaps *caps);
-static const GstFormat* gst_osssrc_get_formats (GstPad *pad);
-static gboolean gst_osssrc_convert (GstPad *pad,
- GstFormat src_format, gint64 src_value,
- GstFormat *dest_format, gint64 *dest_value);
-
-static void gst_osssrc_set_property (GObject *object, guint prop_id,
- const GValue *value, GParamSpec *pspec);
-static void gst_osssrc_get_property (GObject *object, guint prop_id,
- GValue *value, GParamSpec *pspec);
-static GstElementStateReturn gst_osssrc_change_state (GstElement *element);
-
-static void gst_osssrc_set_clock (GstElement *element, GstClock *clock);
-static GstClock* gst_osssrc_get_clock (GstElement *element);
-static GstClockTime gst_osssrc_get_time (GstClock *clock, gpointer data);
-
-static const GstEventMask* gst_osssrc_get_event_masks (GstPad *pad);
-static gboolean gst_osssrc_src_event (GstPad *pad, GstEvent *event);
-static gboolean gst_osssrc_send_event (GstElement *element, GstEvent *event);
-static const GstQueryType* gst_osssrc_get_query_types (GstPad *pad);
-static gboolean gst_osssrc_src_query (GstPad *pad, GstQueryType type,
- GstFormat *format, gint64 *value);
-
-static GstData * gst_osssrc_get (GstPad *pad);
+static GstStaticPadTemplate osssrc_src_factory = GST_STATIC_PAD_TEMPLATE ("src",
+ GST_PAD_SRC,
+ GST_PAD_ALWAYS,
+ GST_STATIC_CAPS ("audio/x-raw-int, "
+ "endianness = (int) BYTE_ORDER, "
+ "signed = (boolean) { TRUE, FALSE }, "
+ "width = (int) { 8, 16 }, "
+ "depth = (int) { 8, 16 }, "
+ "rate = (int) [ 1000, 48000 ], " "channels = (int) [ 1, 2 ]")
+ );
+
+static void gst_osssrc_base_init (gpointer g_class);
+static void gst_osssrc_class_init (GstOssSrcClass * klass);
+static void gst_osssrc_init (GstOssSrc * osssrc);
+static void gst_osssrc_dispose (GObject * object);
+
+static GstPadLinkReturn gst_osssrc_srcconnect (GstPad * pad,
+ const GstCaps * caps);
+static const GstFormat *gst_osssrc_get_formats (GstPad * pad);
+static gboolean gst_osssrc_convert (GstPad * pad,
+ GstFormat src_format, gint64 src_value,
+ GstFormat * dest_format, gint64 * dest_value);
+
+static void gst_osssrc_set_property (GObject * object, guint prop_id,
+ const GValue * value, GParamSpec * pspec);
+static void gst_osssrc_get_property (GObject * object, guint prop_id,
+ GValue * value, GParamSpec * pspec);
+static GstElementStateReturn gst_osssrc_change_state (GstElement * element);
+
+static void gst_osssrc_set_clock (GstElement * element, GstClock * clock);
+static GstClock *gst_osssrc_get_clock (GstElement * element);
+static GstClockTime gst_osssrc_get_time (GstClock * clock, gpointer data);
+
+static const GstEventMask *gst_osssrc_get_event_masks (GstPad * pad);
+static gboolean gst_osssrc_src_event (GstPad * pad, GstEvent * event);
+static gboolean gst_osssrc_send_event (GstElement * element, GstEvent * event);
+static const GstQueryType *gst_osssrc_get_query_types (GstPad * pad);
+static gboolean gst_osssrc_src_query (GstPad * pad, GstQueryType type,
+ GstFormat * format, gint64 * value);
+
+static GstData *gst_osssrc_get (GstPad * pad);
static GstElementClass *parent_class = NULL;
+
/*static guint gst_osssrc_signals[LAST_SIGNAL] = { 0 }; */
GType
-gst_osssrc_get_type (void)
+gst_osssrc_get_type (void)
{
static GType osssrc_type = 0;
if (!osssrc_type) {
static const GTypeInfo osssrc_info = {
- sizeof(GstOssSrcClass),
+ sizeof (GstOssSrcClass),
gst_osssrc_base_init,
NULL,
- (GClassInitFunc)gst_osssrc_class_init,
+ (GClassInitFunc) gst_osssrc_class_init,
NULL,
NULL,
- sizeof(GstOssSrc),
+ sizeof (GstOssSrc),
0,
- (GInstanceInitFunc)gst_osssrc_init,
+ (GInstanceInitFunc) gst_osssrc_init,
};
- osssrc_type = g_type_register_static (GST_TYPE_OSSELEMENT, "GstOssSrc", &osssrc_info, 0);
+ osssrc_type =
+ g_type_register_static (GST_TYPE_OSSELEMENT, "GstOssSrc", &osssrc_info,
+ 0);
}
return osssrc_type;
}
@@ -131,32 +132,34 @@ static void
gst_osssrc_base_init (gpointer g_class)
{
GstElementClass *element_class = GST_ELEMENT_CLASS (g_class);
-
+
gst_element_class_set_details (element_class, &gst_osssrc_details);
- gst_element_class_add_pad_template (element_class, gst_static_pad_template_get (&osssrc_src_factory));
+ gst_element_class_add_pad_template (element_class,
+ gst_static_pad_template_get (&osssrc_src_factory));
}
static void
-gst_osssrc_class_init (GstOssSrcClass *klass)
+gst_osssrc_class_init (GstOssSrcClass * klass)
{
GObjectClass *gobject_class;
GstElementClass *gstelement_class;
- gobject_class = (GObjectClass*)klass;
- gstelement_class = (GstElementClass*)klass;
+ gobject_class = (GObjectClass *) klass;
+ gstelement_class = (GstElementClass *) klass;
parent_class = g_type_class_ref (GST_TYPE_OSSELEMENT);
- g_object_class_install_property(G_OBJECT_CLASS(klass), ARG_BUFFERSIZE,
- g_param_spec_ulong ("buffersize","Buffer Size","The size of the buffers with samples",
- 0, G_MAXULONG, 0, G_PARAM_READWRITE));
+ g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_BUFFERSIZE,
+ g_param_spec_ulong ("buffersize", "Buffer Size",
+ "The size of the buffers with samples", 0, G_MAXULONG, 0,
+ G_PARAM_READWRITE));
g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_FRAGMENT,
- g_param_spec_int ("fragment", "Fragment",
- "The fragment as 0xMMMMSSSS (MMMM = total fragments, 2^SSSS = fragment size)",
- 0, G_MAXINT, 6, G_PARAM_READWRITE));
-
+ g_param_spec_int ("fragment", "Fragment",
+ "The fragment as 0xMMMMSSSS (MMMM = total fragments, 2^SSSS = fragment size)",
+ 0, G_MAXINT, 6, G_PARAM_READWRITE));
+
gobject_class->set_property = gst_osssrc_set_property;
gobject_class->get_property = gst_osssrc_get_property;
- gobject_class->dispose = gst_osssrc_dispose;
+ gobject_class->dispose = gst_osssrc_dispose;
gstelement_class->change_state = gst_osssrc_change_state;
gstelement_class->send_event = gst_osssrc_send_event;
@@ -165,11 +168,12 @@ gst_osssrc_class_init (GstOssSrcClass *klass)
gstelement_class->get_clock = gst_osssrc_get_clock;
}
-static void
-gst_osssrc_init (GstOssSrc *osssrc)
+static void
+gst_osssrc_init (GstOssSrc * osssrc)
{
- osssrc->srcpad = gst_pad_new_from_template (
- gst_static_pad_template_get (&osssrc_src_factory), "src");
+ osssrc->srcpad =
+ gst_pad_new_from_template (gst_static_pad_template_get
+ (&osssrc_src_factory), "src");
gst_pad_set_get_function (osssrc->srcpad, gst_osssrc_get);
gst_pad_set_link_function (osssrc->srcpad, gst_osssrc_srcconnect);
gst_pad_set_convert_function (osssrc->srcpad, gst_osssrc_convert);
@@ -185,14 +189,16 @@ gst_osssrc_init (GstOssSrc *osssrc)
osssrc->buffersize = 4096;
osssrc->curoffset = 0;
- osssrc->provided_clock = gst_audio_clock_new ("ossclock", gst_osssrc_get_time, osssrc);
- gst_object_set_parent (GST_OBJECT (osssrc->provided_clock), GST_OBJECT (osssrc));
-
+ osssrc->provided_clock =
+ gst_audio_clock_new ("ossclock", gst_osssrc_get_time, osssrc);
+ gst_object_set_parent (GST_OBJECT (osssrc->provided_clock),
+ GST_OBJECT (osssrc));
+
osssrc->clock = NULL;
}
static void
-gst_osssrc_dispose (GObject *object)
+gst_osssrc_dispose (GObject * object)
{
GstOssSrc *osssrc = (GstOssSrc *) object;
@@ -201,12 +207,12 @@ gst_osssrc_dispose (GObject *object)
G_OBJECT_CLASS (parent_class)->dispose (object);
}
-static GstPadLinkReturn
-gst_osssrc_srcconnect (GstPad *pad, const GstCaps *caps)
+static GstPadLinkReturn
+gst_osssrc_srcconnect (GstPad * pad, const GstCaps * caps)
{
GstOssSrc *src;
- src = GST_OSSSRC(gst_pad_get_parent (pad));
+ src = GST_OSSSRC (gst_pad_get_parent (pad));
if (!gst_osselement_parse_caps (GST_OSSELEMENT (src), caps))
return GST_PAD_LINK_REFUSED;
@@ -218,12 +224,12 @@ gst_osssrc_srcconnect (GstPad *pad, const GstCaps *caps)
}
static gboolean
-gst_osssrc_negotiate (GstPad *pad)
+gst_osssrc_negotiate (GstPad * pad)
{
GstOssSrc *src;
GstCaps *allowed;
- src = GST_OSSSRC(gst_pad_get_parent (pad));
+ src = GST_OSSSRC (gst_pad_get_parent (pad));
allowed = gst_pad_get_allowed_caps (pad);
@@ -232,24 +238,24 @@ gst_osssrc_negotiate (GstPad *pad)
if (!gst_osselement_sync_parms (GST_OSSELEMENT (src)))
return FALSE;
-
+
/* set caps on src pad */
- if (gst_pad_try_set_caps (src->srcpad,
- gst_caps_new_simple("audio/x-raw-int",
- "endianness", G_TYPE_INT, GST_OSSELEMENT (src)->endianness,
- "signed", G_TYPE_BOOLEAN, GST_OSSELEMENT (src)->sign,
- "width", G_TYPE_INT, GST_OSSELEMENT (src)->width,
- "depth", G_TYPE_INT, GST_OSSELEMENT (src)->depth,
- "rate", G_TYPE_INT, GST_OSSELEMENT (src)->rate,
- "channels", G_TYPE_INT, GST_OSSELEMENT (src)->channels,
- NULL)) <= 0) {
+ if (gst_pad_try_set_caps (src->srcpad,
+ gst_caps_new_simple ("audio/x-raw-int",
+ "endianness", G_TYPE_INT, GST_OSSELEMENT (src)->endianness,
+ "signed", G_TYPE_BOOLEAN, GST_OSSELEMENT (src)->sign,
+ "width", G_TYPE_INT, GST_OSSELEMENT (src)->width,
+ "depth", G_TYPE_INT, GST_OSSELEMENT (src)->depth,
+ "rate", G_TYPE_INT, GST_OSSELEMENT (src)->rate,
+ "channels", G_TYPE_INT, GST_OSSELEMENT (src)->channels,
+ NULL)) <= 0) {
return FALSE;
}
return TRUE;
}
-static GstClockTime
-gst_osssrc_get_time (GstClock *clock, gpointer data)
+static GstClockTime
+gst_osssrc_get_time (GstClock * clock, gpointer data)
{
GstOssSrc *osssrc = GST_OSSSRC (data);
audio_buf_info info;
@@ -257,40 +263,41 @@ gst_osssrc_get_time (GstClock *clock, gpointer data)
if (!GST_OSSELEMENT (osssrc)->bps)
return 0;
- if (ioctl(GST_OSSELEMENT (osssrc)->fd, SNDCTL_DSP_GETISPACE, &info) < 0)
+ if (ioctl (GST_OSSELEMENT (osssrc)->fd, SNDCTL_DSP_GETISPACE, &info) < 0)
return 0;
- return (osssrc->curoffset + info.bytes) * GST_SECOND / GST_OSSELEMENT (osssrc)->bps;
+ return (osssrc->curoffset +
+ info.bytes) * GST_SECOND / GST_OSSELEMENT (osssrc)->bps;
}
-static GstClock*
-gst_osssrc_get_clock (GstElement *element)
+static GstClock *
+gst_osssrc_get_clock (GstElement * element)
{
GstOssSrc *osssrc;
-
+
osssrc = GST_OSSSRC (element);
return GST_CLOCK (osssrc->provided_clock);
}
static void
-gst_osssrc_set_clock (GstElement *element, GstClock *clock)
+gst_osssrc_set_clock (GstElement * element, GstClock * clock)
{
GstOssSrc *osssrc;
-
+
osssrc = GST_OSSSRC (element);
osssrc->clock = clock;
}
-
+
static GstData *
-gst_osssrc_get (GstPad *pad)
+gst_osssrc_get (GstPad * pad)
{
GstOssSrc *src;
GstBuffer *buf;
glong readbytes;
- src = GST_OSSSRC(gst_pad_get_parent (pad));
+ src = GST_OSSSRC (gst_pad_get_parent (pad));
GST_DEBUG ("attempting to read something from the soundcard");
@@ -298,9 +305,9 @@ gst_osssrc_get (GstPad *pad)
src->need_eos = FALSE;
return GST_DATA (gst_event_new (GST_EVENT_EOS));
}
-
+
buf = gst_buffer_new_and_alloc (src->buffersize);
-
+
if (!GST_PAD_CAPS (pad)) {
/* nothing was negotiated, we can decide on a format */
if (!gst_osssrc_negotiate (pad)) {
@@ -312,12 +319,12 @@ gst_osssrc_get (GstPad *pad)
if (GST_OSSELEMENT (src)->bps == 0) {
gst_buffer_unref (buf);
GST_ELEMENT_ERROR (src, CORE, NEGOTIATION, (NULL),
- ("format wasn't negotiated before chain function"));
+ ("format wasn't negotiated before chain function"));
return GST_DATA (gst_event_new (GST_EVENT_INTERRUPT));
}
- readbytes = read (GST_OSSELEMENT (src)->fd,GST_BUFFER_DATA (buf),
- src->buffersize);
+ readbytes = read (GST_OSSELEMENT (src)->fd, GST_BUFFER_DATA (buf),
+ src->buffersize);
if (readbytes < 0) {
gst_buffer_unref (buf);
GST_ELEMENT_ERROR (src, RESOURCE, READ, (NULL), GST_ERROR_SYSTEM);
@@ -334,20 +341,23 @@ gst_osssrc_get (GstPad *pad)
GST_BUFFER_OFFSET (buf) = src->curoffset;
/* FIXME: we are falsely assuming that we are the master clock here */
- GST_BUFFER_TIMESTAMP (buf) = src->curoffset * GST_SECOND / GST_OSSELEMENT (src)->bps;
- GST_BUFFER_DURATION (buf) = (GST_SECOND * GST_BUFFER_SIZE (buf)) /
- (GST_OSSELEMENT (src)->bps * GST_OSSELEMENT (src)->rate);
+ GST_BUFFER_TIMESTAMP (buf) =
+ src->curoffset * GST_SECOND / GST_OSSELEMENT (src)->bps;
+ GST_BUFFER_DURATION (buf) =
+ (GST_SECOND * GST_BUFFER_SIZE (buf)) / (GST_OSSELEMENT (src)->bps *
+ GST_OSSELEMENT (src)->rate);
src->curoffset += readbytes;
- GST_DEBUG ("pushed buffer from soundcard of %ld bytes, timestamp %" G_GINT64_FORMAT,
- readbytes, GST_BUFFER_TIMESTAMP (buf));
+ GST_DEBUG ("pushed buffer from soundcard of %ld bytes, timestamp %"
+ G_GINT64_FORMAT, readbytes, GST_BUFFER_TIMESTAMP (buf));
return GST_DATA (buf);
}
-static void
-gst_osssrc_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec)
+static void
+gst_osssrc_set_property (GObject * object, guint prop_id, const GValue * value,
+ GParamSpec * pspec)
{
GstOssSrc *src;
@@ -360,14 +370,15 @@ gst_osssrc_set_property (GObject *object, guint prop_id, const GValue *value, GP
case ARG_FRAGMENT:
GST_OSSELEMENT (src)->fragment = g_value_get_int (value);
gst_osselement_sync_parms (GST_OSSELEMENT (src));
- break;
+ break;
default:
break;
}
}
-static void
-gst_osssrc_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec)
+static void
+gst_osssrc_get_property (GObject * object, guint prop_id, GValue * value,
+ GParamSpec * pspec)
{
GstOssSrc *src;
@@ -386,11 +397,11 @@ gst_osssrc_get_property (GObject *object, guint prop_id, GValue *value, GParamSp
}
}
-static GstElementStateReturn
-gst_osssrc_change_state (GstElement *element)
+static GstElementStateReturn
+gst_osssrc_change_state (GstElement * element)
{
GstOssSrc *osssrc = GST_OSSSRC (element);
-
+
GST_DEBUG ("osssrc: state change");
switch (GST_STATE_TRANSITION (element)) {
@@ -398,14 +409,16 @@ gst_osssrc_change_state (GstElement *element)
osssrc->curoffset = 0;
break;
case GST_STATE_PAUSED_TO_PLAYING:
- gst_audio_clock_set_active (GST_AUDIO_CLOCK (osssrc->provided_clock), TRUE);
+ gst_audio_clock_set_active (GST_AUDIO_CLOCK (osssrc->provided_clock),
+ TRUE);
break;
case GST_STATE_PLAYING_TO_PAUSED:
- gst_audio_clock_set_active (GST_AUDIO_CLOCK (osssrc->provided_clock), FALSE);
+ gst_audio_clock_set_active (GST_AUDIO_CLOCK (osssrc->provided_clock),
+ FALSE);
break;
case GST_STATE_PAUSED_TO_READY:
if (GST_FLAG_IS_SET (element, GST_OSSSRC_OPEN))
- ioctl (GST_OSSELEMENT (osssrc)->fd, SNDCTL_DSP_RESET, 0);
+ ioctl (GST_OSSELEMENT (osssrc)->fd, SNDCTL_DSP_RESET, 0);
break;
default:
break;
@@ -413,12 +426,12 @@ gst_osssrc_change_state (GstElement *element)
if (GST_ELEMENT_CLASS (parent_class)->change_state)
return GST_ELEMENT_CLASS (parent_class)->change_state (element);
-
+
return GST_STATE_SUCCESS;
}
-static const GstFormat*
-gst_osssrc_get_formats (GstPad *pad)
+static const GstFormat *
+gst_osssrc_get_formats (GstPad * pad)
{
static const GstFormat formats[] = {
GST_FORMAT_TIME,
@@ -430,30 +443,30 @@ gst_osssrc_get_formats (GstPad *pad)
}
static gboolean
-gst_osssrc_convert (GstPad *pad, GstFormat src_format, gint64 src_value,
- GstFormat *dest_format, gint64 *dest_value)
+gst_osssrc_convert (GstPad * pad, GstFormat src_format, gint64 src_value,
+ GstFormat * dest_format, gint64 * dest_value)
{
GstOssSrc *osssrc;
osssrc = GST_OSSSRC (gst_pad_get_parent (pad));
return gst_osselement_convert (GST_OSSELEMENT (osssrc), src_format, src_value,
- dest_format, dest_value);
+ dest_format, dest_value);
}
-static const GstEventMask*
-gst_osssrc_get_event_masks (GstPad *pad)
+static const GstEventMask *
+gst_osssrc_get_event_masks (GstPad * pad)
{
static const GstEventMask gst_osssrc_src_event_masks[] = {
- { GST_EVENT_EOS, 0 },
- { GST_EVENT_SIZE, 0 },
- { 0, }
+ {GST_EVENT_EOS, 0},
+ {GST_EVENT_SIZE, 0},
+ {0,}
};
return gst_osssrc_src_event_masks;
-}
+}
static gboolean
-gst_osssrc_src_event (GstPad *pad, GstEvent *event)
+gst_osssrc_src_event (GstPad * pad, GstEvent * event)
{
GstOssSrc *osssrc;
gboolean retval = FALSE;
@@ -471,16 +484,14 @@ gst_osssrc_src_event (GstPad *pad, GstEvent *event)
gint64 value;
format = GST_FORMAT_BYTES;
-
+
/* convert to bytes */
- if (gst_osselement_convert (GST_OSSELEMENT (osssrc),
- GST_EVENT_SIZE_FORMAT (event),
- GST_EVENT_SIZE_VALUE (event),
- &format, &value))
- {
- osssrc->buffersize = GST_EVENT_SIZE_VALUE (event);
- g_object_notify (G_OBJECT (osssrc), "buffersize");
- retval = TRUE;
+ if (gst_osselement_convert (GST_OSSELEMENT (osssrc),
+ GST_EVENT_SIZE_FORMAT (event),
+ GST_EVENT_SIZE_VALUE (event), &format, &value)) {
+ osssrc->buffersize = GST_EVENT_SIZE_VALUE (event);
+ g_object_notify (G_OBJECT (osssrc), "buffersize");
+ retval = TRUE;
}
}
default:
@@ -491,40 +502,39 @@ gst_osssrc_src_event (GstPad *pad, GstEvent *event)
}
static gboolean
-gst_osssrc_send_event (GstElement *element,
- GstEvent *event)
+gst_osssrc_send_event (GstElement * element, GstEvent * event)
{
GstOssSrc *osssrc = GST_OSSSRC (element);
return gst_osssrc_src_event (osssrc->srcpad, event);
}
-static const GstQueryType*
-gst_osssrc_get_query_types (GstPad *pad)
+static const GstQueryType *
+gst_osssrc_get_query_types (GstPad * pad)
{
static const GstQueryType query_types[] = {
GST_QUERY_POSITION,
0,
};
return query_types;
-}
+}
static gboolean
-gst_osssrc_src_query (GstPad *pad, GstQueryType type, GstFormat *format, gint64 *value)
+gst_osssrc_src_query (GstPad * pad, GstQueryType type, GstFormat * format,
+ gint64 * value)
{
gboolean res = FALSE;
GstOssSrc *osssrc;
-
+
osssrc = GST_OSSSRC (gst_pad_get_parent (pad));
-
+
switch (type) {
case GST_QUERY_POSITION:
- res = gst_osselement_convert (GST_OSSELEMENT (osssrc),
- GST_FORMAT_BYTES, osssrc->curoffset,
- format, value);
+ res = gst_osselement_convert (GST_OSSELEMENT (osssrc),
+ GST_FORMAT_BYTES, osssrc->curoffset, format, value);
break;
default:
break;
}
return res;
-}
+}
diff --git a/sys/oss/gstosssrc.h b/sys/oss/gstosssrc.h
index 2bc6204f..e74db748 100644
--- a/sys/oss/gstosssrc.h
+++ b/sys/oss/gstosssrc.h
@@ -29,7 +29,6 @@
#include "gstosselement.h"
G_BEGIN_DECLS
-
#define GST_TYPE_OSSSRC \
(gst_osssrc_get_type())
#define GST_OSSSRC(obj) \
@@ -40,38 +39,39 @@ G_BEGIN_DECLS
(G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_OSSSRC))
#define GST_IS_OSSSRC_CLASS(obj) \
(G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_OSSSRC))
+ typedef enum
+{
+ GST_OSSSRC_OPEN = GST_ELEMENT_FLAG_LAST,
-typedef enum {
- GST_OSSSRC_OPEN = GST_ELEMENT_FLAG_LAST,
-
- GST_OSSSRC_FLAG_LAST = GST_ELEMENT_FLAG_LAST+2,
+ GST_OSSSRC_FLAG_LAST = GST_ELEMENT_FLAG_LAST + 2,
} GstOssSrcFlags;
typedef struct _GstOssSrc GstOssSrc;
typedef struct _GstOssSrcClass GstOssSrcClass;
-struct _GstOssSrc {
- GstOssElement element;
+struct _GstOssSrc
+{
+ GstOssElement element;
/* pads */
- GstPad *srcpad;
+ GstPad *srcpad;
+
+ gboolean need_eos; /* Do we need to emit an EOS? */
- gboolean need_eos; /* Do we need to emit an EOS? */
-
/* blocking */
- gulong curoffset;
- gulong buffersize;
+ gulong curoffset;
+ gulong buffersize;
/* clocks */
GstClock *provided_clock, *clock;
};
-struct _GstOssSrcClass {
+struct _GstOssSrcClass
+{
GstOssElementClass parent_class;
};
-GType gst_osssrc_get_type(void);
+GType gst_osssrc_get_type (void);
G_END_DECLS
-
#endif /* __GST_OSSSRC_H__ */