| /* vim: set filetype=c: */ |
| % ClassName |
| GstVideoFilter |
| % TYPE_CLASS_NAME |
| GST_TYPE_VIDEO_FILTER |
| % pads |
| srcpad-template-video |
| sinkpad-template-video |
| % pkg-config |
| gstreamer-video-1.0 |
| % includes |
| #include <gst/video/video.h> |
| #include <gst/video/gstvideofilter.h> |
| % prototypes |
| static gboolean gst_replace_start (GstBaseTransform * trans); |
| static gboolean gst_replace_stop (GstBaseTransform * trans); |
| static gboolean gst_replace_set_info (GstVideoFilter * filter, GstCaps * incaps, |
| GstVideoInfo * in_info, GstCaps * outcaps, GstVideoInfo * out_info); |
| static GstFlowReturn gst_replace_transform_frame (GstVideoFilter * filter, |
| GstVideoFrame * inframe, GstVideoFrame * outframe); |
| static GstFlowReturn gst_replace_transform_frame_ip (GstVideoFilter * filter, |
| GstVideoFrame * frame); |
| % declare-class |
| GstBaseTransformClass *base_transform_class = GST_BASE_TRANSFORM_CLASS (klass); |
| GstVideoFilterClass *video_filter_class = GST_VIDEO_FILTER_CLASS (klass); |
| % set-methods |
| base_transform_class->start = GST_DEBUG_FUNCPTR (gst_replace_start); |
| base_transform_class->stop = GST_DEBUG_FUNCPTR (gst_replace_stop); |
| video_filter_class->set_info = GST_DEBUG_FUNCPTR (gst_replace_set_info); |
| video_filter_class->transform_frame = GST_DEBUG_FUNCPTR (gst_replace_transform_frame); |
| video_filter_class->transform_frame_ip = GST_DEBUG_FUNCPTR (gst_replace_transform_frame_ip); |
| % methods |
| static gboolean |
| gst_replace_start (GstBaseTransform * trans) |
| { |
| GstReplace *replace = GST_REPLACE (trans); |
| |
| GST_DEBUG_OBJECT (replace, "start"); |
| |
| return TRUE; |
| } |
| |
| static gboolean |
| gst_replace_stop (GstBaseTransform * trans) |
| { |
| GstReplace *replace = GST_REPLACE (trans); |
| |
| GST_DEBUG_OBJECT (replace, "stop"); |
| |
| return TRUE; |
| } |
| |
| static gboolean |
| gst_replace_set_info (GstVideoFilter * filter, GstCaps * incaps, |
| GstVideoInfo * in_info, GstCaps * outcaps, GstVideoInfo * out_info) |
| { |
| GstReplace *replace = GST_REPLACE (filter); |
| |
| GST_DEBUG_OBJECT (replace, "set_info"); |
| |
| return TRUE; |
| } |
| |
| /* transform */ |
| static GstFlowReturn |
| gst_replace_transform_frame (GstVideoFilter * filter, GstVideoFrame * inframe, |
| GstVideoFrame * outframe) |
| { |
| GstReplace *replace = GST_REPLACE (filter); |
| |
| GST_DEBUG_OBJECT (replace, "transform_frame"); |
| |
| return GST_FLOW_OK; |
| } |
| |
| static GstFlowReturn |
| gst_replace_transform_frame_ip (GstVideoFilter * filter, GstVideoFrame * frame) |
| { |
| GstReplace *replace = GST_REPLACE (filter); |
| |
| GST_DEBUG_OBJECT (replace, "transform_frame_ip"); |
| |
| return GST_FLOW_OK; |
| } |
| % end |