subhransu mohanty [Fri, 1 Nov 2019 01:12:22 +0000 (10:12 +0900)]
rlottie: remove unused data member
subhransu mohanty [Thu, 31 Oct 2019 02:33:00 +0000 (11:33 +0900)]
rlottie: remove unused classes in rlottie to reduce library size
JunsuChoi [Wed, 30 Oct 2019 11:23:32 +0000 (20:23 +0900)]
VDrawable: Fix initial value of an enum
subhransu mohanty [Wed, 30 Oct 2019 09:47:00 +0000 (18:47 +0900)]
rlottie: reduce polling count for task scheduler to 2.
when the queue is empty the thread tries to steal from other queue
and it was doing it 32 times .. changed it to 2 as it was spinning for
long time before going to sleep. As we always give the tasks in batches
we can reduce the spin time.
subhransu mohanty [Wed, 30 Oct 2019 09:18:10 +0000 (18:18 +0900)]
lottie/opt: refactor drawable class to optimize object size
subhransu mohanty [Wed, 30 Oct 2019 00:19:36 +0000 (09:19 +0900)]
rlottie/opt: refactor renderList() api to return a Span to optimize the LayerObject size"
previously renderList() was returning a vector by keeping a vector object which was adding to
the overal size of the layer objects. by changing to a simple span object now only shpelayer has to keep
the vector and rest of the layer object types don't have to.
subhransu mohanty [Mon, 28 Oct 2019 10:47:07 +0000 (19:47 +0900)]
rlottie: added a dedicated pass to preprocess the render nodes
subhransu mohanty [Mon, 28 Oct 2019 07:17:22 +0000 (16:17 +0900)]
vector/rasterizer: safe rletask reset.
check if the previous task is finished before reseting the task .
if the previous task is not finished may lead to inconsistant task state.
Change-Id: Id242d9c9d11c691c084a5463b11b544352c0020c
JunsuChoi [Fri, 18 Oct 2019 02:39:43 +0000 (11:39 +0900)]
Example: Change findFrameAtMarker return type.
JunsuChoi [Fri, 18 Oct 2019 02:27:32 +0000 (11:27 +0900)]
CAPI: Support Marker feature for CAPI.
Add lottie_animation_get_markerlist() api
User can use this api and get information about each marker.
subhransu mohanty [Fri, 18 Oct 2019 01:38:52 +0000 (10:38 +0900)]
example: updated step size of slider in lottieviewer example
JunsuChoi [Thu, 17 Oct 2019 10:45:44 +0000 (19:45 +0900)]
Example: Implements marker demo
If there are markers in the lottie animation, user can set the play interval using the markerlist.
This demo is for play with markers.
meson build
ninja -C build install
./build/example/demo_marker
Nicholas Guriev [Wed, 16 Oct 2019 18:16:12 +0000 (21:16 +0300)]
Relocatable module of image loader
Anatoly Korniltsev [Wed, 16 Oct 2019 16:04:01 +0000 (19:04 +0300)]
Stack buffer overflow reproducer. Add option to compile the lib with asan for testing
subhransu mohanty [Thu, 17 Oct 2019 00:56:15 +0000 (09:56 +0900)]
vector: lower the tolerance value of VDasher from 1.0 to 0.1
Anatoly Korniltsev [Mon, 14 Oct 2019 07:14:28 +0000 (10:14 +0300)]
review fix: move reproducerts to test folder
Anatoly Korniltsev [Wed, 9 Oct 2019 22:03:56 +0000 (01:03 +0300)]
Prevent type confusion with NDEBUG
Hermet Park [Mon, 14 Oct 2019 06:13:59 +0000 (15:13 +0900)]
README: updated documentation.
Removed C api usage.
This is not good to add in this context before we guide its basic usages.
Hermet Park [Mon, 14 Oct 2019 05:14:16 +0000 (14:14 +0900)]
vector stb: free the memory properly in the exception cases.
Change-Id: I64103c03679f0fe14b31d904e5e35aa1c03e29ef
subhransu mohanty [Mon, 28 Oct 2019 07:17:22 +0000 (16:17 +0900)]
vector/rasterizer: safe rletask reset.
check if the previous task is finished before reseting the task .
if the previous task is not finished may lead to inconsistant task state.
Change-Id: I934636745fcc87474d511eaa1c7f9a44027f8d60
Hermet Park [Mon, 14 Oct 2019 05:14:16 +0000 (14:14 +0900)]
vector stb: free the memory properly in the exception cases.
Change-Id: Ib2699f068217f20f565a2045f7e0fc53f32a8f95
subhransu mohanty [Fri, 11 Oct 2019 06:05:13 +0000 (15:05 +0900)]
lottie/perf: Avoid triggering render of a paint node when final opacity is zero
JunsuChoi [Fri, 11 Oct 2019 02:57:09 +0000 (11:57 +0900)]
rlottie_capi: Add Alpha member in ImageInfo
subhransu mohanty [Fri, 11 Oct 2019 00:58:14 +0000 (09:58 +0900)]
vector: support rendering of texture brush with alpha.
Hermet Park [Thu, 10 Oct 2019 11:30:02 +0000 (20:30 +0900)]
README: remove an emptry space
subhransu mohanty [Thu, 10 Oct 2019 06:42:18 +0000 (15:42 +0900)]
vector: refcator VBrush to reduce memory footprint
Hermet Park [Thu, 10 Oct 2019 07:06:00 +0000 (16:06 +0900)]
updated README.
subhransu mohanty [Thu, 10 Oct 2019 04:34:18 +0000 (13:34 +0900)]
rlottie: refactor to reduce lottie item memory footprint
JunsuChoi [Thu, 10 Oct 2019 06:37:48 +0000 (15:37 +0900)]
README.md: Update Supported feature (Markers)
subhransu mohanty [Tue, 8 Oct 2019 04:33:57 +0000 (13:33 +0900)]
rlottie: support composition marker feature in lottie
Hermet Park [Mon, 7 Oct 2019 11:02:00 +0000 (20:02 +0900)]
doc: fix typo
Hermet Park [Fri, 4 Oct 2019 07:16:28 +0000 (16:16 +0900)]
vector stb_image: + fseek() error handling.
Shutdown code static analizer report...
Change-Id: I389049eb958b7c5d47435115343854af3527ec31
Hermet Park [Fri, 4 Oct 2019 06:39:12 +0000 (15:39 +0900)]
pixman vregion: remove unused function.
Thatis acutally wrong that might access invalid data.
The below line, memory indexing
box_type_t *box = PIXREGION_RECTS(reg) + index;
won't work properly since the reg memory is not the exact box_type_t.
Change-Id: I872235580de839a1cc19aad8c5e7564ae56cc68e
Hermet Park [Fri, 4 Oct 2019 06:19:06 +0000 (15:19 +0900)]
vector vrle: remove a line affecting nothing.
Change-Id: Ib0079788720e9e6c0175c4a925e6bbd3ac9c9ec4
Hermet Park [Fri, 4 Oct 2019 04:15:52 +0000 (13:15 +0900)]
vector stb_image: + fseek() error handling.
Shutdown code static analizer report...
Change-Id: If8b7f00f45eb845c89d35f6451f06853771e9315
Hermet Park [Fri, 4 Oct 2019 03:55:12 +0000 (12:55 +0900)]
vector/vdasher: initialize a member var with a default value.
Change-Id: Iaf9d4f10b17be6c60defdbfd99777dbcecaf7d4d
Hermet Park [Fri, 4 Oct 2019 03:44:04 +0000 (12:44 +0900)]
updated AUTHORS
Change-Id: I8d9e0c1ce10005a5a738d35518d72e3f632f4179
subhransu mohanty [Wed, 2 Oct 2019 07:04:38 +0000 (16:04 +0900)]
lottie/parser: reduce memory allocation during shapedata parsing
JunsuChoi [Wed, 2 Oct 2019 06:21:33 +0000 (15:21 +0900)]
Example : Enhancement dynamic property demo
Change json sample and add more cases.
subhransu mohanty [Wed, 2 Oct 2019 06:11:26 +0000 (15:11 +0900)]
vector/ft: refactor to reduce branch miss.
vtune profile shows branch miss in ft_trig_pseudo_polarize and ft_trig_pseudo_rotate
as both the if cases does similar expensive computation move then to start so that
we will not pay high penalty during branch miss.
JunsuChoi [Thu, 26 Sep 2019 11:24:36 +0000 (20:24 +0900)]
README.md : Add dynamic property
Nicholas Guriev [Fri, 27 Sep 2019 18:28:05 +0000 (21:28 +0300)]
Introduce export map to completely hide private symbols
Also put configureModelCacheSize into the rlottie namespace.
subhransu mohanty [Fri, 27 Sep 2019 07:01:14 +0000 (16:01 +0900)]
lottie/optimization: keep painter and surface in composition to avoid memory allocation
subhransu mohanty [Fri, 27 Sep 2019 06:59:44 +0000 (15:59 +0900)]
vector: added reset() api to VBitmap
subhransu mohanty [Thu, 26 Sep 2019 01:17:19 +0000 (10:17 +0900)]
lottie/optimization: keep a pathmesure object in trim item to avoid memory allocation
subhransu mohanty [Thu, 26 Sep 2019 01:16:10 +0000 (10:16 +0900)]
vector: refactor pathmesure to keep a scratch path object for memory efficieny
subhransu mohanty [Thu, 26 Sep 2019 01:15:00 +0000 (10:15 +0900)]
vector: refactor Vdasher to take result path as parameter
subhransu mohanty [Fri, 20 Sep 2019 06:50:47 +0000 (15:50 +0900)]
optimization: avoid memory allocation when shape data has animation keyframe.
because of generic LOTAnimatable interface when shape has animation data
we were always created temporary shape data duting lerp. by crating a specialization
of AnimatableShape data and directly updating path value during animation we avoid
lot of memory allocation and deallocation.
subhransu mohanty [Thu, 19 Sep 2019 07:56:46 +0000 (16:56 +0900)]
lottie/optimization: optimize rendering when layer has clipper and mask
When layer has clipper and mask we create a temporary rle in each frame rendering
by avoiding the extra Rle object avoids memory allocation and speeds up rendering.
subhransu mohanty [Thu, 19 Sep 2019 07:45:45 +0000 (16:45 +0900)]
vector/rle: added operator&=() api to VRle
Hermet Park [Tue, 17 Sep 2019 10:53:42 +0000 (19:53 +0900)]
vector/helper: let VGradientCache has perfect singletone interface.
John Preston [Sun, 1 Sep 2019 09:04:26 +0000 (12:04 +0300)]
Fix possible stack corruption.
John Preston [Sun, 1 Sep 2019 09:03:18 +0000 (12:03 +0300)]
Fix possible out of bounds reading.
Asserts could be disabled in the Release build.
John Preston [Sun, 1 Sep 2019 07:37:11 +0000 (10:37 +0300)]
Check that root layer was found.
Hermet Park [Mon, 16 Sep 2019 11:05:55 +0000 (20:05 +0900)]
vector: refactor code to remove a global instance.
This kind of global static instance is really dangerous in c++ because
We have no idea when the instance will be initalization exactly.
This might interrupt the program sequence, more worsely, it could break the program
while That breakage is totally up to the member instances of the class.
Very poor design.
Change-Id: I8ca788bad2fe2e90f9cd5449b84b1ed15c043f1e
Hermet Park [Mon, 16 Sep 2019 09:34:18 +0000 (18:34 +0900)]
example: bump up c++ version to 14 in cmake.
Change-Id: Ice8b4b685d54138a1b883611f7abb7eff642bb95
subhransu mohanty [Thu, 5 Sep 2019 08:20:42 +0000 (17:20 +0900)]
lottie/parser: check for layer data integrity
this patch checkes if the layer has assigned itself as parent.
Change-Id: Id2d4b931614e9d6781d8dd73686972855a475fb2
sub.mohanty@samsung.com [Sun, 18 Aug 2019 09:24:36 +0000 (18:24 +0900)]
lottie/model: keep a stat of model for future local allocator.
In a complex lottie resource layer counts can exceed above 100 or in
some cases 1000. As in each frame rendering we visit the whole tree
allocating all of them using a local allocator will speed up the tree
visit as well as creation and destruction.
As the number of layer objects are fixed in a resource we can make use of
a dumb monotonic allocator to allocate all objects in one place.
Change-Id: If824c7bba8bbd9c93dff8693fc72deac1fa4c893
Hermet Park [Thu, 19 Sep 2019 02:18:40 +0000 (11:18 +0900)]
Revert "trial & error to figure out the lottie packaging issue in vd."
This reverts commit
2e5c1c74ba887cf8170c8aa9e8ee4eb4d2c36a78.
This doens't work.
Change-Id: I764b8bdbadedbb0954cb1fe410d2a10f2da807e7
Hermet Park [Wed, 18 Sep 2019 11:31:45 +0000 (20:31 +0900)]
trial & error to figure out the lottie packaging issue in vd.
Change-Id: I3109d1dfc4fb00fc41a8aaed5c20b08018564b45
Hermet Park [Wed, 18 Sep 2019 11:24:10 +0000 (20:24 +0900)]
Revert "Revert "rlottie/gbs: move gbs build from cmake to meson""
This reverts commit
57603b6c4bf0fdca3ce91c5abe2e51e21cd8e442.
This dosen't affect vd packaging issue.
Change-Id: Ia9dad9a9a787a0d3b0c5561c26e09c1d9839f4b4
subhransu mohanty [Wed, 18 Sep 2019 04:41:35 +0000 (13:41 +0900)]
Revert "rlottie/gbs: move gbs build from cmake to meson"
This reverts commit
734dc7289e72d51b03e49099e358d863e040e5b0.
Change-Id: I40957152a0aff3f52df3665b1213874efa63a9e7
Hermet Park [Wed, 18 Sep 2019 03:00:48 +0000 (12:00 +0900)]
Revert "trial & error to figure out the lottie packaging issue in vd."
This reverts commit
88a8144cb8b0757f983e68354c532a3aeb894e3a.
This doesn't affect that issue.
Change-Id: I688b1b9e2f64632415aa7205330f55e39820995e
Hermet Park [Tue, 17 Sep 2019 12:50:35 +0000 (21:50 +0900)]
trial & error to figure out the lottie packaging issue in vd.
Change-Id: Id466e545f341aa4db05a2cd3590d37f9a828663d
Hermet Park [Tue, 17 Sep 2019 12:06:58 +0000 (21:06 +0900)]
Revert "trial & error to fix the lottie packaging issue in vd."
This reverts commit
c87f74e1b5228913404c313c31ed8ebe97ffd8a2.
This doesn't work.
Change-Id: I508850a45162a5c7502aa1b2661dbfbc26aea8aa
Hermet Park [Mon, 16 Sep 2019 11:05:55 +0000 (20:05 +0900)]
vector: refactor code to remove a global instance.
This kind of global static instance is really dangerous in c++ because
We have no idea when the instance will be initalization exactly.
This might interrupt the program sequence, more worsely, it could break the program
while That breakage is totally up to the member instances of the class.
Very poor design.
Change-Id: I9d7dd12dc72a2936be95478d26aefc982e4eeeb9
Hermet Park [Mon, 16 Sep 2019 09:34:18 +0000 (18:34 +0900)]
example: bump up c++ version to 14 in cmake.
Change-Id: Ibf1ce24e14e3484b381c8df7c7a307956a1a1528
subhransu mohanty [Thu, 5 Sep 2019 08:20:42 +0000 (17:20 +0900)]
lottie/parser: check for layer data integrity
this patch checkes if the layer has assigned itself as parent.
Change-Id: I3c46242adf741efb0ac06ca742cc224675bd7474
sub.mohanty@samsung.com [Sun, 18 Aug 2019 09:24:36 +0000 (18:24 +0900)]
lottie/model: keep a stat of model for future local allocator.
In a complex lottie resource layer counts can exceed above 100 or in
some cases 1000. As in each frame rendering we visit the whole tree
allocating all of them using a local allocator will speed up the tree
visit as well as creation and destruction.
As the number of layer objects are fixed in a resource we can make use of
a dumb monotonic allocator to allocate all objects in one place.
Change-Id: I6c6c8ea83c8d6382609ea58b6640c033f7fd51f3
Hermet Park [Mon, 16 Sep 2019 12:42:54 +0000 (21:42 +0900)]
remove -fPIE option.
Seems this occurs the linking error.
Change-Id: I35d468580704eb8ecd809bbe27aefacc26f20629
Hermet Park [Mon, 16 Sep 2019 10:30:58 +0000 (19:30 +0900)]
trial & error: to fix the lottie packaging issue in vd.
no exact clue yet, check whether this affects the issue or not.
Change-Id: I7944ebab8b52b3edc2b5395ed49a566608154244
Hermet Park [Mon, 16 Sep 2019 09:53:14 +0000 (18:53 +0900)]
trial & error to fix the lottie packaging issue in vd.
specify standard c++14 and pthread.
Change-Id: Id3402f20f3dbb4481dedbec300f453213a239166
Hermet Park [Wed, 4 Sep 2019 08:26:26 +0000 (17:26 +0900)]
stb: added exceptional handling.
ftell() could return -1 but fseek() doesn't allow minus values.
Modified to skip irritating coverity report.
Change-Id: I7f66c2d0a3514d324ad23159c20be9fe1bb17724
Hermet Park [Wed, 4 Sep 2019 08:23:10 +0000 (17:23 +0900)]
stb: added exceptional handling.
ftell() could return -1 but fseek() doesn't allow minus values.
Modified to skip irritating coverity report.
Change-Id: Id2dbe0bb0852b3b30f5afe86b1677c99d5229e03
sub.mohanty@samsung.com [Sun, 25 Aug 2019 06:53:52 +0000 (15:53 +0900)]
vector: refactor VBitmap to use rc_ptr instead of std::shared_ptr
Hermet Park [Sat, 31 Aug 2019 09:11:26 +0000 (18:11 +0900)]
lottie2gif: add option to set resolution
Usage:
lottie2gif [lottieFileName] [Resolution] [bgColor]
Examples:
$ lottie2gif input.json
$ lottie2gif input.json 200x200
$ lottie2gif input.json 200x200 ff00ff
sub.mohanty@samsung.com [Sun, 25 Aug 2019 06:49:31 +0000 (15:49 +0900)]
vector: added support rc_ptr and arc_ptr to vector
why?
std::shared_ptr uses 2 pointer instead of 1.
we don't always need atomic ref count thats why rc_ptr
in situation where atomic ref cound needed use arc_ptr
sub.mohanty@samsung.com [Sun, 25 Aug 2019 03:32:25 +0000 (12:32 +0900)]
lottie:move renderTree() implementation to its own file
sub.mohanty@samsung.com [Sun, 25 Aug 2019 01:27:51 +0000 (10:27 +0900)]
lottie: move cnodelist to capidata to reduce layer object size
Change-Id: Ie8321d759ae0c859a89cd0e3c27380300f65c56f
sub.mohanty@samsung.com [Sat, 24 Aug 2019 11:35:56 +0000 (20:35 +0900)]
rlottie: refactor to avoid reversing the vector
Change-Id: I981c1dfbb0465af32032afab191f7dfd82fd513c
sub.mohanty@samsung.com [Sun, 25 Aug 2019 02:50:28 +0000 (11:50 +0900)]
vector/matrix: added scale() api in vmatrix
Change-Id: Ide0ea9f1ae039fd9fd9a2a95cca8e45619254990
sub.mohanty@samsung.com [Sun, 18 Aug 2019 10:12:12 +0000 (19:12 +0900)]
optimization: refactor renderTree() api support to reduce lottie object size.
Moving all the data structure under LOTCApiData and allocationg it when needed
we will incur only a pointer overhead when renderApi() is not used.
Change-Id: I846cfabd14ba85397fa2ab8b3ee2caba41cd87cb
sub.mohanty@samsung.com [Sat, 3 Aug 2019 06:47:11 +0000 (15:47 +0900)]
optimization/model:refactor LOTData class to optimize memory
As std::string uses short buffer optimization internally and because of
structure allignment the size of the LOTData was 32 byte.
by handling short buffer optimization ourself now size is reduced
from 32byte to 16 byte.
Change-Id: Icf7d43fb7f93d3dd9ee568130be7bf250809c98c
sub.mohanty@samsung.com [Sat, 3 Aug 2019 06:34:46 +0000 (15:34 +0900)]
rlottie: change the name() api signature to return const char*
this patch is a preparation for the optimization patch which
will manage the memory for name string itself instead of using std::string.
sub.mohanty@samsung.com [Sat, 3 Aug 2019 06:25:06 +0000 (15:25 +0900)]
lottie/model: make LOTData class member data private and provide acessor function
John Preston [Mon, 5 Aug 2019 16:42:44 +0000 (17:42 +0100)]
Fix crash on invalid data.
JunsuChoi [Tue, 6 Aug 2019 01:26:43 +0000 (10:26 +0900)]
rlottie: Fix typo
meter -> miter
Hermet Park [Tue, 6 Aug 2019 05:31:45 +0000 (14:31 +0900)]
example: remove a not permitted resource.
Hermet Park [Mon, 5 Aug 2019 11:35:30 +0000 (20:35 +0900)]
capi: rename the member name.
there is a conflict naming between name and keypath,
we should keep them same in one name.
Hermet Park [Mon, 5 Aug 2019 11:33:21 +0000 (20:33 +0900)]
capi: keep code consistency.
Hermet Park [Mon, 5 Aug 2019 11:26:51 +0000 (20:26 +0900)]
capi: remove unused declaration.
Add it when it's really necessary.
John Preston [Tue, 30 Jul 2019 10:27:44 +0000 (12:27 +0200)]
Fix possible SW_FT_Outline points overflow.
JunsuChoi [Tue, 30 Jul 2019 11:03:00 +0000 (20:03 +0900)]
CAPI: Add capi to support the dynamic properties
This function needs keypath and type of string type.
And needs values as variable arguments.
The usage of this function is written in docs.
subhransu mohanty [Thu, 1 Aug 2019 05:55:09 +0000 (14:55 +0900)]
optimization: read content of the file directly to std::string to avoid creating temporary memory.
As json format is one big string we can directly read the content of file with one call to getline()
without going through generic interface to first read into stringstream and then create again a temorary
string from the stringstream buffer.
subhransu mohanty [Thu, 1 Aug 2019 01:52:12 +0000 (10:52 +0900)]
optimization: move rare propery field to extra structure to minimize memory footprint of LOTTransformData.
- only layer transform object can have position property as separate X and Y
by keeping them in the main structure incurs an overhead of 32 bytes to the user of the structure.
as well as 8 byte on the book keeping (mSeparate) by moving those rarely used field along with 3D
data to ExtraData we could trim the object size by 40bytes.
- with this patch now the object size is reduced from 128 bytes to 88bytes.
subhransu mohanty [Wed, 31 Jul 2019 08:06:17 +0000 (17:06 +0900)]
vdasher: refactor dash property parsing and handling.
- reduce Stroke and GStroke model object size by keeping a vector instead of fixed array property.
- keep a vector instead of fixed size array in model.
- keep a vector instead of fix size array in shadow tree.
- refactor getDashInfo() to DashProperty class and reuse by both Stroke and GradientStroke model object.
- enable move constructor in LOTAnimatable class to support creation vector of objects.
subhransu mohanty [Thu, 1 Aug 2019 00:16:34 +0000 (09:16 +0900)]
vdasher: fixed regression from last commit
this was only comparing the 1st dashinfo because of missing array subscript operator.
Change-Id: I938b971bb1eba7fc3ca41b0d95ea9b88c1ab97b4
John Preston [Mon, 29 Jul 2019 12:36:02 +0000 (14:36 +0200)]
Fix crash in a bad file reading.
John Preston [Tue, 30 Jul 2019 10:35:11 +0000 (12:35 +0200)]
Fix linking with static Qt.
Hermet Park [Tue, 30 Jul 2019 08:24:34 +0000 (17:24 +0900)]
lottieparser: Stop parsing if the media type is unlikely to lottie.
Users may need to try a load data in a brutal-force way,
if they have no idea of input source.
This case, they have no choices but try using all methods to find out
which loader successfully loaded among various media loaders.
This is a common scenario for compatible media support.