summaryrefslogtreecommitdiff
path: root/gst/inter
diff options
context:
space:
mode:
authorTim-Philipp Müller <tim@centricular.com>2015-09-16 00:19:35 +0100
committerTim-Philipp Müller <tim@centricular.com>2015-09-16 17:20:52 +0100
commit0cb160a685b1c5856ffaf372d78ce880b9d579b1 (patch)
tree878c5b04364f5fa5d4f54cc43252e4f63a3b0ee9 /gst/inter
parent86a8ff50c0bba46bfefe6859cda971438625dc91 (diff)
downloadgstreamer-plugins-bad-0cb160a685b1c5856ffaf372d78ce880b9d579b1.tar.gz
intervideosink: render preroll frames as well
Derive from GstVideoSink so that preroll frames will automatically get rendered too, unless the show-preroll-frame property is set to FALSE. Fixes intervideosrc only picking up frames if intervideosink is in PLAYING state. https://bugzilla.gnome.org/show_bug.cgi?id=755049
Diffstat (limited to 'gst/inter')
-rw-r--r--gst/inter/gstintervideosink.c13
-rw-r--r--gst/inter/gstintervideosink.h6
2 files changed, 9 insertions, 10 deletions
diff --git a/gst/inter/gstintervideosink.c b/gst/inter/gstintervideosink.c
index 589150260..aebce28e0 100644
--- a/gst/inter/gstintervideosink.c
+++ b/gst/inter/gstintervideosink.c
@@ -40,9 +40,6 @@
#include "config.h"
#endif
-#include <gst/gst.h>
-#include <gst/base/gstbasesink.h>
-#include <gst/video/video.h>
#include "gstintervideosink.h"
#include <string.h>
@@ -63,7 +60,7 @@ static gboolean gst_inter_video_sink_start (GstBaseSink * sink);
static gboolean gst_inter_video_sink_stop (GstBaseSink * sink);
static gboolean gst_inter_video_sink_set_caps (GstBaseSink * sink,
GstCaps * caps);
-static GstFlowReturn gst_inter_video_sink_render (GstBaseSink * sink,
+static GstFlowReturn gst_inter_video_sink_show_frame (GstVideoSink * sink,
GstBuffer * buffer);
enum
@@ -84,7 +81,7 @@ GST_STATIC_PAD_TEMPLATE ("sink",
/* class initialization */
-G_DEFINE_TYPE (GstInterVideoSink, gst_inter_video_sink, GST_TYPE_BASE_SINK);
+G_DEFINE_TYPE (GstInterVideoSink, gst_inter_video_sink, GST_TYPE_VIDEO_SINK);
static void
gst_inter_video_sink_class_init (GstInterVideoSinkClass * klass)
@@ -92,6 +89,7 @@ gst_inter_video_sink_class_init (GstInterVideoSinkClass * klass)
GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
GstElementClass *element_class = GST_ELEMENT_CLASS (klass);
GstBaseSinkClass *base_sink_class = GST_BASE_SINK_CLASS (klass);
+ GstVideoSinkClass *video_sink_class = GST_VIDEO_SINK_CLASS (klass);
GST_DEBUG_CATEGORY_INIT (gst_inter_video_sink_debug_category,
"intervideosink", 0, "debug category for intervideosink element");
@@ -112,8 +110,9 @@ gst_inter_video_sink_class_init (GstInterVideoSinkClass * klass)
GST_DEBUG_FUNCPTR (gst_inter_video_sink_get_times);
base_sink_class->start = GST_DEBUG_FUNCPTR (gst_inter_video_sink_start);
base_sink_class->stop = GST_DEBUG_FUNCPTR (gst_inter_video_sink_stop);
- base_sink_class->render = GST_DEBUG_FUNCPTR (gst_inter_video_sink_render);
base_sink_class->set_caps = GST_DEBUG_FUNCPTR (gst_inter_video_sink_set_caps);
+ video_sink_class->show_frame =
+ GST_DEBUG_FUNCPTR (gst_inter_video_sink_show_frame);
g_object_class_install_property (gobject_class, PROP_CHANNEL,
g_param_spec_string ("channel", "Channel",
@@ -244,7 +243,7 @@ gst_inter_video_sink_set_caps (GstBaseSink * sink, GstCaps * caps)
}
static GstFlowReturn
-gst_inter_video_sink_render (GstBaseSink * sink, GstBuffer * buffer)
+gst_inter_video_sink_show_frame (GstVideoSink * sink, GstBuffer * buffer)
{
GstInterVideoSink *intervideosink = GST_INTER_VIDEO_SINK (sink);
diff --git a/gst/inter/gstintervideosink.h b/gst/inter/gstintervideosink.h
index e476daabd..096cee242 100644
--- a/gst/inter/gstintervideosink.h
+++ b/gst/inter/gstintervideosink.h
@@ -20,7 +20,7 @@
#ifndef _GST_INTER_VIDEO_SINK_H_
#define _GST_INTER_VIDEO_SINK_H_
-#include <gst/base/gstbasesink.h>
+#include <gst/video/video.h>
#include "gstintersurface.h"
G_BEGIN_DECLS
@@ -36,7 +36,7 @@ typedef struct _GstInterVideoSinkClass GstInterVideoSinkClass;
struct _GstInterVideoSink
{
- GstBaseSink base_intervideosink;
+ GstVideoSink videosink;
GstInterSurface *surface;
char *channel;
@@ -46,7 +46,7 @@ struct _GstInterVideoSink
struct _GstInterVideoSinkClass
{
- GstBaseSinkClass base_intervideosink_class;
+ GstVideoSinkClass videosinkclass;
};
GType gst_inter_video_sink_get_type (void);