X-Git-Url: http://git.efficios.com/?p=babeltrace.git;a=blobdiff_plain;f=formats%2Fctf%2Fevents.c;h=d14836b07135e25a447e23b68dd4c42e4f5229d6;hp=22623aa52455a425427f61360508c34daaf64ebd;hb=57f3005ee4ea188f0a78edbd172a6bad9a70d3f5;hpb=badea1a2413e25f0b1961770148e28deba8a3a3f diff --git a/formats/ctf/events.c b/formats/ctf/events.c index 22623aa5..d14836b0 100644 --- a/formats/ctf/events.c +++ b/formats/ctf/events.c @@ -317,12 +317,39 @@ error: return -1; } -uint64_t bt_ctf_get_timestamp(struct bt_ctf_event *event) +uint64_t bt_ctf_get_timestamp_raw(struct bt_ctf_event *event) { if (event && event->stream->has_timestamp) return event->stream->timestamp; else - return 0; + return -1ULL; +} + +uint64_t bt_ctf_get_timestamp(struct bt_ctf_event *event) +{ + uint64_t ts_nsec; + struct ctf_trace *trace; + struct trace_collection *tc; + uint64_t tc_offset; + uint64_t timestamp; + + if (!event->stream->has_timestamp) { + return -1ULL; + } + + trace = event->stream->stream_class->trace; + tc = trace->collection; + tc_offset = tc->single_clock_offset_avg; + timestamp = event->stream->timestamp; + if (event->stream->current_clock->freq == 1000000000ULL) { + ts_nsec = timestamp; + } else { + ts_nsec = (uint64_t) ((double) timestamp * 1000000000.0 + / (double) event->stream->current_clock->freq); + } + ts_nsec += tc_offset; + + return ts_nsec; } static void bt_ctf_field_set_error(int error)