platform/upstream/nnstreamer.git
5 years ago[Filter/Decoder] Exception handling of not found subplugin
MyungJoo Ham [Thu, 21 Feb 2019 08:40:18 +0000 (17:40 +0900)]
[Filter/Decoder] Exception handling of not found subplugin

If subplugin is not found or not configured,
do not proceed with GSTCAP negotiation or STREAM-START.

Fixes #1092

Signed-off-by: MyungJoo Ham <myungjoo.ham@samsung.com>
5 years ago[CI] Add /ext/* to unit-test-coverage scope
MyungJoo Ham [Fri, 22 Feb 2019 04:11:53 +0000 (13:11 +0900)]
[CI] Add /ext/* to unit-test-coverage scope

The files in /ext/* are officially released code.
Publish the lcov result.

This prepares #1153

Signed-off-by: MyungJoo Ham <myungjoo.ham@samsung.com>
5 years ago[Test/Decoder] Add unit test cases of errors
MyungJoo Ham [Mon, 25 Feb 2019 04:46:51 +0000 (13:46 +0900)]
[Test/Decoder] Add unit test cases of errors

To cover more code measured by lcov, add test cases for exceptions

Signed-off-by: MyungJoo Ham <myungjoo.ham@samsung.com>
5 years ago[Decoder] Bugfix: get_property/tensorseg format error
MyungJoo Ham [Mon, 25 Feb 2019 08:25:24 +0000 (17:25 +0900)]
[Decoder] Bugfix: get_property/tensorseg format error

1. Do not print "," as the first character: write "seg1,seg2,seg3" instead of ",seg1,seg2,seg3".
2. Free memory!

Signed-off-by: MyungJoo Ham <myungjoo.ham@samsung.com>
5 years ago[Decoder/DV] INFO, instead of ERR, for normal log
MyungJoo Ham [Mon, 25 Feb 2019 06:36:48 +0000 (15:36 +0900)]
[Decoder/DV] INFO, instead of ERR, for normal log

Normal operation information log should not use "GST_ERROR".

Signed-off-by: MyungJoo Ham <myungjoo.ham@samsung.com>
5 years agodoc: Add how to generate libnnstreamer.so with ndk-build
Geunsik Lim [Mon, 25 Feb 2019 09:46:29 +0000 (18:46 +0900)]
doc: Add how to generate libnnstreamer.so with ndk-build

This commit is to append a document to describe how to compile
the nnstreamer repository with the ndk-build command to get the
libnnstreamer for Android software platform. The ndk-build
is provided by Android NDK toolkit.

**Changes

* Version 2:
1. Added how to download (custom) prebuilt android-gstreamer files
2. Added how to setup Android NDK

* Version 1:
1. Added how to build a nnstreamer library
2. Added how to build a test application

Signed-off-by: Geunsik Lim <geunsik.lim@samsung.com>
5 years ago[Unittest/Split] Test tensorpick property
MyungJoo Ham [Mon, 25 Feb 2019 06:42:28 +0000 (15:42 +0900)]
[Unittest/Split] Test tensorpick property

Tensorpick feature is not tested in unittest.
Add a corresponding test case.

Signed-off-by: MyungJoo Ham <myungjoo.ham@samsung.com>
5 years ago[Filter] Check if open is successful.
MyungJoo Ham [Mon, 25 Feb 2019 02:21:02 +0000 (11:21 +0900)]
[Filter] Check if open is successful.

Check if open() is successful at the start().

Note that other usage of gst_tensor_filter_open_fw()
if called by gst_tensor_filter_call(), whose
success is checked by "ret" value if required; there
are cases where a "fail" is an option.

Note that by checking it at start callback,
we can ensure that it's successfully opened for
every pipeline start.

Fixes #1160

Signed-off-by: MyungJoo Ham <myungjoo.ham@samsung.com>
5 years ago[Decoder] Bugfix: silent semantics reversed.
MyungJoo Ham [Mon, 25 Feb 2019 08:20:29 +0000 (17:20 +0900)]
[Decoder] Bugfix: silent semantics reversed.

It should be "verbose" if silent is false.
If it's "silent", it should not emit too many messages.

Signed-off-by: MyungJoo Ham <myungjoo.ham@samsung.com>
5 years ago[Android] ARM64: Added supported API level of NDK r12b
Geunsik Lim [Fri, 22 Feb 2019 02:32:51 +0000 (11:32 +0900)]
[Android] ARM64: Added supported API level of NDK r12b

This commit is to comment the limitation of NDK r12b when developers
try to run NNstreamer on their Android target device.

**Changes
1. Updated coding style of Application.mk
2. Added annotation on NDK r12b

Signed-off-by: Geunsik Lim <geunsik.lim@samsung.com>
5 years ago[tensor_repo] Doxygen: Updated annotation on EOS
Geunsik Lim [Fri, 22 Feb 2019 02:22:35 +0000 (11:22 +0900)]
[tensor_repo] Doxygen: Updated annotation on EOS

This commit is to update the existing annotation on EOS in order to
generate understanding statements with Doxygen.

Signed-off-by: Geunsik Lim <geunsik.lim@samsung.com>
5 years ago[Android/ARM64] Support ndk-build to run nnstreamer on Android
Geunsik Lim [Tue, 19 Feb 2019 02:25:40 +0000 (11:25 +0900)]
[Android/ARM64] Support ndk-build to run nnstreamer on Android

This commit is to support the ndk-build command that is included in Android
NDK toolkit. This commit is to be enabled in order to run nnstream-based
their applications on Android platform as well as Ubuntu and Tizen.

**CHANGELOG**

* Version 5
1. Added the tensor decoder in Android.mk to avoid a situation that developers
   have to modify the gst_nnstreamer_init() function.

* Version 4
1. Added variable NNSTREAMER_VERSION to do not modify the existing nnstreamer.c

* Version 3
1. Disconnected the dependant absolute path of libz.so file
   - It means that nnstreamer library and test app (shared ELF) do not call
     libz.so. file directly. The libz.so file will be called gstreamer to avoid
     absolute path issue as soon as possible.
2. Added a multiple architecture structure
   - This commit support others (e.g. ARM32, X86, X86_64) as well as ARM64.

* Version 2
1. Removed hardcoded operations to support ARM64
2. Added instruction manual to reproduce consistently
3. Synchronized Android NDK + Android Platform (Nougat) + Android API level (24)
4. Unified separated two folders (e.g., header files and .so files)

* Version 1
1. Added Android.mk file to build nnstreamer and apps
2. Added Application.mk to define a run-time C library and
   the API level of Android

Signed-off-by: Geunsik Lim <geunsik.lim@samsung.com>
Signed-off-by: Jijoong Moon <Jijoong.moon@amsung.com>
5 years ago[tensor_repo] fixed coding style of header file
Geunsik Lim [Thu, 21 Feb 2019 23:29:47 +0000 (08:29 +0900)]
[tensor_repo] fixed coding style of header file

This patch is trivial. This commit is to fix a coding style
of header file consistently.

Signed-off-by: Geunsik Lim <geunsik.lim@samsung.com>
5 years ago[Filter/TF] support string type
Jaeyun [Fri, 15 Feb 2019 05:03:39 +0000 (14:03 +0900)]
[Filter/TF] support string type

In tensorflow sub-plugin, support DT_STRING type.
Added testcase with speech command model, which classifies wav input to keyword.
This model has input type DT_STRING.

Signed-off-by: Jaeyun Jung <jy1210.jung@samsung.com>
5 years ago[Filter/TF] refactor to init tf model
Jaeyun [Wed, 13 Feb 2019 11:44:37 +0000 (20:44 +0900)]
[Filter/TF] refactor to init tf model

1. set in/out tensor info while loading and verifying tf model
2. copy raw data into tensor instead loop and remove macros to set tensor data

Signed-off-by: Jaeyun Jung <jy1210.jung@samsung.com>
5 years agomeson: sync version number among ubuntu, gbs, and meson
Geunsik Lim [Tue, 19 Feb 2019 03:46:30 +0000 (12:46 +0900)]
meson: sync version number among ubuntu, gbs, and meson

This commit is to synchronize the version number of nnstreamer
among the Ubuntu, Gbs, and Meson. The standard number is located
in 'version' tag of ./packaging/nnstreamer.spec file.

* Tizen/gbs:  ./packaging/ (Standard)
* Ubuntu/pdebuild: ./debian/changelog
* meson/build-system: meson.build

Signed-off-by: Geunsik Lim <geunsik.lim@samsung.com>
5 years ago[Filter] common functions in filter-subplugins
Jaeyun [Mon, 11 Feb 2019 09:23:11 +0000 (18:23 +0900)]
[Filter] common functions in filter-subplugins

use common functions to load tf/tf-lite model

1. remove unnecessary functions in sub-plugins (tf/tf-lite)
2. copy and free tensor info to load tf model during the caps negotiation
3. print additional logs when loading model info

Signed-off-by: Jaeyun Jung <jy1210.jung@samsung.com>
5 years ago[DIST/Debian] Create a symbolic link to libnnstreamer
Wook Song [Mon, 18 Feb 2019 23:45:53 +0000 (08:45 +0900)]
[DIST/Debian] Create a symbolic link to libnnstreamer

This patch creates a symbolic link to libnnstreamer using dh_link.

Signed-off-by: Wook Song <wook16.song@samsung.com>
5 years ago[Git] Update .gitignore to ignore files related to VS Code and debuild
Wook Song [Fri, 15 Feb 2019 02:15:04 +0000 (11:15 +0900)]
[Git] Update .gitignore to ignore files related to VS Code and debuild

This patch updates .gitignore to ignore files related to Visual Studio
Code and debuild.

Signed-off-by: Wook Song <wook16.song@samsung.com>
5 years ago[Transform] Do not apply 80col break rule for error message string
Wook Song [Fri, 15 Feb 2019 01:33:01 +0000 (10:33 +0900)]
[Transform] Do not apply 80col break rule for error message string

This patch updates error messages in tensor_transform to allow breaking
80col rule.

Signed-off-by: Wook Song <wook16.song@samsung.com>
5 years ago[Transform/Arithmetic] Remove checking for typecast-first rule
Wook Song [Wed, 13 Feb 2019 07:07:20 +0000 (16:07 +0900)]
[Transform/Arithmetic] Remove checking for typecast-first rule

This patch removes the typecast-first checking rule from the
set_option_data function. This rule is already checked by the regex
before the option string parsing.

Signed-off-by: Wook Song <wook16.song@samsung.com>
5 years ago[Test/UnittestPlugins/Transform] Apply 'mode' property changed to enum
Wook Song [Wed, 13 Feb 2019 06:25:19 +0000 (15:25 +0900)]
[Test/UnittestPlugins/Transform] Apply 'mode' property changed to enum

This patch applies the 'mode' property newly changed from string to enum
to tensor_transform tests.

Signed-off-by: Wook Song <wook16.song@samsung.com>
5 years ago[Transform/Arithmetic] Handle invalid option using regex
Wook Song [Tue, 12 Feb 2019 10:14:09 +0000 (19:14 +0900)]
[Transform/Arithmetic] Handle invalid option using regex

This patch add handling for the invalid option string using a regex.
Before the application pipeline starts, it verifies the option string
first, and then terminates the pipeline when the option string is
invalid.

Signed-off-by: Wook Song <wook16.song@samsung.com>
5 years ago[Transform/Stand] Change reaction for invalid option string
Wook Song [Tue, 12 Feb 2019 07:44:53 +0000 (16:44 +0900)]
[Transform/Stand] Change reaction for invalid option string

This patch changes the reaction for the invalid option string to
displaying error messages using g_critical and terminating the pipeline
before it starts.

Signed-off-by: Wook Song <wook16.song@samsung.com>
5 years ago[Transform/Dimchg] Refine option string parsing code
Wook Song [Tue, 12 Feb 2019 07:27:06 +0000 (16:27 +0900)]
[Transform/Dimchg] Refine option string parsing code

This patch refines the code for parsing option string of the dimchg mode.

Signed-off-by: Wook Song <wook16.song@samsung.com>
5 years ago[Transform/Dimchg] Add handling for invalid option string
Wook Song [Tue, 12 Feb 2019 07:16:35 +0000 (16:16 +0900)]
[Transform/Dimchg] Add handling for invalid option string

This patch adds invalid option string handling for the dimchg mode.

Signed-off-by: Wook Song <wook16.song@samsung.com>
5 years ago[Transform/Transpose] Remove unnecessary error handling code
Wook Song [Tue, 12 Feb 2019 06:53:45 +0000 (15:53 +0900)]
[Transform/Transpose] Remove unnecessary error handling code

This patch removes error handling code that is not necessary anymore.

Signed-off-by: Wook Song <wook16.song@samsung.com>
5 years ago[Transform/Transpose] Add invalid option string handling
Wook Song [Tue, 12 Feb 2019 06:45:09 +0000 (15:45 +0900)]
[Transform/Transpose] Add invalid option string handling

This patch adds handling for invalid option string. When the option
string is invalid, the pipeline would be terminated by g_assert before
it starts.

Signed-off-by: Wook Song <wook16.song@samsung.com>
5 years ago[Transform/Typecast] Change reaction for invalid option using g_critical
Wook Song [Tue, 12 Feb 2019 01:34:02 +0000 (10:34 +0900)]
[Transform/Typecast] Change reaction for invalid option using g_critical

This patch adds a regular expression for the typecast option string, and
then changes the reaction for invalid option string using the regular
expression and g_critical. In short, if the option string is invalid,
the pipeline would be terminated before it starts.

Signed-off-by: Wook Song <wook16.song@samsung.com>
5 years ago[Transform] Change parameter spec of 'mode' property to enum
Wook Song [Mon, 11 Feb 2019 05:16:36 +0000 (14:16 +0900)]
[Transform] Change parameter spec of 'mode' property to enum

This patch changes the existing parameter spec of string type
(g_param_spec) to the parameter spec of enum (g_param_enum), which gives
more flexibility by taking either strings or enum value, for the
arguments of the 'mode' property.  Moreover, this change makes the
gst-inspect-1.0 command show a list of supporting modes.

Signed-off-by: Wook Song <wook16.song@samsung.com>
5 years ago[Build] fix indent error
Jaeyun [Fri, 15 Feb 2019 02:43:03 +0000 (11:43 +0900)]
[Build] fix indent error

ci report - indent error in tensor-converter

Signed-off-by: Jaeyun Jung <jy1210.jung@samsung.com>
5 years agoUpdated error message string
MyungJoo Ham [Thu, 14 Feb 2019 08:41:25 +0000 (17:41 +0900)]
Updated error message string

1. In order to prevent incorrect impression on the string size, added "up to"
2. Don't apply 80col break for error message strings; it often makes it to grep error messages (ref: Linux kernel 80col rule)

5 years ago[Converter] data size of text input
Jaeyun [Wed, 13 Feb 2019 08:10:18 +0000 (17:10 +0900)]
[Converter] data size of text input

Remove definition for text size.
Instead, set dimension for text input with the property input-dim in tensor-converter.

Signed-off-by: Jaeyun Jung <jy1210.jung@samsung.com>
5 years ago[Common] change type name - text
Jaeyun [Wed, 13 Feb 2019 03:12:38 +0000 (12:12 +0900)]
[Common] change type name - text

change type name for text/x-raw

Signed-off-by: Jaeyun Jung <jy1210.jung@samsung.com>
5 years ago[Common] remove file _plugin_api.c
Jaeyun [Wed, 13 Feb 2019 02:15:07 +0000 (11:15 +0900)]
[Common] remove file _plugin_api.c

move all functions to _common and remove _plugin_api

Signed-off-by: Jaeyun Jung <jy1210.jung@samsung.com>
5 years ago[Common] move common tensor-info functions to api header
Jaeyun [Tue, 12 Feb 2019 08:25:10 +0000 (17:25 +0900)]
[Common] move common tensor-info functions to api header

move the functions about tensor-info and caps negotiation into plugin api

Signed-off-by: Jaeyun Jung <jy1210.jung@samsung.com>
5 years ago[Common] change function name
Jaeyun [Tue, 12 Feb 2019 07:54:25 +0000 (16:54 +0900)]
[Common] change function name

change common functions for nnstreamer plugin api

Signed-off-by: Jaeyun Jung <jy1210.jung@samsung.com>
5 years ago[Decoder] remove unused
Jaeyun [Tue, 12 Feb 2019 07:35:58 +0000 (16:35 +0900)]
[Decoder] remove unused

remove unused code and fix log type

Signed-off-by: Jaeyun Jung <jy1210.jung@samsung.com>
5 years agoDo not configure LD_PATH during build
MyungJoo Ham [Fri, 1 Feb 2019 00:56:50 +0000 (09:56 +0900)]
Do not configure LD_PATH during build

- It breaks debian build postprocessing.
- We do not need it during build.

Signed-off-by: MyungJoo Ham <myungjoo.ham@samsung.com>
5 years ago[Decoder] Pull decoder subplugins out to /ext
MyungJoo Ham [Wed, 30 Jan 2019 10:06:14 +0000 (19:06 +0900)]
[Decoder] Pull decoder subplugins out to /ext

Decoder subplugins can now be built externally
without the need to be built along with nnstreamer.

Thus, from now on, third party developers can
write decoder subplugins without nnstreamer sources.

Signed-off-by: MyungJoo Ham <myungjoo.ham@samsung.com>
5 years ago[API] Filter/Decoder subplugin API headers
MyungJoo Ham [Wed, 30 Jan 2019 09:44:49 +0000 (18:44 +0900)]
[API] Filter/Decoder subplugin API headers

Before:
- nnstreamer_plugin_api.h had mandatory filter APIs and optional APIs for filter/decoder, depend on glib, not supporting decoder mandatory APIs.

After:
- nnstreamer_plugin_api.h has optional APIs only / depend on glib
- nnstreamer_plugin_api_filter.h has mandatory Filter APIs / no dependencies
- nnstremaer_plugin_api_decoder.h has mandatory Decoder APIs / depend on gst

With this, we can completely cut the dependencies on glib for nnstreamer sub-plugin writers.
Besides, "ext-nizing" decoders requires this as well.

Signed-off-by: MyungJoo Ham <myungjoo.ham@samsung.com>
5 years ago[Common] add common function
Jaeyun [Mon, 11 Feb 2019 09:07:37 +0000 (18:07 +0900)]
[Common] add common function

1. add new function _info_free() to free allocated data in tensor-info structure
2. move functions to plugin api header

TODO:
I will add new PR to use common functions to set/get tensor info in tensor_filter tf sub-plugins.

Signed-off-by: Jaeyun Jung <jy1210.jung@samsung.com>
5 years ago[Common] fix val type
Jaeyun [Fri, 8 Feb 2019 10:31:57 +0000 (19:31 +0900)]
[Common] fix val type

fix return type in common functions and code clean

Signed-off-by: Jaeyun Jung <jy1210.jung@samsung.com>
5 years ago[Filter] print message when caps-nego failed
Jaeyun [Mon, 11 Feb 2019 04:35:57 +0000 (13:35 +0900)]
[Filter] print message when caps-nego failed

add warning message if properties and model info are different

Signed-off-by: Jaeyun Jung <jy1210.jung@samsung.com>
5 years ago[Decoder] refactor subplugin structure for /ext preparation
MyungJoo Ham [Wed, 30 Jan 2019 09:28:08 +0000 (18:28 +0900)]
[Decoder] refactor subplugin structure for /ext preparation

The interface between tensor-decoder::main and tensor-decoder::*
should not include internal tensor-decoder data structure.

Communicate with Gstreamer native or exported data structure only.

For third-party / user-contents developers, detach
glib dependencies as well.

Signed-off-by: MyungJoo Ham <myungjoo.ham@samsung.com>
5 years agoSubplugin register/unregister refactored.
MyungJoo Ham [Wed, 30 Jan 2019 07:27:44 +0000 (16:27 +0900)]
Subplugin register/unregister refactored.

A plugin, "filter" and "decoder" no more have their own
internal data structure to store subplugins.

Both filter and decoder subplugins now use APIs of
nnstreamer_subplugin via
nnstreamer_plugin_api.h (filters)
tensordec.h (decoder)

Decoders are to be refactored further to use
nnstreamer_plugin_api.h after moving decoder subplugins
to ext/

Signed-off-by: MyungJoo Ham <myungjoo.ham@samsung.com>
5 years ago[Build/Filter] code clean
Jaeyun [Fri, 8 Feb 2019 08:52:09 +0000 (17:52 +0900)]
[Build/Filter] code clean

fix typo and clean up build script,

1. remove unnecessary variable and dependency.
2. set common path and dependencies, clean up meson script.

Signed-off-by: Jaeyun Jung <jy1210.jung@samsung.com>
5 years ago[DIST] Install path changes, add symlink
MyungJoo Ham [Tue, 29 Jan 2019 09:41:31 +0000 (18:41 +0900)]
[DIST] Install path changes, add symlink

1. Add symlink to libnnstreamer.so at _libdir
2. Install tensor-filter subplugins to the tensor-filter
configuration directory, not _libdir.
3. Do not generate api library. We can use libnnstreamer.

Signed-off-by: MyungJoo Ham <myungjoo.ham@samsung.com>
5 years ago[Filter:*] Migrate subplugins to ext
MyungJoo Ham [Tue, 29 Jan 2019 09:33:47 +0000 (18:33 +0900)]
[Filter:*] Migrate subplugins to ext

Filter subplugins that have external dependencies are
fully detached from Filter:main now.

Signed-off-by: MyungJoo Ham <myungjoo.ham@samsung.com>
5 years ago[Meson] dependency for generated files
Jaeyun Jung [Fri, 1 Feb 2019 16:38:22 +0000 (01:38 +0900)]
[Meson] dependency for generated files

Remove orc-generated files in nnstreamer plugin dep and clean up meson script.

If declares dependency with orc-gen files, it will compile generated file with this dep.

Signed-off-by: Jaeyun Jung <jy1210.jung@samsung.com>
5 years ago[Meson/CustomFilter] change install path
Jaeyun [Fri, 1 Feb 2019 05:22:55 +0000 (14:22 +0900)]
[Meson/CustomFilter] change install path

install custom-filter examples into {subplugin_install_prefix}/customfilters

Signed-off-by: Jaeyun Jung <jy1210.jung@samsung.com>
5 years ago[Meson] configuration to install ini
Jaeyun [Fri, 1 Feb 2019 03:53:18 +0000 (12:53 +0900)]
[Meson] configuration to install ini

add config to set sub-plugins install prefix

Signed-off-by: Jaeyun Jung <jy1210.jung@samsung.com>
5 years ago[DIST] Install /etc/nnstreamer.ini
MyungJoo Ham [Wed, 30 Jan 2019 10:14:15 +0000 (19:14 +0900)]
[DIST] Install /etc/nnstreamer.ini

Users can configure the locations of decoder/filter subplugins.

Signed-off-by: MyungJoo Ham <myungjoo.ham@samsung.com>
5 years ago[Test] runTest.sh typo
MyungJoo Ham [Thu, 31 Jan 2019 01:47:35 +0000 (10:47 +0900)]
[Test] runTest.sh typo

If statements of bash uses ==, not =, for equal-comparison

Signed-off-by: MyungJoo Ham <myungjoo.ham@samsung.com>
5 years ago[Conf] Bugfix of array out of bound
MyungJoo Ham [Wed, 30 Jan 2019 10:36:02 +0000 (19:36 +0900)]
[Conf] Bugfix of array out of bound

The last element of vstr should be NULL.
Set NULL for such elements

Signed-off-by: MyungJoo Ham <myungjoo.ham@samsung.com>
5 years ago[Conf] Bugfix: if no path is given, use current dir.
MyungJoo Ham [Wed, 30 Jan 2019 07:23:56 +0000 (16:23 +0900)]
[Conf] Bugfix: if no path is given, use current dir.

If path is NULL, don't give it to glib path library.
Use "./" instead.

Signed-off-by: MyungJoo Ham <myungjoo.ham@samsung.com>
5 years ago[Filter:*] Cut build dependency of filter-subplugin to filter
MyungJoo Ham [Tue, 29 Jan 2019 09:15:05 +0000 (18:15 +0900)]
[Filter:*] Cut build dependency of filter-subplugin to filter

Enable tensor-filter subplugins to be built without
dependencies on tensor_filter.

After this commit, we can build filter subplugins with
the exported "tensor_typedef.h".

This enables #786 and #761

Signed-off-by: MyungJoo Ham <myungjoo.ham@samsung.com>
5 years ago[Subplugin] Do not dlsym if it's already probed.
MyungJoo Ham [Tue, 29 Jan 2019 09:06:17 +0000 (18:06 +0900)]
[Subplugin] Do not dlsym if it's already probed.

With dlopen, consturctor function is loaded, which
may call subplugin-probe.

If it has called subplugin-probe, registering the
subplugin to an element (filter/decoder) specific
internal list, we do not need to register it with
nnstreamer_subplugin structure.

- Add an internal API, "hold_register_subplugin", that
notified nnstremer_subplugin that it has probed already.
- Call "hold_register_subplugin" at probe function.

Signed-off-by: MyungJoo Ham <myungjoo.ham@samsung.com>
5 years agoBugfix of nnstreamer_conf internal API
MyungJoo Ham [Tue, 29 Jan 2019 09:04:30 +0000 (18:04 +0900)]
Bugfix of nnstreamer_conf internal API

- Fix exported name of nnsconf_loadconf (typo)
- Fix incorrect enums of subplugin_prefixes (typo)

Signed-off-by: MyungJoo Ham <myungjoo.ham@samsung.com>
5 years ago[Codeowner] Add kparichay to default reviewers
MyungJoo Ham [Tue, 29 Jan 2019 14:46:03 +0000 (23:46 +0900)]
[Codeowner] Add kparichay to default reviewers

And, we do not need special reviewers for packaging any more.

Signed-off-by: MyungJoo Ham <myungjoo.ham@samsung.com>
5 years ago[Repo] Add test case for repo dynamicity
jijoong.moon [Wed, 16 Jan 2019 02:36:48 +0000 (11:36 +0900)]
[Repo] Add test case for repo dynamicity

In this PR, added repo test application. It constructs pipeline and
change slot id from 0 to 1 after spending time waiting for 200 micro
second.

                                         repository
+------------+   +----------+        +-----------------+
| Multi-sink |<--| repo_src |<---+---|     slot 0      |<---+--+
+------------+   +----------+    |   +-----------------+    |  |
                                 +---|     slot 1      |<---+  |
                                     +-----------------+       |
                                                               |
+-----------+   +--------+   +-----------+   +-----------+     |
| Multi-src |-->| pngdec |-->| converter |-->| repo_sink |-----+
+-----------+   +--------+   +-----------+   +-----------+

**Self evaluation:**
1. Build test:  [X]Passed [ ]Failed [ ]Skipped
2. Run test:  [X]Passed [ ]Failed [ ]Skipped

Signed-off-by: jijoong.moon <jijoong.moon@samsung.com>
5 years ago[Decoder/Boundingbox] make decoder possible to handle tensorflow ssd model
Hyoung Joo Ahn [Fri, 25 Jan 2019 06:17:32 +0000 (15:17 +0900)]
[Decoder/Boundingbox] make decoder possible to handle tensorflow ssd model

make it available to process the output tensors of tensorflow ssd model

Signed-off-by: Hyoung Joo Ahn <hello.ahn@samsung.com>
5 years ago[Filter/subplugin] Follow the subplugin naming rule.
MyungJoo Ham [Mon, 28 Jan 2019 04:41:22 +0000 (13:41 +0900)]
[Filter/subplugin] Follow the subplugin naming rule.

Subplugin name rule (described at gst/nnstreamer/nnstreamer_subplugin.h)
states:

The filename should be subplugin_prefixes[type]${name}.so

The subplugins should be follow the rule to be recognized by runtime
plug-and-play mechanism of nnstreamer_subplugin.h

Signed-off-by: MyungJoo Ham <myungjoo.ham@samsung.com>
5 years ago[Common] Remove unused function, 'gst_tensor_media_type_from_caps'
Wook Song [Mon, 28 Jan 2019 02:02:19 +0000 (11:02 +0900)]
[Common] Remove unused function, 'gst_tensor_media_type_from_caps'

This patch removes a unused function, gst_tensor_media_type_from_caps,
from tensor_common.

Signed-off-by: Wook Song <wook16.song@samsung.com>
5 years ago[Dist/Tizen] Add plug-in API library to development package
Wook Song [Fri, 25 Jan 2019 06:27:00 +0000 (15:27 +0900)]
[Dist/Tizen] Add plug-in API library to development package

This patch adds the plug-in API library to the development package for
Tizen.

Signed-off-by: Wook Song <wook16.song@samsung.com>
5 years ago[DIST/Debian] Add plug-in API library to development package
Wook Song [Fri, 25 Jan 2019 06:08:51 +0000 (15:08 +0900)]
[DIST/Debian] Add plug-in API library to development package

This patch adds the plug-in API library to the development pacakge for
Debian distros.

Signed-off-by: Wook Song <wook16.song@samsung.com>
5 years ago[PkgConfig] Update to use plug-in API lib
Wook Song [Fri, 25 Jan 2019 06:02:02 +0000 (15:02 +0900)]
[PkgConfig] Update to use plug-in API lib

This patch updates the PkgConfig file for the development package so
that the plug-in developers can use newly added plug-in API library.

Signed-off-by: Wook Song <wook16.song@samsung.com>
5 years ago[Meson] Create shared and static libraries of plug-in APIs
Wook Song [Fri, 25 Jan 2019 01:57:33 +0000 (10:57 +0900)]
[Meson] Create shared and static libraries of plug-in APIs

This patch updates meson build script to create shared and static
libraries of plug-in APIs.

Signed-off-by: Wook Song <wook16.song@samsung.com>
5 years ago[Common] Remove duplicate contents from tensor_common
Wook Song [Fri, 25 Jan 2019 01:27:55 +0000 (10:27 +0900)]
[Common] Remove duplicate contents from tensor_common

This patch removes contents duplicated in the plug-in APIs are removed
from tensor_common. Meson build script is also updated to avoid build
break.

Signed-off-by: Wook Song <wook16.song@samsung.com>
5 years ago[Common] Extract APIs for plug-in developers from tensor_common
Wook Song [Fri, 25 Jan 2019 00:47:42 +0000 (09:47 +0900)]
[Common] Extract APIs for plug-in developers from tensor_common

Since we do not export tensor_common anymore, plug-in developers outside
our repository cannot use typedefed data types and mandatory functions
to implement NNStreamer extension plug-ins. In order to handle such
issue, this patch extracts types and functions can be regarded as APIs
from tensor_common. Note that only subset of all APIs which the plugin
developers would need has been currently extracted.

Signed-off-by: Wook Song <wook16.song@samsung.com>
5 years ago[Build/Deb] enable tensorflow
Jaeyun Jung [Sat, 26 Jan 2019 03:15:27 +0000 (12:15 +0900)]
[Build/Deb] enable tensorflow

protobuf packaging done, enable tensorflow option.

Signed-off-by: Jaeyun Jung <jy1210.jung@samsung.com>
5 years ago[Filter/NNFW] add error message for user&debugging
Hyoung Joo Ahn [Fri, 25 Jan 2019 07:26:13 +0000 (16:26 +0900)]
[Filter/NNFW] add error message for user&debugging

add error message when errors have occurred

Signed-off-by: Hyoung Joo Ahn <hello.ahn@samsung.com>
5 years ago[Filter/Test] flow-return to drop incoming buffer
Jaeyun [Fri, 25 Jan 2019 04:58:55 +0000 (13:58 +0900)]
[Filter/Test] flow-return to drop incoming buffer

check returned value from invoke vmethod and return flow-dropped to skip incoming buffer.

TODO:
define status code for NNFW and custom-filter

Signed-off-by: Jaeyun Jung <jy1210.jung@samsung.com>
5 years agoStart of 0.1.1 Release Candidate Development
MyungJoo Ham [Fri, 25 Jan 2019 00:54:08 +0000 (09:54 +0900)]
Start of 0.1.1 Release Candidate Development

This is the start of 0.1.1 development.

Signed-off-by: MyungJoo Ham <myungjoo.ham@samsung.com>
5 years agoRelease NNStreamer 0.1.0 v0.1.0
MyungJoo Ham [Thu, 24 Jan 2019 06:35:55 +0000 (15:35 +0900)]
Release NNStreamer 0.1.0

- Build system migration cmake --> meson
- Support Tensorflow without input/output tensor memcpy
- other/tensor stream format updated
    - From 0.1.0, a single property, "dimension", describes the whole dimension instead of "dim1", "dim2", ...
    - Objective 1: in the future, we may support tensors with more than 4 dimensions without updating the protocol.
    - Objective 2: it was just too ugly.
- Example applications migrated to other git repo to make this repo ready for upstreaming in the fugure and to ensure buildability for third party developers.
- Support run-time attaching subplugins (filter and decoder)
- Support "ini" and envvar configurations for subplugin locations
- Dynamic external recurrences
- Subplugin API sets (draft. do not expect backward compatibility)
- Bug fixes (memory leaks, incorrect logs, type checks, ...)

Signed-off-by: MyungJoo Ham <myungjoo.ham@samsung.com>
5 years ago[Filter/NNFW] clean code of tensorflow & tf-lite
Hyoung Joo Ahn [Thu, 24 Jan 2019 12:39:51 +0000 (21:39 +0900)]
[Filter/NNFW] clean code of tensorflow & tf-lite

adjust the style and remove useless keywords

Signed-off-by: Hyoung Joo Ahn <hello.ahnn@gmail.com>
5 years ago[Common] common function to copy tensor info
Jaeyun [Thu, 24 Jan 2019 05:46:27 +0000 (14:46 +0900)]
[Common] common function to copy tensor info

add common function to copy tensor info

TODO:
1. seperate util-functions for developer (custom filter and plugins)
2. update custom examples and nnstreamer plugins with these functions

Signed-off-by: Jaeyun Jung <jy1210.jung@samsung.com>
5 years ago[Doc] Add gitter badge
MyungJoo Ham [Thu, 24 Jan 2019 09:20:44 +0000 (18:20 +0900)]
[Doc] Add gitter badge

Let users find the nnstreamer gitter easily.

Signed-off-by: MyungJoo Ham <myungjoo.ham@samsung.com>
5 years ago[Repo] Implement Dynamic Property(slot_id) Change of Repo
jijoong.moon [Fri, 18 Jan 2019 08:21:51 +0000 (17:21 +0900)]
[Repo] Implement Dynamic Property(slot_id) Change of Repo

Implement Dynamic slot_id property change of tensor_reposrc and
tensor_reposink. In order to check the status of current repo,
sink_changed(gboolean), sink_id(guint) and src_changed (gboolean),
src_id(guint) variables are added. While waiting buffer from
repo_sink, repo check if this variables are changed using
gst_tensor_repo_check_chagned call, and if it changed, it trys to get
buffer from new slot id. The changing status of repo is set when slot
id property changed using tensor_repo_set_changed.

**Changes proposed in this PR:**
- Added function calls to check and set the changing status of repo.
- Added variables to control flow in each repo.

**Self evaluation:**
1. Build test:  [X]Passed [ ]Failed [ ]Skipped
2. Run test:  [X]Passed [ ]Failed [ ]Skipped

Signed-off-by: jijoong.moon <jijoong.moon@samsung.com>
5 years ago[Doc] Add regular release status
MyungJoo Ham [Thu, 24 Jan 2019 06:21:07 +0000 (15:21 +0900)]
[Doc] Add regular release status

Build/Text status and Test code coverage will be
available after https://github.com/nnsuite/TAOS-CI/issues/452
is resolved.

Signed-off-by: MyungJoo Ham <myungjoo.ham@samsung.com>
5 years ago[Doc] Update getting started.
MyungJoo Ham [Thu, 24 Jan 2019 05:25:34 +0000 (14:25 +0900)]
[Doc] Update getting started.

Cleaning up the documentation, following up 3065d38fb8c56064ab695a8d46b2f9dbd3e1aad7

Signed-off-by: MyungJoo Ham <myungjoo.ham@samsung.com>
5 years ago[Aggregator] condition to make output buffer writable
Jaeyun [Wed, 23 Jan 2019 08:41:30 +0000 (17:41 +0900)]
[Aggregator] condition to make output buffer writable

code review:
calls gst_buffer_make_writable when aggregator needs to concatenate output data

Signed-off-by: Jaeyun Jung <jy1210.jung@samsung.com>
5 years ago[Filter] fix the memory leak at filter
Hyoung Joo Ahn [Wed, 23 Jan 2019 03:58:23 +0000 (12:58 +0900)]
[Filter] fix the memory leak at filter

this pr solves the memory leak problem about the `model_file` and the `name` of input/output tensor

Signed-off-by: Hyoung Joo Ahn <hello.ahnn@gmail.com>
5 years ago[Documentation] Update install instructions
Mauro Carvalho Chehab [Thu, 17 Jan 2019 16:24:04 +0000 (14:24 -0200)]
[Documentation] Update install instructions

In order to install it on Debian, it is needed first to get
the ssat and tensorflow packages.

Add instructions about how to do that.

Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
5 years ago[Decoder/BoundingBox] rename parameters just for tf-lite
Hyoung Joo Ahn [Mon, 21 Jan 2019 11:39:46 +0000 (20:39 +0900)]
[Decoder/BoundingBox] rename parameters just for tf-lite

some parameters subordinated to the ssd model of TFLite should have their own name.

Signed-off-by: Hyoung Joo Ahn <hello.ahnn@gmail.com>
5 years ago[Build] update document and include path
Jaeyun [Tue, 22 Jan 2019 04:01:26 +0000 (13:01 +0900)]
[Build] update document and include path

1. update document (remove cmake guide)
2. change orc generated header path

Signed-off-by: Jaeyun Jung <jy1210.jung@samsung.com>
5 years ago[Build] remove cmake
Jaeyun [Tue, 22 Jan 2019 03:34:54 +0000 (12:34 +0900)]
[Build] remove cmake

transition to meson, remove all the cmake script.

relate issue : #927

Signed-off-by: Jaeyun Jung <jy1210.jung@samsung.com>
5 years ago[Common] change caps format for other/tensor
Jaeyun [Tue, 15 Jan 2019 08:00:10 +0000 (17:00 +0900)]
[Common] change caps format for other/tensor

This PR changes caps format for other/tensor.
Caps for tensor stream : other/tensor, framerate = (fraction) [0, max], type = (string) { uint8, .. }, dimension = (string) d1:d2:d3:d4

Related issue : #1027

Signed-off-by: Jaeyun Jung <jy1210.jung@samsung.com>
5 years ago[Document] update documents
Jaeyun [Tue, 22 Jan 2019 05:34:10 +0000 (14:34 +0900)]
[Document] update documents

update broken links and nnstreamer changes

Signed-off-by: Jaeyun Jung <jy1210.jung@samsung.com>
5 years ago[Repo] Add test cases for negotiation check
jijoong.moon [Tue, 15 Jan 2019 01:31:26 +0000 (10:31 +0900)]
[Repo] Add test cases for negotiation check

In order to check negotiation error, added test cases for repo.

**Changes proposed in this PR:**
- Added Test cases for repo

Resolves: #1026

**Self evaluation:**
1. Build test:  [X]Passed [ ]Failed [ ]Skipped
2. Run test:  [X]Passed [ ]Failed [ ]Skipped

Signed-off-by: jijoong.moon <jijoong.moon@samsung.com>
5 years ago[Filter] correct misspells and improper logic
Hyoung Joo Ahn [Tue, 22 Jan 2019 04:22:57 +0000 (13:22 +0900)]
[Filter] correct misspells and improper logic

there are some typos about in/out at a comment & exception handling

Signed-off-by: Hyoung Joo Ahn <hello.ahnn@gmail.com>
5 years ago[Repo] Add checking caps compatibility between repo_src & repo_sink
jijoong.moon [Mon, 14 Jan 2019 22:44:21 +0000 (07:44 +0900)]
[Repo] Add checking caps compatibility between repo_src & repo_sink

It is difficult to check caps compatibility during negotiation because
they are not pipelined each other. That's why reposrc needs caps
property by the way. However, we have to check compatibility somehow
during runtime. In order to do that, GstMetaRepo is introduced.
In this PR, functions and defines are included to manipulate the meta
for repo. During generating buffer in reposink, insert GstMetaRepo
data with GstCaps and push to repo. After that, reposrc extracts the
GstMetaRepo when pulling the gstbuffer from repo
and compare it with caps defined by user. If they are not compatible,
it shows error and return GST_FLOW_EOS.

**Changes proposed in this PR:**
- Add GstMetaRepo type and manipulation functions
- Add insert GstMetaRepo into buffer
- Add comparison routine during get gstbuffer from repo
- Add Error handling if they are not compatible

Resolves: Issue #1026

**Self evaluation:**
1. Build test:  [X]Passed [ ]Failed [ ]Skipped
2. Run test:  [X]Passed [ ]Failed [ ]Skipped

Signed-off-by: jijoong.moon <jijoong.moon@samsung.com>
5 years agoDIST: apply meson/ninja to debian build
MyungJoo Ham [Mon, 14 Jan 2019 01:28:23 +0000 (10:28 +0900)]
DIST: apply meson/ninja to debian build

Before remocing CMAKE infrastructure,
migrate build system to meson/ninja for debian builds.

This disabled tensorflow for Ubuntu build.
@hello-ahn reenable it after the update of protobuf

Signed-off-by: MyungJoo Ham <myungjoo.ham@samsung.com>
5 years ago[CI Fix] Temporarily Disable App Test
MyungJoo Ham [Sat, 19 Jan 2019 07:11:18 +0000 (16:11 +0900)]
[CI Fix] Temporarily Disable App Test

With recent updates on app test and build script,
we no longer have example applications in nnstreamer.git
It should be migrated to nnstreamer-example.git

We should build nnstreamer-example.git for app test, not
example directory in nnstreamer.git

This is an emergency fix for #1047

Signed-off-by: MyungJoo Ham <myungjoo.ham@samsung.com>
5 years ago[Filter/Tensorflow] remove `memcpy` of the output tensor by implementing `destroyNoti...
Hyoung Joo Ahn [Fri, 18 Jan 2019 06:34:44 +0000 (15:34 +0900)]
[Filter/Tensorflow] remove `memcpy` of the output tensor by implementing `destroyNotify()`

maintain the output tensors at the map for a while and erase it from the map when `destroyNotify()` is called

Signed-off-by: Hyoung Joo Ahn <hello.ahnn@gmail.com>
5 years ago[Meson] clean script for unittest
Jaeyun [Fri, 18 Jan 2019 06:56:46 +0000 (15:56 +0900)]
[Meson] clean script for unittest

update build script for unittests and test-plugins

1. add script to copy exe for ssat
2. clean script to build test-plugins

Signed-off-by: Jaeyun Jung <jy1210.jung@samsung.com>
5 years ago[Example] remove all exec-examples
Jaeyun [Mon, 21 Jan 2019 05:56:58 +0000 (14:56 +0900)]
[Example] remove all exec-examples

Now all the exe-examples are migrated to nnstreamer-example repository.

TODO : we have to set up the app-test with the example repo.

Signed-off-by: Jaeyun Jung <jy1210.jung@samsung.com>
5 years ago[Meson] change dependency for thread
Jaeyun [Thu, 17 Jan 2019 10:38:22 +0000 (19:38 +0900)]
[Meson] change dependency for thread

change dependency for thread (guide in meson-build https://mesonbuild.com/howtox.html)

Signed-off-by: Jaeyun Jung <jy1210.jung@samsung.com>
5 years ago[Example] use an existed function rather than custom
Hyoung Joo Ahn [Fri, 18 Jan 2019 03:56:36 +0000 (12:56 +0900)]
[Example] use an existed function rather than custom

replace _strdup() to g_strdup() because it fulfills exactly same role

Signed-off-by: Hyoung Joo Ahn <hello.ahnn@gmail.com>
5 years ago[Filter/Example] apply destroyNotify() callback at example
Hyoung Joo Ahn [Fri, 18 Jan 2019 03:33:31 +0000 (12:33 +0900)]
[Filter/Example] apply destroyNotify() callback at example

add destroy_notify callback at the example using allocate_invoke.

Signed-off-by: Hyoung Joo Ahn <hello.ahnn@gmail.com>