diff options
-rw-r--r-- | recipes-graphics/wayland/weston/0005-gst-record-switch-to-gettime-function-to-CLOCK_MONOT.patch | 64 | ||||
-rw-r--r-- | recipes-graphics/wayland/weston_1.11.0.bbappend | 1 |
2 files changed, 65 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 + diff --git a/recipes-graphics/wayland/weston_1.11.0.bbappend b/recipes-graphics/wayland/weston_1.11.0.bbappend index 25cf79162..df7924953 100644 --- a/recipes-graphics/wayland/weston_1.11.0.bbappend +++ b/recipes-graphics/wayland/weston_1.11.0.bbappend @@ -5,4 +5,5 @@ SRC_URI_append_m3ulcb = " \ file://0002-Add-gst-recorder-for-h264-output-streaming.patch \ file://0003-gst-recorder-Use-USERPTR-instead-of-DMABUF-for-VSP-o.patch \ file://0004-gst-record-Specify-bytesused-and-length-of-VSP-input.patch \ + file://0005-gst-record-switch-to-gettime-function-to-CLOCK_MONOT.patch \ " |