platform/upstream/nnstreamer.git
10 days ago[Spec] Skip test in case that ASAN is enabled accepted/tizen_unified main tizen accepted/tizen/unified/20241108.105528
Sangjung Woo [Wed, 6 Nov 2024 08:31:20 +0000 (17:31 +0900)]
[Spec] Skip test in case that ASAN is enabled

In case of GCC v14, the build process is stopped when ASAN option is
enabled. Build engineer suggested to skip the test in such case to avoid
the build failure.

Signed-off-by: Sangjung Woo <sangjung.woo@samsung.com>
12 days ago[CodeClean] fix svace issue
Yelin Jeong [Tue, 5 Nov 2024 03:42:45 +0000 (12:42 +0900)]
[CodeClean] fix svace issue

This patch fixes pointer dereferenced after null.
WGID:13147986

Signed-off-by: Yelin Jeong <yelini.jeong@samsung.com>
12 days ago[test] Fix pipeline for `gst_parse_lanch`
Yongjoo Ahn [Tue, 5 Nov 2024 04:51:24 +0000 (13:51 +0900)]
[test] Fix pipeline for `gst_parse_lanch`

- Remove erroneous "gst-launch-1.0" string in pipeline description.

Signed-off-by: Yongjoo Ahn <yongjoo1.ahn@samsung.com>
12 days ago[README] Update badge and daily release repo
Gichan Jang [Mon, 4 Nov 2024 01:07:42 +0000 (10:07 +0900)]
[README] Update badge and daily release repo

 - test coverage result and badge are uploaded on github.io page.
 - Use badge created by Github Action and change the action name for redability.
 - Use S3  instead of EC2 for daily release.

Signed-off-by: Gichan Jang <gichan2.jang@samsung.com>
12 days ago[Action] Generate test coverage from github action
Gichan Jang [Fri, 1 Nov 2024 02:42:49 +0000 (11:42 +0900)]
[Action] Generate test coverage from github action

 - Generate test coverage result and upload the result to github.io
 - Generate coverage badge

Signed-off-by: Gichan Jang <gichan2.jang@samsung.com>
12 days ago[TEST] Add test for watchdog
Gichan Jang [Fri, 1 Nov 2024 00:51:14 +0000 (09:51 +0900)]
[TEST] Add test for watchdog

 - Add unit test for watchdog.

Signed-off-by: Gichan Jang <gichan2.jang@samsung.com>
12 days ago[Filter] Separate watchdog code
Gichan Jang [Thu, 31 Oct 2024 03:02:40 +0000 (12:02 +0900)]
[Filter] Separate watchdog code

Separate watchdog code from tensor_filter.
Watchdog can be used from other element to manage time window.

Signed-off-by: Gichan Jang <gichan2.jang@samsung.com>
12 days ago[Filter] Add suspend mode.
Gichan Jang [Wed, 30 Oct 2024 10:31:29 +0000 (19:31 +0900)]
[Filter] Add suspend mode.

When there is no input within suspend timeout, unload NN framework.
Reload the framework when the input comes again.

Signed-off-by: Gichan Jang <gichan2.jang@samsung.com>
13 days ago[gcov] Fix test coverage generation failure
Gichan Jang [Fri, 1 Nov 2024 08:06:02 +0000 (17:06 +0900)]
[gcov] Fix test coverage generation failure

Test coverage generation has been failed due to gcc bug.
Add comile option to fix it.

Refer: https://manpages.debian.org/unstable/lcov/geninfo.1.en.html#negative:

Signed-off-by: Gichan Jang <gichan2.jang@samsung.com>
2 weeks agomeson: 0.50 doesn't support version with find_program
MyungJoo Ham [Mon, 21 Oct 2024 09:37:43 +0000 (18:37 +0900)]
meson: 0.50 doesn't support version with find_program

version argument of find_program is avaiable since 0.52.
Skip it if it's not 0.52 or higher.

Addresses the secondary point of #4553

Signed-off-by: MyungJoo Ham <myungjoo.ham@samsung.com>
2 weeks ago[datareposrc] Code clean, refactoring and bug fix
hyunil park [Tue, 22 Oct 2024 07:58:00 +0000 (16:58 +0900)]
[datareposrc] Code clean, refactoring and bug fix

- Added check for file write failure
- Modify log message and level, the log message outputs whether 64-bit is supported.
- Removed unnecessary event functions and comments
- Modify Error log to check file write failure
- Remove duplicate code
  Move repetitive static tensor checks in the rendering function to state changes after creating the function.
  create gst_data_repo_sink_set_is_static_tensors()
- bug fix: Memory leak occurs when set_caps is called multiple times

Signed-off-by: hyunil park <hyunil46.park@samsung.com>
2 weeks ago[llama2] Use invoke_dynamic in tensor filter llama2
Yelin Jeong [Mon, 14 Oct 2024 01:08:37 +0000 (10:08 +0900)]
[llama2] Use invoke_dynamic in tensor filter llama2

This patch adds invoke_dynamic funciton to tensor filter llama2.
LLM model's output is flexible, so llama2 filter should use invoke_dynamic.

Signed-off-by: Yelin Jeong <yelini.jeong@samsung.com>
2 weeks ago[filter] Add a new filter `exeuctorch-llama`
Yongjoo Ahn [Thu, 17 Oct 2024 05:07:35 +0000 (14:07 +0900)]
[filter] Add a new filter `exeuctorch-llama`

- Meta's executorch provides llama inference with simple APIs.
- Tested with [this executorch commit](https://github.com/pytorch/executorch/commit/c242c4cec93320a017df8096bab84000d4072c1e).
REF: https://github.com/pytorch/executorch/blob/main/examples/models/llama

pipeline usage:
```
echo "Once upon a time in Seoul," > input.txt && \
gst-launch-1.0  filesrc location=input.txt ! application/octet-stream ! \
tensor_converter ! other/tensors,format=flexible ! \
tensor_filter framework=executorch-llama model=xnnpack_stories110M.pte,stories110M.tokenizer.bin invoke-dynamic=true ! \
other/tensors,format=flexible ! tensor_decoder mode=octet_stream ! \
application/octet-stream ! filesink location=llm.log  --no-position \
&& cat llm.log
> Once upon a time in Seoul,
Near the beach, there was a big sea. On the beach there were many kids. One of the kids was a boy. He was very sad.
The other kids asked him why he was so sad. The boy said he was looking for something special. He had been searching for a long time.
The other kids were so kind. They offered to help him. They all looked for something together. After a while, one of the kids found something in the sand. It was a pretty shell!
```

Signed-off-by: Yongjoo Ahn <yongjoo1.ahn@samsung.com>
3 weeks ago[Trainer] delete unnecessary code
Jaeyun Jung [Wed, 23 Oct 2024 02:13:26 +0000 (11:13 +0900)]
[Trainer] delete unnecessary code

Code clean, remove unnecessary code and use util function for tensor info.

Signed-off-by: Jaeyun Jung <jy1210.jung@samsung.com>
3 weeks ago[Filter] use common util function
Jaeyun Jung [Wed, 23 Oct 2024 08:46:29 +0000 (17:46 +0900)]
[Filter] use common util function

Code clean, use common util functions in filter implementation.

Signed-off-by: Jaeyun Jung <jy1210.jung@samsung.com>
3 weeks agoChange variable names for readability
hyunil park [Wed, 23 Oct 2024 04:59:00 +0000 (13:59 +0900)]
Change variable names for readability

- Change sink_sid to sink_stream_id and sid to stream_id

Signed-off-by: hyunil park <hyunil46.park@samsung.com>
3 weeks ago[Filter] Change internal data struct for tensor_filter transform
gichan2-jang [Tue, 8 Oct 2024 07:42:26 +0000 (16:42 +0900)]
[Filter] Change internal data struct for tensor_filter transform

Change internal data struct for tensor_filter transform.

Signed-off-by: gichan2-jang <gichan2.jang@samsung.com>
3 weeks ago[Refactor] Extract functions of tensor_filter transform.
gichan2-jang [Fri, 4 Oct 2024 01:52:19 +0000 (10:52 +0900)]
[Refactor] Extract functions of tensor_filter transform.

Extract functions to improve redability and matainability.

Signed-off-by: gichan2-jang <gichan2.jang@samsung.com>
3 weeks ago[svace] Fix buffer overflow
Yelin Jeong [Tue, 22 Oct 2024 04:50:08 +0000 (13:50 +0900)]
[svace] Fix buffer overflow

This patch fixes potential defect of buffer overflow.
WGID 111616

Signed-off-by: Yelin Jeong <yelini.jeong@samsung.com>
4 weeks ago[tensor_trainer] Refactoring the chain function
hyunil park [Wed, 11 Sep 2024 06:12:02 +0000 (15:12 +0900)]
[tensor_trainer] Refactoring the chain function

The following functionality has been separated into functions from the chain function.
- Check buffer drop conditions
- Check for run chain func
- Get header size
- Create input tensors
- Check input tensors size
- Destroy input tensors and output tensors
- Get model stats
- Create output tensors

Signed-off-by: hyunil park <hyunil46.park@samsung.com>
4 weeks ago[Spec] Enable protobuf filter for Movable project accepted/tizen_9.0_unified accepted/tizen_unified_toolchain accepted/tizen_unified_x accepted/tizen_unified_x_asan tizen_9.0 accepted/tizen/9.0/unified/20241030.232204 accepted/tizen/unified/20241020.073442 accepted/tizen/unified/toolchain/20241022.122444 accepted/tizen/unified/toolchain/20241022.122917 accepted/tizen/unified/x/20241020.083730 accepted/tizen/unified/x/asan/20241022.113452 tizen_9.0_m2_release
Sangjung Woo [Thu, 17 Oct 2024 05:49:21 +0000 (14:49 +0900)]
[Spec] Enable protobuf filter for Movable project

This patch enables the protobuf filter for Movable project.

Signed-off-by: Sangjung Woo <sangjung.woo@samsung.com>
4 weeks ago[filter] Update executorch API usage
Yongjoo Ahn [Wed, 16 Oct 2024 06:57:46 +0000 (15:57 +0900)]
[filter] Update executorch API usage

- Fix the executorch `Module` API usage in the sub-plugin.

Signed-off-by: Yongjoo Ahn <yongjoo1.ahn@samsung.com>
4 weeks ago[action] Fix yocto build workflow
Yongjoo Ahn [Fri, 11 Oct 2024 10:31:54 +0000 (19:31 +0900)]
[action] Fix yocto build workflow

- Add an option `nobranch=1` to prevent occasional fetch error.
- Remove unnecessary disk space acquisition step.

Signed-off-by: Yongjoo Ahn <yongjoo1.ahn@samsung.com>
5 weeks ago[action] Acquire disk spaces for yocto workflow
Yongjoo Ahn [Fri, 11 Oct 2024 07:39:30 +0000 (16:39 +0900)]
[action] Acquire disk spaces for yocto workflow

- Acquire enough disk space for yocto build cache.

Signed-off-by: Yongjoo Ahn <yongjoo1.ahn@samsung.com>
5 weeks ago[Filter/cpp] invalid header include
Jaeyun Jung [Thu, 10 Oct 2024 03:49:33 +0000 (12:49 +0900)]
[Filter/cpp] invalid header include

The log util in nnstreamer is not exported, remove invalid header include.

Signed-off-by: Jaeyun Jung <jy1210.jung@samsung.com>
5 weeks ago[action] Check yocto/meta-neural-network build per PR
Yongjoo Ahn [Wed, 11 Sep 2024 07:29:56 +0000 (16:29 +0900)]
[action] Check yocto/meta-neural-network build per PR

Existing yocto workflow technically does not build nnstreamer.
This fixes the worfklow to handle yocto cache and build nnstreamer.

Signed-off-by: Yongjoo Ahn <yongjoo1.ahn@samsung.com>
5 weeks ago[Filter/llama2] function to allocate mem
Jaeyun Jung [Wed, 2 Oct 2024 11:22:18 +0000 (20:22 +0900)]
[Filter/llama2] function to allocate mem

Add internal function to allocate memory, to handle possible error case if result is null or allocation failure.

Signed-off-by: Jaeyun Jung <jy1210.jung@samsung.com>
5 weeks ago[action] Add a workflow for github CodeQL
Yongjoo Ahn [Mon, 23 Sep 2024 04:19:15 +0000 (13:19 +0900)]
[action] Add a workflow for github CodeQL

- Add a workflow to analyze github's CodeQL.
- Set a manual build process in it.

Signed-off-by: Yongjoo Ahn <yongjoo1.ahn@samsung.com>
5 weeks ago[tensor_trainer] Remove flexible CAPS from src pad
hyunil park [Wed, 25 Sep 2024 06:56:30 +0000 (15:56 +0900)]
[tensor_trainer] Remove flexible CAPS from src pad

- Remove flexible CAPS from src pad because the output buffer is fixed
  to the values training_loss, training_accuracy, validation_loss
  and validation_accuracy

Signed-off-by: hyunil park <hyunil46.park@samsung.com>
5 weeks ago[filter] Support invoke-dynamic for cpp subplugins
Yongjoo Ahn [Fri, 4 Oct 2024 07:06:22 +0000 (16:06 +0900)]
[filter] Support invoke-dynamic for cpp subplugins

- Let cpp-class based subplugins do `invoke_dynamic`.
- If subplugin overrides `invoke_dynamic` filter would call it, otherwise asserts.

Signed-off-by: Yongjoo Ahn <yongjoo1.ahn@samsung.com>
5 weeks ago[Filter] Fix use after free case
gichan2-jang [Fri, 4 Oct 2024 04:26:07 +0000 (13:26 +0900)]
[Filter] Fix use after free case

In case of output combination, fix in_mem is used after unref the memory.

@todo Refacotr long method of tensor_filter.

Signed-off-by: gichan2-jang <gichan2.jang@samsung.com>
5 weeks ago[doc] Udpate document about filter subplugins
Yongjoo Ahn [Wed, 25 Sep 2024 06:27:51 +0000 (15:27 +0900)]
[doc] Udpate document about filter subplugins

- Update some outdated docs.

Signed-off-by: Yongjoo Ahn <yongjoo1.ahn@samsung.com>
7 weeks ago[Edge] fix svace issue
Jaeyun Jung [Thu, 26 Sep 2024 10:26:14 +0000 (19:26 +0900)]
[Edge] fix svace issue

Code clean, fix svace issue - adding lock to check connection state.

Signed-off-by: Jaeyun Jung <jy1210.jung@samsung.com>
7 weeks ago[llama2] Copy input prompt to prevent buffer overflow
Yelin Jeong [Wed, 25 Sep 2024 05:11:07 +0000 (14:11 +0900)]
[llama2] Copy input prompt to prevent buffer overflow

This patch fixes input memory buffer overflow.
Sometimes, there is another string right after input data.
llama2 api uses prompt string directly, so unintended prompt is added.

Signed-off-by: Yelin Jeong <yelini.jeong@samsung.com>
7 weeks ago[Edge] Wait connection from edgesrc accepted/tizen/unified/20240926.050050 accepted/tizen/unified/toolchain/20241004.101700 accepted/tizen/unified/x/20240926.095732 accepted/tizen/unified/x/asan/20241014.000019
gichan2-jang [Mon, 23 Sep 2024 04:48:05 +0000 (13:48 +0900)]
[Edge] Wait connection from edgesrc

Change the method of waiting for connection from polling to event.

Signed-off-by: gichan2-jang <gichan2.jang@samsung.com>
7 weeks agoJNI/NDK: Add llama2.c sources to nnstreamer.mk
Wook Song [Thu, 19 Sep 2024 10:00:40 +0000 (19:00 +0900)]
JNI/NDK: Add llama2.c sources to nnstreamer.mk

This patch modifies nnstreamer.mk to import TensorFilter sub-plugin for
llama2.c into NNStreamer's Android NDK build chain.

Signed-off-by: Wook Song <wook16.song@samsung.com>
7 weeks ago[Test/Edge] fix mem leak
Jaeyun Jung [Wed, 25 Sep 2024 02:30:14 +0000 (11:30 +0900)]
[Test/Edge] fix mem leak

Code clean, fix mem leak case when invoking event callback with data.

Signed-off-by: Jaeyun Jung <jy1210.jung@samsung.com>
7 weeks ago[llama2c] Change custom filter to tensor filter
Yelin Jeong [Thu, 19 Sep 2024 09:10:11 +0000 (18:10 +0900)]
[llama2c] Change custom filter to tensor filter

This patch changes llama2c custom filter to tensor filter subplugin.
custom filter .so tensor_filter is hard to use in android device.

example pipeline
```
gst-launch-1.0 filesrc location=input.txt ! application/octet-stream ! tensor_converter ! other/tensors,format=flexible ! tensor_filter framework=llama2c model=model.bin,tokenizer.bin ! filesink location=output.txt
```

Signed-off-by: Yelin Jeong <yelini.jeong@samsung.com>
7 weeks ago[Edge] Implement custom connection for edgesrc and edgesink
gichan2-jang [Tue, 3 Sep 2024 04:33:29 +0000 (13:33 +0900)]
[Edge] Implement custom connection for edgesrc and edgesink

 - Implement custom connection for edgesrc and edgesink
 - Enable the tests

Signed-off-by: gichan2-jang <gichan2.jang@samsung.com>
7 weeks ago[action] gbs build nntrainer
Yongjoo Ahn [Thu, 12 Sep 2024 04:59:03 +0000 (13:59 +0900)]
[action] gbs build nntrainer

Let's gbs build and check nntrainer not per PR but daily.
- gbs build nntrainer for every PR is bothersome. It takes more than 20 minutes.
- nntrainer check its nnstreamer compatability in its CI

Signed-off-by: Yongjoo Ahn <yongjoo1.ahn@samsung.com>
8 weeks ago[fix] CodeQL security alert for converting to larger type
Yongjoo Ahn [Thu, 19 Sep 2024 04:50:41 +0000 (13:50 +0900)]
[fix] CodeQL security alert for converting to larger type

Cast one of the operands to `gsize` before performing the multiplication. This way, the multiplication will be done in the larger type

Signed-off-by: Yongjoo Ahn <yongjoo1.ahn@samsung.com>
8 weeks ago[fix] CodeQL security alert for socket usage
Yongjoo Ahn [Thu, 19 Sep 2024 04:48:12 +0000 (13:48 +0900)]
[fix] CodeQL security alert for socket usage

Specify the local loopback address (127.0.0.1) instead of an empty string (''). This change ensures that the socket only accepts connections from the local machine, mitigating the security risk.

Signed-off-by: Yongjoo Ahn <yongjoo1.ahn@samsung.com>
8 weeks agogithub-action: update upload-artifact
MyungJoo Ham [Thu, 19 Sep 2024 08:12:29 +0000 (17:12 +0900)]
github-action: update upload-artifact

upload-artifact v1 is obsolete and github-action rejects running it.

Signed-off-by: MyungJoo Ham <myungjoo.ham@samsung.com>
2 months ago[spec] Disable mlops-agent on VD Cosmos infra accepted/tizen_unified_dev accepted/tizen/unified/20240911.161958 accepted/tizen/unified/dev/20240913.055623 accepted/tizen/unified/x/20240912.013748
Sangjung Woo [Tue, 10 Sep 2024 07:53:48 +0000 (16:53 +0900)]
[spec] Disable mlops-agent on VD Cosmos infra

This patch disables the mlops-agent on VD Cosmos infra.

Signed-off-by: Sangjung Woo <sangjung.woo@samsung.com>
2 months ago[custom] Add custom filter to use llama2c
Yelin Jeong [Fri, 6 Sep 2024 04:04:02 +0000 (13:04 +0900)]
[custom] Add custom filter to use llama2c

This patch adds custom filter to use llama2c.

example pipeline
```sh
$ gst-launch-1.0 filesrc location=input.txt ! text/x-raw ! tensor_converter input-dim=3584:1:1:1 ! tensor_filter framework=custom model=libnnstreamer_customfilter_llama2.so ! filesink location=output.txt
```

model.bin and tokenizer.bin is needed.

Signed-off-by: Yelin Jeong <yelini.jeong@samsung.com>
2 months ago[meson] Introduce the llama2.c
Yelin Jeong [Fri, 6 Sep 2024 04:03:14 +0000 (13:03 +0900)]
[meson] Introduce the llama2.c

This patch introduces the llama2.c to nnstreamer.

Signed-off-by: Yelin Jeong <yelini.jeong@samsung.com>
2 months ago[Edge] Remove aitt support
gichan2-jang [Fri, 6 Sep 2024 01:03:38 +0000 (10:03 +0900)]
[Edge] Remove aitt support

Remove AITT connection type since AITT has been deprecated.

Signed-off-by: gichan2-jang <gichan2.jang@samsung.com>
2 months ago[Release] update version
Jaeyun Jung [Tue, 3 Sep 2024 00:57:48 +0000 (09:57 +0900)]
[Release] update version

Prepare Tizen 9.0 M2 release, update version.

Signed-off-by: Jaeyun Jung <jy1210.jung@samsung.com>
2 months ago[doc] Add a new product using nnstreamer
Yongjoo Ahn [Tue, 3 Sep 2024 07:11:36 +0000 (16:11 +0900)]
[doc] Add a new product using nnstreamer

- MediaTek uses nnstreamer in their products to show some AI demo apps.

Signed-off-by: Yongjoo Ahn <yongjoo1.ahn@samsung.com>
2 months ago[android] Let api-android build QNN tensor_filter
Yongjoo Ahn [Mon, 2 Sep 2024 07:47:36 +0000 (16:47 +0900)]
[android] Let api-android build QNN tensor_filter

- Expose the source code in `jni/nnstreamer.mk` so that api/android
  build can use it.

Signed-off-by: Yongjoo Ahn <yongjoo1.ahn@samsung.com>
2 months ago[filter] Fix QNN API usages
Yongjoo Ahn [Mon, 2 Sep 2024 07:46:08 +0000 (16:46 +0900)]
[filter] Fix QNN API usages

- Set `tensor.v1.memType` properly.
- Fix argument value to `compose_graphs`.

Signed-off-by: Yongjoo Ahn <yongjoo1.ahn@samsung.com>
2 months ago[fix] Fix log method in qnn filter
Yongjoo Ahn [Mon, 2 Sep 2024 07:44:42 +0000 (16:44 +0900)]
[fix] Fix log method in qnn filter

- Use nns_log instead of glib log.

Signed-off-by: Yongjoo Ahn <yongjoo1.ahn@samsung.com>
2 months ago[TDD] Add edgesrc/sink and query custom connection tests
gichan2-jang [Wed, 28 Aug 2024 11:28:14 +0000 (20:28 +0900)]
[TDD] Add edgesrc/sink and query custom connection tests

Add edgesrc/sink and tensor_qeury custom connection tests.
Enable the tests later.

Signed-off-by: gichan2-jang <gichan2.jang@samsung.com>
2 months ago[filter] Remove initalizing for Qualcomm Android accepted/tizen/unified/20240903.172448 accepted/tizen/unified/dev/20240910.111640 accepted/tizen/unified/x/20240904.025235
Yongjoo Ahn [Fri, 30 Aug 2024 07:53:31 +0000 (16:53 +0900)]
[filter] Remove initalizing for Qualcomm Android

- QNN / SNPE filters on Qualcomm Android require additional job to use
  Qualcomm's DSP / NPU.
- Remove the redundant codes and let the job executed in MLAPI/Android.

Signed-off-by: Yongjoo Ahn <yongjoo1.ahn@samsung.com>
2 months ago[fix] Fix log of filter subplugin's name
Yongjoo Ahn [Thu, 29 Aug 2024 05:45:02 +0000 (14:45 +0900)]
[fix] Fix log of filter subplugin's name

- Use `prop->fwname` to handle both FW_V0 and FW_V1.

Signed-off-by: Yongjoo Ahn <yongjoo1.ahn@samsung.com>
2 months ago[filter] Fix qnn context_config
Yongjoo Ahn [Thu, 29 Aug 2024 05:43:51 +0000 (14:43 +0900)]
[filter] Fix qnn context_config

- Set proper option to context_config.

Signed-off-by: Yongjoo Ahn <yongjoo1.ahn@samsung.com>
2 months ago[CodeClean] fix svace issue
Jaeyun Jung [Fri, 30 Aug 2024 02:02:05 +0000 (11:02 +0900)]
[CodeClean] fix svace issue

Code clean, fix mem leak and check function params.

Signed-off-by: Jaeyun Jung <jy1210.jung@samsung.com>
2 months ago[Meson] check snpe ver
Jaeyun Jung [Thu, 22 Aug 2024 06:57:53 +0000 (15:57 +0900)]
[Meson] check snpe ver

Check snpe version by using snpe-util function.
Also, update build message.

Signed-off-by: Jaeyun Jung <jy1210.jung@samsung.com>
2 months ago[Filter/SNPE] check snpe version
Jaeyun Jung [Wed, 28 Aug 2024 07:13:00 +0000 (16:13 +0900)]
[Filter/SNPE] check snpe version

Handle runtime error if snpe version is invalid, and update exception when failed to configure instance.

Signed-off-by: Jaeyun Jung <jy1210.jung@samsung.com>
2 months ago[filter] Add QNN tensor filter
Yongjoo Ahn [Wed, 21 Aug 2024 04:58:32 +0000 (13:58 +0900)]
[filter] Add QNN tensor filter

- Add Qualcomm QNN tensor_filter.
- User should give two so files for model argument:
    `tensor_filter framework=qnn model=libInception_v3.so,libQnnCpu.so`

REF:
https://www.qualcomm.com/developer/software/qualcomm-ai-engine-direct-sdk

Signed-off-by: Yongjoo Ahn <yongjoo1.ahn@samsung.com>
2 months ago[SNPE] function to delete instance
Jaeyun Jung [Thu, 22 Aug 2024 05:59:54 +0000 (14:59 +0900)]
[SNPE] function to delete instance

Remove unnecessary local val and use proper function to delete buffer handle.

Signed-off-by: Jaeyun Jung <jy1210.jung@samsung.com>
2 months ago[filter] Add custom prop `InputType` and `OutputType` for snpe
Yongjoo Ahn [Thu, 8 Aug 2024 07:03:21 +0000 (16:03 +0900)]
[filter] Add custom prop `InputType` and `OutputType` for snpe

- Let snpe subplugin set types for input/output tensors.
- The value should be one of {"FLOAT32", "TF8"}
- Each value should be seperated by `;` (if plural)
- The order should follow the order of input/output tensors in the model.
- Example usage:
  ... custom=InputType:TF8,OutputType:"FLOAT32,FLOAT32"
- If type is not specified, use default type of the given model.
  - quanitzed model can use both float32 and tf8,
    non-quantized model can only use float32.

Signed-off-by: Yongjoo Ahn <yongjoo1.ahn@samsung.com>
2 months ago[filter] Add custom prop `OutputTensor` for snpe
Yongjoo Ahn [Thu, 8 Aug 2024 06:37:10 +0000 (15:37 +0900)]
[filter] Add custom prop `OutputTensor` for snpe

- Let snpe subplugin set output tensor names provided by `OutputTensor`
  custom property.
- Each name should be sepearted by `;` (if OutputTensor is plural)
- Example usage:
  ... model=model.dlc custom=OutputTensor:"output_0;output_1" ...

Signed-off-by: Yongjoo Ahn <yongjoo1.ahn@samsung.com>
2 months ago[filter] Initialize a handle in snpe filter
Yongjoo Ahn [Thu, 8 Aug 2024 06:34:55 +0000 (15:34 +0900)]
[filter] Initialize a handle in snpe filter

- Initialize the handle with NULL

Signed-off-by: Yongjoo Ahn <yongjoo1.ahn@samsung.com>
2 months ago[Element] util to get nth info
Jaeyun Jung [Tue, 13 Aug 2024 08:59:24 +0000 (17:59 +0900)]
[Element] util to get nth info

Code clean, use util function to get nth tensor-info ptr to prevent index error.

Signed-off-by: Jaeyun Jung <jy1210.jung@samsung.com>
2 months ago[CodeClean] possible mem leak case
Jaeyun Jung [Tue, 13 Aug 2024 09:07:45 +0000 (18:07 +0900)]
[CodeClean] possible mem leak case

Code clean, update util function to free allocated mem block and fix mem leak case.

Signed-off-by: Jaeyun Jung <jy1210.jung@samsung.com>
2 months ago[CodeClean] invalid function to handle mem block
Jaeyun Jung [Tue, 13 Aug 2024 09:12:01 +0000 (18:12 +0900)]
[CodeClean] invalid function to handle mem block

If gst-buffer has multiple mem blocks, memory from get-all-memory function does not update original data.
Update function - replace old memory.

Signed-off-by: Jaeyun Jung <jy1210.jung@samsung.com>
3 months ago[Action] Change daily release path
gichan2-jang [Mon, 12 Aug 2024 08:12:30 +0000 (17:12 +0900)]
[Action] Change daily release path

Change daily release path to apply lifecycle rule for each directory.
Release URL: release.nnstreamer.com

Signed-off-by: gichan2-jang <gichan2.jang@samsung.com>
3 months ago[build] Exit cuda-version.sh with nonzero value
Yongjoo Ahn [Fri, 9 Aug 2024 07:35:23 +0000 (16:35 +0900)]
[build] Exit cuda-version.sh with nonzero value

- Exit `cuda-version.sh` with `set -o pipefail` to exit with nonzero value if any command fails.

Signed-off-by: Yongjoo Ahn <yongjoo1.ahn@samsung.com>
3 months ago[build] Exit with proper value in tensorrt-version.sh
Yongjoo Ahn [Fri, 9 Aug 2024 07:03:55 +0000 (16:03 +0900)]
[build] Exit with proper value in tensorrt-version.sh

- Exit tensorrt-version.sh with non zero value to meson detect it.

Signed-off-by: Yongjoo Ahn <yongjoo1.ahn@samsung.com>
3 months ago[test] Add SSAT test for yolov10 decoder
Yongjoo Ahn [Wed, 14 Aug 2024 04:40:02 +0000 (13:40 +0900)]
[test] Add SSAT test for yolov10 decoder

- Add simple testcases with raw files.

Signed-off-by: Yongjoo Ahn <yongjoo1.ahn@samsung.com>
3 months ago[decoder] Add boundingbox decoder for yolov10
Yongjoo Ahn [Wed, 14 Aug 2024 04:38:09 +0000 (13:38 +0900)]
[decoder] Add boundingbox decoder for yolov10

- YoloV10 is an end-to-end (NMS-free) object detection model.
  Its output dimension is 6:#MAX_DETECTION:1 (output[#MAX_DETECTION][6]).
  The 6 values are [x, y, w, h, conf, class_id].

Signed-off-by: Yongjoo Ahn <yongjoo1.ahn@samsung.com>
3 months ago[CodeClean] Use g_autofree gchar* for error msg
Yongjoo Ahn [Wed, 14 Aug 2024 04:04:20 +0000 (13:04 +0900)]
[CodeClean] Use g_autofree gchar* for error msg

- Use `g_autofree gchar*` for `...info_to_string` to clean code.

Signed-off-by: Yongjoo Ahn <yongjoo1.ahn@samsung.com>
3 months ago[CodeClean] Free allocated memory in boundingbox
Yongjoo Ahn [Wed, 14 Aug 2024 03:55:45 +0000 (12:55 +0900)]
[CodeClean] Free allocated memory in boundingbox

- Free those two garray allocations.

Signed-off-by: Yongjoo Ahn <yongjoo1.ahn@samsung.com>
3 months ago[Mux] remove unnecessary var
Jaeyun Jung [Fri, 9 Aug 2024 07:08:13 +0000 (16:08 +0900)]
[Mux] remove unnecessary var

Code clean, remove unnecessary data in mux collect-pad data.

Signed-off-by: Jaeyun Jung <jy1210.jung@samsung.com>
3 months ago[Element] invalid stream id
Jaeyun Jung [Fri, 9 Aug 2024 07:42:00 +0000 (16:42 +0900)]
[Element] invalid stream id

Prevent invalid stream-id case if element has multiple sink pads.

Signed-off-by: Jaeyun Jung <jy1210.jung@samsung.com>
3 months ago[Action] Fix action job name
gichan2-jang [Fri, 16 Aug 2024 01:18:50 +0000 (10:18 +0900)]
[Action] Fix action job name

Fix invalid action job name

Signed-off-by: gichan2-jang <gichan2.jang@samsung.com>
3 months ago[CodeClean] fix svace issues
Jaeyun Jung [Wed, 7 Aug 2024 03:01:29 +0000 (12:01 +0900)]
[CodeClean] fix svace issues

Code clean, fix indent and svace issues.

Signed-off-by: Jaeyun Jung <jy1210.jung@samsung.com>
3 months ago[Action] Doxygen book
gichan2-jang [Mon, 5 Aug 2024 09:26:56 +0000 (18:26 +0900)]
[Action] Doxygen book

 - Generage doxygen book and upload to S3

Signed-off-by: gichan2-jang <gichan2.jang@samsung.com>
3 months ago[Action] Gen docs using hotdoc tool
gichan2-jang [Mon, 5 Aug 2024 04:48:08 +0000 (13:48 +0900)]
[Action] Gen docs using hotdoc tool

 - Generage docs using hotdoc tool
 - Publish result to nnstreamer.github.io

Signed-off-by: gichan2-jang <gichan2.jang@samsung.com>
3 months ago[Action] Release daily build result
gichan2-jang [Fri, 2 Aug 2024 08:06:39 +0000 (17:06 +0900)]
[Action] Release daily build result

 - Release ubuntu daily build result

Signed-off-by: gichan2-jang <gichan2.jang@samsung.com>
3 months agoAdd support for dali pipeline.
Bram Veldhoen [Sun, 16 Jun 2024 08:46:16 +0000 (10:46 +0200)]
Add support for dali pipeline.

Adds a tensor_filter for dali pipelines (experimental).

Signed-off-by: Bram Veldhoen <bram@adiplus.nl>
3 months ago[test] Add test for RGBP and BGRP formats
Yongjoo Ahn [Mon, 5 Aug 2024 07:32:40 +0000 (16:32 +0900)]
[test] Add test for RGBP and BGRP formats

- Add testcases for RGBP/BGRP video formats in `unittest_sink`

Signed-off-by: Yongjoo Ahn <yongjoo1.ahn@samsung.com>
3 months ago[converter] Supports gstreamer video format RGBP, BGRP
Yongjoo Ahn [Mon, 29 Jul 2024 06:05:00 +0000 (15:05 +0900)]
[converter] Supports gstreamer video format RGBP, BGRP

- Channel First (NCHW) formats RGBP and BGRP are supported in gstreamer
  1.20.0+
- Let tensor_converter handle this video_format.

Simple performance test in my machine shows
  2500 FPS (videoconvert) v.s. 1300 FPS (tensor_transform transpose)

```bash
videotestsrc ! video/x-raw,width=640,height=480,format=RGB ! \
    videoscale ! videoconvert !
    video/x-raw,format=RGBP,width=320,height=320 ! \
    tensor_converter ! tensor_sink
``` -> 2500 FPS
v.s.
```bash
gst-launch-1.0 \
videotestsrc ! video/x-raw,width=640,height=480,format=RGB ! \
    videoscale ! videoconvert !
    video/x-raw,format=RGB,width=224,height=224 ! \
    tensor_converter ! \
    tensor_transform mode=transpose option=1:2:0:3 ! tensor_sink
``` -> 1300 FPS

Signed-off-by: Yongjoo Ahn <yongjoo1.ahn@samsung.com>
3 months ago[doc] Add `channel_last` convert for the Tizen AI guide doc
Yongjoo Ahn [Fri, 2 Aug 2024 06:28:59 +0000 (15:28 +0900)]
[doc] Add `channel_last` convert for the Tizen AI guide doc

- Describe `ai_edge_torch`'s `to_channel_last_io` API.

Signed-off-by: Yongjoo Ahn <yongjoo1.ahn@samsung.com>
3 months ago[Action] Release daily build result
gichan2-jang [Wed, 31 Jul 2024 08:11:02 +0000 (17:11 +0900)]
[Action] Release daily build result

Release daily build result to S3.

Signed-off-by: gichan2-jang <gichan2.jang@samsung.com>
3 months ago[TEST] increase timeout for state change
gichan2-jang [Wed, 31 Jul 2024 10:22:01 +0000 (19:22 +0900)]
[TEST] increase timeout for state change

State change tests in the armv7l architecture is too long.
Let's increase the timeout limit.

```
[  638s] [ RUN      ] nnstreamerFilterSharedModel.tfliteSharedReload
[  638s] ** Message: 09:59:55.720: accl = cpu
[  638s] ** Message: 09:59:55.725: accl = cpu
[  640s] ../tests/nnstreamer_filter_shared_model/unittest_filter_shared_model.cc:174: Failure
[  640s] Expected equality of these values:
[  640s]   setPipelineStateSync (pipeline, GST_STATE_PLAYING, (2000U))
[  640s]     Which is: -62
[  640s]   0
[  640s]
[  641s] ../tests/nnstreamer_filter_shared_model/unittest_filter_shared_model.cc:180: Failure
[  641s] Expected: (res[0]) != (0U), actual: 0 vs 0
[  641s]
[  643s] [  FAILED  ] nnstreamerFilterSharedModel.tfliteSharedReload (4570 ms)
```

Signed-off-by: gichan2-jang <gichan2.jang@samsung.com>
3 months agotizen: allow tensorrt
MyungJoo Ham [Fri, 12 Jul 2024 02:46:02 +0000 (11:46 +0900)]
tizen: allow tensorrt

Tizen is going to accept TensorRT and NVidia GPUs in the build system.
Let's allow to enable TensorRT.

However, meson is not configured to force tensorrt, yet, becuase
we do not know whether Tizen is going to port TensorRT version >=10 or not.

Signed-off-by: MyungJoo Ham <myungjoo.ham@samsung.com>
3 months ago[CodeClean] possible leak when inserting item into hashtable
Jaeyun Jung [Mon, 22 Jul 2024 05:07:44 +0000 (14:07 +0900)]
[CodeClean] possible leak when inserting item into hashtable

Code clean, handle error case when inserting new data into hashtable.

Signed-off-by: Jaeyun Jung <jy1210.jung@samsung.com>
3 months ago[CodeClean] remove space
Jaeyun Jung [Mon, 22 Jul 2024 05:03:10 +0000 (14:03 +0900)]
[CodeClean] remove space

Code clean, fix indent and redundant space in docs.

Signed-off-by: Jaeyun Jung <jy1210.jung@samsung.com>
3 months ago[coverity] fix coverity issues
Yelin Jeong [Sun, 28 Jul 2024 23:29:09 +0000 (08:29 +0900)]
[coverity] fix coverity issues

This patch fixes some coverity issues.
- WID 10976414 : The pointer returned by operator new can't be null.
- WID 10976530 : Constructor may not initialize class members.

Signed-off-by: Yelin Jeong <yelini.jeong@samsung.com>
3 months agodon't assert on PyIsInitialized.
MyungJoo Ham [Fri, 26 Jul 2024 06:35:00 +0000 (15:35 +0900)]
don't assert on PyIsInitialized.

It is possible that python-status-check is called
when PyIsInitialized is false (refer to #4523)

Trying to fix #4523

Signed-off-by: MyungJoo Ham <myungjoo.ham@samsung.com>
3 months ago[spec] Enable ml_agent_support
Yongjoo Ahn [Mon, 22 Jul 2024 09:52:12 +0000 (18:52 +0900)]
[spec] Enable ml_agent_support

- Let the ml_agent related code be built in Tizen

Signed-off-by: Yongjoo Ahn <yongjoo1.ahn@samsung.com>
3 months ago[mlagent] Support using of "activated model" in nnstreamer
Yongjoo Ahn [Mon, 22 Jul 2024 09:51:19 +0000 (18:51 +0900)]
[mlagent] Support using of "activated model" in nnstreamer

Let the valid uri scheme be
  `mlagent://model/[name]`  for activated [name] model
  `mlagent://model/[name]/version` for [name] model with given version.

Signed-off-by: Yongjoo Ahn <yongjoo1.ahn@samsung.com>
3 months ago[tests] Fix mlagent model mock information
Yongjoo Ahn [Mon, 22 Jul 2024 09:49:03 +0000 (18:49 +0900)]
[tests] Fix mlagent model mock information

- Versions of models should not be 0.

Signed-off-by: Yongjoo Ahn <yongjoo1.ahn@samsung.com>
3 months ago[mlagent] Rename mlagent related functions
Yongjoo Ahn [Mon, 22 Jul 2024 09:47:27 +0000 (18:47 +0900)]
[mlagent] Rename mlagent related functions

- Let the mock follow naming `model_get` as mlops-agent's interface

Signed-off-by: Yongjoo Ahn <yongjoo1.ahn@samsung.com>
3 months agoFix typos
Yelin Jeong [Mon, 29 Jul 2024 23:17:41 +0000 (08:17 +0900)]
Fix typos

This patch fixes some typos.

Signed-off-by: Yelin Jeong <yelini.jeong@samsung.com>
3 months ago[filter] Support TFLite QNN Delegate
Yongjoo Ahn [Tue, 25 Jun 2024 08:13:40 +0000 (17:13 +0900)]
[filter] Support TFLite QNN Delegate

- Add custom option for QNN Delegate.
- Add custom option for QNN backend and performance mode.
- User can use this in pipeline:
`... custom=Delegate:QNN,QNNBackend:DSP,QNNPerformanceMode:highperformance ...`

Disclaimer: This only tested in Android.
Signed-off-by: Yongjoo Ahn <yongjoo1.ahn@samsung.com>
3 months ago[filter] Prepare QNN delegate for tflite
Yongjoo Ahn [Tue, 25 Jun 2024 08:11:25 +0000 (17:11 +0900)]
[filter] Prepare QNN delegate for tflite

- Import QNN delegate header.
- For Android, set certain environment variables for DSP/HTP runtimes.

Signed-off-by: Yongjoo Ahn <yongjoo1.ahn@samsung.com>
3 months ago[Doc] Update jni README
Yelin Jeong [Tue, 23 Jul 2024 05:09:49 +0000 (14:09 +0900)]
[Doc] Update jni README

This patch updates jni related README.

Signed-off-by: Yelin Jeong <yelini.jeong@samsung.com>