Commit Graph

104 Commits

Author SHA1 Message Date
Jonathan Thomas
ec65ca39b3 Fixing invalid cache after editing effect in a clip, and frame accuracy (converting timestamps into frame numbers). This makes frame by frame editing much better. 2017-03-10 00:51:08 -06:00
Jonathan Thomas
bd85f1144d Adding a lock when updating the JSON of a Timeline (or remapping it), so nobody can request frames while everything is changing. Seems much more stable during live preview. 2017-03-05 04:34:32 -06:00
Jonathan Thomas
dc25576fab Removing transform handles, since I will instead implement that in Python rather this library. Also, refactoring a bit of the clip transforms, to keep the rotation center correct. 2017-02-04 22:01:06 -06:00
Nelson Ho
c9b74ec96d Added fixes for audio sample distribution to clean up missing or extra audio samples that were at frame boundaries 2017-01-06 20:48:47 -05:00
Jonathan Thomas
5b7e94bb31 Fixing incorrect placement of a selection handle. 2016-12-29 18:01:20 -06:00
Jonathan Thomas
066d4818a3 Only apply effects for valid frame objects 2016-12-15 03:18:26 -06:00
Jonathan Thomas
d79994a780 New cross platform exception handler for libopenshot! Logs basic stacktrace on segmentation fault. This will be a huge help in finding bugs and crashes. 2016-11-03 02:19:48 -05:00
Jonathan Thomas
d2b3651d87 Fixing crash when FrameMapper sometimes returns a blank Frame objects. Not sure why that is possible, but now it fails gracefully. Also, extending the cache clearing code on timeline +/- 1 more frame, to be sure we clear frames that have changed. 2016-09-19 22:27:36 -05:00
Jonathan Thomas
33bba65cfd Adding transform selection handles to a clip, which doesn't have much of a purpose yet, but it renders the rectangle handles for a clip (will soon be tied into the UI). Finally implemented shearing as a basic clip transform, which can be keyframed and animated. Refactored the timeline code where we do matrix transformations (QTransform), to simplify it. 2016-09-16 00:12:17 -05:00
Jonathan Thomas
2b5db8dc5c Fixing regression from new caching system, to ignore removing frames from certain JSON changes, for example, deletions (i.e. removing a clip/transition). 2016-09-15 17:43:46 -05:00
Jonathan Thomas
7f347eb1ca Added SetMaxSize for image optimizations in QImageReader and FFmpegReader, which lets the timeline pass down the max size to all clips and readers, so they can optionally optimize the size of images (especially useful for optimizing preview performance). Removed convoluted image scaling code in FFmpegReader, and replaced with simpler version. Also, fixed a few regressions from the new Caching code, primarily a crash when reaching the end of the last clip on the timeline. 2016-09-14 04:11:12 -05:00
Jonathan Thomas
c53c9364f3 Added new CacheDisk class, which caches frames to the hard drive, dramatically speeding up preview speeds, at the expense of IO operations. New unittests for caching framework. Fixed a few bugs with Frame constructor, which was causing invalid # width & height. Integrated JSON into the cache framework, to quickly share the state of the cache (including ranges of cached frame numbers). Fixed a bug where some Timeline frames could have no audio samples. 2016-09-07 00:40:01 -05:00
Jonathan Thomas
e547296d83 Adding new CacheBase class. This is the first of many cache related commits, with the goal of building a disk based cache object, to be used by the timeline object if enabled. 2016-08-31 02:02:54 -05:00
Jonathan Thomas
a3ef86a695 Fixed some big performance issues (some which were causing crashes) in effects (Brightness and Saturation), and created a factory class for effects, to reduce redundent code. 2016-08-16 22:40:51 -05:00
Jonathan Thomas
28cc591faf Implementing a small memory bug fix with regards to AV_FREE_FRAME and audio_frame. Also adding in support for duration to be set by JSON, to support long videos from openshot-qt. 2016-08-15 00:44:51 -05:00
Jonathan Thomas
9839899a60 Big memory leak fixes in FFmpegReader and FrameMapper, and fixed logic in Frame Mapper with regards to special framerate conversions (24, 25, and 30)... which were causing some inadvertent audio drift. 2016-07-27 13:18:55 -05:00
Jonathan Thomas
4808be25ff Added 4 new clip keyframes (channel mapping, channel filter, has_video, and has_audio). These are a bit different though, as they are evaluated as boolean (-1 = ignored, 0 = disabled, 1 = enabled). Also fixed some issues with video playback (where it gets stuck in fast forward), and fixed some race conditions when opening FFmpegReader. Also added more debug output. 2016-04-24 15:37:47 -05:00
Jonathan Thomas
179d091005 Moved AppendDebugMessage to ZmqLogger, and updated 100+ references to use this new function. Removed debug var from readers/writers, and moved it to ZmqLogger.Enable(true/false). This allows debug output from all classes and functions, without any duplicate code. Also added some additional debug output for video playback and audio readers. 2016-04-21 01:39:17 -05:00
Jonathan Thomas
45f1b8c5ac Making ImageMagick completely optional. This will simplify packaging on Windows and Mac. Also, reprogrammed Display, DisplayWaveform, Save, and Thumbnail methods, which are much faster now (using Qt). 2016-02-23 00:27:03 -06:00
Jonathan Thomas
1e76b0b6e9 Smoother translation of scaled images, and much smoother aliasing of edges of scaling (i.e. zooming in / out, panning across) 2016-02-03 00:43:27 -06:00
Jonathan Thomas
054175ddaa Fixed some audio popping issues related to audio buffer size and also resampling issues inside the FrameMapper class. Also made the Timeline more hardened, if a reader returns an error requesting a frame. 2016-01-30 17:12:41 -06:00
Jonathan Thomas
43fd4fccb1 Fixing an audio popping / video frame flashing issue with the Timeline calculating the incorrect frame from a Clip. Now the timeline correctly rounds the time diff, and determines the correct frame. 2016-01-30 02:10:40 -06:00
Jonathan Thomas
d48ce2068e Refactored some audio thread code, and improved performance of timeline (by removing a 'omp ordered' statement that doesn't seem needed). Also added some performance improvements in Clip and FrameMapper classes (if the frame is the same as the source frame... just use the source frame) 2016-01-18 15:20:55 -06:00
Jonathan Thomas
e2573e8144 Flipping alpha channel values. It was brought to my attention that the meaning of alpha was opposite of what was being used. So, sorry if this breaks some things, but better to get it fixed quickly, and for the value to make sense. 2016-01-16 21:53:07 -06:00
Jonathan Thomas
55c23066a9 Fixed a bug which caused some timeline properties to not be set correctly when applying Json diffs. 2016-01-10 16:50:54 -06:00