Commit Graph

74 Commits

Author SHA1 Message Date
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
c345ae07b7 Fixed the ApplyJsonDiff function to support effects inside clips, which gets a bit tricky. 2015-08-07 23:11:03 -05:00
Jonathan Thomas
41dceadd1f Removed Cache::Exists method, which created all sorts of havoc when being called in quick succession (basically a frame might exist a split second before calling Cache::GetFrame, but then be missing when GetFrame is called).
Next Syntax:
frame = Cache::GetFrame(...)
if frame:
   ....

 Also, fixed some issues with MP3 files having the wrong video length detected, and a few other minor issues.
2015-08-05 23:40:58 -05:00
Jonathan Thomas
c5cddc9765 Updated ApplyJSonDIFF to accept some base Timeline properties 2015-06-04 17:28:39 -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
88e65fecef Cleaned up timeline class a bit, and refactored some OpenMP multi-threading support. The timeline GetFrame() method can not fully support OpenMP at the moment, due to nested parallel regions in some conditional ImageMagick function calls. Also better protected the openshot::Clip.GetFrame() call. 2015-03-15 02:28:28 -05:00
Jonathan Thomas
b07936e3b2 Added effects processing to a clip, so clips can carry their own independent effects... rather than depend on the timeline. This still needs some refactoring though. 2015-03-14 01:36:13 -05:00
Jonathan Thomas
1c3b1f5691 Timeline now supports overlapping clips, and will process them from bottom to top. Only the top layer gets effects applied, which enables overlapping transitions. 2015-02-26 02:31:36 -06:00
Jonathan Thomas
6937d89bfd Fixed some issues with the Mask effect: correctly serialize the reader property, and correctly load the reader. Added additional debug info for the Timeline class. 2015-02-25 17:39:59 -06:00
Jonathan Thomas
57fbf357f6 Increased debug output precision. Fixed rounding bug on timeline when finding a clips actual frame number. Fixed bug with a clips JSON properties output. 2015-02-24 23:59:26 -06:00
Jonathan Thomas
0df6439103 Changed default keyframes to set a value on X=1 instead of 0. Fixed Timelines composite function to correctly apply alpha channels to the 1st layer of a frame. 2015-02-21 00:12:21 -06:00
Jonathan Thomas
d44604295a Added virtual pixel handling to all openshot::Frame images. Fixed timeline to correctly distort (had to disable multi-threaded support for now). Fixed correct origin handling or rotations and scaling. Added lots of debug support into the timeline. Fixed a bug where readers with different # of audio channels would crash the timeline. 2015-02-19 15:59:57 -06:00
Jonathan Thomas
86561aed22 Fixed a huge bug when closing a reader and re-opening it. Added some new unit tests to test for that bug, as well as check the ordering of layers and effects. Improved opening and closing of openshot::Clip->Reader() to better support multiple threads. 2015-02-19 01:03:22 -06:00
Jonathan Thomas
efa37ea410 Fixed timeline clip sorting to correctly sequence and mix the various layers and clips. 2015-02-18 17:15:03 -06:00
Jonathan Thomas
bb9849c60a Fixed some serious issues with the Timeline class, improved the Timeline unit tests to cover more of the code, and fixed a bug with the Clip class... which removed the Reader during closing. 2015-02-07 18:06:11 -06:00
Jonathan Thomas
cc7a0f41e8 Added new debug methods, and refactored the ReaderBase and WriterBase to better utilize the base class constructor. Also fixed some FFMpegReader issues related to seeking and determining when frames are actually ready. 2014-08-27 09:44:27 -05:00
Jonathan Thomas
e135eb5738 Changed license to LGPLv3 for all libopenshot code. 2014-07-11 16:52:14 -05:00
Jonathan Thomas
b224d7d8fa Adjusted ImageMagick code to dynamically calculate the quantum depth, and bitshift between that depth and the 8bit colors for FFmpeg. 2014-07-03 12:26:02 -05:00
Jonathan Thomas
00722192d9 ApplyJsonDiff now clears the internal timeline cache (since things might have changed), and the timelines GetFrame always resorts the clips, to be sure they are in the correct order... not ideal, but better than out of order. 2014-05-14 23:04:35 -05:00
Jonathan Thomas
e073ad89f5 Fixed many issues with the QtPlayer and related classes. Now the VideoRenderer can be passed through SWIG and connected to a PyQt application and handle display signals for each frame. Also, refactored some OpenMP settings into its own header. 2014-04-02 16:48:27 -05:00
Jonathan Thomas
5010f6252a Replaced all copyright and licensing to reflect AGPLv3 license. Also, added a bad ass version header, which is now integrated into CMake as well. A single place to indicate version and ABI/API compatibility. 2014-03-29 18:49:22 -05:00
Jonathan Thomas
4ee7ef9b6e Added experimental AudioBufferSource and refactored lots of audio code. 2014-01-28 17:17:38 -06:00
Jonathan Thomas
eef341270b Changed some json settings for the timeline, and fixed a regression on the clip class. 2014-01-27 23:31:38 -06:00
Jonathan Thomas
3c99e53dad Added JSON change method, which accepts a diff / sync JSON array, and applies the changes to a timeline and timeline associated properties and items. Also fixed many bugs on JSON type checking. 2014-01-08 01:43:58 -06:00
Jonathan Thomas
f25f342825 Completed timeline class Json methods, with all child properties... and refactored many unneeded properties away. 2014-01-05 22:37:11 -06:00