Commit Graph

30 Commits

Author SHA1 Message Date
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
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
7fe9008cad Added a new "smooth" slow motion, using the time map fraction to dissolve the next frame into the current one. 2012-10-29 01:47:39 -05:00
Jonathan Thomas
bfa1ec82eb Fixed a problem with audio time map deltas, and being slowed down instead of sped up 2012-10-23 11:13:06 -05:00
Jonathan Thomas
612bb25f5f Fixed the FFMpegReader to discard the first audio and video frames it finds after a seek, since they sometimes are missing information. This fixed many issues with the time mapping curves and audio reversing and fast forwarding. 2012-10-22 17:05:34 -05:00
Jonathan Thomas
082efa23cc Fixed more audio sample issues with time mapping 2012-10-21 17:51:37 -05:00
Jonathan Thomas
b74e97c7d2 FIxed some big audio bugs, and finally got the audio reversing correctly working. Now, audio waves are reversed when a time map is moving backwards. There are still some pops and crackles, but I'll fix those later. 2012-10-21 05:29:29 -05:00
Jonathan Thomas
3740ca0454 Added some new methods on the keyframe class, and added some unit tests for the keyframes. 2012-10-19 22:11:22 -05:00
Jonathan Thomas
19612f63bd Fixed some bugs with the new Keyframe system, and now it generates the correct values. 2012-10-19 21:50:50 -05:00
Jonathan Thomas
9d97ecb6d2 Improved the Keyframe and Coordinate classes, to also track the direction and a fraction representing the number of times a frame is repeated. This will allow the time mapping to slow down audio and reverse the waveforms when necessary. 2012-10-19 16:53:18 -05:00
Jonathan Thomas
de40b97457 Added some experimental time mapping code, to resample slow or fast audio samples. 2012-10-19 01:49:48 -05: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
0bab75acc8 Started working on the FrameMapper, to correctly map audio samples to the target framerate. 2012-10-14 23:24:27 -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
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
cebf9728c8 Refactored seek method a bit in the FFmpegReader, to fix some bugs. Also, being changing the cache object again, on how it cleans up pointers. Some debug code is checked in also. 2012-10-10 17:27:46 -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
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
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
Jonathan Thomas
87d12254ef Added Open() to the reader base class, so all readers need to have that method now. This is to allow the timeline to better control Clips and Readers. 2012-10-08 16:22:18 -05:00