mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-12-30 12:10:37 +00:00
ext/nas/nassink.c: Some more cleanups/changes; use boilerplate macro.
Original commit message from CVS: * ext/nas/nassink.c: (gst_nas_sink_class_init), (gst_nas_sink_init), (gst_nas_sink_getcaps), (gst_nas_sink_unprepare): Some more cleanups/changes; use boilerplate macro.
This commit is contained in:
parent
3844a3af20
commit
e95c9901b4
2 changed files with 46 additions and 53 deletions
|
@ -1,3 +1,10 @@
|
|||
2007-03-04 Tim-Philipp Müller <tim at centricular dot net>
|
||||
|
||||
* ext/nas/nassink.c: (gst_nas_sink_class_init),
|
||||
(gst_nas_sink_init), (gst_nas_sink_getcaps),
|
||||
(gst_nas_sink_unprepare):
|
||||
Some more cleanups/changes; use boilerplate macro.
|
||||
|
||||
2007-03-04 Tim-Philipp Müller <tim at centricular dot net>
|
||||
|
||||
* ext/nas/Makefile.am:
|
||||
|
|
|
@ -63,9 +63,6 @@ static GstStaticPadTemplate sink_factory = GST_STATIC_PAD_TEMPLATE ("sink",
|
|||
"rate = (int) [ 1000, 96000 ], " "channels = (int) [ 1, 2 ]")
|
||||
);
|
||||
|
||||
static void gst_nas_sink_base_init (gpointer g_class);
|
||||
static void gst_nas_sink_class_init (GstNasSinkClass * klass);
|
||||
static void gst_nas_sink_init (GstNasSink * nassink);
|
||||
static void gst_nas_sink_finalize (GObject * object);
|
||||
|
||||
static gboolean gst_nas_sink_open (GstAudioSink * sink);
|
||||
|
@ -91,8 +88,6 @@ static AuBool NAS_EventHandler (AuServer * aud, AuEvent * ev,
|
|||
static AuDeviceID NAS_getDevice (AuServer * aud, int numTracks);
|
||||
static int NAS_createFlow (GstNasSink * sink, GstRingBufferSpec * spec);
|
||||
|
||||
static GstElementClass *parent_class = NULL;
|
||||
|
||||
static const GstElementDetails nas_sink_details =
|
||||
GST_ELEMENT_DETAILS ("NAS audio sink",
|
||||
"Sink/Audio",
|
||||
|
@ -100,31 +95,7 @@ GST_ELEMENT_DETAILS ("NAS audio sink",
|
|||
"Laurent Vivier <Laurent.Vivier@bull.net>, "
|
||||
"Arwed v. Merkatz <v.merkatz@gmx.net>");
|
||||
|
||||
GType
|
||||
gst_nas_sink_get_type (void)
|
||||
{
|
||||
static GType nas_sink_type = 0;
|
||||
|
||||
if (!nas_sink_type) {
|
||||
static const GTypeInfo nas_sink_info = {
|
||||
sizeof (GstNasSinkClass),
|
||||
gst_nas_sink_base_init,
|
||||
NULL,
|
||||
(GClassInitFunc) gst_nas_sink_class_init,
|
||||
NULL,
|
||||
NULL,
|
||||
sizeof (GstNasSink),
|
||||
0,
|
||||
(GInstanceInitFunc) gst_nas_sink_init,
|
||||
};
|
||||
|
||||
nas_sink_type =
|
||||
g_type_register_static (GST_TYPE_AUDIO_SINK, "GstNasSink",
|
||||
&nas_sink_info, 0);
|
||||
}
|
||||
|
||||
return nas_sink_type;
|
||||
}
|
||||
GST_BOILERPLATE (GstNasSink, gst_nas_sink, GstAudioSink, GST_TYPE_AUDIO_SINK);
|
||||
|
||||
static void
|
||||
gst_nas_sink_base_init (gpointer g_class)
|
||||
|
@ -147,10 +118,8 @@ gst_nas_sink_class_init (GstNasSinkClass * klass)
|
|||
gstbasesink_class = (GstBaseSinkClass *) klass;
|
||||
gstaudiosink_class = (GstAudioSinkClass *) klass;
|
||||
|
||||
parent_class = g_type_class_peek_parent (klass);
|
||||
|
||||
gobject_class->set_property = GST_DEBUG_FUNCPTR (gst_nas_sink_set_property);
|
||||
gobject_class->get_property = GST_DEBUG_FUNCPTR (gst_nas_sink_get_property);
|
||||
gobject_class->set_property = gst_nas_sink_set_property;
|
||||
gobject_class->get_property = gst_nas_sink_get_property;
|
||||
gobject_class->finalize = GST_DEBUG_FUNCPTR (gst_nas_sink_finalize);
|
||||
|
||||
g_object_class_install_property (gobject_class, ARG_MUTE,
|
||||
|
@ -174,7 +143,7 @@ gst_nas_sink_class_init (GstNasSinkClass * klass)
|
|||
}
|
||||
|
||||
static void
|
||||
gst_nas_sink_init (GstNasSink * nassink)
|
||||
gst_nas_sink_init (GstNasSink * nassink, GstNasSinkClass * klass)
|
||||
{
|
||||
/* properties will automatically be set to their default values */
|
||||
nassink->audio = NULL;
|
||||
|
@ -195,29 +164,47 @@ static GstCaps *
|
|||
gst_nas_sink_getcaps (GstBaseSink * bsink)
|
||||
{
|
||||
GstNasSink *nassink = GST_NAS_SINK (bsink);
|
||||
GstCaps *templatecaps =
|
||||
gst_caps_copy (gst_pad_get_pad_template_caps (GST_BASE_SINK_PAD (bsink)));
|
||||
GstCaps *caps;
|
||||
int i;
|
||||
const GstCaps *templatecaps;
|
||||
AuServer *server;
|
||||
GstCaps *fixated, *caps;
|
||||
int i;
|
||||
|
||||
server = AuOpenServer (nassink->host, 0, NULL, 0, NULL, NULL);
|
||||
if (!server)
|
||||
return templatecaps;
|
||||
server = nassink->audio;
|
||||
|
||||
for (i = 0; i < gst_caps_get_size (templatecaps); i++) {
|
||||
GstStructure *structure = gst_caps_get_structure (templatecaps, i);
|
||||
|
||||
gst_structure_set (structure, "rate", GST_TYPE_INT_RANGE,
|
||||
AuServerMinSampleRate (server), AuServerMaxSampleRate (server), NULL);
|
||||
if (server == NULL) {
|
||||
/* FIXME: is it really a good idea to do a potentially long blocking call
|
||||
* like this here? (tpm) */
|
||||
server = AuOpenServer (nassink->host, 0, NULL, 0, NULL, NULL);
|
||||
}
|
||||
caps =
|
||||
gst_caps_intersect (templatecaps,
|
||||
gst_pad_get_pad_template_caps (GST_BASE_SINK_PAD (bsink)));
|
||||
gst_caps_unref (templatecaps);
|
||||
|
||||
templatecaps = gst_static_pad_template_get_caps (&sink_factory);
|
||||
|
||||
if (server == NULL)
|
||||
return gst_caps_copy (templatecaps);
|
||||
|
||||
fixated = gst_caps_copy (templatecaps);
|
||||
for (i = 0; i < gst_caps_get_size (fixated); i++) {
|
||||
GstStructure *structure;
|
||||
gint min, max;
|
||||
|
||||
min = AuServerMinSampleRate (server);
|
||||
max = AuServerMaxSampleRate (server);
|
||||
|
||||
structure = gst_caps_get_structure (fixated, i);
|
||||
|
||||
if (min == max)
|
||||
gst_structure_set (structure, "rate", G_TYPE_INT, max, NULL);
|
||||
else
|
||||
gst_structure_set (structure, "rate", GST_TYPE_INT_RANGE, min, max, NULL);
|
||||
}
|
||||
|
||||
caps = gst_caps_intersect (fixated, templatecaps);
|
||||
gst_caps_unref (fixated);
|
||||
|
||||
if (nassink->audio == NULL)
|
||||
AuCloseServer (server);
|
||||
|
||||
return caps;
|
||||
|
||||
}
|
||||
|
||||
static gboolean
|
||||
|
@ -247,7 +234,6 @@ gst_nas_sink_prepare (GstAudioSink * asink, GstRingBufferSpec * spec)
|
|||
static gboolean
|
||||
gst_nas_sink_unprepare (GstAudioSink * asink)
|
||||
{
|
||||
//GstNasSink *sink = GST_NAS_SINK (asink);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue