summaryrefslogtreecommitdiff
path: root/ext/gtk
diff options
context:
space:
mode:
authorNicolas Dufresne <nicolas.dufresne@collabora.com>2015-07-17 13:05:05 -0400
committerNicolas Dufresne <nicolas.dufresne@collabora.com>2015-07-17 15:40:22 -0400
commitd0fd6a0b0ba2925e7d1a228a3f67fae6a5073cad (patch)
treec28dcca7fb520f5890b485b7064d44d9fe7da3f9 /ext/gtk
parent785b7bd8e457a29c3c8caf74b63b382165247c37 (diff)
downloadgstreamer-plugins-bad-d0fd6a0b0ba2925e7d1a228a3f67fae6a5073cad.tar.gz
gtkgstbasewidget: Pass already parsed VideoInfo
As the base sink already parse the caps into VideoInfo it makes sense to pass in VideoInfo to the widget instead. https://bugzilla.gnome.org/show_bug.cgi?id=752441
Diffstat (limited to 'ext/gtk')
-rw-r--r--ext/gtk/gstgtkbasesink.c2
-rw-r--r--ext/gtk/gtkgstbasewidget.c19
-rw-r--r--ext/gtk/gtkgstbasewidget.h3
3 files changed, 10 insertions, 14 deletions
diff --git a/ext/gtk/gstgtkbasesink.c b/ext/gtk/gstgtkbasesink.c
index f6aa195cd..6fd70b022 100644
--- a/ext/gtk/gstgtkbasesink.c
+++ b/ext/gtk/gstgtkbasesink.c
@@ -330,7 +330,7 @@ gst_gtk_base_sink_set_caps (GstBaseSink * bsink, GstCaps * caps)
return FALSE;
}
- if (!gtk_gst_base_widget_set_caps (gtk_sink->widget, caps))
+ if (!gtk_gst_base_widget_set_format (gtk_sink->widget, &gtk_sink->v_info))
return FALSE;
GST_OBJECT_UNLOCK (gtk_sink);
diff --git a/ext/gtk/gtkgstbasewidget.c b/ext/gtk/gtkgstbasewidget.c
index 972541ff7..1fd76b3c4 100644
--- a/ext/gtk/gtkgstbasewidget.c
+++ b/ext/gtk/gtkgstbasewidget.c
@@ -258,22 +258,20 @@ gtk_gst_base_widget_finalize (GObject * object)
}
gboolean
-gtk_gst_base_widget_set_caps (GtkGstBaseWidget * widget, GstCaps * caps)
+gtk_gst_base_widget_set_format (GtkGstBaseWidget * widget,
+ GstVideoInfo * v_info)
{
- GstVideoInfo v_info;
+ GTK_GST_BASE_WIDGET_LOCK (widget);
- if (widget->caps && gst_caps_is_equal_fixed (widget->caps, caps))
+ if (gst_video_info_is_equal (&widget->v_info, v_info)) {
+ GTK_GST_BASE_WIDGET_UNLOCK (widget);
return TRUE;
-
- if (!gst_video_info_from_caps (&v_info, caps))
- return FALSE;
-
- GTK_GST_BASE_WIDGET_LOCK (widget);
+ }
/* FIXME this will cause black frame to be displayed, move this in the
* _queue_resize callback passing over the video info */
- if (!_calculate_par (widget, &v_info)) {
+ if (!_calculate_par (widget, v_info)) {
GTK_GST_BASE_WIDGET_UNLOCK (widget);
return FALSE;
}
@@ -282,8 +280,7 @@ gtk_gst_base_widget_set_caps (GtkGstBaseWidget * widget, GstCaps * caps)
widget->reset (widget);
gst_buffer_replace (&widget->buffer, NULL);
- gst_caps_replace (&widget->caps, caps);
- widget->v_info = v_info;
+ widget->v_info = *v_info;
widget->negotiated = TRUE;
widget->new_buffer = TRUE;
diff --git a/ext/gtk/gtkgstbasewidget.h b/ext/gtk/gtkgstbasewidget.h
index e4242f192..e39f25b7a 100644
--- a/ext/gtk/gtkgstbasewidget.h
+++ b/ext/gtk/gtkgstbasewidget.h
@@ -62,7 +62,6 @@ struct _GtkGstBaseWidget
/*< private >*/
GMutex lock;
- GstCaps *caps;
/* Pending queued idles callback */
guint draw_id;
@@ -86,7 +85,7 @@ void gtk_gst_base_widget_init (GtkGstBaseWidget * wid
void gtk_gst_base_widget_finalize (GObject * object);
/* API */
-gboolean gtk_gst_base_widget_set_caps (GtkGstBaseWidget * widget, GstCaps *caps);
+gboolean gtk_gst_base_widget_set_format (GtkGstBaseWidget * widget, GstVideoInfo *v_info);
void gtk_gst_base_widget_set_buffer (GtkGstBaseWidget * widget, GstBuffer *buffer);
G_END_DECLS