Jonathan Thomas
183b0714e2
Added a new optimized constructor to some readers (FFmpegReader, QtImageReader, ImageReader) to not Open() in the constructor, which dramatically speeds up creating hundreds of Readers (i.e. when opening a project). This is really only useful when inflating the reader with Json right after you instantiate it...
2016-09-16 17:43:26 -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
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
e2615c9249
Renaming Layer to Track in JSON properties
2016-08-18 19:45:45 -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
d0b14fe3d3
Updated lots of JSON min/max properties to better reflect reasonable values
2016-08-16 02:12:51 -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
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
f775656c98
Reverting the clip optimization, since it causes some issues on QImageReaders used on the timeline.
2016-01-18 20:38:30 -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
0604069da2
FIxed an issue with audio only files with no default height/width set. Also added improved performance when mixing many audio only files (skipping the image processing)
2016-01-09 15:50:53 -06:00
Jonathan Thomas
6be7540852
Fixed a bug with time mapping for animations and videos without audio.
2015-12-31 04:17:54 -06:00
Jonathan Thomas
b7de1a885b
Fixed some big issues with time mapping and thread safety. Lots and lots of crashes were fixed related to this. Mostly dealing with an incorrectly sized AudioSampleBuffer when trying to combine multiple frames.
2015-12-28 02:41:32 -06:00
Jonathan Thomas
55684663da
Added wave_color to Clip's JSON properties. Also fixed a bug with adding effects from a JSON diff. Made the background color of a wave visualization transparent, and made the wave graphic come before the effects are processed, which allows the wave to be faded, animated, etc...
2015-11-25 23:54:10 -06:00
Jonathan Thomas
3731b22317
Added a new effect: Blur. It has the ability to box blur, horizontal and vertical blur, and gaussian blur. All of these settings are keyframeable and can be animated.
2015-11-09 00:12:21 -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
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
45f31bbabf
Added 2 new effects: Brightness and Contrast, and Saturation. Both effects implement keyframe curves, and can be animated.
2015-08-16 22:58:07 -05:00
Jonathan Thomas
8fa2ab71c5
Fixed a few tiny bugs in JSON Properties, and removed some unneeded code related to hashing the current state of an effect.
2015-08-16 19:19:14 -05:00
Jonathan Thomas
c7f0a481cc
Added a new class to easily expose the JSON metadata of supported effects in libopenshot. Fixed some bugs related to metadata, and a few bugs in the Mask effect (if initialized without a reader).
2015-08-06 20:01:34 -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
591cfbdb5a
Fixed some major issues with the frame mapper. openshot::FrameMapper is now fully multi-threaded. Fixed a bug in calculating the # of samples on a frame (to always be evenly divisible by the # of channels).
2015-03-08 21:42:53 -05:00