Commit Graph

37 Commits

Author SHA1 Message Date
Jonathan Thomas
902b2ff8cd Added the base class for the FileWriter. 2012-07-09 15:18:24 -05:00
Jonathan Thomas
0c2008461a Fixed seek method to fallback on both streams, if one stream fails to seek. This fixes MP3s... which have a video stream, but only a single video packet. Also fixed the CheckWorkingFrames method to better determine when a frame is completed. 2012-07-09 00:41:17 -05:00
Jonathan Thomas
dfae7825ca Refactored FFmpegReader code a bit, fixed many, many memory leaks, and many valgrind errors. Now the memory seems very stable, and the seeking and stream walking seems very solid. 2012-07-08 23:26:44 -05:00
Jonathan Thomas
8067cb657a Fixed a bug when seeking, and not reseting the cache's current frame. Removed some debug code. 2012-07-07 00:58:05 -05:00
Jonathan Thomas
e9c243ddeb Audio optimizations and some debug code for seeking 2012-07-06 16:52:13 -05:00
Jonathan Thomas
21aa4d6b01 Replaced last_video_frame and last_audio_frame with a single last_frame variable, and refactored some related code. This fixes a big audio seeking bug. 2012-07-06 15:17:57 -05:00
Jonathan Thomas
457df5b2ff Changed the method of determining if a frame is completed or not. 2012-07-06 02:34:18 -05:00
Jonathan Thomas
e610d343f4 Added some debug messages about when a frame is "complete" 2012-07-05 02:29:43 -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
53e16efd63 Fixed a small audio buffer issue, and removed more debug code. 2012-07-04 04:01:59 -05:00
Jonathan Thomas
34a07b8d82 All known memory leaks are now fixed, and the memory seems to hold steady when looping through frames for many many minutes at a time. Fixed a bug with av_free_packet, which was breaking after an audio decode. Removed lots of debug statements. 2012-07-04 03:07:26 -05:00
Jonathan Thomas
e8d9dba8ce Started adding clean up code, to reduce memory footprint 2012-07-03 16:58:07 -05:00
Jonathan Thomas
6553f49874 Made CheckSeek() threadsafe 2012-07-03 02:59:38 -05:00
Jonathan Thomas
a662abcfd7 Fixed many bugs, including an audio crackle between packets, and fixed many multi-threading issues. 2012-07-03 02:42:47 -05:00
Jonathan Thomas
eea7b0c076 Protected audio decoding in a omp_critical, and removed some debug code 2012-07-02 17:25:07 -05:00
Jonathan Thomas
62df1bc7ac openmp changes 2012-06-18 09:26:14 -05:00
Jonathan Thomas
e9e1b86f5c Fixed audio code to work with the newest version of JUCE (v2.0), and removed sample programs 2012-06-17 23:15:47 -05:00
Jonathan Thomas
b775fff325 Got ffmpeg and juce compiling and mostly everything working again. FFmpeg is the newest version, and so is JUCE. 2012-06-16 02:12:48 -05:00
Jonathan Thomas
eae0c0bbfb FIxed a bug related to the CheckFPS method, if a video is too short to use this method, it needed to exit the function, and seek back to frame 1. 2012-02-26 16:45:50 -06:00
Jonathan Thomas
403c7e512e Fixed 2 bugs related to audio samples. Each frame can now determine it's own # of samples, due to some sample rates not being divisible evenly into some frame rates. Also, a bug was fixed that injected a bad sample into a frame's samples, when a frame received samples from multiple audio packets. 2012-02-26 16:40:53 -06:00
Jonathan Thomas
da289f93bf Fixed a bug where audio was not being resampled to the correct sample format. Also fixed a bug where the audio buffer was not being incremented correctly, and it was duplicating audio samples. There are still a few audio bugs, but it's mostly working now. 2011-12-18 02:29:34 -06:00
Jonathan Thomas
b4c7a6ce81 Removed some invalid code to handle interlaced frames. Improved the CheckFPS() algorithm to check for 1/2 the detected frame rate first, and then fallback to the "average frame rate". 2011-12-17 16:16:59 -06:00
Jonathan Thomas
f00c4206be Added a method to get the average # of frames over the initial 5 seconds of video, and adjust an invalid framerate, which sometimes FFmpeg detects. Also, a Reader only initializes it's default values 1 time, and only checks frame rate 1 time, regardless of how many times your Open() and Close() the reader. 2011-12-15 16:11:48 -06: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
e911c8cc00 Adjusting the FFmpegReader to correctly handle video timebase's that are different than the inverse framerate. 2011-11-07 17:12:25 -06:00