Commit Graph

55 Commits

Author SHA1 Message Date
Jonathan Thomas
ffb5439a2e Merge pull request #224 from sparfenyuk/develop
Add virtual destructor for abstract classes
2019-06-21 15:47:08 -05:00
Jonathan Thomas
967f23b8a4 Merge pull request #245 from ferdnyc/license-block
Upgrade Doxygen documentation formatting/content
2019-06-21 00:24:54 -05:00
FeRD (Frank Dana)
744a4f3ec1 Remove Json:Reader
`Json::Reader` has been deprecated for some time, so we replace it with
`Json::CharReader` generated by a `Json::CharReaderBuilder`, or (in the
one instance where we have a stream as input) `Json::parseFromStream();`
2019-06-19 21:20:04 -04:00
FeRD (Frank Dana)
f170fdd009 Update copyright range to current year 2019-06-11 06:48:32 -04:00
FeRD (Frank Dana)
0327c2ab5c Remove license block from documentation comment 2019-06-09 08:31:04 -04:00
Siarhei Parfianiuk
cbc276e489 Merge branch 'develop' into develop 2019-05-11 12:30:19 +02:00
eisneinechse
c55d8551c1 Simplification
Further simplify the else branches.
Thanks to SuslikV for pointing this out.
2019-05-05 18:18:14 -07:00
eisneinechse
bfa8a83864 The default return value is present
Remove else so that the default return value is used if no other return was used."else if" in line 334 had no else and therefore in some cases no return value was present.
2019-05-03 13:13:45 -07:00
Sergey Parfenyuk
665a03f9e2 Fix logical statements 2019-04-27 12:50:31 +02:00
Jonathan Thomas
8f385c112a Improved Keyframe Performance (#197)
* Refactor of Coorindate and Keyframe optimized for performance (much faster than previously). Also refactored FrameMapper to not use a Keyframe, and to only process frame mapping when needed... speeding up Json loading of project files.

* Fixing FrameMapper linear calculation to match existing Keyframe calculation

* Fixing Keyframe to pass original unit tests, and correctly calculate the Keyframe repeat fractions and deltas.

* Small refactor of time mapped logic in Clip.cpp
2019-03-06 15:35:03 -06:00
Jonathan Thomas
2fcb35ddcc Removing throw statements from header files (thanks Peter) 2017-10-26 18:44:35 -05:00
Jonathan Thomas
c95db460d6 Big update! Updating all "long int" frame number types to int64_t, so all 3 OSes will produce the same depth and precision on frame numbers. Also removing variable bitrate support temporarily, since it causes more problems than it solves. 2017-09-28 16:03:01 -05:00
Jonathan Thomas
85ac4bf6d2 Updating references to frame number / position to long int, there were still quite a few old "int" declarations, which limits the length of frame number. Also, updated precision of KeyFrames to use double (instead of float) for higher precision, which fixed lots of issues with very long videos (since our FrameMapper used a KeyFrame object to create a map to new frames) 2017-01-24 18:39:17 -06:00
Jonathan Thomas
559d6a0545 Huge refactor of keyframe point handles (bezier quadratic curves) to use CSS-style syntax. Basically, the left and right handles of a point now use percentages, such as 0.0, 1.0, 0.5, 1.0 (between 0 and 1), and become real coordinates based on the value differences between points (in real time). Also simplified the JSON property creation. Also, many unit tests have been updated, because they were actually generating the incorrect values from before... although only slightly in most cases. Now they have correct values from the default bezier handles. 2016-10-19 02:19:07 -05:00
Jonathan Thomas
1743558f99 Improved image caching logic, to better estimate max image sizes possible, based on clip scale and keyframe settings... so we are always dealing with the smallest possible frame sizes for performance (without losing quality) 2016-09-17 17:14:27 -05:00
Jonathan Thomas
2523b31061 Fixing ambiguous reference to Json array index on Keyframe class 2016-08-03 18:44:20 -05:00
Jonathan Thomas
d7f4b08844 Making some small tweaks for consistency / code format 2016-08-02 18:18:24 -05:00
Juraj Komacka
5b4f0e5995 Fix compilation ambiguity for system jsoncpp
In upstream JsonCpp there are two [] operators for Json::Value - one taking unsigned int, second taking int - passing long int leads to ambiguity.
2016-03-28 19:15:13 +02:00
Jonathan Thomas
90db687598 Fixed bug in RemovePoint, and improved the AddPoint KeyFrame method to remove a previous, duplicate point (based on co.X value). 2015-12-15 18:12:24 -06:00
Jonathan Thomas
358e0835d2 Added dropdown choices into JSON properties, so a UI can correctly list the options for certain properties. Fixed a bug when deleting all Points from a Keyframe, and added some missing Enums from the Python/Ruby bindings. 2015-10-02 18:22:10 -05:00
Jonathan Thomas
ac7be90544 Fixed a few issues with Color keyframes 2015-10-01 18:51:59 -05:00
Jonathan Thomas
bfa050409c Improved support for missing frames and invalid PTS (which result in gaps and duplicate frames). Also changed frame number to larger data type, and did some code clean-up and refactoring. Less crashes, and more video support! 2015-08-24 01:05:48 -05:00
Jonathan Thomas
b612f3339d Replaced ImagMagick with QImage on almost all key methods and classes. Reprogrammed all effects and the entire rendering pipeline to use QImage and QTransforms, primarily for increases in speed and stability. libopenshot is more than 10X faster on many of the most CPU heavy tasks. This was a huge change, and still has a few minor issues relating to BlackMagick Decklink and Text rendering.... which should be resolved very soon.
Also, much work has been done on memory management / leak detection, and optimizations with multi-threading... including a new thread cacher class used by the video playback (which is smoother than ever).
2015-06-01 00:20:14 -07:00
Jonathan Thomas
e2ee3d01f2 Added the ability to scale and flip keyframes, making it easy to reverse an effect or transition, and resize transitions without having to manually reset the keyframes X coordinates. 2015-03-13 23:19:55 -05:00
Jonathan Thomas
e084f638a9 Optimized keyframe JSON serialization, speeding up loading and saving large projects and complex keyframe scenarios. 2015-03-13 17:08:03 -05:00