summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJosep Torra <n770galaxy@gmail.com>2012-07-04 13:47:41 +0200
committerDamien Lespiau <damien.lespiau@intel.com>2012-09-25 18:57:39 +0100
commitc7adcda3fb4dd06e6570d1f42ee3ec08eb39d52a (patch)
tree378e2c6d9f48248f329f7eb3dd4bb78c86ebee15
parent61d54db88bd279e3ef68abcc22faa6ad630bc315 (diff)
downloadclutter-gst-c7adcda3fb4dd06e6570d1f42ee3ec08eb39d52a.tar.gz
autosink: proxy ts-offset property of child sinks
The playbin2 av-offset property requires be able to configure the ts-offset property on the video sink. As we select the proper sink instance on the fly we must take care of that property. (cherry picked from commit 9d1f7ff7a0c940a4748332eb19b27c8d924b8459) Conflicts: clutter-gst/clutter-gst-auto-video-sink.c
-rw-r--r--clutter-gst/clutter-gst-auto-video-sink.c25
-rw-r--r--clutter-gst/clutter-gst-auto-video-sink.h1
2 files changed, 23 insertions, 3 deletions
diff --git a/clutter-gst/clutter-gst-auto-video-sink.c b/clutter-gst/clutter-gst-auto-video-sink.c
index 61d0d1c..a689280 100644
--- a/clutter-gst/clutter-gst-auto-video-sink.c
+++ b/clutter-gst/clutter-gst-auto-video-sink.c
@@ -54,9 +54,12 @@ static GstStaticPadTemplate sink_template_factory =
enum
{
PROP_0,
- PROP_TEXTURE
+ PROP_TEXTURE,
+ PROP_TS_OFFSET
};
+#define DEFAULT_TS_OFFSET 0
+
GST_BOILERPLATE (ClutterGstAutoVideoSink,
clutter_gst_auto_video_sink,
GstBin,
@@ -386,8 +389,8 @@ clutter_gst_auto_video_sink_reconfigure (ClutterGstAutoVideoSink *bin,
/* Now we are ready to add the sink to bin */
bin->child = gst_object_ref (sink);
- g_object_set (G_OBJECT(bin->child), "texture", bin->texture, NULL);
-
+ g_object_set (G_OBJECT(bin->child), "texture", bin->texture,
+ "ts-offset", bin->ts_offset, NULL);
GST_DEBUG_OBJECT (bin, "going to add %" GST_PTR_FORMAT, bin->child);
/* Add our child */
gst_bin_add (GST_BIN (bin), bin->child);
@@ -713,6 +716,13 @@ clutter_gst_auto_video_sink_set_property (GObject *object,
case PROP_TEXTURE:
clutter_gst_auto_video_sink_set_texture (bin, g_value_get_object (value));
break;
+ case PROP_TS_OFFSET:
+ bin->ts_offset = g_value_get_int64 (value);
+ if (bin->child) {
+ g_object_set_property (G_OBJECT (bin->child), pspec->name,
+ value);
+ }
+ break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
@@ -732,6 +742,9 @@ clutter_gst_auto_video_sink_get_property (GObject *object,
case PROP_TEXTURE:
g_value_set_object (value, bin->texture);
break;
+ case PROP_TS_OFFSET:
+ g_value_set_int64 (value, bin->ts_offset);
+ break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
@@ -778,6 +791,11 @@ clutter_gst_auto_video_sink_class_init (ClutterGstAutoVideoSinkClass *klass)
g_object_class_install_property (oclass, PROP_TEXTURE, pspec);
+ g_object_class_install_property (oclass, PROP_TS_OFFSET,
+ g_param_spec_int64 ("ts-offset", "TS Offset",
+ "Timestamp offset in nanoseconds", G_MININT64, G_MAXINT64,
+ DEFAULT_TS_OFFSET, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+
gstelement_class = (GstElementClass *)klass;
gstelement_class->change_state =
GST_DEBUG_FUNCPTR (clutter_gst_auto_video_sink_change_state);
@@ -792,6 +810,7 @@ clutter_gst_auto_video_sink_init (ClutterGstAutoVideoSink *bin,
bin->setup = FALSE;
bin->texture = NULL;
+ bin->ts_offset = DEFAULT_TS_OFFSET;
/* Create a ghost pad with no target at first */
template = gst_static_pad_template_get (
diff --git a/clutter-gst/clutter-gst-auto-video-sink.h b/clutter-gst/clutter-gst-auto-video-sink.h
index 716728f..88cbedb 100644
--- a/clutter-gst/clutter-gst-auto-video-sink.h
+++ b/clutter-gst/clutter-gst-auto-video-sink.h
@@ -98,6 +98,7 @@ struct _ClutterGstAutoVideoSink
gboolean setup;
ClutterTexture *texture;
+ GstClockTimeDiff ts_offset;
GMutex *lock;
};