diff --git a/src/gst/gstpipewireclock.c b/src/gst/gstpipewireclock.c index 51f4c0209..a51dcd28e 100644 --- a/src/gst/gstpipewireclock.c +++ b/src/gst/gstpipewireclock.c @@ -48,17 +48,19 @@ gst_pipewire_clock_get_internal_time (GstClock * clock) GstPipeWireClock *pclock = (GstPipeWireClock *) clock; GstClockTime result; struct pw_time t; + struct timespec ts; if (pclock->stream == NULL || pw_stream_get_time (pclock->stream, &t) < 0 || t.rate.denom == 0) return pclock->last_time; - GST_DEBUG ("%"PRId64", %d/%d", t.ticks, t.rate.num, t.rate.denom); + result = gst_util_uint64_scale_int (t.ticks, GST_SECOND * t.rate.num, t.rate.denom); + clock_gettime(CLOCK_MONOTONIC, &ts); + result += SPA_TIMESPEC_TO_TIME(&ts) - t.now; - result = gst_util_uint64_scale_int (t.ticks * GST_SECOND, t.rate.num, t.rate.denom); - - GST_DEBUG ("%"PRId64", %d/%d %"PRId64, t.ticks, t.rate.num, t.rate.denom, result); + GST_DEBUG ("%"PRId64", %d/%d %"PRId64" %"PRId64, + t.ticks, t.rate.num, t.rate.denom, t.now, result); return result; }