static GstStateChangeReturn gst_vaapi_decode_bin_change_state (GstElement * element, GstStateChange transition) { GstVaapiDecodeBin *vaapidecbin = GST_VAAPI_DECODE_BIN (element); GstStateChangeReturn ret; switch (transition) { default: break; } ret = GST_ELEMENT_CLASS (gst_vaapi_decode_bin_parent_class)->change_state (element, transition); if (ret == GST_STATE_CHANGE_FAILURE) return ret; switch (transition) { case GST_STATE_CHANGE_NULL_TO_READY: if (!gst_vaapi_decode_bin_configure (vaapidecbin)) return GST_STATE_CHANGE_FAILURE; break; default: break; } return ret; }
static void gst_vaapi_decode_bin_init (GstVaapiDecodeBin * vaapidecbin) { vaapidecbin->has_vpp = HAS_VPP_UNKNOWN; vaapidecbin->deinterlace_method = DEFAULT_DEINTERLACE_METHOD; gst_vaapi_decode_bin_configure (vaapidecbin); }
static void gst_vaapi_decode_bin_init (GstVaapiDecodeBin * vaapidecbin) { GstPad *element_pad, *ghost_pad; /* let's assume we have VPP until we prove the opposite */ vaapidecbin->has_vpp = TRUE; if (!gst_vaapi_decode_bin_configure (vaapidecbin)) return; /* create ghost pad sink */ element_pad = gst_element_get_static_pad (GST_ELEMENT (vaapidecbin->decoder), "sink"); ghost_pad = gst_ghost_pad_new_from_template ("sink", element_pad, GST_PAD_PAD_TEMPLATE (element_pad)); gst_object_unref (element_pad); gst_element_add_pad (GST_ELEMENT (vaapidecbin), ghost_pad); }