diff --git a/testresult/ml-api/capi-machine-learning-inference-1.8.6/c/src/ml-api-inference-pipeline.c.gcov.html b/testresult/ml-api/capi-machine-learning-inference-1.8.6/c/src/ml-api-inference-pipeline.c.gcov.html
index 8d9dead22..baba9897f 100644
--- a/testresult/ml-api/capi-machine-learning-inference-1.8.6/c/src/ml-api-inference-pipeline.c.gcov.html
+++ b/testresult/ml-api/capi-machine-learning-inference-1.8.6/c/src/ml-api-inference-pipeline.c.gcov.html
@@ -4,7 +4,7 @@
- LCOV - ML API 1.8.6-0 gichan-jang/api#2c94b63b2f5ed400eaacdf47332377c3ff29545e - capi-machine-learning-inference-1.8.6/c/src/ml-api-inference-pipeline.c
+ LCOV - ML API 1.8.6-0 nnstreamer/api#48ca203121742beeae4e812d81565013cd585491 - capi-machine-learning-inference-1.8.6/c/src/ml-api-inference-pipeline.c
@@ -28,7 +28,7 @@
Test:
-
ML API 1.8.6-0 gichan-jang/api#2c94b63b2f5ed400eaacdf47332377c3ff29545e
+
ML API 1.8.6-0 nnstreamer/api#48ca203121742beeae4e812d81565013cd585491
Lines:
82.6 %
@@ -37,7 +37,7 @@
Test Date:
-
2024-12-20 05:19:35
+
2024-12-20 05:24:18
Functions:
94.0 %
@@ -315,69 +315,69 @@
253 : * @brief Internal function to get the tensors info from the element caps. 254 : */ 255 : static gboolean
- 256 13014 : get_tensors_info_from_caps (GstCaps * caps, GstTensorsInfo * info,
+ 256 12762 : get_tensors_info_from_caps (GstCaps * caps, GstTensorsInfo * info, 257 : gboolean * is_flexible) 258 : { 259 : GstStructure *s; 260 : GstTensorsConfig config; 261 : guint i, n_caps;
- 262 13014 : gboolean found = FALSE;
+ 262 12762 : gboolean found = FALSE; 263 :
- 264 13014 : n_caps = gst_caps_get_size (caps);
+ 264 12762 : n_caps = gst_caps_get_size (caps); 265 :
- 266 13021 : for (i = 0; i < n_caps; i++) {
- 267 13015 : s = gst_caps_get_structure (caps, i);
- 268 13015 : found = gst_tensors_config_from_structure (&config, s);
+ 266 12769 : for (i = 0; i < n_caps; i++) {
+ 267 12763 : s = gst_caps_get_structure (caps, i);
+ 268 12763 : found = gst_tensors_config_from_structure (&config, s); 269 :
- 270 13015 : if (found) {
- 271 13008 : gst_tensors_info_free (info);
- 272 13008 : gst_tensors_info_copy (info, &config.info);
- 273 13008 : *is_flexible = gst_tensors_config_is_flexible (&config);
+ 270 12763 : if (found) {
+ 271 12756 : gst_tensors_info_free (info);
+ 272 12756 : gst_tensors_info_copy (info, &config.info);
+ 273 12756 : *is_flexible = gst_tensors_config_is_flexible (&config); 274 : } 275 :
- 276 13015 : gst_tensors_config_free (&config);
- 277 13015 : if (found)
- 278 13008 : break;
+ 276 12763 : gst_tensors_config_free (&config);
+ 277 12763 : if (found)
+ 278 12756 : break; 279 : } 280 :
- 281 13014 : return found;
+ 281 12762 : return found; 282 : } 283 : 284 : /** 285 : * @brief Handle a sink element for registered ml_pipeline_sink_cb 286 : */ 287 : static void
- 288 6540 : cb_sink_event (GstElement * e, GstBuffer * b, gpointer user_data)
+ 288 6410 : cb_sink_event (GstElement * e, GstBuffer * b, gpointer user_data) 289 : {
- 290 6540 : ml_pipeline_element *elem = user_data;
+ 290 6410 : ml_pipeline_element *elem = user_data; 291 : 292 : /** @todo CRITICAL if the pipeline is being killed, don't proceed! */ 293 : GstMemory *mem[ML_TENSOR_SIZE_LIMIT]; 294 : GstMapInfo map[ML_TENSOR_SIZE_LIMIT]; 295 : guint i, num_tensors; 296 : GList *l;
- 297 6540 : ml_tensors_data_s *_data = NULL;
+ 297 6410 : ml_tensors_data_s *_data = NULL; 298 : GstTensorsInfo gst_info; 299 : int status; 300 :
- 301 6540 : gst_tensors_info_init (&gst_info);
- 302 6540 : gst_info.num_tensors = num_tensors = gst_tensor_buffer_get_count (b);
+ 301 6410 : gst_tensors_info_init (&gst_info);
+ 302 6410 : gst_info.num_tensors = num_tensors = gst_tensor_buffer_get_count (b); 303 : 304 : /* Set tensor data. The handle for tensors-info in data should be added. */ 305 : status =
- 306 6540 : _ml_tensors_data_create_no_alloc (NULL, (ml_tensors_data_h *) & _data);
- 307 6540 : if (status != ML_ERROR_NONE) {
+ 306 6410 : _ml_tensors_data_create_no_alloc (NULL, (ml_tensors_data_h *) & _data);
+ 307 6410 : if (status != ML_ERROR_NONE) { 308 0 : _ml_loge (_ml_detail 309 : ("Failed to allocate memory for tensors data in sink callback, which is registered by ml_pipeline_sink_register ()."));
- 310 6540 : return;
+ 310 6410 : return; 311 : } 312 :
- 313 6540 : g_mutex_lock (&elem->lock);
+ 313 6410 : g_mutex_lock (&elem->lock); 314 :
- 315 6540 : _data->num_tensors = num_tensors;
- 316 13557 : for (i = 0; i < num_tensors; i++) {
- 317 7017 : mem[i] = gst_tensor_buffer_get_nth_memory (b, i);
- 318 7017 : if (!gst_memory_map (mem[i], &map[i], GST_MAP_READ)) {
+ 315 6410 : _data->num_tensors = num_tensors;
+ 316 13297 : for (i = 0; i < num_tensors; i++) {
+ 317 6887 : mem[i] = gst_tensor_buffer_get_nth_memory (b, i);
+ 318 6887 : if (!gst_memory_map (mem[i], &map[i], GST_MAP_READ)) { 319 0 : _ml_loge (_ml_detail 320 : ("Failed to map the output in sink '%s' callback, which is registered by ml_pipeline_sink_register ()", 321 : elem->name));
@@ -386,12 +386,12 @@
324 0 : goto error; 325 : } 326 :
- 327 7017 : _data->tensors[i].data = map[i].data;
- 328 7017 : _data->tensors[i].size = map[i].size;
+ 327 6887 : _data->tensors[i].data = map[i].data;
+ 328 6887 : _data->tensors[i].size = map[i].size; 329 : } 330 : 331 : /** @todo This assumes that padcap is static */
- 332 6540 : if (elem->sink == NULL) {
+ 332 6410 : if (elem->sink == NULL) { 333 28 : gboolean found = FALSE; 334 28 : gboolean flexible = FALSE; 335 :
@@ -423,7 +423,7 @@
361 : } 362 : 363 : /* Prepare output and set data. */
- 364 6540 : if (elem->is_flexible_tensor) {
+ 364 6410 : if (elem->is_flexible_tensor) { 365 : GstTensorMetaInfo meta; 366 : gsize hsize; 367 :
@@ -439,10 +439,10 @@
377 9 : _data->tensors[i].size = map[i].size - hsize; 378 : } 379 : } else {
- 380 6537 : gst_tensors_info_copy (&gst_info, &elem->tensors_info);
+ 380 6407 : gst_tensors_info_copy (&gst_info, &elem->tensors_info); 381 : 382 : /* Compare output info and buffer if gst-buffer is not flexible. */
- 383 6537 : if (gst_info.num_tensors != num_tensors) {
+ 383 6407 : if (gst_info.num_tensors != num_tensors) { 384 0 : _ml_loge (_ml_detail 385 : ("The sink event of [%s] cannot be handled because the number of tensors mismatches.", 386 : elem->name));
@@ -452,15 +452,15 @@
390 0 : goto error; 391 : } 392 :
- 393 13545 : for (i = 0; i < num_tensors; i++) {
- 394 7008 : size_t sz = gst_tensors_info_get_size (&gst_info, i);
+ 393 13285 : for (i = 0; i < num_tensors; i++) {
+ 394 6878 : size_t sz = gst_tensors_info_get_size (&gst_info, i); 395 : 396 : /* Not configured, yet. */
- 397 7008 : if (sz == 0)
+ 397 6878 : if (sz == 0) 398 0 : _ml_loge (_ml_detail 399 : ("The caps for sink(%s) is not configured.", elem->name)); 400 :
- 401 7008 : if (sz != map[i].size) {
+ 401 6878 : if (sz != map[i].size) { 402 0 : _ml_loge (_ml_detail 403 : ("The sink event of [%s] cannot be handled because the tensor dimension mismatches.", 404 : elem->name));
@@ -473,35 +473,35 @@
411 : } 412 : 413 : /* Create new output info, data handle should be updated here. */
- 414 6540 : _ml_tensors_info_create_from_gst (&_data->info, &gst_info);
+ 414 6410 : _ml_tensors_info_create_from_gst (&_data->info, &gst_info); 415 : 416 : /* Iterate e->handles, pass the data to them */
- 417 13086 : for (l = elem->handles; l != NULL; l = l->next) {
+ 417 12826 : for (l = elem->handles; l != NULL; l = l->next) { 418 : ml_pipeline_sink_cb callback;
- 419 6546 : ml_pipeline_common_elem *sink = l->data;
- 420 6546 : if (sink->callback_info == NULL)
+ 419 6416 : ml_pipeline_common_elem *sink = l->data;
+ 420 6416 : if (sink->callback_info == NULL) 421 3 : continue; 422 :
- 423 6543 : callback = sink->callback_info->sink_cb;
- 424 6543 : if (callback)
- 425 6543 : callback (_data, _data->info, sink->callback_info->sink_pdata);
+ 423 6413 : callback = sink->callback_info->sink_cb;
+ 424 6413 : if (callback)
+ 425 6413 : callback (_data, _data->info, sink->callback_info->sink_pdata); 426 : 427 : /** @todo Measure time. Warn if it takes long. Kill if it takes too long. */ 428 : } 429 :
- 430 6540 : error:
- 431 6540 : g_mutex_unlock (&elem->lock);
+ 430 6410 : error:
+ 431 6410 : g_mutex_unlock (&elem->lock); 432 :
- 433 13557 : for (i = 0; i < num_tensors; i++) {
- 434 7017 : gst_memory_unmap (mem[i], &map[i]);
- 435 7017 : gst_memory_unref (mem[i]);
+ 433 13297 : for (i = 0; i < num_tensors; i++) {
+ 434 6887 : gst_memory_unmap (mem[i], &map[i]);
+ 435 6887 : gst_memory_unref (mem[i]); 436 : } 437 :
- 438 6540 : _ml_tensors_data_destroy_internal (_data, FALSE);
- 439 6540 : _data = NULL;
+ 438 6410 : _ml_tensors_data_destroy_internal (_data, FALSE);
+ 439 6410 : _data = NULL; 440 :
- 441 6540 : gst_tensors_info_free (&gst_info);
- 442 6540 : return;
+ 441 6410 : gst_tensors_info_free (&gst_info);
+ 442 6410 : return; 443 : } 444 : 445 : /**
@@ -527,16 +527,16 @@
465 : * @brief Callback for bus message. 466 : */ 467 : static void
- 468 5406 : cb_bus_sync_message (GstBus * bus, GstMessage * message, gpointer user_data)
+ 468 5405 : cb_bus_sync_message (GstBus * bus, GstMessage * message, gpointer user_data) 469 : { 470 : ml_pipeline *pipe_h; 471 :
- 472 5406 : pipe_h = (ml_pipeline *) user_data;
+ 472 5405 : pipe_h = (ml_pipeline *) user_data; 473 :
- 474 5406 : if (pipe_h == NULL)
+ 474 5405 : if (pipe_h == NULL) 475 0 : return; 476 :
- 477 5406 : switch (GST_MESSAGE_TYPE (message)) {
+ 477 5405 : switch (GST_MESSAGE_TYPE (message)) { 478 7 : case GST_MESSAGE_EOS: 479 7 : pipe_h->isEOS = TRUE; 480 7 : break;
@@ -556,8 +556,8 @@
494 : } 495 : } 496 4390 : break;
- 497 1009 : default:
- 498 1009 : break;
+ 497 1008 : default:
+ 498 1008 : break; 499 : } 500 : } 501 :
@@ -1559,29 +1559,29 @@
1497 : * @brief Parse tensors info of src element. 1498 : */ 1499 : static int
- 1500 12986 : ml_pipeline_src_parse_tensors_info (ml_pipeline_element * elem)
+ 1500 12734 : ml_pipeline_src_parse_tensors_info (ml_pipeline_element * elem) 1501 : {
- 1502 12986 : GstCaps *caps = NULL;
- 1503 12986 : gboolean found = FALSE, flexible = FALSE;
+ 1502 12734 : GstCaps *caps = NULL;
+ 1503 12734 : gboolean found = FALSE, flexible = FALSE; 1504 :
- 1505 12986 : if (elem->src == NULL) {
+ 1505 12734 : if (elem->src == NULL) { 1506 41 : elem->src = gst_element_get_static_pad (elem->element, "src"); 1507 : } 1508 :
- 1509 12986 : if (elem->src == NULL) {
+ 1509 12734 : if (elem->src == NULL) { 1510 0 : _ml_error_report 1511 : ("Failed to get the src pad of the element[%s]. The designated source element does not have available src pad? For the detail, please check the GStreamer log messages.", 1512 : elem->name);
- 1513 12986 : return ML_ERROR_STREAMS_PIPE;
+ 1513 12734 : return ML_ERROR_STREAMS_PIPE; 1514 : } 1515 : 1516 : /* If caps is given, use it. e.g. Use cap "image/png" when the pipeline is */ 1517 : /* given as "appsrc caps=image/png ! pngdec ! ... " */
- 1518 12986 : caps = gst_pad_get_current_caps (elem->src);
- 1519 12986 : if (!caps)
- 1520 12922 : caps = gst_pad_get_allowed_caps (elem->src);
+ 1518 12734 : caps = gst_pad_get_current_caps (elem->src);
+ 1519 12734 : if (!caps)
+ 1520 12670 : caps = gst_pad_get_allowed_caps (elem->src); 1521 :
- 1522 12986 : if (!caps) {
+ 1522 12734 : if (!caps) { 1523 0 : _ml_logw 1524 : ("Cannot find caps. The pipeline is not yet negotiated for src element [%s].", 1525 : elem->name);
@@ -1590,10 +1590,10 @@
1528 0 : return ML_ERROR_TRY_AGAIN; 1529 : } 1530 :
- 1531 12986 : found = get_tensors_info_from_caps (caps, &elem->tensors_info, &flexible);
+ 1531 12734 : found = get_tensors_info_from_caps (caps, &elem->tensors_info, &flexible); 1532 :
- 1533 12986 : if (found) {
- 1534 12980 : elem->is_flexible_tensor = flexible;
+ 1533 12734 : if (found) {
+ 1534 12728 : elem->is_flexible_tensor = flexible; 1535 : } else { 1536 6 : if (gst_caps_is_fixed (caps)) { 1537 5 : GstStructure *st = gst_caps_get_structure (caps, 0);
@@ -1601,8 +1601,8 @@
1539 : } 1540 : } 1541 :
- 1542 12986 : gst_caps_unref (caps);
- 1543 12986 : return ML_ERROR_NONE;
+ 1542 12734 : gst_caps_unref (caps);
+ 1543 12734 : return ML_ERROR_NONE; 1544 : } 1545 : 1546 : /**
@@ -1698,7 +1698,7 @@
1636 : * @brief Push a data frame to a src (more info in nnstreamer.h) 1637 : */ 1638 : int
- 1639 6514 : ml_pipeline_src_input_data (ml_pipeline_src_h h, ml_tensors_data_h data,
+ 1639 6388 : ml_pipeline_src_input_data (ml_pipeline_src_h h, ml_tensors_data_h data, 1640 : ml_pipeline_buf_policy_e policy) 1641 : { 1642 : GstBuffer *buffer;
@@ -1710,18 +1710,18 @@
1648 : ml_tensors_data_s *_data; 1649 : unsigned int i; 1650 :
- 1651 13028 : handle_init (src, h);
+ 1651 12776 : handle_init (src, h); 1652 :
- 1653 6514 : _data = (ml_tensors_data_s *) data;
- 1654 6514 : if (!_data) {
+ 1653 6388 : _data = (ml_tensors_data_s *) data;
+ 1654 6388 : if (!_data) { 1655 1 : _ml_error_report 1656 : ("The given parameter, data (ml_tensors_data_h), is NULL. It should be a valid ml_tensor_data_h instance, which is usually created by ml_tensors_data_create()."); 1657 1 : ret = ML_ERROR_INVALID_PARAMETER; 1658 1 : goto unlock_return; 1659 : }
- 1660 6513 : G_LOCK_UNLESS_NOLOCK (*_data);
+ 1660 6387 : G_LOCK_UNLESS_NOLOCK (*_data); 1661 :
- 1662 6513 : if (_data->num_tensors < 1 || _data->num_tensors > ML_TENSOR_SIZE_LIMIT) {
+ 1662 6387 : if (_data->num_tensors < 1 || _data->num_tensors > ML_TENSOR_SIZE_LIMIT) { 1663 0 : _ml_error_report 1664 : ("The number of tensors of the given data (ml_tensors_data_h) is invalid. The number of tensors of data is %u. It should be between 1 and %u.", 1665 : _data->num_tensors, ML_TENSOR_SIZE_LIMIT);
@@ -1729,9 +1729,9 @@
1667 0 : goto dont_destroy_data; 1668 : } 1669 :
- 1670 6513 : ret = ml_pipeline_src_parse_tensors_info (elem);
+ 1670 6387 : ret = ml_pipeline_src_parse_tensors_info (elem); 1671 :
- 1672 6513 : if (ret != ML_ERROR_NONE) {
+ 1672 6387 : if (ret != ML_ERROR_NONE) { 1673 0 : if (ret == ML_ERROR_TRY_AGAIN) 1674 0 : _ml_error_report_continue 1675 : ("The pipeline is not ready to accept input streams. The input is ignored.");
@@ -1741,8 +1741,8 @@
1679 0 : goto dont_destroy_data; 1680 : } 1681 :
- 1682 6513 : if (!elem->is_media_stream && !elem->is_flexible_tensor) {
- 1683 6506 : if (elem->tensors_info.num_tensors != _data->num_tensors) {
+ 1682 6387 : if (!elem->is_media_stream && !elem->is_flexible_tensor) {
+ 1683 6380 : if (elem->tensors_info.num_tensors != _data->num_tensors) { 1684 0 : _ml_error_report 1685 : ("The src push of [%s] cannot be handled because the number of tensors in a frame mismatches. %u != %u", 1686 : elem->name, elem->tensors_info.num_tensors, _data->num_tensors);
@@ -1751,10 +1751,10 @@
1689 0 : goto dont_destroy_data; 1690 : } 1691 :
- 1692 13165 : for (i = 0; i < _data->num_tensors; i++) {
- 1693 6661 : size_t sz = gst_tensors_info_get_size (&elem->tensors_info, i);
+ 1692 12913 : for (i = 0; i < _data->num_tensors; i++) {
+ 1693 6535 : size_t sz = gst_tensors_info_get_size (&elem->tensors_info, i); 1694 :
- 1695 6661 : if (sz != _data->tensors[i].size) {
+ 1695 6535 : if (sz != _data->tensors[i].size) { 1696 2 : _ml_error_report 1697 : ("The given input tensor size (%d'th, %zu bytes) mismatches the source pad (%zu bytes)", 1698 : i, _data->tensors[i].size, sz);
@@ -1766,21 +1766,21 @@
1704 : } 1705 : 1706 : /* Create buffer to be pushed from buf[] */
- 1707 6511 : buffer = gst_buffer_new ();
- 1708 6511 : _ml_tensors_info_copy_from_ml (&gst_info, _data->info);
+ 1707 6385 : buffer = gst_buffer_new ();
+ 1708 6385 : _ml_tensors_info_copy_from_ml (&gst_info, _data->info); 1709 :
- 1710 13183 : for (i = 0; i < _data->num_tensors; i++) {
+ 1710 12931 : for (i = 0; i < _data->num_tensors; i++) { 1711 : GstTensorInfo *_gst_tensor_info =
- 1712 6672 : gst_tensors_info_get_nth_info (&gst_info, i);
- 1713 6672 : mem_data = _data->tensors[i].data;
- 1714 6672 : mem_size = _data->tensors[i].size;
+ 1712 6546 : gst_tensors_info_get_nth_info (&gst_info, i);
+ 1713 6546 : mem_data = _data->tensors[i].data;
+ 1714 6546 : mem_size = _data->tensors[i].size; 1715 :
- 1716 6672 : mem = tmp = gst_memory_new_wrapped (GST_MEMORY_FLAG_READONLY,
+ 1716 6546 : mem = tmp = gst_memory_new_wrapped (GST_MEMORY_FLAG_READONLY, 1717 : mem_data, mem_size, 0, mem_size, mem_data, 1718 : (policy == ML_PIPELINE_BUF_POLICY_AUTO_FREE) ? g_free : NULL); 1719 : 1720 : /* flex tensor, append header. */
- 1721 6672 : if (elem->is_flexible_tensor) {
+ 1721 6546 : if (elem->is_flexible_tensor) { 1722 : GstTensorMetaInfo meta; 1723 : 1724 9 : gst_tensor_info_convert_to_meta (_gst_tensor_info, &meta);
@@ -1789,76 +1789,76 @@
1727 9 : gst_memory_unref (tmp); 1728 : } 1729 :
- 1730 6672 : gst_tensor_buffer_append_memory (buffer, mem, _gst_tensor_info);
+ 1730 6546 : gst_tensor_buffer_append_memory (buffer, mem, _gst_tensor_info); 1731 : /** @todo Verify that gst_buffer_append lists tensors/gstmem in the correct order */ 1732 : } 1733 :
- 1734 6511 : gst_tensors_info_free (&gst_info);
+ 1734 6385 : gst_tensors_info_free (&gst_info); 1735 : 1736 : /* Unlock if it's not auto-free. We do not know when it'll be freed. */
- 1737 6511 : if (policy != ML_PIPELINE_BUF_POLICY_AUTO_FREE)
+ 1737 6385 : if (policy != ML_PIPELINE_BUF_POLICY_AUTO_FREE) 1738 55 : G_UNLOCK_UNLESS_NOLOCK (*_data); 1739 : 1740 : /* Push the data! */
- 1741 6511 : gret = gst_app_src_push_buffer (GST_APP_SRC (elem->element), buffer);
+ 1741 6385 : gret = gst_app_src_push_buffer (GST_APP_SRC (elem->element), buffer); 1742 : 1743 : /* Free data ptr if buffer policy is auto-free */
- 1744 6511 : if (policy == ML_PIPELINE_BUF_POLICY_AUTO_FREE) {
- 1745 6456 : G_UNLOCK_UNLESS_NOLOCK (*_data);
- 1746 6456 : _ml_tensors_data_destroy_internal (_data, FALSE);
- 1747 6456 : _data = NULL;
+ 1744 6385 : if (policy == ML_PIPELINE_BUF_POLICY_AUTO_FREE) {
+ 1745 6330 : G_UNLOCK_UNLESS_NOLOCK (*_data);
+ 1746 6330 : _ml_tensors_data_destroy_internal (_data, FALSE);
+ 1747 6330 : _data = NULL; 1748 : } 1749 :
- 1750 6511 : if (gret == GST_FLOW_FLUSHING) {
+ 1750 6385 : if (gret == GST_FLOW_FLUSHING) { 1751 0 : _ml_logw 1752 : ("The pipeline is not in PAUSED/PLAYING. The input may be ignored."); 1753 0 : ret = ML_ERROR_TRY_AGAIN;
- 1754 6511 : } else if (gret == GST_FLOW_EOS) {
+ 1754 6385 : } else if (gret == GST_FLOW_EOS) { 1755 0 : _ml_logw ("THe pipeline is in EOS state. The input is ignored."); 1756 0 : ret = ML_ERROR_STREAMS_PIPE; 1757 : } 1758 :
- 1759 6511 : goto unlock_return;
+ 1759 6385 : goto unlock_return; 1760 : 1761 2 : dont_destroy_data: 1762 2 : G_UNLOCK_UNLESS_NOLOCK (*_data); 1763 :
- 1764 6514 : handle_exit (h);
+ 1764 6388 : handle_exit (h); 1765 : } 1766 : 1767 : /** 1768 : * @brief Internal function to fetch ml_pipeline_src_callbacks_s pointer 1769 : */ 1770 : static ml_pipeline_src_callbacks_s *
- 1771 6426 : get_app_src_callback (ml_pipeline_common_elem * src_h, void **data)
+ 1771 6300 : get_app_src_callback (ml_pipeline_common_elem * src_h, void **data) 1772 : {
- 1773 6426 : ml_pipeline_src_callbacks_s *src_cb = NULL;
+ 1773 6300 : ml_pipeline_src_callbacks_s *src_cb = NULL; 1774 :
- 1775 6426 : if (src_h->callback_info) {
- 1776 6426 : src_cb = &src_h->callback_info->src_cb;
- 1777 6426 : *data = src_h->callback_info->src_pdata;
+ 1775 6300 : if (src_h->callback_info) {
+ 1776 6300 : src_cb = &src_h->callback_info->src_cb;
+ 1777 6300 : *data = src_h->callback_info->src_pdata; 1778 : } 1779 :
- 1780 6426 : return src_cb;
+ 1780 6300 : return src_cb; 1781 : } 1782 : 1783 : /** 1784 : * @brief Internal function for appsrc callback - need_data. 1785 : */ 1786 : static void
- 1787 6426 : _pipe_src_cb_need_data (GstAppSrc * src, guint length, gpointer user_data)
+ 1787 6300 : _pipe_src_cb_need_data (GstAppSrc * src, guint length, gpointer user_data) 1788 : { 1789 : ml_pipeline_common_elem *src_h;
- 1790 6426 : ml_pipeline_src_callbacks_s *src_cb = NULL;
- 1791 6426 : void *pdata = NULL;
+ 1790 6300 : ml_pipeline_src_callbacks_s *src_cb = NULL;
+ 1791 6300 : void *pdata = NULL; 1792 :
- 1793 6426 : src_h = (ml_pipeline_common_elem *) user_data;
- 1794 6426 : if (!src_h)
+ 1793 6300 : src_h = (ml_pipeline_common_elem *) user_data;
+ 1794 6300 : if (!src_h) 1795 0 : return; 1796 :
- 1797 6426 : src_cb = get_app_src_callback (src_h, &pdata);
- 1798 6426 : if (src_cb && src_cb->need_data)
- 1799 6426 : src_cb->need_data (src_h, length, pdata);
+ 1797 6300 : src_cb = get_app_src_callback (src_h, &pdata);
+ 1798 6300 : if (src_cb && src_cb->need_data)
+ 1799 6300 : src_cb->need_data (src_h, length, pdata); 1800 : } 1801 : 1802 : /**
@@ -1944,27 +1944,27 @@
1882 : * @brief Gets a handle for the tensors metadata of given src node. 1883 : */ 1884 : int
- 1885 6430 : ml_pipeline_src_get_tensors_info (ml_pipeline_src_h h, ml_tensors_info_h * info)
+ 1885 6304 : ml_pipeline_src_get_tensors_info (ml_pipeline_src_h h, ml_tensors_info_h * info) 1886 : {
- 1887 6430 : handle_init (src, h);
+ 1887 6304 : handle_init (src, h); 1888 :
- 1889 6430 : if (info == NULL) {
+ 1889 6304 : if (info == NULL) { 1890 0 : _ml_error_report 1891 : ("The parameter, info (ml_tensors_info_h *), is NULL. It should be a valid pointer to a ml_tensors_info_h instance, which is usually created by ml_tensors_info_create()."); 1892 0 : ret = ML_ERROR_INVALID_PARAMETER; 1893 0 : goto unlock_return; 1894 : } 1895 :
- 1896 6430 : ret = ml_pipeline_src_parse_tensors_info (elem);
+ 1896 6304 : ret = ml_pipeline_src_parse_tensors_info (elem); 1897 :
- 1898 6430 : if (ret == ML_ERROR_NONE) {
- 1899 6430 : ret = _ml_tensors_info_create_from_gst (info, &elem->tensors_info);
+ 1898 6304 : if (ret == ML_ERROR_NONE) {
+ 1899 6304 : ret = _ml_tensors_info_create_from_gst (info, &elem->tensors_info); 1900 : } else { 1901 0 : _ml_error_report_continue 1902 : ("ml_pipeline_src_parse_tensors_info () has returned error; it cannot fetch input tensor info (metadata of input stream) for the given ml_pipeline_src_h handle (h). ml_pipeline_src_get_tensors_info () cannot continue."); 1903 : } 1904 :
- 1905 6430 : handle_exit (h);
+ 1905 6304 : handle_exit (h); 1906 : } 1907 : 1908 : /****************************************************
diff --git a/testresult/ml-api/capi-machine-learning-inference-1.8.6/c/src/ml-api-inference-single.c.func-c.html b/testresult/ml-api/capi-machine-learning-inference-1.8.6/c/src/ml-api-inference-single.c.func-c.html
index c1ff03181..0527de067 100644
--- a/testresult/ml-api/capi-machine-learning-inference-1.8.6/c/src/ml-api-inference-single.c.func-c.html
+++ b/testresult/ml-api/capi-machine-learning-inference-1.8.6/c/src/ml-api-inference-single.c.func-c.html
@@ -4,7 +4,7 @@
- LCOV - ML API 1.8.6-0 gichan-jang/api#2c94b63b2f5ed400eaacdf47332377c3ff29545e - capi-machine-learning-inference-1.8.6/c/src/ml-api-inference-single.c - functions
+ LCOV - ML API 1.8.6-0 nnstreamer/api#48ca203121742beeae4e812d81565013cd585491 - capi-machine-learning-inference-1.8.6/c/src/ml-api-inference-single.c - functions
@@ -28,7 +28,7 @@
Test:
-
ML API 1.8.6-0 gichan-jang/api#2c94b63b2f5ed400eaacdf47332377c3ff29545e
+
ML API 1.8.6-0 nnstreamer/api#48ca203121742beeae4e812d81565013cd585491
Lines:
75.1 %
@@ -37,7 +37,7 @@
Test Date:
-
2024-12-20 05:19:35
+
2024-12-20 05:24:18
Functions:
92.3 %
diff --git a/testresult/ml-api/capi-machine-learning-inference-1.8.6/c/src/ml-api-inference-single.c.func.html b/testresult/ml-api/capi-machine-learning-inference-1.8.6/c/src/ml-api-inference-single.c.func.html
index 6470410e0..42f5604cc 100644
--- a/testresult/ml-api/capi-machine-learning-inference-1.8.6/c/src/ml-api-inference-single.c.func.html
+++ b/testresult/ml-api/capi-machine-learning-inference-1.8.6/c/src/ml-api-inference-single.c.func.html
@@ -4,7 +4,7 @@
- LCOV - ML API 1.8.6-0 gichan-jang/api#2c94b63b2f5ed400eaacdf47332377c3ff29545e - capi-machine-learning-inference-1.8.6/c/src/ml-api-inference-single.c - functions
+ LCOV - ML API 1.8.6-0 nnstreamer/api#48ca203121742beeae4e812d81565013cd585491 - capi-machine-learning-inference-1.8.6/c/src/ml-api-inference-single.c - functions
@@ -28,7 +28,7 @@
Test:
-
ML API 1.8.6-0 gichan-jang/api#2c94b63b2f5ed400eaacdf47332377c3ff29545e
+
ML API 1.8.6-0 nnstreamer/api#48ca203121742beeae4e812d81565013cd585491
Lines:
75.1 %
@@ -37,7 +37,7 @@
Test Date:
-
2024-12-20 05:19:35
+
2024-12-20 05:24:18
Functions:
92.3 %
diff --git a/testresult/ml-api/capi-machine-learning-inference-1.8.6/c/src/ml-api-inference-single.c.gcov.html b/testresult/ml-api/capi-machine-learning-inference-1.8.6/c/src/ml-api-inference-single.c.gcov.html
index b416ff801..958ca491d 100644
--- a/testresult/ml-api/capi-machine-learning-inference-1.8.6/c/src/ml-api-inference-single.c.gcov.html
+++ b/testresult/ml-api/capi-machine-learning-inference-1.8.6/c/src/ml-api-inference-single.c.gcov.html
@@ -4,7 +4,7 @@
- LCOV - ML API 1.8.6-0 gichan-jang/api#2c94b63b2f5ed400eaacdf47332377c3ff29545e - capi-machine-learning-inference-1.8.6/c/src/ml-api-inference-single.c
+ LCOV - ML API 1.8.6-0 nnstreamer/api#48ca203121742beeae4e812d81565013cd585491 - capi-machine-learning-inference-1.8.6/c/src/ml-api-inference-single.c
@@ -28,7 +28,7 @@
Test:
-
ML API 1.8.6-0 gichan-jang/api#2c94b63b2f5ed400eaacdf47332377c3ff29545e
+
ML API 1.8.6-0 nnstreamer/api#48ca203121742beeae4e812d81565013cd585491
Lines:
75.1 %
@@ -37,7 +37,7 @@
Test Date:
-
2024-12-20 05:19:35
+
2024-12-20 05:24:18
Functions:
92.3 %
@@ -1298,10 +1298,10 @@
1236 80 : ML_SINGLE_HANDLE_UNLOCK (single_h); 1237 : 1238 : /** Wait until invoke process is finished */
- 1239 1110 : while (invoking) {
- 1240 1030 : _ml_logd ("Wait 1 ms until invoke is finished and close the handle.");
- 1241 1030 : g_usleep (1000);
- 1242 1030 : invoking = single_h->invoking;
+ 1239 1161 : while (invoking) {
+ 1240 1081 : _ml_logd ("Wait 1 ms until invoke is finished and close the handle.");
+ 1241 1081 : g_usleep (1000);
+ 1242 1081 : invoking = single_h->invoking; 1243 : /** 1244 : * single_h->invoking is the only protected value here and we are 1245 : * doing a read-only operation and do not need to project its value
diff --git a/testresult/ml-api/capi-machine-learning-inference-1.8.6/c/src/ml-api-service-agent-client.c.func-c.html b/testresult/ml-api/capi-machine-learning-inference-1.8.6/c/src/ml-api-service-agent-client.c.func-c.html
index f3e834c8d..5ffa33645 100644
--- a/testresult/ml-api/capi-machine-learning-inference-1.8.6/c/src/ml-api-service-agent-client.c.func-c.html
+++ b/testresult/ml-api/capi-machine-learning-inference-1.8.6/c/src/ml-api-service-agent-client.c.func-c.html
@@ -4,7 +4,7 @@
- LCOV - ML API 1.8.6-0 gichan-jang/api#2c94b63b2f5ed400eaacdf47332377c3ff29545e - capi-machine-learning-inference-1.8.6/c/src/ml-api-service-agent-client.c - functions
+ LCOV - ML API 1.8.6-0 nnstreamer/api#48ca203121742beeae4e812d81565013cd585491 - capi-machine-learning-inference-1.8.6/c/src/ml-api-service-agent-client.c - functions
@@ -28,7 +28,7 @@
Test:
-
ML API 1.8.6-0 gichan-jang/api#2c94b63b2f5ed400eaacdf47332377c3ff29545e
+
ML API 1.8.6-0 nnstreamer/api#48ca203121742beeae4e812d81565013cd585491
Lines:
88.0 %
@@ -37,7 +37,7 @@
Test Date:
-
2024-12-20 05:19:35
+
2024-12-20 05:24:18
Functions:
100.0 %
diff --git a/testresult/ml-api/capi-machine-learning-inference-1.8.6/c/src/ml-api-service-agent-client.c.func.html b/testresult/ml-api/capi-machine-learning-inference-1.8.6/c/src/ml-api-service-agent-client.c.func.html
index 9f96927a1..024a83598 100644
--- a/testresult/ml-api/capi-machine-learning-inference-1.8.6/c/src/ml-api-service-agent-client.c.func.html
+++ b/testresult/ml-api/capi-machine-learning-inference-1.8.6/c/src/ml-api-service-agent-client.c.func.html
@@ -4,7 +4,7 @@
- LCOV - ML API 1.8.6-0 gichan-jang/api#2c94b63b2f5ed400eaacdf47332377c3ff29545e - capi-machine-learning-inference-1.8.6/c/src/ml-api-service-agent-client.c - functions
+ LCOV - ML API 1.8.6-0 nnstreamer/api#48ca203121742beeae4e812d81565013cd585491 - capi-machine-learning-inference-1.8.6/c/src/ml-api-service-agent-client.c - functions
@@ -28,7 +28,7 @@
Test:
-
ML API 1.8.6-0 gichan-jang/api#2c94b63b2f5ed400eaacdf47332377c3ff29545e
+
ML API 1.8.6-0 nnstreamer/api#48ca203121742beeae4e812d81565013cd585491
Lines:
88.0 %
@@ -37,7 +37,7 @@
Test Date:
-
2024-12-20 05:19:35
+
2024-12-20 05:24:18
Functions:
100.0 %
diff --git a/testresult/ml-api/capi-machine-learning-inference-1.8.6/c/src/ml-api-service-agent-client.c.gcov.html b/testresult/ml-api/capi-machine-learning-inference-1.8.6/c/src/ml-api-service-agent-client.c.gcov.html
index b39c3c0e9..794106543 100644
--- a/testresult/ml-api/capi-machine-learning-inference-1.8.6/c/src/ml-api-service-agent-client.c.gcov.html
+++ b/testresult/ml-api/capi-machine-learning-inference-1.8.6/c/src/ml-api-service-agent-client.c.gcov.html
@@ -4,7 +4,7 @@
- LCOV - ML API 1.8.6-0 gichan-jang/api#2c94b63b2f5ed400eaacdf47332377c3ff29545e - capi-machine-learning-inference-1.8.6/c/src/ml-api-service-agent-client.c
+ LCOV - ML API 1.8.6-0 nnstreamer/api#48ca203121742beeae4e812d81565013cd585491 - capi-machine-learning-inference-1.8.6/c/src/ml-api-service-agent-client.c
@@ -28,7 +28,7 @@
Test:
-
ML API 1.8.6-0 gichan-jang/api#2c94b63b2f5ed400eaacdf47332377c3ff29545e
+
ML API 1.8.6-0 nnstreamer/api#48ca203121742beeae4e812d81565013cd585491