Jonathan Thomas
33f12a70dd
Fixed some FrameMapper unit tests that were broken.
2012-10-19 21:55:01 -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
acca789def
Fixed errors in the Cache unit tests.
2012-10-15 13:46:11 -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
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
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
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
60e645da61
Added a FrameRate() method to the timeline, to get or set the fps. Also, added a unit test for that, and refactored some header files to be alphabetical.
2012-10-10 01:07:47 -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
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
Jonathan Thomas
4bd6db527e
Renamed some of the basic clip property getters and setters, and added some simpler ways to get the value of and add points to a key frame.
2012-10-04 15:07:29 -05:00
Jonathan Thomas
d1af1b5fef
Huge refactor, switched almost all methods to using pointers for Frames, and moved some key method calls outside the critical OMP sections. Also, refactored the sws scaler, to create a pool of 32 scalers, and give each thread it's own scaler. This refactor resulted in a 40%+ increase in speed on the FFmpegReader class.
...
I also added a cmake build flag for the google perftools library, to assist on profiling performance issues.
2012-08-15 17:27:14 -05:00
Jonathan Thomas
0e233be34e
Added new unit tests for FFmpegReader, which tests actual pixel color values against a test video on 2 different frames. Also, made Seek() method private.
2012-07-09 01:44:36 -05:00
Jonathan Thomas
3b46aad2ef
Added some new methods to access audio data: channels, samples, etc... Also, added initial unit tests for the FFmpegReader class, including waveform checking against an actual audio file.
2012-07-09 01:22:11 -05:00
Jonathan Thomas
25b3d70a9a
Refactored the cache class to only apply the max frames against "previous" frames, and allow unlimited number of future frames, to account for different types of files (some which have hundreds of tiny frames, which need large future cache).
2012-07-05 00:01:42 -05:00
Jonathan Thomas
d2e3285099
Fixed cmake dependency for JUCE on Windows
2012-06-28 15:58:39 -05:00
Jonathan Thomas
ade29c7d68
Fixed tons of issues related to video timebase being different than the video framerate. Also, added new properties for interlaced video, correctly detect pixel ratio, and fixed Display() to adjust for pixel ratio. Also added sample_rate to a frame, so it can playback audio at the correct rate. Refactored FFmpegReader to make most methods private, and only expose the important methods publicly.
2011-12-11 20:42:50 -06:00
Jonathan Thomas
324887e381
Added additional unit tests for the Cache object, to verify it's cleaning up old items correctly.
2011-10-26 16:52:22 -05:00
Jonathan Thomas
e4f95d8a99
Reworked the cache object to use a double sided queue, so I can iterate through it to find the smallest frame, and remove specific frames from the cache. Also, fixed some additional audio bugs, and I finally have the audio being correctly distributed between frame objects.
2011-10-26 00:34:48 -05:00
Jonathan Thomas
43fd6c33d0
Some major refactoing of the FFmpegReader, to allow for audio and video packets that are out of order.
2011-10-24 08:22:21 -05:00