static GstCaps * gst_oss_sink_getcaps (GstBaseSink * bsink, GstCaps * filter) { GstOssSink *osssink; GstCaps *caps; osssink = GST_OSSSINK (bsink); if (osssink->fd == -1) { caps = gst_pad_get_pad_template_caps (GST_BASE_SINK_PAD (bsink)); } else if (osssink->probed_caps) { caps = gst_caps_ref (osssink->probed_caps); } else { caps = gst_oss_helper_probe_caps (osssink->fd); if (caps && !gst_caps_is_empty (caps)) { osssink->probed_caps = gst_caps_ref (caps); } } if (filter && caps) { GstCaps *intersection; intersection = gst_caps_intersect_full (filter, caps, GST_CAPS_INTERSECT_FIRST); gst_caps_unref (caps); return intersection; } else { return caps; } }
static void gst_oss_sink_finalise (GObject * object) { GstOssSink *osssink = GST_OSSSINK (object); g_free (osssink->device); G_OBJECT_CLASS (parent_class)->finalize ((GObject *) (object)); }
static void gst_oss_sink_dispose (GObject * object) { GstOssSink *osssink = GST_OSSSINK (object); if (osssink->probed_caps) { gst_caps_unref (osssink->probed_caps); osssink->probed_caps = NULL; } G_OBJECT_CLASS (parent_class)->dispose (object); }
static void gst_oss_sink_get_property (GObject * object, guint prop_id, GValue * value, GParamSpec * pspec) { GstOssSink *sink; sink = GST_OSSSINK (object); switch (prop_id) { case PROP_DEVICE: g_value_set_string (value, sink->device); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; } }
static GstCaps * gst_oss_sink_getcaps (GstBaseSink * bsink) { GstOssSink *osssink; GstCaps *caps; osssink = GST_OSSSINK (bsink); if (osssink->fd == -1) { caps = gst_caps_copy (gst_pad_get_pad_template_caps (GST_BASE_SINK_PAD (bsink))); } else if (osssink->probed_caps) { caps = gst_caps_copy (osssink->probed_caps); } else { caps = gst_oss_helper_probe_caps (osssink->fd); if (caps && !gst_caps_is_empty (caps)) { osssink->probed_caps = gst_caps_copy (caps); } } return caps; }
static void gst_oss_sink_set_property (GObject * object, guint prop_id, const GValue * value, GParamSpec * pspec) { GstOssSink *sink; sink = GST_OSSSINK (object); switch (prop_id) { case PROP_DEVICE: g_free (sink->device); sink->device = g_value_dup_string (value); if (sink->probed_caps) { gst_caps_unref (sink->probed_caps); sink->probed_caps = NULL; } break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; } }