/* vim: set filetype=c: */ % ClassName GstVideoEncoder % TYPE_CLASS_NAME GST_TYPE_VIDEO_ENCODER % pads srcpad-simple sinkpad-template-video % pkg-config gstreamer-video-1.0 % includes #include #include % prototypes static gboolean gst_replace_open (GstVideoEncoder *encoder); static gboolean gst_replace_close (GstVideoEncoder *encoder); static gboolean gst_replace_start (GstVideoEncoder *encoder); static gboolean gst_replace_stop (GstVideoEncoder *encoder); static gboolean gst_replace_set_format (GstVideoEncoder *encoder, GstVideoCodecState *state); static GstFlowReturn gst_replace_handle_frame (GstVideoEncoder *encoder, GstVideoCodecFrame *frame); static gboolean gst_replace_reset (GstVideoEncoder *encoder, gboolean hard); static GstFlowReturn gst_replace_finish (GstVideoEncoder *encoder); static GstFlowReturn gst_replace_pre_push (GstVideoEncoder *encoder, GstVideoCodecFrame *frame); static GstCaps * gst_replace_getcaps (GstVideoEncoder *encoder, GstCaps *filter); static gboolean gst_replace_sink_event (GstVideoEncoder *encoder, GstEvent *event); static gboolean gst_replace_src_event (GstVideoEncoder *encoder, GstEvent *event); static gboolean gst_replace_negotiate (GstVideoEncoder *encoder); static gboolean gst_replace_decide_allocation (GstVideoEncoder *encoder, GstQuery *query); static gboolean gst_replace_propose_allocation (GstVideoEncoder * encoder, GstQuery * query); % declare-class GstVideoEncoderClass *video_encoder_class = GST_VIDEO_ENCODER_CLASS (klass); % set-methods video_encoder_class->open = GST_DEBUG_FUNCPTR (gst_replace_open); video_encoder_class->close = GST_DEBUG_FUNCPTR (gst_replace_close); video_encoder_class->start = GST_DEBUG_FUNCPTR (gst_replace_start); video_encoder_class->stop = GST_DEBUG_FUNCPTR (gst_replace_stop); video_encoder_class->set_format = GST_DEBUG_FUNCPTR (gst_replace_set_format); video_encoder_class->handle_frame = GST_DEBUG_FUNCPTR (gst_replace_handle_frame); video_encoder_class->reset = GST_DEBUG_FUNCPTR (gst_replace_reset); video_encoder_class->finish = GST_DEBUG_FUNCPTR (gst_replace_finish); video_encoder_class->pre_push = GST_DEBUG_FUNCPTR (gst_replace_pre_push); video_encoder_class->getcaps = GST_DEBUG_FUNCPTR (gst_replace_getcaps); video_encoder_class->sink_event = GST_DEBUG_FUNCPTR (gst_replace_sink_event); video_encoder_class->src_event = GST_DEBUG_FUNCPTR (gst_replace_src_event); video_encoder_class->negotiate = GST_DEBUG_FUNCPTR (gst_replace_negotiate); video_encoder_class->decide_allocation = GST_DEBUG_FUNCPTR (gst_replace_decide_allocation); video_encoder_class->propose_allocation = GST_DEBUG_FUNCPTR (gst_replace_propose_allocation); % methods static gboolean gst_replace_open (GstVideoEncoder *encoder) { GstReplace *replace = GST_REPLACE (encoder); GST_DEBUG_OBJECT(replace, "open"); return TRUE; } static gboolean gst_replace_close (GstVideoEncoder *encoder) { GstReplace *replace = GST_REPLACE (encoder); GST_DEBUG_OBJECT(replace, "close"); return TRUE; } static gboolean gst_replace_start (GstVideoEncoder *encoder) { GstReplace *replace = GST_REPLACE (encoder); GST_DEBUG_OBJECT(replace, "start"); return TRUE; } static gboolean gst_replace_stop (GstVideoEncoder *encoder) { GstReplace *replace = GST_REPLACE (encoder); GST_DEBUG_OBJECT(replace, "stop"); return TRUE; } static gboolean gst_replace_set_format (GstVideoEncoder *encoder, GstVideoCodecState *state) { GstReplace *replace = GST_REPLACE (encoder); GST_DEBUG_OBJECT(replace, "set_format"); return TRUE; } static GstFlowReturn gst_replace_handle_frame (GstVideoEncoder *encoder, GstVideoCodecFrame *frame) { GstReplace *replace = GST_REPLACE (encoder); GST_DEBUG_OBJECT(replace, "handle_frame"); return GST_FLOW_OK; } static gboolean gst_replace_reset (GstVideoEncoder *encoder, gboolean hard) { GstReplace *replace = GST_REPLACE (encoder); GST_DEBUG_OBJECT(replace, "reset"); return TRUE; } static GstFlowReturn gst_replace_finish (GstVideoEncoder *encoder) { GstReplace *replace = GST_REPLACE (encoder); GST_DEBUG_OBJECT(replace, "finish"); return GST_FLOW_OK; } static GstFlowReturn gst_replace_pre_push (GstVideoEncoder *encoder, GstVideoCodecFrame *frame) { GstReplace *replace = GST_REPLACE (encoder); GST_DEBUG_OBJECT(replace, "pre_push"); return GST_FLOW_OK; } static GstCaps * gst_replace_getcaps (GstVideoEncoder *encoder, GstCaps *filter) { GstReplace *replace = GST_REPLACE (encoder); GST_DEBUG_OBJECT(replace, "getcaps"); return NULL; } static gboolean gst_replace_sink_event (GstVideoEncoder *encoder, GstEvent *event) { GstReplace *replace = GST_REPLACE (encoder); GST_DEBUG_OBJECT(replace, "sink_event"); return TRUE; } static gboolean gst_replace_src_event (GstVideoEncoder *encoder, GstEvent *event) { GstReplace *replace = GST_REPLACE (encoder); GST_DEBUG_OBJECT(replace, "src_event"); return TRUE; } static gboolean gst_replace_negotiate (GstVideoEncoder *encoder) { GstReplace *replace = GST_REPLACE (encoder); GST_DEBUG_OBJECT(replace, "negotiate"); return TRUE; } static gboolean gst_replace_decide_allocation (GstVideoEncoder *encoder, GstQuery *query) { GstReplace *replace = GST_REPLACE (encoder); GST_DEBUG_OBJECT(replace, "decide_allocation"); return TRUE; } static gboolean gst_replace_propose_allocation (GstVideoEncoder * encoder, GstQuery * query) { GstReplace *replace = GST_REPLACE (encoder); GST_DEBUG_OBJECT(replace, "propose_allocation"); return TRUE; } % end