@@ -207,6 +207,7 @@ int main(int argc, char *argv[]) {
207207 StreamSource source_type;
208208 char stream_name[MAX_STREAM_NAME_LEN + 1 ] = {0 };
209209 GstStateChangeReturn gst_state_change_ret;
210+ gboolean link_success = FALSE ;
210211
211212 int runtime_duration_seconds = DEFAULT_SAMPLE_DURATION_SECONDS;
212213
@@ -267,9 +268,14 @@ int main(int argc, char *argv[]) {
267268 source = gst_element_factory_make (" autovideosrc" , KVS_GST_DEVICE_SOURCE_NAME);
268269 }
269270
270- /* clock overlay */
271+ /* clock overlay (optional) */
271272 clock_overlay = gst_element_factory_make (" clockoverlay" , " clock_overlay" );
272- g_object_set (G_OBJECT (clock_overlay), " time-format" , " %a %B %d, %Y %I:%M:%S %p" , NULL );
273+ if (clock_overlay) {
274+ g_object_set (G_OBJECT (clock_overlay), " time-format" , " %a %B %d, %Y %I:%M:%S %p" , NULL );
275+ } else {
276+ // Ubuntu WSL CI runner does not have the clockoverlay element.
277+ LOG_WARN (" [KVS sample] Clock overlay element not available, will construct gstreamer pipeline without it." );
278+ }
273279
274280 /* video convert */
275281 video_convert = gst_element_factory_make (" videoconvert" , " video_convert" );
@@ -308,7 +314,6 @@ int main(int argc, char *argv[]) {
308314 /* Check that GStreamer elements were all successfully created */
309315 if (!check_element (pipeline, " pipeline" ) ||
310316 !check_element (source, " source" ) ||
311- !check_element (clock_overlay, " clock_overlay" ) ||
312317 !check_element (video_convert, " video_convert" ) ||
313318 !check_element (source_filter, " source_filter" ) ||
314319 !check_element (encoder, " encoder" ) ||
@@ -327,11 +332,20 @@ int main(int argc, char *argv[]) {
327332 gst_object_unref (bus);
328333
329334 // Add elements into the pipeline.
330- gst_bin_add_many (GST_BIN (pipeline),
331- source, clock_overlay, video_convert, source_filter, encoder, sink_filter, kvssink, NULL );
335+ gst_bin_add_many (GST_BIN (pipeline), source, video_convert, source_filter, encoder, sink_filter, kvssink, NULL );
336+ if (clock_overlay) {
337+ gst_bin_add (GST_BIN (pipeline), clock_overlay);
338+ }
332339
333340 // Link the elements together.
334- if (!gst_element_link_many (source, clock_overlay, video_convert, source_filter, encoder, sink_filter, kvssink, NULL )) {
341+ if (clock_overlay) {
342+ link_success = gst_element_link_many (source, clock_overlay, video_convert, source_filter,
343+ encoder, sink_filter, kvssink, NULL );
344+ } else {
345+ link_success = gst_element_link_many (source, video_convert, source_filter,
346+ encoder, sink_filter, kvssink, NULL );
347+ }
348+ if (!link_success) {
335349 LOG_ERROR (" [KVS sample] Elements could not be linked." );
336350 gst_object_unref (pipeline);
337351 return -1 ;
0 commit comments