platform/upstream/nnstreamer.git
2 years ago[Edge] prepare migration
Jaeyun [Mon, 27 Jun 2022 10:53:25 +0000 (19:53 +0900)]
[Edge] prepare migration

Change header name for nnstreamer edge library.

Signed-off-by: Jaeyun <jy1210.jung@samsung.com>
2 years ago[Edge] refactoring edge cmd
Jaeyun [Fri, 24 Jun 2022 10:47:02 +0000 (19:47 +0900)]
[Edge] refactoring edge cmd

Refactoring to send/receive edge command and buffer.
- define command info struct to handle command, id, and memories.
- util functions to init, clear edge command.

Signed-off-by: Jaeyun <jy1210.jung@samsung.com>
2 years ago[Edge] client IDs in handle
Jaeyun [Wed, 22 Jun 2022 08:02:03 +0000 (17:02 +0900)]
[Edge] client IDs in handle

Remove global table for client IDs, and move it to edge handle.

Signed-off-by: Jaeyun <jy1210.jung@samsung.com>
2 years ago[Edge] new function to invoke event callback
Jaeyun [Wed, 15 Jun 2022 08:44:20 +0000 (17:44 +0900)]
[Edge] new function to invoke event callback

Add new function to invoke event and export edge-event functions.

Signed-off-by: Jaeyun <jy1210.jung@samsung.com>
2 years ago[Filter/TFLite] Fix model tensors allocation not working for some delegates
Julien Vuillaumier [Tue, 28 Jun 2022 07:31:40 +0000 (09:31 +0200)]
[Filter/TFLite] Fix model tensors allocation not working for some delegates

This change is correction for error below reported by the TFlite library
during Invoke():

"Invoke called on model that is not ready."

Tensors allocation may be done by TFLite framework during call to
ModifyGraphWithDelegate() but that is not guaranteed.
Therefore, even if delegates are used, tensors allocation must be done
explicitly with AllocateTensors(), prior to inferencing with Invoke().

Signed-off-by: Julien Vuillaumier <julien.vuillaumier@nxp.com>
2 years ago[Edge] invalid data info when copying edge data
Jaeyun [Fri, 24 Jun 2022 06:05:29 +0000 (15:05 +0900)]
[Edge] invalid data info when copying edge data

Fix mem leak and invalid data info when copying edge-data.

Signed-off-by: Jaeyun <jy1210.jung@samsung.com>
2 years ago[Edge] util functions for edge data
Jaeyun [Mon, 20 Jun 2022 07:56:26 +0000 (16:56 +0900)]
[Edge] util functions for edge data

Add new functions for edge data.
- The edge-data type is unnecessary when creating data handle.
- Client ID will be used in the pipeline, as a meta of buffer.

Signed-off-by: Jaeyun <jy1210.jung@samsung.com>
2 years ago[Edge] code clean
Jaeyun [Mon, 20 Jun 2022 08:11:23 +0000 (17:11 +0900)]
[Edge] code clean

Code clean, check returned err-code and params. Prevent null ptr exception case.

Signed-off-by: Jaeyun <jy1210.jung@samsung.com>
2 years ago[Edge] base code for mutex lock
Jaeyun [Fri, 10 Jun 2022 10:51:47 +0000 (19:51 +0900)]
[Edge] base code for mutex lock

Update macros and mutex lock in edge handle.

Signed-off-by: Jaeyun <jy1210.jung@samsung.com>
2 years ago[trivial] Fix typos in the spec file
Yongjoo Ahn [Mon, 20 Jun 2022 04:52:54 +0000 (13:52 +0900)]
[trivial] Fix typos in the spec file

- Fix some typos in `nnstreamer.spec`.

Signed-off-by: Yongjoo Ahn <yongjoo1.ahn@samsung.com>
2 years ago[Edge] Add tcp implementation
gichan [Tue, 7 Jun 2022 09:39:01 +0000 (18:39 +0900)]
[Edge] Add tcp implementation

 - Add NNStreamer-edge TCP implementation.

Signed-off-by: gichan <gichan2.jang@samsung.com>
2 years ago[Edge] possible mem leak
Jaeyun [Fri, 17 Jun 2022 02:18:29 +0000 (11:18 +0900)]
[Edge] possible mem leak

Fix svace issue, mem leak case when connection is failed.

Signed-off-by: Jaeyun <jy1210.jung@samsung.com>
2 years agotest/grpc: correct parallel unit test calls
MyungJoo Ham [Thu, 9 Jun 2022 08:37:52 +0000 (17:37 +0900)]
test/grpc: correct parallel unit test calls

1. Do not fork ssat-api functions
2. Do not sleep constant time. Check the launch process.

Signed-off-by: MyungJoo Ham <myungjoo.ham@samsung.com>
2 years ago[Edge] remove unnecessary function
Jaeyun [Tue, 14 Jun 2022 07:39:15 +0000 (16:39 +0900)]
[Edge] remove unnecessary function

Code clean, remove unnecessary function and fix invalid return.
The edge-handle may have multiple connections, checking connection is unnecessary.
Instead, we will add internal function for each socket.

Signed-off-by: Jaeyun <jy1210.jung@samsung.com>
2 years ago[Doc] Add yocto daily build result in README.md
Yongjoo Ahn [Mon, 13 Jun 2022 08:06:10 +0000 (17:06 +0900)]
[Doc] Add yocto daily build result in README.md

- Add a link to build result of yocto (nnstreamer/meta-neural-network)

Signed-off-by: Yongjoo Ahn <yongjoo1.ahn@samsung.com>
2 years ago[spec] Fix spec to cut the depedency on custom tflite in 64-bit accepted/tizen/unified/20220615.135323 submit/tizen/20220614.100238
Yongjoo Ahn [Tue, 14 Jun 2022 08:34:15 +0000 (17:34 +0900)]
[spec] Fix spec to cut the depedency on custom tflite in 64-bit

- In 64-bit the dep is like "libtensorflow2-lite-custom.so()(64bit)"
- To cut this properly, replace "so" with "*"

Signed-off-by: Yongjoo Ahn <yongjoo1.ahn@samsung.com>
2 years agotests: build error w/ higher gcc & lower gtest submit/tizen/20220614.070712
MyungJoo Ham [Thu, 2 Jun 2022 08:58:08 +0000 (17:58 +0900)]
tests: build error w/ higher gcc & lower gtest

If you have gcc >= 11 and gtest <= 1.8, you may have build errors:

/usr/src/gtest/src/gtest-death-test.cc: In function ‘bool testing::internal::StackGrowsDown()’:
/usr/src/gtest/src/gtest-death-test.cc:1009:24: error: ‘dummy’ may be used uninitialized [-Werror=maybe-uninitialized]
 1009 |   StackLowerThanAddress(&dummy, &result);
      |   ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~
/usr/src/gtest/src/gtest-death-test.cc:999:6: note: by argument 1 of type ‘const void*’ to ‘void testing::internal::StackLowerThanAddress(const void*, bool*)’ declared here
  999 | void StackLowerThanAddress(const void* ptr, bool* result) {
      |      ^~~~~~~~~~~~~~~~~~~~~
/usr/src/gtest/src/gtest-death-test.cc:1007:7: note: ‘dummy’ declared here
 1007 |   int dummy;
      |       ^~~~~

As gtest's code is not our test target, let the compiler ignore warnings of gtest codes.

Signed-off-by: MyungJoo Ham <myungjoo.ham@samsung.com>
2 years ago[Edge] add mqtt functions
Jaeyun [Wed, 11 May 2022 07:29:20 +0000 (16:29 +0900)]
[Edge] add mqtt functions

Add internal functions to handle mqtt message.
This is initial commit for mqtt-hybrid feature after separating the edge library.

Signed-off-by: Jaeyun <jy1210.jung@samsung.com>
2 years ago[Edge] handle magic validation
Jaeyun [Fri, 10 Jun 2022 10:12:39 +0000 (19:12 +0900)]
[Edge] handle magic validation

Before adding mutex lock, update magic validation.

Signed-off-by: Jaeyun <jy1210.jung@samsung.com>
2 years agotest/query: update gtest utc for updated protocol property.
MyungJoo Ham [Thu, 9 Jun 2022 07:42:03 +0000 (16:42 +0900)]
test/query: update gtest utc for updated protocol property.

We now use enum type for protocol property, which is NO MORE case insensitive.

Signed-off-by: MyungJoo Ham <myungjoo.ham@samsung.com>
2 years agoQuery: fix protocol property handling
MyungJoo Ham [Thu, 9 Jun 2022 04:44:15 +0000 (13:44 +0900)]
Query: fix protocol property handling

Protocols are enum. Use enum-param, not int or string.
With this, users can use both numbers and enum-strings.

Signed-off-by: MyungJoo Ham <myungjoo.ham@samsung.com>
2 years agodoc/filter subplugin: brief guide on how to write subplugin
MyungJoo Ham [Wed, 8 Jun 2022 04:59:39 +0000 (13:59 +0900)]
doc/filter subplugin: brief guide on how to write subplugin

To clarify which mechanism to use for new tensor-filter subplugin,
added a short guide on how to write tensor-filter subplugin.

Signed-off-by: MyungJoo Ham <myungjoo.ham@samsung.com>
2 years agodeb: cut the dependency on custom tflite binary
MyungJoo Ham [Tue, 19 Apr 2022 10:23:50 +0000 (19:23 +0900)]
deb: cut the dependency on custom tflite binary

Custom tflite binary is supposed to be installed by users
afterwards.

Thus, cut the dependency from the deb packaging.

Signed-off-by: MyungJoo Ham <myungjoo.ham@samsung.com>
2 years agodist: cut the dependency on custom tflite binary
MyungJoo Ham [Tue, 19 Apr 2022 07:41:24 +0000 (16:41 +0900)]
dist: cut the dependency on custom tflite binary

Custom tflite binary is supposed to be installed by users
afterwards.

Thus, cut the dependency from the rpm packaging.

Signed-off-by: MyungJoo Ham <myungjoo.ham@samsung.com>
2 years agoTensorflow-lite custom bin support: Plan B implemented
MyungJoo Ham [Thu, 14 Apr 2022 11:29:13 +0000 (20:29 +0900)]
Tensorflow-lite custom bin support: Plan B implemented

This addresses plan B of #3713

$ ldd build/ext/nnstreamer/tensor_filter/libnnstreamer_filter_tensorflow2-lite-custom.so
linux-vdso.so.1 (0x00007fffe21f2000)
libnnstreamer-single.so => /source/AutoDrv/NNStreamer/build/ext/nnstreamer/tensor_filter/../../../gst/nnstreamer/libnnstreamer-single.so (0x00007f08b5bba000)
/source/AutoDrv/NNStreamer/ext/nnstreamer/tensor_filter/libtensorflow2-lite-custom.so (0x00007f08b50a5000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f08b4ea1000)
libglib-2.0.so.0 => /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0 (0x00007f08b4b8a000)
libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f08b477d000)
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f08b4565000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f08b4174000)
libgmodule-2.0.so.0 => /usr/lib/x86_64-linux-gnu/libgmodule-2.0.so.0 (0x00007f08b3f70000)
libgobject-2.0.so.0 => /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0 (0x00007f08b3d1c000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f08b3afd000)
/lib64/ld-linux-x86-64.so.2 (0x00007f08b5ff8000)
libpcre.so.3 => /lib/x86_64-linux-gnu/libpcre.so.3 (0x00007f08b388b000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f08b34ed000)
libffi.so.6 => /usr/lib/x86_64-linux-gnu/libffi.so.6 (0x00007f08b32e5000)

After this, we need the following commits.
1. a manual how to use tflite2-custom. (at /ext/nnstreamer/tensor-filter?)
2. a test case for tflite2-custom.

Signed-off-by: MyungJoo Ham <myungjoo.ham@samsung.com>
2 years agotest/query: parallel client launching shouldn't use gstTest
MyungJoo Ham [Thu, 9 Jun 2022 08:23:43 +0000 (17:23 +0900)]
test/query: parallel client launching shouldn't use gstTest

Don't use & fork with bash function.
Add timeout for launching.

Signed-off-by: MyungJoo Ham <myungjoo.ham@samsung.com>
2 years agobash scripts: use python3 instead of python
MyungJoo Ham [Wed, 8 Jun 2022 01:39:49 +0000 (10:39 +0900)]
bash scripts: use python3 instead of python

We are removing python2 dependencies.

Signed-off-by: MyungJoo Ham <myungjoo.ham@samsung.com>
2 years agodist/Ubuntu: remove python2 dependency
MyungJoo Ham [Thu, 2 Jun 2022 07:20:50 +0000 (16:20 +0900)]
dist/Ubuntu: remove python2 dependency

Use python3 instead.
Addressing #3774

Signed-off-by: MyungJoo Ham <myungjoo.ham@samsung.com>
2 years agodist/Tizen: remove python2 dependency.
MyungJoo Ham [Thu, 2 Jun 2022 06:52:24 +0000 (15:52 +0900)]
dist/Tizen: remove python2 dependency.

Use python3 instead.
Addressing #3774

Signed-off-by: MyungJoo Ham <myungjoo.ham@samsung.com>
2 years agopython scripts: use python3 instead of python in shebang.
MyungJoo Ham [Thu, 2 Jun 2022 06:50:48 +0000 (15:50 +0900)]
python scripts: use python3 instead of python in shebang.

From tests/*, tools/*, removing the usage of python3, update shebang.
Addressing #3774

Signed-off-by: MyungJoo Ham <myungjoo.ham@samsung.com>
2 years ago[Log] use internal log function
Jaeyun [Thu, 9 Jun 2022 03:40:45 +0000 (12:40 +0900)]
[Log] use internal log function

Replace logutil - glib funcs, use predefined log functions.

Signed-off-by: Jaeyun <jy1210.jung@samsung.com>
2 years agotest/query: use get_available_port.py
MyungJoo Ham [Thu, 9 Jun 2022 06:56:57 +0000 (15:56 +0900)]
test/query: use get_available_port.py

Use get_available_port.py instead of RANDOM number.
Moved get_available_port.py from nnstreamer_grpc to tests as it has now become a common test utility.

Signed-off-by: MyungJoo Ham <myungjoo.ham@samsung.com>
2 years agotest/query: wait for server launching, not 5 sec.
MyungJoo Ham [Wed, 8 Jun 2022 06:29:36 +0000 (15:29 +0900)]
test/query: wait for server launching, not 5 sec.

1. With busy CI servers, you don't know how much time it takes
to launch tensor-query-server instances.

Thus, wait for the pipeline launching, not a constant time.

Besides, you can use "wait" command for server exit.

2. Do not use & for ssat apis.

Signed-off-by: MyungJoo Ham <myungjoo.ham@samsung.com>
2 years ago[filter/deepview-rt] Add filter subplugin for DeepViewRT
Julien Vuillaumier [Mon, 16 May 2022 16:59:52 +0000 (18:59 +0200)]
[filter/deepview-rt] Add filter subplugin for DeepViewRT

This change implements a tensor filter subplugin to interface
with DeepViewRT inference engine:
https://www.embeddedml.com/deepviewrt

Plugin can be instanciated using NNStreamer filter element
with relevant properties:

tensor_filter framework=deepview-rt model=<rtm model file>
              [custom=[Engine:<path to engine shared lib>]
                      [Cache:<cache size in MiB>]
                      [MemPool:<memory pool size in MiB>]]

SSAT test suite addition for DeepView RT tensor filter plugin.

Sample model (mobilenet_v1_0.25_224.rtm) is derived from public
tflite model, converted to rtm format per procedure below:
$ wget http://download.tensorflow.org/models/mobilenet_v1_2018_08_02/mobilenet_v1_0.25_224.tgz
$ tar xvf mobilenet_v1_0.25_224.tgz
$ deepview-converter  ./mobilenet_v1_0.25_224.tflite ./mobilenet_v1_0.25_224.rtm

Signed-off-by: Julien Vuillaumier <julien.vuillaumier@nxp.com>
2 years ago[Edge] base code for edge event
Jaeyun [Thu, 12 May 2022 11:24:34 +0000 (20:24 +0900)]
[Edge] base code for edge event

Update base code to handle edge event.

Signed-off-by: Jaeyun <jy1210.jung@samsung.com>
2 years ago[Edge] code clean
Jaeyun [Thu, 12 May 2022 10:55:50 +0000 (19:55 +0900)]
[Edge] code clean

1. Fix code style and condition to set raw data.
2. Use malloc instead of glib function.

TODO: implement lock to handle edge handles.

Signed-off-by: Jaeyun <jy1210.jung@samsung.com>
2 years agofilter:tf-lite2-custom usage manual
MyungJoo Ham [Fri, 15 Apr 2022 07:45:13 +0000 (16:45 +0900)]
filter:tf-lite2-custom usage manual

For #3713, add a usage manual because it may be not too trivial
for non-system-sw developers.

Signed-off-by: MyungJoo Ham <myungjoo.ham@samsung.com>
2 years ago[meson] Fix Yocto Kirkstone build issue
Julien Vuillaumier [Fri, 3 Jun 2022 09:11:47 +0000 (11:11 +0200)]
[meson] Fix Yocto Kirkstone build issue

A build configuration error is seen on Yocto Kirkstone (4.0)
coming from commit:
https://github.com/nnstreamer/nnstreamer/commit/0584ce06e30f1dbb188bce2b370df53d335046dd

Signature of error:
meson.build:505:4: ERROR: Command "//recipe-sysroot-native/usr/bin/python3-native/python3 -m site --user-site" failed with status 1

Building with Yocto, native tools are sandboxed in build workspace,
there is no python user site.
This change is to prevent meson configuration to break when no user
site package is present.

Signed-off-by: Julien Vuillaumier <julien.vuillaumier@nxp.com>
2 years ago[Meson] Fix warnings related to the run_command call
Wook Song [Mon, 23 May 2022 07:57:45 +0000 (16:57 +0900)]
[Meson] Fix warnings related to the run_command call

This patch sets the keyword argument, 'check', of the run_command
function to true in order to fix the following warnings:

WARNING: You should add the boolean check kwarg to the run_command call.
         It currently defaults to false,
         but it will default to true in future releases of meson.
         See also: https://github.com/mesonbuild/meson/issues/9300

Signed-off-by: Wook Song <wook16.song@samsung.com>
2 years ago[decoder/bounding_box] Fix ssd box decoding without postprocessing
Julien Vuillaumier [Tue, 31 May 2022 08:43:29 +0000 (10:43 +0200)]
[decoder/bounding_box] Fix ssd box decoding without postprocessing

Boxes whose detection scores do not exceed the specified sigmoid
threshold shall never be reported as valid.

This changeset fixes current implementation whereby valid field
for a box is set only when its detection scores have passed the
threshold tests. Thus, if score test is not passed, valid field for
a box is inherited from the previous box score tests.

Therefore without this change, whenever one box passes the score
criteria, every subsequent boxes will be reported as valid, even though
their detection scores are low.
As a consequence, a very big number of boxes may be passed to the
next stage of NMS processing which causes processing overhead.

Signed-off-by: Julien Vuillaumier <julien.vuillaumier@nxp.com>
2 years ago[macOS/Doc] Replace 'nnsuite' with 'nnstreamer'
Wook Song [Tue, 31 May 2022 14:54:19 +0000 (23:54 +0900)]
[macOS/Doc] Replace 'nnsuite' with 'nnstreamer'

This patch replaces the old organization name, nnsuite, remaining
in the Getting Started document with the current one, nnstreamer.

Signed-off-by: Wook Song <wook16.song@samsung.com>
2 years ago[Tests/IF] Fix a build error related to -Winconsistent-missing-override
Wook Song [Tue, 31 May 2022 01:19:59 +0000 (10:19 +0900)]
[Tests/IF] Fix a build error related to -Winconsistent-missing-override

This patch fixes the following build error while compiling with clang in
macOS.

With clang in macOS:

../tests/nnstreamer_if/unittest_if.cc:65:8: error: 'TearDown' overrides a member function but is not marked 'override' [-Werror,-Winconsistent-missing-override]
  void TearDown ()
       ^
/opt/homebrew/Cellar/googletest/1.11.0/include/gtest/gtest.h:481:16: note: overridden virtual function is here
  virtual void TearDown();
               ^
1 error generated.

Signed-off-by: Wook Song <wook16.song@samsung.com>
2 years ago[macOS/meson] Add a missing parameter to the sed's in-place edit option
Wook Song [Mon, 23 May 2022 09:17:41 +0000 (18:17 +0900)]
[macOS/meson] Add a missing parameter to the sed's in-place edit option

In macOS, the '-i' option of the sed command requires a parameter to
tell what extension to use for the backup file. To this end, this patch
appends '.bak' to the '-i' option to fix the build errors on macOS.

Signed-off-by: Wook Song <wook16.song@samsung.com>
2 years ago[mxnet] Add Doxygen tags for Predictor.hh
Muhwan Kim [Sun, 22 May 2022 19:48:21 +0000 (04:48 +0900)]
[mxnet] Add Doxygen tags for Predictor.hh

To suppress CI's complain and specify where this code came from.

Signed-off-by: Muhwan Kim <mhkim4886@gmail.com>
2 years ago[mxnet] Change license of test code to LGPL-2.1
Muhwan Kim [Sun, 22 May 2022 19:42:06 +0000 (04:42 +0900)]
[mxnet] Change license of test code to LGPL-2.1

Detailed discussion here: PR #3742

Signed-off-by: Muhwan Kim <mhkim4886@gmail.com>
2 years ago[mxnet] Use __FILE__ instead of hard-coded path to generate log message
Muhwan Kim [Sun, 22 May 2022 19:40:53 +0000 (04:40 +0900)]
[mxnet] Use __FILE__ instead of hard-coded path to generate log message

__FILE__ macro is better, elegant way to print file names.

Signed-off-by: Muhwan Kim <mhkim4886@gmail.com>
2 years ago[mxnet] Use copy option to suppress deprecation warning
Muhwan Kim [Sun, 1 May 2022 18:53:03 +0000 (03:53 +0900)]
[mxnet] Use copy option to suppress deprecation warning

meson have copy option for this usage

Signed-off-by: Muhwan Kim <mhkim4886@gmail.com>
2 years ago[mxnet] Use official MXNet MXDType
Muhwan Kim [Sun, 1 May 2022 18:49:35 +0000 (03:49 +0900)]
[mxnet] Use official MXNet MXDType

Use datatype enum from MXNet instead of copied one

Signed-off-by: Muhwan Kim <mhkim4886@gmail.com>
2 years ago[mxnet] Include nnstreamer_plugin_api.h
Muhwan Kim [Sun, 1 May 2022 18:48:29 +0000 (03:48 +0900)]
[mxnet] Include nnstreamer_plugin_api.h

Use nnstreamer_plugin_api.h which is recommended

Signed-off-by: Muhwan Kim <mhkim4886@gmail.com>
2 years ago[mxnet] Fix minor format issue
Muhwan Kim [Sun, 1 May 2022 18:36:33 +0000 (03:36 +0900)]
[mxnet] Fix minor format issue

Add newline character to reduce line length

Signed-off-by: Muhwan Kim <mhkim4886@gmail.com>
2 years ago[mxnet] Use kFileLocation instead of kFileUrl
Muhwan Kim [Sun, 1 May 2022 18:34:33 +0000 (03:34 +0900)]
[mxnet] Use kFileLocation instead of kFileUrl

We can still generate good message using kFileLocation.

Signed-off-by: Muhwan Kim <mhkim4886@gmail.com>
2 years ago[mxnet] Fix typo
Muhwan Kim [Sun, 1 May 2022 18:32:42 +0000 (03:32 +0900)]
[mxnet] Fix typo

Fix typo speces -> spaces

Signed-off-by: Muhwan Kim <mhkim4886@gmail.com>
2 years ago[mxnet] Change license of test script to LGPL-2.1
Muhwan Kim [Sun, 1 May 2022 18:31:55 +0000 (03:31 +0900)]
[mxnet] Change license of test script to LGPL-2.1

For this, being LGPL 2.1 doesn't incur problems (in PR #3742)

Signed-off-by: Muhwan Kim <mhkim4886@gmail.com>
2 years ago[mxnet] Fix install directory of tests
Muhwan Kim [Sun, 1 May 2022 18:08:55 +0000 (03:08 +0900)]
[mxnet] Fix install directory of tests

Fix typo of unittest_filter_mxnet install directory reference.

Signed-off-by: Muhwan Kim <mhkim4886@gmail.com>
2 years ago[mxnet] Add mxnet related variables in nnstreamer.mk
makesource [Tue, 26 Apr 2022 13:10:13 +0000 (22:10 +0900)]
[mxnet] Add mxnet related variables in nnstreamer.mk

Add NNSTREAMER_FILTER_MXNET_SRCS vars in nnstreamer.mk

Signed-off-by: makesource <makesource@gmail.com>
2 years ago[mxnet] Add unistd.h header in tensor_filter_mxnet
makesource [Tue, 26 Apr 2022 13:07:30 +0000 (22:07 +0900)]
[mxnet] Add unistd.h header in tensor_filter_mxnet

Add unistd.h header to use R_OK macro.

Signed-off-by: makesource <makesource@gmail.com>
2 years ago[mxnet] Disable name mangling
makesource [Tue, 26 Apr 2022 12:51:53 +0000 (21:51 +0900)]
[mxnet] Disable name mangling

Disable name mangling for init_filter_mxnet, fini_filter_mxnet functions.

Signed-off-by: makesource <makesource@gmail.com>
2 years ago[mxnet] Add doxygen tags on top of simple_test_mxnet.cc
Muhwan Kim [Sun, 24 Apr 2022 05:17:36 +0000 (14:17 +0900)]
[mxnet] Add doxygen tags on top of simple_test_mxnet.cc

Add omitted some tags on top

Signed-off-by: Muhwan Kim <mhkim4886@gmail.com>
2 years ago[mxnet] Convert comments into doxygen style
Muhwan Kim [Sun, 24 Apr 2022 04:48:14 +0000 (13:48 +0900)]
[mxnet] Convert comments into doxygen style

Convert original comments into @brief of doxygen style comments

Signed-off-by: Muhwan Kim <mhkim4886@gmail.com>
2 years ago[mxnet] Initialize sourceid before use
Muhwan Kim [Sat, 23 Apr 2022 08:35:31 +0000 (17:35 +0900)]
[mxnet] Initialize sourceid before use

Added initialize of sourceid

Signed-off-by: Muhwan Kim <mhkim4886@gmail.com>
2 years ago[mxnet] Fix build error in test code
Muhwan Kim [Wed, 6 Apr 2022 14:42:05 +0000 (23:42 +0900)]
[mxnet] Fix build error in test code

Fix the unused variable errors by adding UNUSED lines

Signed-off-by: Muhwan Kim <mhkim4886@gmail.com>
2 years ago[mxnet] Fix unused parameter error
Muhwan Kim [Wed, 23 Mar 2022 08:23:30 +0000 (17:23 +0900)]
[mxnet] Fix unused parameter error

Fix build error by adding UNUSED lines

Signed-off-by: Muhwan Kim <mhkim4886@gmail.com>
2 years ago[mxnet] Applied clang-format
Muhwan Kim [Wed, 23 Mar 2022 08:18:12 +0000 (17:18 +0900)]
[mxnet] Applied clang-format

Fix code format to follow .clang-format file

Signed-off-by: Muhwan Kim <mhkim4886@gmail.com>
2 years ago[UNTESTED][mxnet] Add TensorRT support
Bumsik Kim [Mon, 26 Oct 2020 11:53:29 +0000 (04:53 -0700)]
[UNTESTED][mxnet] Add TensorRT support

Add TensorRT support for nnstreamer-filter-mxnet.
Like the previous commit, I will remove [UNTESTED] tag
after testing.

Signed-off-by: Bumsik Kim <k.bumsik@gmail.com>
2 years ago[UNTESTED][mxnet] Add GPU support
Bumsik Kim [Mon, 26 Oct 2020 08:07:09 +0000 (01:07 -0700)]
[UNTESTED][mxnet] Add GPU support

Add GPU support for nnstreamer-filter-mxnet.
This should work if MXNet is properly compiled
but I don't currently have development environment
to test GPU acceleration. I will remove the UNTESTED
tag when I set up the environment and test it.

Signed-off-by: Bumsik Kim <k.bumsik@gmail.com>
2 years ago[mxnet] Add simple test
Bumsik Kim [Wed, 14 Oct 2020 06:32:35 +0000 (23:32 -0700)]
[mxnet] Add simple test

This is a simple test to verify if nnstreamer-filter-mxnet works.
This may not be a proper test for upstream NNStreamer.
The main idea is to compare the outputs of the MXNet reference
implementation [1] and that of nnstreamer-filter-mxnet.

OpenCV is required to build this test.

[1]:
https://github.com/apache/incubator-mxnet/blob/1.7.0/cpp-package/example/inference/imagenet_inference.cpp

Signed-off-by: Bumsik Kim <k.bumsik@gmail.com>
2 years ago[meson] Add mxnet support
Bumsik Kim [Sun, 4 Oct 2020 06:04:56 +0000 (23:04 -0700)]
[meson] Add mxnet support

Add nnstreamer-filter-mxnet in the meson build system.
The mxnet support flag is -Dmxnet-support=enabled

Signed-off-by: Bumsik Kim <k.bumsik@gmail.com>
2 years ago[mxnet] Preliminary version of tensor_filter_mxnet
Bumsik Kim [Wed, 14 Oct 2020 02:36:56 +0000 (19:36 -0700)]
[mxnet] Preliminary version of tensor_filter_mxnet

This patch newely adds MXNet support for tensor_filter.
This is based on tensor_filter_subplugin class. This currently does not
suppor the GPU acceleration but it will be added in later patches.

Since this project does not have a stable C++ coding convention, I
partially followed the Google C++ Style Guide [1] for naming and applied
.clang_format file in the root.

[1]: https://google.github.io/styleguide/cppguide.html#Naming

Signed-off-by: Bumsik Kim <k.bumsik@gmail.com>
2 years ago[Conf] fix param name accepted/tizen/unified/20220526.143642 submit/tizen/20220525.063351
Jaeyun [Fri, 20 May 2022 11:48:34 +0000 (20:48 +0900)]
[Conf] fix param name

Fix lgtm alert - name of global variable. Change param name.

Signed-off-by: Jaeyun <jy1210.jung@samsung.com>
2 years ago[Conf] subplugin path from extra conf
Jaeyun [Tue, 17 May 2022 09:30:01 +0000 (18:30 +0900)]
[Conf] subplugin path from extra conf

Add subplugin path loaded from extra config file.

Signed-off-by: Jaeyun <jy1210.jung@samsung.com>
2 years ago[Python] path to python helper lib
Jaeyun [Tue, 17 May 2022 05:17:25 +0000 (14:17 +0900)]
[Python] path to python helper lib

Change install path for python-helper library.
This is to fix library link error.

Signed-off-by: Jaeyun <jy1210.jung@samsung.com>
2 years ago[TEST] Add assertion test.
gichan [Fri, 13 May 2022 06:17:32 +0000 (15:17 +0900)]
[TEST] Add assertion test.

Instead of unwinding the macro, add assertion.

Signed-off-by: gichan <gichan2.jang@samsung.com>
2 years ago[TEST] Unwinding macro to avoid no assertion test.
gichan [Fri, 13 May 2022 03:15:44 +0000 (12:15 +0900)]
[TEST] Unwinding macro to avoid no assertion test.

Some code quality analyer check no assertion test.
testTesnrSparse_utilConvert has assert test, the analyer cannnot check
macro.
So, to avoid the false-positive case, unwinding macro.

Signed-off-by: gichan <gichan2.jang@samsung.com>
2 years ago[Test] Add palm detection decoder test
Sangjung Woo [Thu, 12 May 2022 01:39:40 +0000 (10:39 +0900)]
[Test] Add palm detection decoder test

This patch newly adds the palm detection decoder test script.

Signed-off-by: Sangjung Woo <sangjung.woo@samsung.com>
2 years ago[Decoder/BoundingBox] Add binary test data of palm detection
Sangjung Woo [Wed, 11 May 2022 14:36:45 +0000 (23:36 +0900)]
[Decoder/BoundingBox] Add binary test data of palm detection

This patch adds the binary test data for palm detection.

Signed-off-by: Sangjung Woo <sangjung.woo@samsung.com>
2 years ago[filter/snpe] Add custom option "MaxResizableDim"
Yongjoo Ahn [Thu, 28 Apr 2022 04:44:17 +0000 (13:44 +0900)]
[filter/snpe] Add custom option "MaxResizableDim"

- Some snpe models have "0" dim to represent resizable dim.
- Add a custom option to deal with this case.

Signed-off-by: Yongjoo Ahn <yongjoo1.ahn@samsung.com>
2 years ago[filter/snpe] Make the order of output tensors be consistent with the user given...
Yongjoo Ahn [Tue, 19 Apr 2022 09:22:30 +0000 (18:22 +0900)]
[filter/snpe] Make the order of output tensors be consistent with the user given option

- For multiple output models, let user set output tensors instead of
  output layers
- And make the order of input / output tensors be consistent.

Signed-off-by: Yongjoo Ahn <yongjoo1.ahn@samsung.com>
2 years ago[meson] Remove unnecessary dependency
gichan [Mon, 9 May 2022 05:31:46 +0000 (14:31 +0900)]
[meson] Remove unnecessary dependency

Remove unnecessary dependency from single-shot package.

Signed-off-by: gichan <gichan2.jang@samsung.com>
2 years ago[Svace] check null ptr
Jaeyun [Fri, 6 May 2022 07:24:00 +0000 (16:24 +0900)]
[Svace] check null ptr

Fix svace issue, check null ptr - allocation failure case in log util.

Signed-off-by: Jaeyun <jy1210.jung@samsung.com>
2 years ago[Edge] header for nns-edge
Jaeyun [Fri, 1 Apr 2022 11:14:53 +0000 (20:14 +0900)]
[Edge] header for nns-edge

initial commit to implement internal library for nnstreamer edge based on glib.

Signed-off-by: Jaeyun <jy1210.jung@samsung.com>
2 years agotest: disable converter test if python is not available.
MyungJoo Ham [Wed, 4 May 2022 03:20:04 +0000 (12:20 +0900)]
test: disable converter test if python is not available.

converter test uses python scripts.
disable converter test if python is not available.

Signed-off-by: MyungJoo Ham <myungjoo.ham@samsung.com>
2 years ago[TEST/ntp] Add ntp unittest using GMock.
gichan [Tue, 19 Apr 2022 10:24:08 +0000 (19:24 +0900)]
[TEST/ntp] Add ntp unittest using GMock.

Add ntp uniitest using GMock.

Signed-off-by: gichan <gichan2.jang@samsung.com>
2 years agoStart Development of NNStreamer 2.1.1 (2.2 RC2)
MyungJoo Ham [Wed, 13 Apr 2022 08:41:43 +0000 (17:41 +0900)]
Start Development of NNStreamer 2.1.1 (2.2 RC2)

This is the version marking for 2.1.1 development start.
As 2.1.0 is started on Sep 28 2021, the change is huge.

2.1.0 -> 2.1.1
- Tizen 7.0 M1 RCx preparation and NNStreamer Mini Summit 2022-04 release.

- NNStreamer-Edge refactoring (module for Among-Device AI (a.k.a. Edge-AI))
        - Ongoing effort of nnstreamer-edge separation from nnstreamer.
        - In the future, nnstreamer-edge will provide among-device AI functions and nnstreamer will provide gstreamer plugins for such functions. Non-gstreamer systems may connect to nnstreamer-edge based pipelines without gstreamer as clients.
        - NNStreamer-Edge will be using AITT as its default backend, leaving protocol issues to AITT.
        - In the future, nnstreamer-edge will be compatible with non-Linux ultra-lightweight systems (e.g., Tizen-RT)

- ML-Service API preparation is going on at api.git.

- Major features
        - MQTT timestaamping w/ NTP. (later will be migrated to nnstreamer-edge & aitt)
        - Query (later will be migrated to nnstreamer-edge & aitt): robustness support, mqtt-hybrid protocol, performance fixes for multi-clients.
        - More coverage for SNPE support: quantized model support, SNPE dimension bug workaround, fixes from/for production team.
        - Flexible tensor support w/ decoder, converter, flatbuffer.

- Minor features
        - MQTT unittest basis, generic stream support, android support, timeout handling, ... (and many!)
        - Utility functions exported for plugin writers.
        - Tensorflow-lite delegation refactored for generality: may use XNNPACK more easily.
        - Tensorflow-lite multi-lib support.
        - PyTorch: support complex output tensor formats.
        - NNStreamer multi-lib support.
        - Decoder: boundingbox-yolov5
        - Filter: TRIx-Engine support. (NPUs of Samsung 2022 TV)
        - Docker support refactored and cleaned up.

- Fixes
        - ARMNN build errors.
        - Android errors
        - Build errors with recent compiler updates. (gcc 11)
        - Fixes upstreamed from productions
        - Errors w/ library updates: Lua >= 5.3, GLib >= 2.68
        - Regression fixes: openvino, edgetpu, tensorrt
        - Memory leaks in C++ subplugin infra.

- Known issues: PPA/Launchpad build broken!

Signed-off-by: MyungJoo Ham <myungjoo.ham@samsung.com>
2 years agoclang workaround of vsnprintf
MyungJoo Ham [Wed, 13 Apr 2022 09:52:54 +0000 (18:52 +0900)]
clang workaround of vsnprintf

With clang in macos:

/Users/runner/work/nnstreamer/nnstreamer/gst/nnstreamer/nnstreamer_log.c:97:48: error: format string is not a string literal [-Werror,-Wformat-nonliteral]
  vsnprintf (errmsg, _NNSTREAMER_ERROR_LENGTH, fmt, arg_ptr);
                                               ^~~
/Applications/Xcode_13.2.1.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/secure/_stdio.h:75:63: note: expanded from macro 'vsnprintf'
  __builtin___vsnprintf_chk (str, len, 0, __darwin_obsz(str), format, ap)
                                                              ^~~~~~
1 error generated.

Add a workaround from
https://stackoverflow.com/questions/20167124/vsprintf-and-vsnprintf-wformat-nonliteral-warning-on-clang-5-0

Note: gst-indent is applying indentation very strangely with __attribute__

Signed-off-by: MyungJoo Ham <myungjoo.ham@samsung.com>
2 years agocommon/api_util_impl: use internal error infra.
MyungJoo Ham [Wed, 13 Apr 2022 07:40:33 +0000 (16:40 +0900)]
common/api_util_impl: use internal error infra.

Save the internal error/info/warning message so that
caller may use the info for actual error message.

Signed-off-by: MyungJoo Ham <myungjoo.ham@samsung.com>
2 years agofilter/core: elaborate error messages.
MyungJoo Ham [Wed, 30 Mar 2022 10:12:59 +0000 (19:12 +0900)]
filter/core: elaborate error messages.

Elaborate error and warning messages so that users and developers
can easily point out and fix issues.

Signed-off-by: MyungJoo Ham <myungjoo.ham@samsung.com>
2 years agocommon/log: backtrace, internal err log
MyungJoo Ham [Wed, 30 Mar 2022 10:12:08 +0000 (19:12 +0900)]
common/log: backtrace, internal err log

For debugging messages, add a backtrace function and internal err logging.

Signed-off-by: MyungJoo Ham <myungjoo.ham@samsung.com>
2 years ago[TEST] Skip query test temporarily
yelini-jeong [Mon, 25 Apr 2022 07:03:04 +0000 (16:03 +0900)]
[TEST] Skip query test temporarily

This patch skips query test temporarily because of ppa build failure.

Signed-off-by: yelini-jeong <yelini.jeong@samsung.com>
2 years ago[Decoder] integ division accepted/tizen/unified/20220426.132012 submit/tizen/20220425.043951 submit/tizen/20220426.050006
Jaeyun [Fri, 22 Apr 2022 09:29:40 +0000 (18:29 +0900)]
[Decoder] integ division

Convert float value to get the object.

Signed-off-by: Jaeyun <jy1210.jung@samsung.com>
2 years ago[TEST/mqtt] Run get/set property test w/o mqtt broker submit/tizen/20220422.081403
gichan [Tue, 19 Apr 2022 07:09:51 +0000 (16:09 +0900)]
[TEST/mqtt] Run get/set property test w/o mqtt broker

 - Run get/set property test without mqtt broker.
 - Add ntp prop set/get test.

Signed-off-by: gichan <gichan2.jang@samsung.com>
2 years ago[decoder/bounding_box] Support decoder for mediapipe palm detection
Jiho Chu [Fri, 8 Apr 2022 06:40:46 +0000 (15:40 +0900)]
[decoder/bounding_box] Support decoder for mediapipe palm detection

MP_PALM_DETECTION decoder for bounding box mode is presented. The model and
algorithm is based on mediapipe palm detection model and its
implementation.

Signed-off-by: Jiho Chu <jiho.chu@samsung.com>
2 years ago[Filter] unnecessary initialization
Jaeyun [Tue, 12 Apr 2022 06:43:17 +0000 (15:43 +0900)]
[Filter] unnecessary initialization

Remove unnecessary init while parsing accel string.
- fetch fw info to parse accel for the case if nn framework is not opened.
- check fw info if open() callback of nn framework is not written.

Signed-off-by: Jaeyun <jy1210.jung@samsung.com>
2 years ago[CodeClean] fix svace issue
Jaeyun [Wed, 20 Apr 2022 06:01:38 +0000 (15:01 +0900)]
[CodeClean] fix svace issue

Fix svace issue - uninitialized variable.

Signed-off-by: Jaeyun <jy1210.jung@samsung.com>
2 years ago[Doc] Change CI server domain name
gichan [Wed, 20 Apr 2022 01:43:12 +0000 (10:43 +0900)]
[Doc] Change CI server domain name

Change CI server domain name from nnstreamer.mooo.com to ci.nnstreamer.ai

Signed-off-by: gichan <gichan2.jang@samsung.com>
2 years ago[test/transform] Add tests for per-channel
Yongjoo Ahn [Thu, 14 Apr 2022 09:19:14 +0000 (18:19 +0900)]
[test/transform] Add tests for per-channel

- Add simple unittests for per-channel operation
- Add a SSAT testcase making red RGB image with per-channel operation

Signed-off-by: Yongjoo Ahn <yongjoo1.ahn@samsung.com>
2 years ago[transform] Add per-channel feature for arithmetic op
Yongjoo Ahn [Tue, 12 Apr 2022 02:14:07 +0000 (11:14 +0900)]
[transform] Add per-channel feature for arithmetic op

- Add "per-channel" arithmetic op (see #3711 for details)
- The syntax:
```
tensor_transform mode=arithmetic
option=typecast:float32,per-channel:true@DIM,add:A1@CH,div:D1@CH
```
- DIM means the dimension which is viewed as channel
ex) For 3:4:4:1 incomming tensor, per-channel:true@0 means 0-th DIM
(value is 3) is the channel
- CH means the idx of channel that given operation is applied. If @CH is
  missing, the operation is applied to all channels.
ex) add:255@0 means add 255 to the 0-th channel (which is R among the
RGB)

- Usage example:
```
$ gst-launch-1.0 videotestsrc pattern=2 num-buffers=1 ! videoscale !
videoconvert ! video/x-raw,format=RGB,width=2,height=2 !
tensor_converter ! tensor_transform mode=arithmetic
option=typecast:float32,per-channel:true@0,add:1.5@0,add:2.5@1,mul:2 ! filesink
location=out.log

$ od -f out.log
0000000               3               5               0               3
0000020               5               0               3               5
0000040               0               3               5               0
0000060
```

Signed-off-by: Yongjoo Ahn <yongjoo1.ahn@samsung.com>
2 years ago[Tests/Rate] Apply test fixture to remove duplicate code
Sangjung Woo [Wed, 6 Apr 2022 12:14:39 +0000 (21:14 +0900)]
[Tests/Rate] Apply test fixture to remove duplicate code

To remove duplicate code in each test case, this patch applies
the test fixture framework of Google Test. It increases
maintainability and modifiability.

Signed-off-by: Sangjung Woo <sangjung.woo@samsung.com>
2 years ago[Test/Single] Apply test fixture to remove duplicate code
Sangjung Woo [Wed, 6 Apr 2022 01:59:46 +0000 (10:59 +0900)]
[Test/Single] Apply test fixture to remove duplicate code

To remove duplicate code in each test case, this patch applies the test
fixture framework. Moreover, g_autofree macro is used for allocated
space to be freed automatically no matter test case is passed or not.

Signed-off-by: Sangjung Woo <sangjung.woo@samsung.com>
2 years ago[subplugin] g_module_open with LOCAL flag (instead of GLOBAL)
Yongjoo Ahn [Mon, 18 Apr 2022 07:11:27 +0000 (16:11 +0900)]
[subplugin] g_module_open with LOCAL flag (instead of GLOBAL)

- When tf1-lite and tf2-lite both are present, the later called
  subplugin is not initalized. It's because the constructor functions
  are same as "init_filter_tflite".
  e.g.) `g_module_open (...tf1lite.so, 0)` will call "init_filter_tflite" of
  tf2lite.so.
- This resolves #3709

Signed-off-by: Yongjoo Ahn <yongjoo1.ahn@samsung.com>
2 years ago[README] Fix daily build log link accepted/tizen/unified/20220419.142310 submit/tizen/20220418.053521
gichan [Thu, 14 Apr 2022 05:39:38 +0000 (14:39 +0900)]
[README] Fix daily build log link

 - Fix invalid log link of the ubuntu daily build.
 - Change link of the badges to daily log path.

Signed-off-by: gichan <gichan2.jang@samsung.com>