mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-24 02:31:03 +00:00
gst/playback/gstdecodebin.c: Add a "sink-caps" property to decodebin like it's done for decodebin2.
Original commit message from CVS: * gst/playback/gstdecodebin.c: Add a "sink-caps" property to decodebin like it's done for decodebin2. Fixes #560380.
This commit is contained in:
parent
ca161e799f
commit
f39b66e30d
2 changed files with 81 additions and 2 deletions
|
@ -1,3 +1,9 @@
|
||||||
|
2008-11-18 Alessandro Decina <alessandro.d@gmail.com>
|
||||||
|
|
||||||
|
* gst/playback/gstdecodebin.c:
|
||||||
|
Add a "sink-caps" property to decodebin like it's done for decodebin2.
|
||||||
|
Fixes #560380.
|
||||||
|
|
||||||
2008-11-14 Jan Schmidt <jan.schmidt@sun.com>
|
2008-11-14 Jan Schmidt <jan.schmidt@sun.com>
|
||||||
|
|
||||||
* gst/audioresample/gstaudioresample.c:
|
* gst/audioresample/gstaudioresample.c:
|
||||||
|
|
|
@ -108,6 +108,13 @@ enum
|
||||||
LAST_SIGNAL
|
LAST_SIGNAL
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/* Properties */
|
||||||
|
enum
|
||||||
|
{
|
||||||
|
PROP_0,
|
||||||
|
PROP_SINK_CAPS,
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
typedef struct
|
typedef struct
|
||||||
{
|
{
|
||||||
|
@ -133,6 +140,10 @@ GstDynamic;
|
||||||
|
|
||||||
static void gst_decode_bin_class_init (GstDecodeBinClass * klass);
|
static void gst_decode_bin_class_init (GstDecodeBinClass * klass);
|
||||||
static void gst_decode_bin_init (GstDecodeBin * decode_bin);
|
static void gst_decode_bin_init (GstDecodeBin * decode_bin);
|
||||||
|
static void gst_decode_bin_set_property (GObject * object, guint prop_id,
|
||||||
|
const GValue * value, GParamSpec * pspec);
|
||||||
|
static void gst_decode_bin_get_property (GObject * object, guint prop_id,
|
||||||
|
GValue * value, GParamSpec * pspec);
|
||||||
static void gst_decode_bin_dispose (GObject * object);
|
static void gst_decode_bin_dispose (GObject * object);
|
||||||
static void gst_decode_bin_finalize (GObject * object);
|
static void gst_decode_bin_finalize (GObject * object);
|
||||||
|
|
||||||
|
@ -212,6 +223,11 @@ gst_decode_bin_class_init (GstDecodeBinClass * klass)
|
||||||
|
|
||||||
parent_class = g_type_class_peek_parent (klass);
|
parent_class = g_type_class_peek_parent (klass);
|
||||||
|
|
||||||
|
gobject_klass->set_property = GST_DEBUG_FUNCPTR (gst_decode_bin_set_property);
|
||||||
|
gobject_klass->get_property = GST_DEBUG_FUNCPTR (gst_decode_bin_get_property);
|
||||||
|
gobject_klass->dispose = GST_DEBUG_FUNCPTR (gst_decode_bin_dispose);
|
||||||
|
gobject_klass->finalize = GST_DEBUG_FUNCPTR (gst_decode_bin_finalize);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* GstDecodeBin::new-decoded-pad:
|
* GstDecodeBin::new-decoded-pad:
|
||||||
* @bin: The decodebin
|
* @bin: The decodebin
|
||||||
|
@ -255,8 +271,10 @@ gst_decode_bin_class_init (GstDecodeBinClass * klass)
|
||||||
NULL, NULL, gst_marshal_VOID__OBJECT_BOXED, G_TYPE_NONE, 2,
|
NULL, NULL, gst_marshal_VOID__OBJECT_BOXED, G_TYPE_NONE, 2,
|
||||||
GST_TYPE_PAD, GST_TYPE_CAPS);
|
GST_TYPE_PAD, GST_TYPE_CAPS);
|
||||||
|
|
||||||
gobject_klass->dispose = GST_DEBUG_FUNCPTR (gst_decode_bin_dispose);
|
g_object_class_install_property (gobject_klass, PROP_SINK_CAPS,
|
||||||
gobject_klass->finalize = GST_DEBUG_FUNCPTR (gst_decode_bin_finalize);
|
g_param_spec_boxed ("sink-caps", "Sink Caps",
|
||||||
|
"The caps of the input data. (NULL = use typefind element)",
|
||||||
|
GST_TYPE_CAPS, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
|
||||||
|
|
||||||
gst_element_class_add_pad_template (gstelement_klass,
|
gst_element_class_add_pad_template (gstelement_klass,
|
||||||
gst_static_pad_template_get (&decoder_bin_sink_template));
|
gst_static_pad_template_get (&decoder_bin_sink_template));
|
||||||
|
@ -411,6 +429,61 @@ gst_decode_bin_dispose (GObject * object)
|
||||||
free_dynamics (decode_bin);
|
free_dynamics (decode_bin);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
gst_decode_bin_set_sink_caps (GstDecodeBin * dbin, GstCaps * caps)
|
||||||
|
{
|
||||||
|
GST_DEBUG_OBJECT (dbin, "Setting new caps: %" GST_PTR_FORMAT, caps);
|
||||||
|
|
||||||
|
g_object_set (dbin->typefind, "force-caps", caps, NULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
static GstCaps *
|
||||||
|
gst_decode_bin_get_sink_caps (GstDecodeBin * dbin)
|
||||||
|
{
|
||||||
|
GstCaps *caps;
|
||||||
|
|
||||||
|
GST_DEBUG_OBJECT (dbin, "Getting currently set caps");
|
||||||
|
|
||||||
|
g_object_get (dbin->typefind, "force-caps", &caps, NULL);
|
||||||
|
|
||||||
|
return caps;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
gst_decode_bin_set_property (GObject * object, guint prop_id,
|
||||||
|
const GValue * value, GParamSpec * pspec)
|
||||||
|
{
|
||||||
|
GstDecodeBin *dbin;
|
||||||
|
|
||||||
|
dbin = GST_DECODE_BIN (object);
|
||||||
|
|
||||||
|
switch (prop_id) {
|
||||||
|
case PROP_SINK_CAPS:
|
||||||
|
gst_decode_bin_set_sink_caps (dbin, g_value_get_boxed (value));
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
gst_decode_bin_get_property (GObject * object, guint prop_id,
|
||||||
|
GValue * value, GParamSpec * pspec)
|
||||||
|
{
|
||||||
|
GstDecodeBin *dbin;
|
||||||
|
|
||||||
|
dbin = GST_DECODE_BIN (object);
|
||||||
|
switch (prop_id) {
|
||||||
|
case PROP_SINK_CAPS:
|
||||||
|
g_value_take_boxed (value, gst_decode_bin_get_sink_caps (dbin));
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
gst_decode_bin_finalize (GObject * object)
|
gst_decode_bin_finalize (GObject * object)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in a new issue