static GstFlowReturn gst_video_filter2_transform_ip (GstBaseTransform * trans, GstBuffer * buf) { GstVideoFilter2 *video_filter2 = GST_VIDEO_FILTER2 (trans); GstVideoFilter2Class *klass = GST_VIDEO_FILTER2_CLASS (G_OBJECT_GET_CLASS (trans)); int i; GstFlowReturn ret; for (i = 0; klass->functions[i].format != GST_VIDEO_FORMAT_UNKNOWN; i++) { if (klass->functions[i].format == video_filter2->format) { ret = klass->functions[i].filter_ip (video_filter2, buf, 0, video_filter2->height); return ret; } } return GST_FLOW_ERROR; }
static void gst_scene_change_class_init (GstSceneChangeClass * klass) { GObjectClass *gobject_class = G_OBJECT_CLASS (klass); GstBaseTransformClass *base_transform_class = GST_BASE_TRANSFORM_CLASS (klass); GstVideoFilter2Class *video_filter2_class = GST_VIDEO_FILTER2_CLASS (klass); gobject_class->set_property = gst_scene_change_set_property; gobject_class->get_property = gst_scene_change_get_property; gobject_class->dispose = gst_scene_change_dispose; gobject_class->finalize = gst_scene_change_finalize; base_transform_class->start = GST_DEBUG_FUNCPTR (gst_scene_change_start); base_transform_class->stop = GST_DEBUG_FUNCPTR (gst_scene_change_stop); video_filter2_class->prefilter = GST_DEBUG_FUNCPTR (gst_scene_change_prefilter); gst_video_filter2_class_add_functions (video_filter2_class, gst_scene_change_filter_functions); }