MyungJoo Ham [Thu, 29 Nov 2018 00:39:32 +0000 (09:39 +0900)]
[Common/Conf] Close g_dir_open instance.
The returned object must be closed.
Reported-by: Wook Song <wook16.song@samsung.com>
Signed-off-by: MyungJoo Ham <myungjoo.ham@samsung.com>
jijoong.moon [Fri, 23 Nov 2018 02:12:06 +0000 (11:12 +0900)]
[Repo] Add testcases for tensor_reposink/tesnor_reposrc
3 testcases are added.
- ID 0 : 10 stream --> tensor_reposink --> (Repo) --> tensor_reposrc
- ID 0 : 10 stream --> tensor_reposink --> (Repo) --> tensor_reposrc
ID 1 : 10 stream --> tensor_reposink --> (Repo) --> tensor_reposrc
- ID 0 : 10 stream --> tensor_reposink --> (Repo) --> tensor_reposrc
ID 1 : 10 stream --> tensor_reposink --> (Repo) --> tensor_reposrc
ID 2 : 10 stream --> tensor_reposink --> (Repo) --> tensor_reposrc
**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>
Jaeyun [Wed, 28 Nov 2018 07:19:48 +0000 (16:19 +0900)]
[Orc] add init function
add orc_init to initialize orc library.
Signed-off-by: Jaeyun Jung <jy1210.jung@samsung.com>
Jaeyun [Tue, 27 Nov 2018 09:39:22 +0000 (18:39 +0900)]
[Transform/Orc] replace memcpy
1. define macro nns_memcpy/nns_memset
2. include liborc and use orc_memcpy instead in plugin tensor-transform and tensor-aggregator.
TODO check cmake to use orc lib
Signed-off-by: Jaeyun Jung <jy1210.jung@samsung.com>
jijoong.moon [Tue, 27 Nov 2018 04:57:27 +0000 (13:57 +0900)]
[Repo] Add & Modify for meson.build for tensor_repo
- Add meson.build for tensor_reposrc & tensor_reposink
- Modify meson.build in nnstreamer root dir.
**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>
MyungJoo Ham [Mon, 26 Nov 2018 10:24:32 +0000 (19:24 +0900)]
[Common/Conf] API to get conf values.
We are going to allow users to configure paths of
filters, decoders, and custom filters.
This is the API skeletons for the first step of #804
Signed-off-by: MyungJoo Ham <myungjoo.ham@samsung.com>
MyungJoo Ham [Mon, 26 Nov 2018 07:41:53 +0000 (16:41 +0900)]
[CMake] Do not download anything during build.
Let the user download the model at run-time with the given scripts.
They will be able to do so after #909
With #909, this concludes #866
Signed-off-by: MyungJoo Ham <myungjoo.ham@samsung.com>
Wook Song [Mon, 26 Nov 2018 10:08:31 +0000 (19:08 +0900)]
[Filter/CMAKE] Remove unnecessary message printing out
This patch removes unnecessary message printed out by the cmake script
in the filter directory.
Signed-off-by: Wook Song <wook16.song@samsung.com>
jijoong.moon [Fri, 23 Nov 2018 02:53:29 +0000 (11:53 +0900)]
[Repo] Use GST_DEBUG instead of silent_debug
Replace custom debug/error/warning macro to GST_*
**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>
jijoong.moon [Fri, 23 Nov 2018 07:49:28 +0000 (16:49 +0900)]
[Repo] Change GstTensorData to GstTensorRepoData
In order not to confuse, change the name GstTensorData to
GstTensorRepoData.
**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>
jijoong.moon [Fri, 23 Nov 2018 00:33:44 +0000 (09:33 +0900)]
[Repo] Change Element Name & Fix Sync Bug when EOS
- Element Name is changed.
. tensor_repopush -> tensor_reposink
. tensor_repopop -> tensor_reposrc
- There is hanging bug when reposrc is tryig to get buffer and
reposink set eos signal meanwhile. It is fixed by double check eos
signal during cond wait.
**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>
jijoong.moon [Thu, 22 Nov 2018 06:02:28 +0000 (15:02 +0900)]
[Repo/Push-Pop] Implement NYI part of tensor_reppop.
- Implement NYI part of tensor_reppop. It's parent element is
GstPushSrcClass and it's relevant vm functions are implemented such
as (create*).
- Several utility functions of tensor_repo is newly implemented.
- Some changes are made to handle thread synchronization.
**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>
jijoong.moon [Tue, 20 Nov 2018 10:03:29 +0000 (19:03 +0900)]
[Repo/Pop] Tensor_RepoPop Draft
This is the the anthor part to complete the tensor
repo. tensor_repopop get the tensor repo data.
**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>
jijoong.moon [Wed, 21 Nov 2018 01:46:32 +0000 (10:46 +0900)]
[Repo/Push] Use Has Table to handle repo & add slot_id property
- Instead of single linked list, Hash table is used to manage repo's
data. Hash Table is "key [slot_id], GstTensorData*" where slot_id is
given by user when the tensor_repopush is used.
- Slot Id is added to use as key for hash table. This should be same
with tensor_repopop element. "tensor_repopop" will withdraw the data
according to this slot_id.
**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>
MyungJoo Ham [Mon, 26 Nov 2018 07:16:31 +0000 (16:16 +0900)]
[CMake] Install example apps to "EXAMPLE_EXEC_PREFIX".
Do not install example apps into /usr/bin, but to /usr/lib/nnstreamer/bin/
Partially addresses the third subitem of #866
Signed-off-by: MyungJoo Ham <myungjoo.ham@samsung.com>
MyungJoo Ham [Mon, 26 Nov 2018 05:18:52 +0000 (14:18 +0900)]
[Filter] Fix coverity issue, pointer out of scope.
This fixes the coverity issue, pointer out of scope.
Signed-off-by: MyungJoo Ham <myungjoo.ham@samsung.com>
MyungJoo Ham [Mon, 26 Nov 2018 05:09:24 +0000 (14:09 +0900)]
[Meson] Support Ubuntu/Xenial and Tizen.
1. Both Tizen and Ubuntu/Xenial does not support meson 0.47.
Lower down the Meson version requirement.
2. Add meson support for repo-push
Fixes #897
Signed-off-by: MyungJoo Ham <myungjoo.ham@samsung.com>
Jaeyun [Mon, 26 Nov 2018 04:34:07 +0000 (13:34 +0900)]
[Example] remove unnecessary caps-filter
1. remove caps-filter between tensor-converter and tensor-filter. (tensor-converter will get peer caps and set possible caps.)
2. update download link to get tf-lite model
Signed-off-by: Jaeyun Jung <jy1210.jung@samsung.com>
Jaeyun [Wed, 21 Nov 2018 10:41:34 +0000 (19:41 +0900)]
[Converter] get possible caps from downstream
When received caps query, get the possible caps of peer pad and convert it to media caps.
Related issue #818
Signed-off-by: Jaeyun Jung <jy1210.jung@samsung.com>
HyoungjooAhn [Mon, 26 Nov 2018 10:45:00 +0000 (19:45 +0900)]
[Filter/TFLite] code clean
move unused method to private and remove extern methods
Signed-off-by: HyoungjooAhn <hello.ahn@samsung.com>
Wook Song [Mon, 26 Nov 2018 01:29:40 +0000 (10:29 +0900)]
[PkgConfig] Update 'Libs' field
This patch fills the 'Libs' field in the pkg-config file.
Signed-off-by: Wook Song <wook16.song@samsung.com>
Wook Song [Mon, 26 Nov 2018 01:25:22 +0000 (10:25 +0900)]
[Dist/Debian] Change installation directories based on multiarch scheme
This patch, based on the multiarch directory scheme of Debian/Ubuntu,
chages the installation directories of nnstreamer and nnstreamer
development packages.
Signed-off-by: Wook Song <wook16.song@samsung.com>
Wook Song [Mon, 26 Nov 2018 01:17:58 +0000 (10:17 +0900)]
[Filter/TFLite] Move shared object of tflitecore to libdir
This patch moves the shared object of tflitecore,
libtensor_filter_tflitecore.so, from GST_PLUGIN_PATH to INSTALL_LIBDIR.
Signed-off-by: Wook Song <wook16.song@samsung.com>
MyungJoo Ham [Mon, 26 Nov 2018 07:27:46 +0000 (16:27 +0900)]
[Common] build error fix for ubuntu/example.
There is a missing header in typedef header.
Without stdint.h, you won't be able to find "uint8_t".
Signed-off-by: MyungJoo Ham <myungjoo.ham@samsung.com>
jijoong.moon [Mon, 26 Nov 2018 01:40:42 +0000 (10:40 +0900)]
[Example] Change LSTM to RNN
It is more like RNN rather than LSTM. RNN is better name for this testcase.
**Changes proposed in this PR:**
- Change directory name and files LSTM to RNN
**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>
MyungJoo Ham [Fri, 23 Nov 2018 02:54:14 +0000 (11:54 +0900)]
[Filter] Update reaction to tensor dimension errors.
When input/output tensor dimension is not compatible,
don't exit with assert, let gstreamer handle the rest.
This will help looking at the issue of #886
Signed-off-by: MyungJoo Ham <myungjoo.ham@samsung.com>
jijoong.moon [Wed, 21 Nov 2018 01:46:32 +0000 (10:46 +0900)]
[Repo/Push] Use Has Table to handle repo & add slot_id property
- Instead of single linked list, Hash table is used to manage repo's
data. Hash Table is "key [slot_id], GstTensorData*" where slot_id is
given by user when the tensor_repopush is used.
- Slot Id is added to use as key for hash table. This should be same
with tensor_repopop element. "tensor_repopop" will withdraw the data
according to this slot_id.
**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>
jijoong.moon [Tue, 20 Nov 2018 09:39:44 +0000 (18:39 +0900)]
[Repo/Push] Rename Repo_sink to repopush and implement NYI
**Changes proposed in this PR:**
- Rename tensor_reposink to tensor_repopush. It seems more reseanable.
- Split tensor_repo.h and tensor_repo.c for the repo utility function
and place them in gst/nnstreamer.
- Implement render fucntion to push GstBuffer into 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>
jijoong.moon [Mon, 19 Nov 2018 11:15:08 +0000 (20:15 +0900)]
[TensorRepo/Sink] TensorRepo_Sink Draft
In order to enable the recursion, we may need this tensor
repository. In order to feed or get the tensor(s) to/from tensor
repository, we need tensor_reposink and tensor_reposrc element.
This PR includes initial draft for tensor_repo data structure and
tensor_reposink.
**Self evaluation:**
1. Build test: [X]Passed [ ]Failed [ ]Skipped
2. Run test: [ ]Passed [ ]Failed [X]Skipped
Signed-off-by: jijoong.moon <jijoong.moon@samsung.com>
sewon.oh [Fri, 23 Nov 2018 05:38:45 +0000 (14:38 +0900)]
[CI] update config files.
For ci server, update config files.
Signed-off-by: sewon.oh <sewon.oh@samsung.com>
Jaeyun [Fri, 23 Nov 2018 03:05:39 +0000 (12:05 +0900)]
[Decoder] fix coverity issue
1. init struct detected-object
2. remove macro with no effect (unsigned compare)
Signed-off-by: Jaeyun Jung <jy1210.jung@samsung.com>
MyungJoo Ham [Fri, 23 Nov 2018 05:27:03 +0000 (14:27 +0900)]
Trivial Typo Fix
We will be using typefind soon along with tensor_save/load.
Signed-off-by: MyungJoo Ham <myungjoo.ham@samsung.com>
Jaeyun [Thu, 22 Nov 2018 05:11:27 +0000 (14:11 +0900)]
[Test] update git ignore
add .xraw file and change temp file format in unit-test
Signed-off-by: Jaeyun Jung <jy1210.jung@samsung.com>
Jaeyun Jung [Wed, 21 Nov 2018 15:51:04 +0000 (00:51 +0900)]
[Common] remove macro to print log
nnstreamer elements use gst/glib macro to print logs.
remove unnecessary macros in common header.
Signed-off-by: Jaeyun Jung <jy1210.jung@samsung.com>
Jaeyun Jung [Wed, 21 Nov 2018 15:46:24 +0000 (00:46 +0900)]
[Filter/TFLite] change log format
1. change log format (use glib)
2. update indentation
Signed-off-by: Jaeyun Jung <jy1210.jung@samsung.com>
Jaeyun [Wed, 21 Nov 2018 12:53:11 +0000 (21:53 +0900)]
Change log format
Use common gst macros to print debug logs.
TODO: remove log macro in common header
Signed-off-by: Jaeyun Jung <jy1210.jung@samsung.com>
Jaeyun [Fri, 23 Nov 2018 04:54:22 +0000 (13:54 +0900)]
[Example] update arithmetic for normalization
update arith mode in tensor-transform to normalize
Signed-off-by: Jaeyun Jung <jy1210.jung@samsung.com>
MyungJoo Ham [Thu, 22 Nov 2018 07:20:08 +0000 (16:20 +0900)]
[Transform/Typecast] Fix float -> unsigned bug
It is supposed to do float -> signed -> unsigned.
This is regression due to the omitted per-pr arm testing :(
Fixes #882
Signed-off-by: MyungJoo Ham <myungjoo.ham@samsung.com>
MyungJoo Ham [Wed, 21 Nov 2018 06:11:22 +0000 (15:11 +0900)]
[Example] ObjectDetection(SSD) with Gst-Launch
With the new decoder/bounding-box, we can do
object-detection + labeling in gst-launch with
visualization.
Signed-off-by: MyungJoo Ham <myungjoo.ham@samsung.com>
MyungJoo Ham [Wed, 21 Nov 2018 05:46:01 +0000 (14:46 +0900)]
[Decoder] Fix cap negotiation bug
Decoder::Main had been saying that it cannot accept other/tensors.
Signed-off-by: MyungJoo Ham <myungjoo.ham@samsung.com>
MyungJoo Ham [Thu, 15 Nov 2018 08:27:40 +0000 (17:27 +0900)]
[Decoder] Add bounding box plugin
1. The basic mechanism is imported from nnstreamer_example/example_object_detection.
2. The mechanism is updated to support
- Different tensor types (it supports integers and double as well if the two tensors have the same type)
- Input tensors may have smaller number of detections (less than DETECTION_MAX)
- A few performance updates to execute less loops
3. No more dependencies on graphics library for drawing boxes or rendering text
4. Imported "font.c" of Silicon Graphics Inc 1992 to render text. The license is open for any purpose as long as the license statement is in tact.
5. Tested with a basic case
```
gst-launch-1.0 --gst-debug=2 \
v4l2src name=cam_src ! videoscale ! videoconvert ! video/x-raw,width=640,height=480,format=RGB,framerate=30/1 ! tee name=t \
t. ! queue leaky=2 max-size-buffers=2 ! videoscale ! video/x-raw,width=300,height=300,format=RGB ! tensor_converter ! \
tensor_transform mode=arithmetic option=typecast:float32,add:-127,mul:0.007843 ! \
tensor_filter framework=tensorflow-lite model=ssd_mobilenet_v2_coco.tflite ! \
tensor_decoder mode=bounding_boxes option1=ssd option2=coco_labels_list.txt option3=box_priors.txt option4=640:480 option5=300:300 ! \
compositor name=mix sink_0::zorder=2 sink_1::zorder=1 ! videoconvert ! ximagesink \
t. ! queue leaky=2 max-size-buffers=10 ! mix.
```
In later PRs, we need
- Test cases (and probably some fixes)
- Hardcode the pre-processing results of font.h, then remove the "rasters" from font.h
Signed-off-by: MyungJoo Ham <myungjoo.ham@samsung.com>
MyungJoo Ham [Wed, 21 Nov 2018 09:31:28 +0000 (18:31 +0900)]
DIST: Fix broken OBS build log of unit tests
SSAT writes colored text by default.
Apply -n (nocolor) in .spec so that SSAT writes non-colored results,
which will no more break OBS build logs.
Signed-off-by: MyungJoo Ham <myungjoo.ham@samsung.com>
MyungJoo Ham [Wed, 21 Nov 2018 07:40:12 +0000 (16:40 +0900)]
CMake Build Script Clean Up
- Remove libcommon.a from the project
- Remove multi-binary support
Fixes two subissues of the three in #866
Signed-off-by: MyungJoo Ham <myungjoo.ham@samsung.com>
MyungJoo Ham [Wed, 21 Nov 2018 10:20:28 +0000 (19:20 +0900)]
[Test] Suppress log messages for unit testing
- s/silent=false/silent=true/
- s/--gst-debug=[a-zA-Z_\:0-9]* / /
Fixes #872
Signed-off-by: MyungJoo Ham <myungjoo.ham@samsung.com>
Geunsik Lim [Wed, 21 Nov 2018 04:51:40 +0000 (13:51 +0900)]
Tools/gst-instruments: Added how to profile a bottleneck among elements
Fixed issue #132 (Epic: Performance- Profiling)
This commit is to append how to use a gst-instruments tool in order to
do a profiling for performance optimization of NNStreamer.
This guide is experimented on Ubuntu 16.04 x86_64 distribution.
**Changes proposed in this PR:**
1. Added gst-top to display a performance report in real time such as top, perf-top
2. Added gst-report-1.0 to generate the trace file the below two goals as following:
a. It display CPU usage, time usage, and execution time amon the elements.
b. It generate a performance graph from a GStreamer pipeline.
3. Added screenshot of gst-top, gst-report, and generating pipeline graph
Signed-off-by: Geunsik Lim <geunsik.lim@samsung.com>
Geunsik Lim [Wed, 21 Nov 2018 07:47:53 +0000 (16:47 +0900)]
Tests: Fixed incorrect link
It is trivial. This commit is to fix incorrect link.
Signed-off-by: Geunsik Lim <geunsik.lim@samsung.com>
Geunsik Lim [Tue, 20 Nov 2018 04:32:39 +0000 (13:32 +0900)]
Tools: Add how to use GST_DEBUG to get debug messages
Fixed issue #132 (Epic: Performance - Debugging)
This commit is to append how to use environment variable GST_DEBUG to
get more debug messages for debugging of NNStreamer.
**Changes proposed in this PR:**
* Version 2:
1. Case study: Tracing Gstreamer plugins with GST_DEBUG
* Version 1:
1. Added how to use GST_DEBUG
2. Added execution screenshot of xdot
3. Updated the existing statement for readability
4. Updated GST_DEBUG_DUMP_DOT_DIR usage
Signed-off-by: Geunsik Lim <geunsik.lim@samsung.com>
Geunsik Lim [Mon, 19 Nov 2018 04:27:30 +0000 (13:27 +0900)]
Tools: Added how to use tracers of GstShark
This commit is to append how to use the nine below tracers in GstShark.
All tracers were selected as a initial set of tracers based on RidgeRun's fine-tuning experience.
* InterLatency
* Processing time
* Frame rate
* Schedule time
* CPU usage
* Graphic
* Bitrate
* Queue Level
* Buffer
**Changes proposed in this PR:**
* Version 3:
1. Added how to run gstshark-plot (Experimental)
2. Added how to create CTF (Common Trace Format) folder
3. Wrote how to build code with v.0.5.3 release tag
* Version 2:
1. Added additional instruction manual for easy debugging
2. Fixed incorrect statements
3. Appended some commands to helpe GstShark newbie
4. Added screenshot of GstShark: graphic tracer
* Version 1:
1. Added how to use GstShark tracers
2. Updated how to convert output data to a GNUplot data for analysis
Signed-off-by: Geunsik Lim <geunsik.lim@samsung.com>
Jaeyun [Tue, 20 Nov 2018 04:07:30 +0000 (13:07 +0900)]
[Aggregator] update log format
Use gst macros to print debug logs
Signed-off-by: Jaeyun Jung <jy1210.jung@samsung.com>
Jaeyun [Mon, 19 Nov 2018 12:15:05 +0000 (21:15 +0900)]
[Sink] update log format
Use gst macros to print debug logs
Signed-off-by: Jaeyun Jung <jy1210.jung@samsung.com>
Jaeyun [Mon, 19 Nov 2018 11:41:21 +0000 (20:41 +0900)]
[Transform] free operators list
1. If there exists pre-configured list for arith operators, free it before parsing new option.
2. Remove duplicated code in the loop of arith mode.
Signed-off-by: Jaeyun Jung <jy1210.jung@samsung.com>
Jaeyun [Mon, 19 Nov 2018 11:35:33 +0000 (20:35 +0900)]
[Filter/TFLite] code clean
use common macro and glib functions to print debug message
TODO : change function to print log later
Signed-off-by: Jaeyun Jung <jy1210.jung@samsung.com>
Jaeyun [Mon, 19 Nov 2018 11:29:51 +0000 (20:29 +0900)]
[Filter/TFLite] init tensor info
Add code to init tensor info structure.
(This update is to fix coverity issue)
Signed-off-by: Jaeyun Jung <jy1210.jung@samsung.com>
sewon.oh [Thu, 15 Nov 2018 01:43:12 +0000 (10:43 +0900)]
[Meson] Initial commit of meson build
Initial commit of meson. This commit's goal is to make single binary.
Signed-off-by: sewon.oh <sewon.oh@samsung.com>
Geunsik Lim [Mon, 19 Nov 2018 07:07:59 +0000 (16:07 +0900)]
Tools: Adde how to use Gstreamer Debugger (gst-debugger)
Fixed issue 132#issuecomment-
439788784.
This commit is to explain how to use a Gstreamer Debugger tool to
introspect a gst-pipeline remotely with a graphical client.
**Changes proposed in this PR:**
* Version 2:
1. Added GStreamer-based totem player as an example
* Version 1:
1. Added How to use Gstreamer debugger
2. Added How to patch ver 0.90.0 to build on Ubuntu 16.04
Signed-off-by: Geunsik Lim <geunsik.lim@samsung.com>
HyoungjooAhn [Mon, 19 Nov 2018 06:50:11 +0000 (15:50 +0900)]
[Filter/TFLite] support dynamic model
User open tflite model when a model is already loaded, compare it with previous one and if it is different, make the object the new one with new model.
Signed-off-by: HyoungjooAhn <hello.ahnn@gmail.com>
Jaeyun [Mon, 19 Nov 2018 07:06:49 +0000 (16:06 +0900)]
[Test/Transform] add tc to test changed arith mode option
1. add new testcases for changed arith mode using gst-harness
2. update the pipeline in object detection example
Signed-off-by: Jaeyun Jung <jy1210.jung@samsung.com>
Jaeyun [Wed, 14 Nov 2018 09:31:18 +0000 (18:31 +0900)]
[Transform] refactor arith/typecast
refactor arith/typecast to handle arithmetic in sequence
1. add operands and handle tensor element with parsed option
2. add common functions for the operators
3. remove multi-op (add-mul and mul-add) and handle operator in sequence
Signed-off-by: Jaeyun Jung <jy1210.jung@samsung.com>
MyungJoo Ham [Mon, 19 Nov 2018 02:38:53 +0000 (11:38 +0900)]
[Decoder] option-3 is not enough. Increase to 9
- Refactor option handling codes to handle much more without
damaging code readability.
- Fix decoder parameters in test cases / examples.
Signed-off-by: MyungJoo Ham <myungjoo.ham@samsung.com>
Geunsik Lim [Mon, 19 Nov 2018 05:24:29 +0000 (14:24 +0900)]
Tools: Added how to use Hawktracer for profiling
This commit is append to how to use Hawktracer for profiling.
* HawkTracer:
It is a highly portable, low-overhead, configurable profiling tool
built in Amazon Video for getting performance metrics from low-end devices.
Signed-off-by: Geunsik Lim <geunsik.lim@samsung.com>
HyoungjooAhn [Fri, 16 Nov 2018 02:19:59 +0000 (11:19 +0900)]
[Filter/TFLite] fix bug
fix NULL ptr error by adding initialize function
Signed-off-by: HyoungjooAhn <hello.ahnn@gmail.com>
Jaeyun [Mon, 19 Nov 2018 03:54:40 +0000 (12:54 +0900)]
[Test] print log if failed to remove temp file
Add logs if failed to remove temp file for unit-test.
(These changes are to resolve coverity issues)
Signed-off-by: Jaeyun Jung <jy1210.jung@samsung.com>
Sangjung Woo [Mon, 19 Nov 2018 01:21:23 +0000 (10:21 +0900)]
[Dist/Debian] Only enable tensorflow-dev when building amd64 and arm64
Since tensorflow-dev package is only built for amd64 and arm64 on
launchpad.net, nnstreamer for armhf and i386 count not be built. In
order to solve this issue, this patch only enables the tensorflow-dev
Build-Depends when building amd64 and arm64 architecture.
Change-Id: Ie69058450fc1f05424063536b2afd0ecb140757e
Signed-off-by: Sangjung Woo <sangjung.woo@samsung.com>
MyungJoo Ham [Fri, 16 Nov 2018 05:21:25 +0000 (14:21 +0900)]
Support Multi-Tensor for Input
Now, decoder plugins may have multi-tensors as their input stream.
Signed-off-by: MyungJoo Ham <myungjoo.ham@samsung.com>
Hwansoon Sung [Sat, 17 Nov 2018 12:04:45 +0000 (21:04 +0900)]
[Example/FilterPerformanceProfile] Fix on capsfilter
This patch fixed a typo found at capsfilter's "height" property.
Having it fixed, we were able to run the example successfully
along with our MIPI camera on ARTIK devkit.
Signed-off-by: Hwansoon Sung <hs2704.sung@samsung.com>
jijoong.moon [Mon, 12 Nov 2018 00:20:50 +0000 (09:20 +0900)]
[Merge/Mux] Add test cases for conner cases
Added test cases for basedpad mode with "option=0" and "option=0:0"
**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>
MyungJoo Ham [Thu, 15 Nov 2018 06:54:08 +0000 (15:54 +0900)]
[Decoder] Fully pluginize decoders
Remove all decoder implenmentations from decoder main.
Signed-off-by: MyungJoo Ham <myungjoo.ham@samsung.com>
MyungJoo Ham [Wed, 14 Nov 2018 12:23:44 +0000 (21:23 +0900)]
[Decoder] Pluginize image labeling
Pluginize the image labeling mechanism.
Signed-off-by: MyungJoo Ham <myungjoo.ham@samsung.com>
MyungJoo Ham [Thu, 15 Nov 2018 06:29:59 +0000 (15:29 +0900)]
[Common] add todo item on comparing framerates.
1/2 == 2/4. Don't assert they are different.
Signed-off-by: MyungJoo Ham <myungjoo.ham@samsung.com>
MyungJoo Ham [Thu, 15 Nov 2018 06:29:28 +0000 (15:29 +0900)]
[Tools] Update getTestModels after path migration
Because getTestModels.sh has been moved, the path description
in the script should be updated as well.
Signed-off-by: MyungJoo Ham <myungjoo.ham@samsung.com>
MyungJoo Ham [Wed, 14 Nov 2018 12:22:41 +0000 (21:22 +0900)]
[Common] Provide union of tensor elements.
This makes C++ template-like usage of tensor elements EASIER.
Signed-off-by: MyungJoo Ham <myungjoo.ham@samsung.com>
Jaeyun [Thu, 15 Nov 2018 10:12:05 +0000 (19:12 +0900)]
[Example] change free function
change function to free list (elements in the list contain the dynamic-allocated memory, we should free all these elements)
Signed-off-by: Jaeyun Jung <jy1210.jung@samsung.com>
sewon.oh [Fri, 16 Nov 2018 09:40:20 +0000 (18:40 +0900)]
[DOC] write how to build with meson
write how to install and build with meson.
Signed-off-by: sewon.oh <sewon.oh@samsung.com>
Jaeyun Jung [Wed, 14 Nov 2018 18:22:21 +0000 (03:22 +0900)]
[Test] update code to remove warning
use glib to get temp filename and to read data from file
Signed-off-by: Jaeyun Jung <jy1210.jung@samsung.com>
MyungJoo Ham [Thu, 15 Nov 2018 08:25:37 +0000 (17:25 +0900)]
[Decoder] Add one more option
Until we fix #837, I'll keep adding mode-options whenever needed.
Signed-off-by: MyungJoo Ham <myungjoo.ham@samsung.com>
Jaeyun [Thu, 15 Nov 2018 02:48:29 +0000 (11:48 +0900)]
[Example] update exam pipeline using decoder
change decode mode direct video to play video sink
Signed-off-by: Jaeyun Jung <jy1210.jung@samsung.com>
Geunsik Lim [Thu, 15 Nov 2018 04:21:14 +0000 (13:21 +0900)]
doc: Fixed an incorrect link
It is trivial. This commit is to fix incorrect link address
of TAOS-CI configruation folder.
Signed-off-by: Geunsik Lim <geunsik.lim@samsung.com>
MyungJoo Ham [Fri, 9 Nov 2018 06:15:50 +0000 (15:15 +0900)]
[Tests] Upgrade framecounter custom filter
- For local internal testing, use custom option to make printouts
- For further synchronization testing, use custom option to add usleep()
Signed-off-by: MyungJoo Ham <myungjoo.ham@samsung.com>
Geunsik Lim [Wed, 14 Nov 2018 11:30:21 +0000 (20:30 +0900)]
[Tools] Split one file into four sub-files.
This commit is to split existing one file into four files.
* before: Tools
* after : development, debugging, tracing, and profiling
**Changes proposed in this PR:**
1. Added 4 folders
2. Re-organized the existing sections
Signed-off-by: Geunsik Lim <geunsik.lim@samsung.com>
MyungJoo Ham [Wed, 14 Nov 2018 10:54:25 +0000 (19:54 +0900)]
[Decoder] trivial fix on option property init.
Critical typo fixed. Option2 --> Option1
Signed-off-by: MyungJoo Ham <myungjoo.ham@samsung.com>
jijoong.moon [Fri, 9 Nov 2018 07:01:10 +0000 (16:01 +0900)]
[Mux/Merge] Fix time synchronization buf for cornner cases
For the basepad options with 0 and maximum duration, current
implementation is not work properly. In order to support this
situation, base time is decided min(duration, pts(nth)-pts(n-1 th)-1).
**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>
MyungJoo Ham [Wed, 14 Nov 2018 04:36:27 +0000 (13:36 +0900)]
[Converter] Don't die for inappropriate properties
Simply make warning messages for incorrect dimension/type.
Pipeviz tool may give you NULL values if not configured.
Signed-off-by: MyungJoo Ham <myungjoo.ham@samsung.com>
MyungJoo Ham [Mon, 12 Nov 2018 08:11:49 +0000 (17:11 +0900)]
[Filter] Support pipeviz with tensor_filter
1. Make "open" vmethod to return status. Handle
the error if "open" returns "fail". Don't die with assert.
2. Handle inappropriate property values. Don't die with such.
Signed-off-by: MyungJoo Ham <myungjoo.ham@samsung.com>
MyungJoo Ham [Wed, 7 Nov 2018 09:38:52 +0000 (18:38 +0900)]
[Decoder/direct_video] Pipeline may allocate buffer for you already
Do not die when the pipeline has already allocated the exact
size of buffer for you. Just reuse what's already there.
This fixes the 3rd subissue of #700.
Signed-off-by: MyungJoo Ham <myungjoo.ham@samsung.com>
sewon.oh [Fri, 9 Nov 2018 07:55:04 +0000 (16:55 +0900)]
[TEST] use ssat instead of testAll.sh
For archive unit test result, use ssat
Signed-off-by: sewon.oh <sewon.oh@samsung.com>
sewon.oh [Tue, 13 Nov 2018 02:32:16 +0000 (11:32 +0900)]
[TEST] Add flag for unit test
Able to choice whether unit test or not. So I think no more need time out flag. therefore add unit test flag and remove timeout flag
Signed-off-by: sewon.oh <sewon.oh@samsung.com>
sewon.oh [Fri, 9 Nov 2018 07:00:03 +0000 (16:00 +0900)]
[GBS] Add timeout flag
For test or other reasons, add timeout flag to gbs build.
Signed-off-by: sewon.oh <sewon.oh@samsung.com>
MyungJoo Ham [Fri, 9 Nov 2018 04:50:27 +0000 (13:50 +0900)]
[Test] Add mux/merge sync unit tc for #739
Adding more cases for mux/merge sync policy testing of #739
Signed-off-by: MyungJoo Ham <myungjoo.ham@samsung.com>
MyungJoo Ham [Thu, 8 Nov 2018 12:03:17 +0000 (21:03 +0900)]
[Filter] Don't die for model file not found.
Handle incorrect model file path gracefully
because pipeviz users or dynamic-pipeline developers
can react to such cases accordingly.
Emit error, not die when model file is not found.
This is partially addressing #700
Signed-off-by: MyungJoo Ham <myungjoo.ham@samsung.com>
Jaeyun [Fri, 9 Nov 2018 09:17:25 +0000 (18:17 +0900)]
[Mux] change log message format
use time format to print clock time
Signed-off-by: Jaeyun Jung <jy1210.jung@samsung.com>
Jaeyun [Fri, 9 Nov 2018 08:42:19 +0000 (17:42 +0900)]
[Cmake] delete dlog
delete dlog and tizen definition.
related issue : #807
TODO : determine log level defined in common header
Signed-off-by: Jaeyun Jung <jy1210.jung@samsung.com>
Jaeyun [Thu, 8 Nov 2018 12:25:52 +0000 (21:25 +0900)]
[Test] add testcase using gst-harness
Added new testcases using gst-harness.
If needs to test simple data conversion in nnstreamer plugins, add tc in unittest_plugins.
Signed-off-by: Jaeyun Jung <jy1210.jung@samsung.com>
MyungJoo Ham [Thu, 8 Nov 2018 12:36:17 +0000 (21:36 +0900)]
Clean up customfilter dependencies, support non-single-binary mode
Building custom filter requires "libtensor_filter.so" only.
Other libraries used by nnstreamer are not necessary for custom filters.
Thus, let them depend on libtensor_filter (or libnnstreamer.so) only.
Plus, by defining "CUSTOMFILTERDEP" CMake variable,
support both SINGLEBINARY and NON-SINGLEBINARY.
Signed-off-by: MyungJoo Ham <myungjoo.ham@samsung.com>
MyungJoo Ham [Thu, 8 Nov 2018 10:58:21 +0000 (19:58 +0900)]
[Tests] Add multi-stream sync TC for #739
Using the "nnscustom_framecounter.so", check if the
1st item of #739 is working properly if the sync policy
is "slowest".
Signed-off-by: MyungJoo Ham <myungjoo.ham@samsung.com>
MyungJoo Ham [Thu, 8 Nov 2018 10:57:28 +0000 (19:57 +0900)]
[Tests] Add a custom filter for testcase of #739
For testcases in #739, we need a custom filter
that shows frame numbers.
Signed-off-by: MyungJoo Ham <myungjoo.ham@samsung.com>
MyungJoo Ham [Wed, 7 Nov 2018 07:57:17 +0000 (16:57 +0900)]
[Decoder] Don't die for mode name & Get plugin name.
This fixes 2nd subissue of #700.
- Do not die for incorrect mode name. Handle it gracefully.
- Enable get-property of plugins.
Note that this requires PR #762 and #796 merged prior.
Signed-off-by: MyungJoo Ham <myungjoo.ham@samsung.com>
Jaeyun [Wed, 7 Nov 2018 03:00:24 +0000 (12:00 +0900)]
[Test/Cmake] clean cmake
add option ENABLE_TEST and clean cmake for unit-test
Signed-off-by: Jaeyun Jung <jy1210.jung@samsung.com>
jijoong.moon [Tue, 6 Nov 2018 09:10:13 +0000 (18:10 +0900)]
[Merge/Mux] Implement BasePad Time Synchronization Policy
Implemnt BasePad Time Synchronization Policy. The sync_mode name is
"basepad" and it has sync_options which is base pad number and
duration. It is more like "sync_mode=basepad
sync_option=0:
33333333". Duration is GstClockTime (unsigned int 64)
and pad number is uint.
Once this sync_mode is enabeled, then the merge time is decided based
on this "basepad". For example, if the framerate of basepad is 30/1,
then the time which is pushed by merge/mux is
33333333,
66666666,
99999999,
133333333,
166666666, etc. Some details are below. It
calculate differenece between current time and pts time of updated
buffer and if it is bigger than duration, it use previous pad buffer.
Test Case 1:
- srcpad0 ( framerate 30/1 ) : basepad with
33333333 duration.
- srcpad1 ( framerate 20/1 )
- srcpad2 ( framerate 10/1 )
then, merge/mux pushed as below.
*srcpad0 srcpad1 srcpad2
0 0 0 : pushed
33333333 50000000 0 : pushed
66666666 50000000 0 : pushed
99999999 100000000 1000000000 : pushed
133333332 150000000 1000000000 : pushed
166666666 150000000 1000000000 : pushed
199999999 200000000 2000000000 : pushed
233333331 250000000 2000000000 : pushed
266666666 250000000 2000000000 : pushed
299999997 300000000 3000000000 : pushed
if sync_mode is slowest,
then, merge/mux pushed as below.
srcpad0 srcpad1 *srcpad2
0 0 0 : pushed
33333333 50000000 0 : skipped
66666666 50000000 0 : skipped
99999999 100000000 1000000000 : pushed
133333332 150000000 1000000000 : skipped
166666666 150000000 1000000000 : skipped
199999999 200000000 2000000000 : pushed
233333331 250000000 2000000000 : skipped
266666666 250000000 2000000000 : skipped
299999997 300000000 3000000000 : pushed
if sync_mode is nosync,
then, merge/mux pushed as below.
*srcpad0 *srcpad1 *srcpad2
0 0 0 : pushed
33333333 50000000 1000000000 : pushed
66666666 100000000 2000000000 : pushed
99999999 150000000 3000000000 : pushed
133333332 200000000 4000000000 : pushed
166666666 250000000 5000000000 : pushed
199999999 300000000 6000000000 : pushed
233333331 350000000 7000000000 : pushed
266666666 400000000 8000000000 : pushed
299999997 450000000 9000000000 : pushed
**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>
MyungJoo Ham [Tue, 6 Nov 2018 12:04:31 +0000 (21:04 +0900)]
[Decoder] Add comments on decoder plugin APIs
Fill in more doxygen entries and make the header more readable.
Signed-off-by: MyungJoo Ham <myungjoo.ham@samsung.com>
MyungJoo Ham [Tue, 6 Nov 2018 11:50:33 +0000 (20:50 +0900)]
[Decoder/Plugin] Direct-Video as Plugin
Remove direct-video routines from tensordec.c
Make it an example decoder plugin.
Signed-off-by: MyungJoo Ham <myungjoo.ham@samsung.com>