Commit Graph

102 Commits

Author SHA1 Message Date
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
5e5ca2a55c Fixed a big bug on frame rate mapping, due to incorrect # of samples being copied into the new frame. Also, implemented interalacing support, and full pulldown support (in the frame mapper). 2012-10-18 02:58:09 -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
a57b81a734 Added a new DummyReader, which can be given any framerate, samplerate, width, height, etc... and used in unit tests, such as the FrameMap unit tests. 2012-10-16 16:45:31 -05:00
Jonathan Thomas
b78fca6090 Refactor of FrameMapper, and added in audio sample remapping.. 2012-10-15 17:45:20 -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
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
eace9f5efd Fixed a regression with disabling seek on the FFmpegReader. It runs slower than seeking, but has no artifacts of seeking, and is frame accurate. 2012-10-12 20:50:28 -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
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
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
314b57d106 Improved Timeline sort code to use both Position() and Layer(). 2012-10-10 01:58:13 -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
8518071890 Protected the Open() and Close() methods better, so the FFmpegReader will not crash. Also, made the Open() method public, so the Timeline and Clip classes can control the reader better. 2012-10-08 15:02:52 -05:00
Jonathan Thomas
6d790d2670 Overloaded Clip comparison operators, to use the Position() of clips for sorthing routines. Also, added the AddClip method, to add clips to a timeline (and sort them by position). 2012-10-05 17:05:33 -05:00
Jonathan Thomas
a417fef1fd Made the Timeline class inherit from FileReaderBase, which means the Timeline is really just a fancy ready class now. Also, added new unit tests for the Clip and Timeline classes. 2012-10-05 01:58:27 -05:00