Jonathan Thomas
d3ef1fac13
Refactored the audio waveform generation into the Timeline class. Added the ability to set the volume, and the ability to mix layers of audio samples together. Also, made the waveform's have a transparent background, so they can be layered on top of other layers.
2012-11-29 16:32:48 -06: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
bf05afbfa7
Fixed the flush_encoders method to support older versions of FFmpeg
2012-11-17 03:13:00 -06:00
Jonathan Thomas
298cfb065e
Improved the compositing engine to more accurately compare doubles and floats.
2012-11-16 17:29:12 -06:00
Jonathan Thomas
8fb94cc123
Updated the FFmpegWriter to use compiler #IF commands to be compatible with older and newer versions of FFmpeg. This is still a work in progress, but many of the newer commands are now being protected.
2012-11-16 17:15:44 -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
d58cfec0ca
Added a simple X,Y offset, to speed up basic overlays.
2012-11-13 22:07:49 -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
bff37d0072
Added in openMP code to improve performance on the timeline layer merging, which is very CPU intensive.
2012-11-12 17:21:21 -06:00
Jonathan Thomas
d47a94f1a0
Added gravity, scale type, and percentage based X,Y location settings. All the basic transformation methods are now working. You can layer, move, fade, snap, rotate, and scale clips on the screen.
2012-11-12 01:25:35 -06:00
Jonathan Thomas
4e2947018c
Fixed sub-pixel positioning by resizing the source image canvas
2012-11-08 18:10:00 -06:00
Jonathan Thomas
ed2469e724
Integrated sub-pixel positioning using the distort operator. Not quite working yet.
2012-11-08 18:02: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
42d7565ba1
Integrated more timeline code, such as compositing layers... but they don't work yet
2012-11-07 17:45:13 -06: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
b647ff77c8
Fixed a regression with audio files and seeking, added a few new methods, and more accurately detect the End() of clips.
2012-10-14 02:36:05 -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
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
9966f3571d
Fixed a regression with the FFmpegReader, to always get frame 1 first, to calucate the PTS offsets, etc... Also, fixed a bug on the timeline, and now i'm 1 step closer to having it all work. =)
2012-10-10 14:49:33 -05:00
Jonathan Thomas
004e76adbb
Added an example, trying write a timeline to the FFmpegWriter. Not quite working yet though.
2012-10-10 02:49:34 -05:00
Jonathan Thomas
780a702f5d
Added a Rotate() method to a Frame object. Added new methods on a clip to translate frame numbers (FrameMapper and Time Curves). Now, the Timeline, Clip, and Readers are all working with animation curves. Pretty cool!
2012-10-10 02:36:53 -05:00
Jonathan Thomas
9d01dd7900
Implemented the Close() method, so it closes all clips' readers on the timeline
2012-10-10 00:52: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
9d31e9cf4f
Added some functionality to the timeline GetFrame() method, and build a way to update the list of opened clips, to manage which files are open and closed, etc...
2012-10-09 02:09:44 -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