Commit Graph

145 Commits

Author SHA1 Message Date
Jonathan Thomas
9839899a60 Big memory leak fixes in FFmpegReader and FrameMapper, and fixed logic in Frame Mapper with regards to special framerate conversions (24, 25, and 30)... which were causing some inadvertent audio drift. 2016-07-27 13:18:55 -05:00
Jonathan Thomas
92a9db2aa3 Improved detection of missing audio frames, and missing video frames. Also improved logic for giving up on missing frames in general. Also removed some deadlocks related to Seeking (Close() and Open() were deadlocking). The end result is much improved compatability with reading video files. 2016-06-29 02:42:00 -05:00
Jonathan Thomas
4808be25ff Added 4 new clip keyframes (channel mapping, channel filter, has_video, and has_audio). These are a bit different though, as they are evaluated as boolean (-1 = ignored, 0 = disabled, 1 = enabled). Also fixed some issues with video playback (where it gets stuck in fast forward), and fixed some race conditions when opening FFmpegReader. Also added more debug output. 2016-04-24 15:37:47 -05:00
Jonathan Thomas
37f1894300 Fixed a race condition in video playback thread! Also, added new method to get the average magnitude of a range of audio samples. 2016-04-22 02:43:06 -05:00
Jonathan Thomas
179d091005 Moved AppendDebugMessage to ZmqLogger, and updated 100+ references to use this new function. Removed debug var from readers/writers, and moved it to ZmqLogger.Enable(true/false). This allows debug output from all classes and functions, without any duplicate code. Also added some additional debug output for video playback and audio readers. 2016-04-21 01:39:17 -05:00
Jonathan Thomas
9503483a5d Added a lock around adding missing frame images (in FFmpegReader), which might be causing crashes, and fixed a log issue inside the FrameMapper, which also might be affecting performance and/or causing crashes. 2016-04-11 17:43:56 -05:00
Jonathan Thomas
723bd24e5c Adding new dependency: libzmq (ZeroMQ). Adding a new debug logging class powered by sockets and ZeroMQ, to allow a threadsafe way to communicate debug messages to a client application (i.e. openshot-qt). Also, removing unneeded Sleep.h functions. There will be lots more code utilizing ZeroMQ soon. 2016-04-04 23:09:18 -05:00
Jonathan Thomas
38b7516b50 When a seek fails, disable seeking with FFmpegReader. This fixes lots of issues with image sequences, but needs more testing to see if it causes issues with normal video files. 2016-03-08 23:11:56 -06:00
Jonathan Thomas
0604069da2 FIxed an issue with audio only files with no default height/width set. Also added improved performance when mixing many audio only files (skipping the image processing) 2016-01-09 15:50:53 -06:00
Jonathan Thomas
13362393c5 Fixed many more regressions with audio files not passing cover art to the next frame correctly. Seeking issues, and many related issues to detecting missing frames improved. Also fixed a deadlock in certain seeking cases. 2016-01-05 01:59:50 -06:00
Jonathan Thomas
bfed49819b Fixed delay with certain types of audio files which also contained a video stream with a single frame. Added some good 'dont get stuck' logic when checking for gaps in video/audio timestamps, etc... 2016-01-01 01:39:56 -06:00
Jonathan Thomas
2f8c4161df Improved changing Reader() on the QtPlayer class, and made many thread safety improvements for the FrameMapper.GetFrame method. Also improved the destructors and Close() methods of FFmpegReader and FrameMapper. Some audio-related bug fixes also, related to audio playback. 2015-12-24 16:44:45 -06:00
Jonathan Thomas
95deda88bc Fixing a bug for newer versions of LibAV and FFmpeg, regarding error codes 2015-10-01 13:00:50 -05:00
Jonathan Thomas
32d41e780d Fixed many misc Windows runtime errors and memory-related crashes. Built a few macros for common FFmpeg / LibAV functions that change due to version differences. 2015-09-23 00:27:28 -05:00
Jonathan Thomas
fbc719b11f Many Windows related fixes and tweaks. Also fixed some issues with newer versions of CMake and Swig files. 2015-08-24 23:49:45 -05:00
Jonathan Thomas
bfa050409c Improved support for missing frames and invalid PTS (which result in gaps and duplicate frames). Also changed frame number to larger data type, and did some code clean-up and refactoring. Less crashes, and more video support! 2015-08-24 01:05:48 -05:00
Jonathan Thomas
41dceadd1f Removed Cache::Exists method, which created all sorts of havoc when being called in quick succession (basically a frame might exist a split second before calling Cache::GetFrame, but then be missing when GetFrame is called).
Next Syntax:
frame = Cache::GetFrame(...)
if frame:
   ....

 Also, fixed some issues with MP3 files having the wrong video length detected, and a few other minor issues.
2015-08-05 23:40:58 -05:00
Jonathan Thomas
03c9f06708 Fixed many audio issues with the FFmpegWriter. Planar formats were not being handled correctly. Framesize was also wrong on some formats. Also, added a new method to a Frame to fill with audio silence. Lastly, cleaned up some unused imports and C++ warnings. 2015-08-02 20:32:33 -05:00
Jonathan Thomas
3db03a4c87 Removed exception handling for audio decoding... which sometimes fails when seeking... and it can be safely ignored. 2015-07-05 22:57:46 -07:00
Jonathan Thomas
066319c155 Fixed an issue with invalid framerates on some music files 2015-06-01 02:05:17 -07:00
Jonathan Thomas
b612f3339d Replaced ImagMagick with QImage on almost all key methods and classes. Reprogrammed all effects and the entire rendering pipeline to use QImage and QTransforms, primarily for increases in speed and stability. libopenshot is more than 10X faster on many of the most CPU heavy tasks. This was a huge change, and still has a few minor issues relating to BlackMagick Decklink and Text rendering.... which should be resolved very soon.
Also, much work has been done on memory management / leak detection, and optimizations with multi-threading... including a new thread cacher class used by the video playback (which is smoother than ever).
2015-06-01 00:20:14 -07:00
Jonathan Thomas
4b921b179e Fixed a regression with audio boundries on the FFmpegReader. 2015-03-16 15:29:37 -05:00
Jonathan Thomas
d7a43f692c Refactored out many omp critical statements related to debugging, and made them conditional based on if debug is enabled. 2015-03-15 02:35:01 -05:00
Jonathan Thomas
591cfbdb5a Fixed some major issues with the frame mapper. openshot::FrameMapper is now fully multi-threaded. Fixed a bug in calculating the # of samples on a frame (to always be evenly divisible by the # of channels). 2015-03-08 21:42:53 -05:00
Jonathan Thomas
db4a5a7948 Fixed some more multi-threading issues with Audio Processing, including a bug with the frames auto-size-increasing JUCE container. 2015-03-07 17:07:37 -06:00