Jonathan Thomas
13362393c5
Fixed many more regressions with audio files not passing cover art to the next frame correctly. Seeking issues, and many related issues to detecting missing frames improved. Also fixed a deadlock in certain seeking cases.
2016-01-05 01:59:50 -06: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
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
404b7ed1bb
Updating some doxygen param names
2015-08-02 20:59:38 -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
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
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
41c2d434a8
Improve more documentation, including descriptions of enum values.
2013-09-10 22:11:47 -05:00
Jonathan Thomas
cbed47ea5f
Changed / Refactored many enums and structs, to better standardize the naming of everything. Improved some more descriptions and briefs.
2013-09-10 12:59:06 -05:00
Jonathan Thomas
234201743a
Improved more documenation, and switched to @ syntax for doxygen.
2013-09-09 23:32:16 -05:00
Jonathan Thomas
14a61f9c5c
Refactored a few methods, added new doxygen format, and improved the copyright, license, and comments & documentation for many classes and methods.
2013-09-08 23:09:54 -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
9347f2f88e
Fixed the seeking and cache code to work correctly. Also fixed a huge memory leak with the new AVPicture structs. Now the time mapping works both directions, and with no major memory leaks!
2012-10-12 16:41:23 -05:00
Jonathan Thomas
a601bcef2d
Another huge refactor and lots of big fixes! Time mapping now works... mostly. The jumpy / glitchy images have been solved by copying the AVFrame into an AVPicture, which does not get clobbered on the next decode.
...
Also, added a new frame number overaly (in the top, left part of the image), and a new AddColor() method, to change the size and color of the frame's image...
Padded the end of the FFmpegWriter / WriteTrailer() method, to avoid having a codec ignore the last many frames.
2012-10-12 00:54:53 -05:00
Jonathan Thomas
217c54a5ae
Major refactor to the cache object (again)! It now uses bytes to determine how many frames to keep.
2012-10-11 17:30:32 -05:00
Jonathan Thomas
b7792b04d8
Added new method to adjust the min value of a valid frame number, added a new unlimited cache option, and fixed a bug which was preventing the timeline from calling GetFrame correctly. Now timelines, clips, and readers are working together nicely.
2012-10-10 15:21:33 -05:00
Jonathan Thomas
d1af1b5fef
Huge refactor, switched almost all methods to using pointers for Frames, and moved some key method calls outside the critical OMP sections. Also, refactored the sws scaler, to create a pool of 32 scalers, and give each thread it's own scaler. This refactor resulted in a 40%+ increase in speed on the FFmpegReader class.
...
I also added a cmake build flag for the google perftools library, to assist on profiling performance issues.
2012-08-15 17:27:14 -05:00
Jonathan Thomas
25b3d70a9a
Refactored the cache class to only apply the max frames against "previous" frames, and allow unlimited number of future frames, to account for different types of files (some which have hundreds of tiny frames, which need large future cache).
2012-07-05 00:01:42 -05:00
Jonathan Thomas
53e16efd63
Fixed a small audio buffer issue, and removed more debug code.
2012-07-04 04:01:59 -05:00
Jonathan Thomas
a662abcfd7
Fixed many bugs, including an audio crackle between packets, and fixed many multi-threading issues.
2012-07-03 02:42:47 -05:00
Jonathan Thomas
815204d235
1) Successfully got OpenMP working with the video processing method.
...
2) Added new "processing" flag, to help determine if a frame is being worked on in a thread
3) Added a new cache Display() method, for debugging reasons
2012-07-01 01:43:06 -05:00
Jonathan Thomas
e4f95d8a99
Reworked the cache object to use a double sided queue, so I can iterate through it to find the smallest frame, and remove specific frames from the cache. Also, fixed some additional audio bugs, and I finally have the audio being correctly distributed between frame objects.
2011-10-26 00:34:48 -05:00
Jonathan Thomas
43fd6c33d0
Some major refactoing of the FFmpegReader, to allow for audio and video packets that are out of order.
2011-10-24 08:22:21 -05:00