| /* vim: set filetype=c: */ |
| % ClassName |
| GstVideoDecoder |
| % TYPE_CLASS_NAME |
| GST_TYPE_VIDEO_DECODER |
| % pads |
| sinkpad-simple |
| srcpad-template-video |
| % pkg-config |
| gstreamer-video-1.0 |
| % includes |
| #include <gst/video/video.h> |
| #include <gst/video/gstvideodecoder.h> |
| % prototypes |
| static gboolean gst_replace_open (GstVideoDecoder * decoder); |
| static gboolean gst_replace_close (GstVideoDecoder * decoder); |
| static gboolean gst_replace_start (GstVideoDecoder * decoder); |
| static gboolean gst_replace_stop (GstVideoDecoder * decoder); |
| static GstFlowReturn gst_replace_parse (GstVideoDecoder * decoder, |
| GstVideoCodecFrame * frame, GstAdapter * adapter, gboolean at_eos); |
| static gboolean gst_replace_set_format (GstVideoDecoder * decoder, |
| GstVideoCodecState * state); |
| static gboolean gst_replace_reset (GstVideoDecoder * decoder, gboolean hard); |
| static GstFlowReturn gst_replace_finish (GstVideoDecoder * decoder); |
| static GstFlowReturn gst_replace_handle_frame (GstVideoDecoder * decoder, |
| GstVideoCodecFrame * frame); |
| static gboolean gst_replace_sink_event (GstVideoDecoder * decoder, |
| GstEvent * event); |
| static gboolean gst_replace_src_event (GstVideoDecoder * decoder, |
| GstEvent * event); |
| static gboolean gst_replace_negotiate (GstVideoDecoder * decoder); |
| static gboolean gst_replace_decide_allocation (GstVideoDecoder * decoder, |
| GstQuery * query); |
| static gboolean gst_replace_propose_allocation (GstVideoDecoder * decoder, |
| GstQuery * query); |
| % declare-class |
| GstVideoDecoderClass *video_decoder_class = GST_VIDEO_DECODER_CLASS (klass); |
| % set-methods |
| video_decoder_class->open = GST_DEBUG_FUNCPTR (gst_replace_open); |
| video_decoder_class->close = GST_DEBUG_FUNCPTR (gst_replace_close); |
| video_decoder_class->start = GST_DEBUG_FUNCPTR (gst_replace_start); |
| video_decoder_class->stop = GST_DEBUG_FUNCPTR (gst_replace_stop); |
| video_decoder_class->parse = GST_DEBUG_FUNCPTR (gst_replace_parse); |
| video_decoder_class->set_format = GST_DEBUG_FUNCPTR (gst_replace_set_format); |
| video_decoder_class->reset = GST_DEBUG_FUNCPTR (gst_replace_reset); |
| video_decoder_class->finish = GST_DEBUG_FUNCPTR (gst_replace_finish); |
| video_decoder_class->handle_frame = GST_DEBUG_FUNCPTR (gst_replace_handle_frame); |
| video_decoder_class->sink_event = GST_DEBUG_FUNCPTR (gst_replace_sink_event); |
| video_decoder_class->src_event = GST_DEBUG_FUNCPTR (gst_replace_src_event); |
| video_decoder_class->negotiate = GST_DEBUG_FUNCPTR (gst_replace_negotiate); |
| video_decoder_class->decide_allocation = GST_DEBUG_FUNCPTR (gst_replace_decide_allocation); |
| video_decoder_class->propose_allocation = GST_DEBUG_FUNCPTR (gst_replace_propose_allocation); |
| % methods |
| static gboolean |
| gst_replace_open (GstVideoDecoder * decoder) |
| { |
| GstReplace *replace = GST_REPLACE (decoder); |
| |
| GST_DEBUG_OBJECT (replace, "open"); |
| |
| return TRUE; |
| } |
| |
| static gboolean |
| gst_replace_close (GstVideoDecoder * decoder) |
| { |
| GstReplace *replace = GST_REPLACE (decoder); |
| |
| GST_DEBUG_OBJECT (replace, "close"); |
| |
| return TRUE; |
| } |
| |
| static gboolean |
| gst_replace_start (GstVideoDecoder * decoder) |
| { |
| GstReplace *replace = GST_REPLACE (decoder); |
| |
| GST_DEBUG_OBJECT (replace, "start"); |
| |
| return TRUE; |
| } |
| |
| static gboolean |
| gst_replace_stop (GstVideoDecoder * decoder) |
| { |
| GstReplace *replace = GST_REPLACE (decoder); |
| |
| GST_DEBUG_OBJECT (replace, "stop"); |
| |
| return TRUE; |
| } |
| |
| static GstFlowReturn |
| gst_replace_parse (GstVideoDecoder * decoder, GstVideoCodecFrame * frame, |
| GstAdapter * adapter, gboolean at_eos) |
| { |
| GstReplace *replace = GST_REPLACE (decoder); |
| |
| GST_DEBUG_OBJECT (replace, "parse"); |
| |
| return GST_FLOW_OK; |
| } |
| |
| static gboolean |
| gst_replace_set_format (GstVideoDecoder * decoder, GstVideoCodecState * state) |
| { |
| GstReplace *replace = GST_REPLACE (decoder); |
| |
| GST_DEBUG_OBJECT (replace, "set_format"); |
| |
| return TRUE; |
| } |
| |
| static gboolean |
| gst_replace_reset (GstVideoDecoder * decoder, gboolean hard) |
| { |
| GstReplace *replace = GST_REPLACE (decoder); |
| |
| GST_DEBUG_OBJECT (replace, "reset"); |
| |
| return TRUE; |
| } |
| |
| static GstFlowReturn |
| gst_replace_finish (GstVideoDecoder * decoder) |
| { |
| GstReplace *replace = GST_REPLACE (decoder); |
| |
| GST_DEBUG_OBJECT (replace, "finish"); |
| |
| return GST_FLOW_OK; |
| } |
| |
| static GstFlowReturn |
| gst_replace_handle_frame (GstVideoDecoder * decoder, GstVideoCodecFrame * frame) |
| { |
| GstReplace *replace = GST_REPLACE (decoder); |
| |
| GST_DEBUG_OBJECT (replace, "handle_frame"); |
| |
| return GST_FLOW_OK; |
| } |
| |
| static gboolean |
| gst_replace_sink_event (GstVideoDecoder * decoder, GstEvent * event) |
| { |
| GstReplace *replace = GST_REPLACE (decoder); |
| |
| GST_DEBUG_OBJECT (replace, "sink_event"); |
| |
| return TRUE; |
| } |
| |
| static gboolean |
| gst_replace_src_event (GstVideoDecoder * decoder, GstEvent * event) |
| { |
| GstReplace *replace = GST_REPLACE (decoder); |
| |
| GST_DEBUG_OBJECT (replace, "src_event"); |
| |
| return TRUE; |
| } |
| |
| static gboolean |
| gst_replace_negotiate (GstVideoDecoder * decoder) |
| { |
| GstReplace *replace = GST_REPLACE (decoder); |
| |
| GST_DEBUG_OBJECT (replace, "negotiate"); |
| |
| return TRUE; |
| } |
| |
| static gboolean |
| gst_replace_decide_allocation (GstVideoDecoder * decoder, GstQuery * query) |
| { |
| GstReplace *replace = GST_REPLACE (decoder); |
| |
| GST_DEBUG_OBJECT (replace, "decide_allocation"); |
| |
| return TRUE; |
| } |
| |
| static gboolean |
| gst_replace_propose_allocation (GstVideoDecoder * decoder, GstQuery * query) |
| { |
| GstReplace *replace = GST_REPLACE (decoder); |
| |
| GST_DEBUG_OBJECT (replace, "propose_allocation"); |
| |
| return TRUE; |
| } |
| % end |