aboutsummaryrefslogtreecommitdiffstats
path: root/recipes-graphics/wayland/weston
diff options
context:
space:
mode:
authorHarunobu Kurokawa <harunobu.kurokawa.dn@renesas.com>2017-06-10 13:30:33 +0900
committerJan-Simon Moeller <jsmoeller@linuxfoundation.org>2017-06-15 09:44:46 +0000
commit20a872eee504c3826e02d153b1087bd4d077a1db (patch)
treeae90369ea5f6ec02d541da06d4f5dbd1b8ffb53b /recipes-graphics/wayland/weston
parent562c0c1bb2ef74ccbfda1bae4f84a61828119674 (diff)
weston: Fix gst-record uses MONOTONIC time for IVI-Cluster system
gst-record plugin uses gettimeofday to adapt gst buffer duration. When WLAN network access internet, system timer is changed by NTP, then the gst plugin system stopped. This patch change to use MONOTONIC timer to detect buffer time frame. -- The patch is same as https://gerrit.automotivelinux.org/gerrit/#/c/9417/ Change-Id: I2761b0f9dc3bed58d8556966acc54f9dc13d0556 Signed-off-by: Harunobu Kurokawa <harunobu.kurokawa.dn@renesas.com>
Diffstat (limited to 'recipes-graphics/wayland/weston')
-rw-r--r--recipes-graphics/wayland/weston/0005-gst-record-switch-to-gettime-function-to-CLOCK_MONOT.patch64
1 files changed, 64 insertions, 0 deletions
diff --git a/recipes-graphics/wayland/weston/0005-gst-record-switch-to-gettime-function-to-CLOCK_MONOT.patch b/recipes-graphics/wayland/weston/0005-gst-record-switch-to-gettime-function-to-CLOCK_MONOT.patch
new file mode 100644
index 000000000..fff96d498
--- /dev/null
+++ b/recipes-graphics/wayland/weston/0005-gst-record-switch-to-gettime-function-to-CLOCK_MONOT.patch
@@ -0,0 +1,64 @@
+From 725eeebe45149c1340d68a24da50b301955146fc Mon Sep 17 00:00:00 2001
+From: Harunobu Kurokawa <harunobu.kurokawa.dn@renesas.com>
+Date: Sat, 10 Jun 2017 11:23:02 +0900
+Subject: [PATCH] gst-record: switch to gettime function to CLOCK_MONOTONIC
+
+When system time is changed (e.g. from NTP) and buffer duration
+is bigger, the gst-record stops. It should use the CLOCK_MONOTONIC time.
+
+This patch is updated from
+https://gerrit.automotivelinux.org/gerrit/#/c/9417/
+
+Signed-off-by: Harunobu Kurokawa <harunobu.kurokawa.dn@renesas.com>
+---
+ src/gst-recorder.c | 14 +++++++++-----
+ 1 file changed, 9 insertions(+), 5 deletions(-)
+
+diff --git a/src/gst-recorder.c b/src/gst-recorder.c
+index 441e294..ed1526d 100644
+--- a/src/gst-recorder.c
++++ b/src/gst-recorder.c
+@@ -102,8 +102,9 @@ struct gst_recorder {
+ /* bus */
+ GstBus *bus;
+ /* timestamp */
++ GstClock *clock;
+ GstClockTime timestamp;
+- uint32_t ts_last_frame;
++ GstClockTime ts_last_frame;
+ /* to be removed */
+ guint callback_tag;
+
+@@ -1036,6 +1037,9 @@ gst_recorder_create(struct gst_recorder_settings *settings)
+ goto err_gst_stop;
+ }
+
++ /* set clock time */
++ r->clock = gst_element_get_clock (GST_ELEMENT_CAST (r->appsrc));
++
+ weston_log("gst_recorder_create done\n");
+
+ return r;
+@@ -1071,15 +1075,15 @@ gst_recorder_destroy(struct gst_recorder *r)
+ static int
+ gst_recorder_set_timestamp(struct gst_recorder *r, GstBuffer *buffer)
+ {
+- uint32_t cur_time = weston_compositor_get_time();
++ GstClockTime cur_time = gst_clock_get_time(r->clock);
+
+ if (r->timestamp == 0) {
+ /* first frame assume around DEFAULT_FPS FPS */
+ GST_BUFFER_DURATION(buffer) = gst_util_uint64_scale_int(1, GST_SECOND, DEFAULT_FPS);
+ } else {
+- uint32_t delta = cur_time - r->ts_last_frame;
+- /* delta in mS */
+- GST_BUFFER_DURATION(buffer) = gst_util_uint64_scale_int(delta, GST_SECOND, 1000);
++ GstClockTime delta = cur_time - r->ts_last_frame;
++ /* delta in nS */
++ GST_BUFFER_DURATION(buffer) = delta;
+ }
+
+ r->timestamp += GST_BUFFER_DURATION(buffer);
+--
+2.9.2
+