Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion docs/user-guide/elements/g3dinference.md
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,7 @@ The element operates in-place. It keeps the point cloud payload intact and appen
- `lidar_point_count`
- `frame_id`
- `stream_id`
- `exit_lidarparse_timestamp`
- `exit_source_timestamp`

### Output metadata

Expand Down
4 changes: 2 additions & 2 deletions include/dlstreamer/gst/metadata/g3d_lidar_meta.h
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ typedef struct _LidarMeta {
GstMeta meta;
guint lidar_point_count; /* Number of points in this frame. Each point occupies 4 floats (x, y, z, intensity). */
size_t frame_id; /* Sequential frame identifier from the source stream. */
GstClockTime exit_lidarparse_timestamp; /* Timestamp (GStreamer clock time) when this buffer exits g3dlidarparse. */
GstClockTime exit_source_timestamp; /* Timestamp (GStreamer clock time) when this buffer exits g3dlidarparse. */
GstClockTime
exit_g3dinference_timestamp; /* Timestamp (GStreamer clock time) when this buffer exits g3dinference. */
guint stream_id; /* Stream identifier (group-id from STREAM_START) for multi-stream pipelines. */
Expand All @@ -30,7 +30,7 @@ DLS_EXPORT const GstMetaInfo *lidar_meta_get_info(void);
#define LIDAR_META_INFO (lidar_meta_get_info())

DLS_EXPORT LidarMeta *add_lidar_meta(GstBuffer *buffer, guint lidar_point_count, size_t frame_id,
GstClockTime exit_lidarparse_timestamp, guint stream_id);
GstClockTime exit_source_timestamp, guint stream_id);

G_END_DECLS

Expand Down
10 changes: 5 additions & 5 deletions src/gst/metadata/g3d_lidar_meta.c
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ static gboolean lidar_meta_init(GstMeta *meta, gpointer params, GstBuffer *buffe
LidarMeta *lidar_meta = (LidarMeta *)meta;
lidar_meta->lidar_point_count = 0;
lidar_meta->frame_id = 0;
lidar_meta->exit_lidarparse_timestamp = GST_CLOCK_TIME_NONE;
lidar_meta->exit_source_timestamp = GST_CLOCK_TIME_NONE;
lidar_meta->exit_g3dinference_timestamp = GST_CLOCK_TIME_NONE;
lidar_meta->stream_id = 0;
return TRUE;
Expand All @@ -48,15 +48,15 @@ DLS_EXPORT const GstMetaInfo *lidar_meta_get_info(void) {
}

DLS_EXPORT LidarMeta *add_lidar_meta(GstBuffer *buffer, guint lidar_point_count, size_t frame_id,
GstClockTime exit_lidarparse_timestamp, guint stream_id) {
GstClockTime exit_source_timestamp, guint stream_id) {
if (!buffer) {
GST_WARNING("Cannot add meta to NULL buffer");
return NULL;
}

GST_DEBUG(
"Adding LidarMeta to buffer with lidar_point_count=%u frame_id=%zu stream_id=%u exit_ts=%" GST_TIME_FORMAT,
lidar_point_count, frame_id, stream_id, GST_TIME_ARGS(exit_lidarparse_timestamp));
lidar_point_count, frame_id, stream_id, GST_TIME_ARGS(exit_source_timestamp));

LidarMeta *meta = (LidarMeta *)gst_buffer_add_meta(buffer, LIDAR_META_INFO, NULL);
if (!meta) {
Expand All @@ -66,12 +66,12 @@ DLS_EXPORT LidarMeta *add_lidar_meta(GstBuffer *buffer, guint lidar_point_count,

meta->lidar_point_count = lidar_point_count;
meta->frame_id = frame_id;
meta->exit_lidarparse_timestamp = exit_lidarparse_timestamp;
meta->exit_source_timestamp = exit_source_timestamp;
meta->stream_id = stream_id;

GST_DEBUG(
"LidarMeta added successfully: lidar_point_count=%u, frame_id=%zu, stream_id=%u, exit_ts=%" GST_TIME_FORMAT,
meta->lidar_point_count, meta->frame_id, meta->stream_id, GST_TIME_ARGS(meta->exit_lidarparse_timestamp));
meta->lidar_point_count, meta->frame_id, meta->stream_id, GST_TIME_ARGS(meta->exit_source_timestamp));

return meta;
}
19 changes: 8 additions & 11 deletions src/monolithic/gst/3d_elements/g3dlidarparse/g3dlidarparse.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -412,21 +412,19 @@ static GstFlowReturn gst_g3d_lidar_parse_transform(GstBaseTransform *trans, GstB
}

gst_buffer_remove_all_memory(outbuf);
GstClockTime exit_lidarparse_timestamp = GST_CLOCK_TIME_NONE;
GstClockTime exit_source_timestamp = GST_CLOCK_TIME_NONE;
if (GstClock *clock = gst_element_get_clock(GST_ELEMENT(filter))) {
exit_lidarparse_timestamp = gst_clock_get_time(clock);
GST_DEBUG_OBJECT(filter, "exit_ts from element clock: %" GST_TIME_FORMAT,
GST_TIME_ARGS(exit_lidarparse_timestamp));
exit_source_timestamp = gst_clock_get_time(clock);
GST_DEBUG_OBJECT(filter, "exit_ts from element clock: %" GST_TIME_FORMAT, GST_TIME_ARGS(exit_source_timestamp));
gst_object_unref(clock);
} else {
exit_lidarparse_timestamp = gst_util_get_timestamp();
exit_source_timestamp = gst_util_get_timestamp();
GST_DEBUG_OBJECT(filter, "exit_ts from gst_util_get_timestamp: %" GST_TIME_FORMAT,
GST_TIME_ARGS(exit_lidarparse_timestamp));
GST_TIME_ARGS(exit_source_timestamp));
}

GST_DEBUG_OBJECT(filter, "Add meta frame_id=%zu stream_id=%u exit_ts=%" GST_TIME_FORMAT " n_points=%zu stride=%d",
frame_id, filter->stream_id, GST_TIME_ARGS(exit_lidarparse_timestamp), point_count,
filter->stride);
frame_id, filter->stream_id, GST_TIME_ARGS(exit_source_timestamp), point_count, filter->stride);

if (!float_data.empty()) {
const gsize payload_size = float_data.size() * sizeof(float);
Expand Down Expand Up @@ -484,8 +482,7 @@ static GstFlowReturn gst_g3d_lidar_parse_transform(GstBaseTransform *trans, GstB
const gsize preview_len = std::min<gsize>(count, 5);
std::ostringstream oss;
oss << "lidar_point_count=" << point_count << " frame_id=" << frame_id << " stream_id=" << filter->stream_id
<< " exit_ts=" << exit_lidarparse_timestamp << "ns" << " preview(" << preview_len << "/" << count
<< "):";
<< " exit_ts=" << exit_source_timestamp << "ns" << " preview(" << preview_len << "/" << count << "):";

for (gsize i = 0; i < preview_len; ++i) {
oss << " " << std::fixed << std::setprecision(6) << float_data[i];
Expand All @@ -495,7 +492,7 @@ static GstFlowReturn gst_g3d_lidar_parse_transform(GstBaseTransform *trans, GstB
}
}

LidarMeta *lidar_meta = add_lidar_meta(outbuf, point_count, frame_id, exit_lidarparse_timestamp, filter->stream_id);
LidarMeta *lidar_meta = add_lidar_meta(outbuf, point_count, frame_id, exit_source_timestamp, filter->stream_id);
if (!lidar_meta) {
GST_ERROR_OBJECT(filter, "Failed to add lidar meta to buffer");
g_mutex_unlock(&filter->mutex);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -672,7 +672,7 @@ json get_lidar_frame_data(GstGvaMetaConvert *converter, GstBuffer *buffer, Lidar
{"frame_id", lidar_meta->frame_id},
{"stream_id", lidar_meta->stream_id},
{"point_count", lidar_meta->lidar_point_count},
{"exit_lidarparse_timestamp", lidar_meta->exit_lidarparse_timestamp},
{"exit_source_timestamp", lidar_meta->exit_source_timestamp},
{"exit_g3dinference_timestamp", lidar_meta->exit_g3dinference_timestamp},
});

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -146,8 +146,8 @@ void check_pointpillars_outbuffer(GstBuffer *outbuffer, gpointer user_data) {
meta->message);
ck_assert_msg(lidar_frame["point_count"] == kPointPillarsPointCount, "Unexpected point_count. Message: %s",
meta->message);
ck_assert_msg(lidar_frame["exit_lidarparse_timestamp"] == kPointPillarsLidarParseTs,
"Unexpected exit_lidarparse_timestamp. Message: %s", meta->message);
ck_assert_msg(lidar_frame["exit_source_timestamp"] == kPointPillarsLidarParseTs,
"Unexpected exit_source_timestamp. Message: %s", meta->message);
ck_assert_msg(lidar_frame["exit_g3dinference_timestamp"] == kPointPillarsInferenceTs,
"Unexpected exit_g3dinference_timestamp. Message: %s", meta->message);

Expand Down
Loading