diff options
author | Josep Torra <n770galaxy@gmail.com> | 2012-07-04 13:47:41 +0200 |
---|---|---|
committer | Damien Lespiau <damien.lespiau@intel.com> | 2012-09-25 18:57:39 +0100 |
commit | c7adcda3fb4dd06e6570d1f42ee3ec08eb39d52a (patch) | |
tree | 378e2c6d9f48248f329f7eb3dd4bb78c86ebee15 | |
parent | 61d54db88bd279e3ef68abcc22faa6ad630bc315 (diff) | |
download | clutter-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.c | 25 | ||||
-rw-r--r-- | clutter-gst/clutter-gst-auto-video-sink.h | 1 |
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; }; |