diff options
author | Carl-Anton Ingmarsson <ca.ingmarsson@gmail.com> | 2010-07-28 21:39:12 +0200 |
---|---|---|
committer | Carl-Anton Ingmarsson <ca.ingmarsson@gmail.com> | 2010-07-30 11:32:00 +0200 |
commit | 093fcacc20a9a84a12e59f027a0f0921ff02d304 (patch) | |
tree | bf1b88750371300b47ae1713a88f909a63d41280 | |
parent | 5626857ac4884c1c0c50910851ce8437a36e89d8 (diff) |
vdpau: remove GstVdpOutputSrcPad "template-caps" property
instead we do as GstVdpVideoSrcPad and use the "templ" property of GstPad,
which enable us to change the signature of gst_vdp_output_src_pad_new to match
gst_pad_new_from_template
-rw-r--r-- | sys/vdpau/gstvdp/gstvdpoutputsrcpad.c | 63 | ||||
-rw-r--r-- | sys/vdpau/gstvdp/gstvdpoutputsrcpad.h | 2 | ||||
-rw-r--r-- | sys/vdpau/gstvdp/gstvdpvideosrcpad.c | 2 | ||||
-rw-r--r-- | sys/vdpau/gstvdpvideopostprocess.c | 4 |
4 files changed, 21 insertions, 50 deletions
diff --git a/sys/vdpau/gstvdp/gstvdpoutputsrcpad.c b/sys/vdpau/gstvdp/gstvdpoutputsrcpad.c index e54f799f7..f2b384208 100644 --- a/sys/vdpau/gstvdp/gstvdpoutputsrcpad.c +++ b/sys/vdpau/gstvdp/gstvdpoutputsrcpad.c @@ -31,4 +31,3 @@ enum PROP_0, - PROP_DEVICE, - PROP_TEMPL_CAPS + PROP_DEVICE }; @@ -56,3 +55,2 @@ struct _GstVdpOutputSrcPad GstVdpDevice *device; - GstCaps *templ_caps; }; @@ -320,2 +318,4 @@ gst_vdp_output_src_pad_getcaps (GstPad * pad) + const GstCaps *templ_caps; + if (vdp_pad->caps) @@ -323,3 +323,6 @@ gst_vdp_output_src_pad_getcaps (GstPad * pad) - return gst_caps_ref (vdp_pad->templ_caps); + else if ((templ_caps = gst_pad_get_pad_template_caps (pad))) + return gst_caps_copy (templ_caps); + + return NULL; } @@ -345,6 +348,6 @@ gst_vdp_output_src_pad_activate_push (GstPad * pad, gboolean active) GstVdpOutputSrcPad * -gst_vdp_output_src_pad_new (GstCaps * templ_caps) +gst_vdp_output_src_pad_new (GstPadTemplate * templ, const gchar * name) { - return g_object_new (GST_TYPE_VDP_OUTPUT_SRC_PAD, "template-caps", templ_caps, - "direction", GST_PAD_SRC, NULL); + return g_object_new (GST_TYPE_VDP_OUTPUT_SRC_PAD, "name", name, + "template", templ, "direction", GST_PAD_SRC, NULL); } @@ -354,5 +357,4 @@ gst_vdp_output_src_pad_update_caps (GstVdpOutputSrcPad * vdp_pad) { - GstCaps *allowed_caps; - - allowed_caps = gst_vdp_output_buffer_get_allowed_caps (vdp_pad->device); + GstCaps *caps; + const GstCaps *templ_caps; @@ -361,9 +363,9 @@ gst_vdp_output_src_pad_update_caps (GstVdpOutputSrcPad * vdp_pad) - if (vdp_pad->templ_caps) { - vdp_pad->caps = gst_caps_intersect (allowed_caps, vdp_pad->templ_caps); - gst_caps_unref (allowed_caps); - } else - vdp_pad->caps = allowed_caps; + caps = gst_vdp_output_buffer_get_allowed_caps (vdp_pad->device); - GST_DEBUG_OBJECT (vdp_pad, "allowed caps: %" GST_PTR_FORMAT, vdp_pad->caps); + if ((templ_caps = gst_pad_get_pad_template_caps (GST_PAD (vdp_pad)))) { + vdp_pad->caps = gst_caps_intersect (caps, templ_caps); + gst_caps_unref (caps); + } else + vdp_pad->caps = caps; } @@ -381,6 +383,2 @@ gst_vdp_output_src_pad_get_property (GObject * object, guint prop_id, - case PROP_TEMPL_CAPS: - gst_value_set_caps (value, vdp_pad->templ_caps); - break; - default: @@ -405,8 +403,2 @@ gst_vdp_output_src_pad_set_property (GObject * object, guint prop_id, - case PROP_TEMPL_CAPS: - if (vdp_pad->templ_caps) - gst_caps_unref (vdp_pad->templ_caps); - vdp_pad->templ_caps = gst_caps_copy (gst_value_get_caps (value)); - break; - default: @@ -418,13 +410,2 @@ gst_vdp_output_src_pad_set_property (GObject * object, guint prop_id, static void -gst_vdp_output_src_pad_finalize (GObject * object) -{ - GstVdpOutputSrcPad *vdp_pad = (GstVdpOutputSrcPad *) object; - - if (vdp_pad->templ_caps) - gst_caps_unref (vdp_pad->templ_caps); - - G_OBJECT_CLASS (gst_vdp_output_src_pad_parent_class)->finalize (object); -} - -static void gst_vdp_output_src_pad_init (GstVdpOutputSrcPad * vdp_pad) @@ -436,3 +417,2 @@ gst_vdp_output_src_pad_init (GstVdpOutputSrcPad * vdp_pad) vdp_pad->device = NULL; - vdp_pad->templ_caps = NULL; @@ -451,3 +431,2 @@ gst_vdp_output_src_pad_class_init (GstVdpOutputSrcPadClass * klass) object_class->set_property = gst_vdp_output_src_pad_set_property; - object_class->finalize = gst_vdp_output_src_pad_finalize; @@ -465,8 +444,2 @@ gst_vdp_output_src_pad_class_init (GstVdpOutputSrcPadClass * klass) GST_TYPE_VDP_DEVICE, G_PARAM_READWRITE)); - - g_object_class_install_property (object_class, PROP_TEMPL_CAPS, - g_param_spec_boxed ("template-caps", "Template caps", - "Template caps", GST_TYPE_CAPS, - G_PARAM_READWRITE | G_PARAM_CONSTRUCT)); - } diff --git a/sys/vdpau/gstvdp/gstvdpoutputsrcpad.h b/sys/vdpau/gstvdp/gstvdpoutputsrcpad.h index c88ed15d8..be3f3ec68 100644 --- a/sys/vdpau/gstvdp/gstvdpoutputsrcpad.h +++ b/sys/vdpau/gstvdp/gstvdpoutputsrcpad.h @@ -47,3 +47,3 @@ gboolean gst_vdp_output_src_pad_negotiate_output (GstVdpOutputSrcPad *vdp_pad, G -GstVdpOutputSrcPad *gst_vdp_output_src_pad_new (GstCaps * templ_caps); +GstVdpOutputSrcPad *gst_vdp_output_src_pad_new (GstPadTemplate *templ, const gchar *name); GType gst_vdp_output_src_pad_get_type (void); diff --git a/sys/vdpau/gstvdp/gstvdpvideosrcpad.c b/sys/vdpau/gstvdp/gstvdpvideosrcpad.c index d2cc9bed8..db2f7d9f7 100644 --- a/sys/vdpau/gstvdp/gstvdpvideosrcpad.c +++ b/sys/vdpau/gstvdp/gstvdpvideosrcpad.c @@ -240,3 +240,3 @@ gst_vdp_video_src_pad_getcaps (GstPad * pad) if (vdp_pad->caps) - return gst_caps_copy (vdp_pad->caps); + return gst_caps_ref (vdp_pad->caps); diff --git a/sys/vdpau/gstvdpvideopostprocess.c b/sys/vdpau/gstvdpvideopostprocess.c index 9f2c22106..0b739b3a3 100644 --- a/sys/vdpau/gstvdpvideopostprocess.c +++ b/sys/vdpau/gstvdpvideopostprocess.c @@ -1275,5 +1275,3 @@ gst_vdp_vpp_init (GstVdpVideoPostProcess * vpp, - vpp->srcpad = - GST_PAD (gst_vdp_output_src_pad_new (gst_pad_template_get_caps - (src_template))); + vpp->srcpad = GST_PAD (gst_vdp_output_src_pad_new (src_template, "src")); gst_element_add_pad (GST_ELEMENT (vpp), vpp->srcpad); |