Commit Graph

51 Commits

Author SHA1 Message Date
Jonathan Thomas
66c5ced902 Windows now passes most unit tests. Added header macro to assist on passing correct test media paths to unit tests. Also added a new info parameter has_single_image, which is used to optomize the frame mapper class for images with long durations. 2015-09-28 22:05:50 -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
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
3227d59f15 Improved Cmake scripts to better support Windows, and fixed a large memory leak because *reader was not being deleting after being created in Clip objects. 2014-07-25 23:32:12 -05:00
Jonathan Thomas
e135eb5738 Changed license to LGPLv3 for all libopenshot code. 2014-07-11 16:52:14 -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
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
cd7743fb88 Improved Json methods to correct work with swig and inheritance. 2013-12-07 21:09:55 -06:00
Jonathan Thomas
e3d41808b9 Added Json methods to readers and readerBase classes. 2013-12-07 16:52:09 -06:00
Jonathan Thomas
1bdea062d6 Added Deinterlace effect. Refactored Wipe effect into Mask effect (which is a more appropriate name). Added an example interlaced.png file. Improved the Mask to accept a 'reader', which can be used for more elaborate wipe animations. 2013-10-18 12:38:09 -05:00
Jonathan Thomas
2b77da2fd0 Fixed some bugs with the Wipe effect, and am still trying to optimze the performance and make it add alpha channels correctly. 2013-10-14 18:18:34 -05:00
Jonathan Thomas
58090ef5fc Added license and copyright to all files. Improved many examples and documentation. Refactored the Coordinate() object, to move a few properties to methods. 2013-09-12 17:52:10 -05:00
Jonathan Thomas
495ca9dc9e Fixed a big audio bug, where varying timestamp values on low precision audio timebases (i.e. 1/1000) would leave small gaps in the audio wave. Also, fixed a few issues related to sample_rate getting lost between the reader and clip and timeline objects. 2012-11-20 16:22:50 -06:00
Jonathan Thomas
b503b5a350 Added test code to read and write lots of JPEG files for an experimental test 2012-11-16 15:38:58 -06:00
Jonathan Thomas
73be628047 Replaced the opacity() method with the IM quantumOperator method, which allows me to simply multiply the alpha percentage to each alpha value, and fixed a bug in the ImageReader which prevented copying pixel data between frames. 2012-11-13 00:11:20 -06:00
Jonathan Thomas
5b77abdf27 The timeline classes are finally working correctly, and have the following features:
1) Layers (unlimited # of layers)
2) IN, OUT, and Position (time)
3) X, Y offset
4) Alpha
5) Rotation
6) Transparency + compositing + overlays
2012-11-08 04:35:21 -06:00
Jonathan Thomas
129a2fccd7 Many experimental changes, including a new FrameMapper that is based on FileReaderBase, and lots of debug code. 2012-10-17 09:57:02 -05:00
Jonathan Thomas
a57b81a734 Added a new DummyReader, which can be given any framerate, samplerate, width, height, etc... and used in unit tests, such as the FrameMap unit tests. 2012-10-16 16:45:31 -05:00
Jonathan Thomas
48bef6b566 Removed some unneeded methods, due to the previous refactor involving shared_ptr objects. They no longer require some special overloads which "delete" the objects in the cache. 2012-10-14 21:09:22 -05:00
Jonathan Thomas
617088cebf Yet another huge refactor, to use shared_ptr objects instead of actual pointers, due to the difficulties in managing the lifecycle of pointers between the timeline, clip, and readers. Seems to work great, and solves all sorts of bugs. =) 2012-10-14 03:43:52 -05:00
Jonathan Thomas
60e645da61 Added a FrameRate() method to the timeline, to get or set the fps. Also, added a unit test for that, and refactored some header files to be alphabetical. 2012-10-10 01:07:47 -05:00
Jonathan Thomas
d840297572 Refactored constructor() methods on readers again, to call Open() and then Close() methods automatically, to populate the info struct. And moved the GetFrame() call out of the Open() method, because it was unneeded and slowed down the Open() method. 2012-10-09 10:41:07 -05:00
Jonathan Thomas
1d89fd140a A big refactor of the Open() method on Readers, and the constructor of Readers. All resource consuming code has been moved into the Open() methods, so the Clips and Timeline can control them better. 2012-10-09 01:45:34 -05:00