Commit Graph

154 Commits

Author SHA1 Message Date
Jonathan Thomas
b058251cc4 Large refactor of detecting missing frames, to make it more accurate and dramatically improve performance for many videos. 2016-12-07 01:06:16 -06:00
Jonathan Thomas
c90ddfd484 Ensure Seek() waits for any outstanding video/audio frames to be processed in other threads before attempting a seek (and potentially crashing) 2016-11-23 01:50:03 -06:00
Jonathan Thomas
7be1b8ca4c Removing unneeded std::map which has holding all AVPackets, which was causing a memory leak and crashes. 2016-11-14 22:37:44 -06:00
Jonathan Thomas
d79994a780 New cross platform exception handler for libopenshot! Logs basic stacktrace on segmentation fault. This will be a huge help in finding bugs and crashes. 2016-11-03 02:19:48 -05:00
Jonathan Thomas
183b0714e2 Added a new optimized constructor to some readers (FFmpegReader, QtImageReader, ImageReader) to not Open() in the constructor, which dramatically speeds up creating hundreds of Readers (i.e. when opening a project). This is really only useful when inflating the reader with Json right after you instantiate it... 2016-09-16 17:43:26 -05:00
Jonathan Thomas
7f347eb1ca Added SetMaxSize for image optimizations in QImageReader and FFmpegReader, which lets the timeline pass down the max size to all clips and readers, so they can optionally optimize the size of images (especially useful for optimizing preview performance). Removed convoluted image scaling code in FFmpegReader, and replaced with simpler version. Also, fixed a few regressions from the new Caching code, primarily a crash when reaching the end of the last clip on the timeline. 2016-09-14 04:11:12 -05:00
Jonathan Thomas
e547296d83 Adding new CacheBase class. This is the first of many cache related commits, with the goal of building a disk based cache object, to be used by the timeline object if enabled. 2016-08-31 02:02:54 -05:00
Jonathan Thomas
28cc591faf Implementing a small memory bug fix with regards to AV_FREE_FRAME and audio_frame. Also adding in support for duration to be set by JSON, to support long videos from openshot-qt. 2016-08-15 00:44:51 -05:00
Jonathan Thomas
734dc5b32f Fixing a crash on Windows by using a different overload of AddImage that doesn't do a memcpy. There is still a memory leak on the FFmpegWriter somewhere, which eventually starts to return NULL from av_malloc, and breaks on Windows (and probably other OSes too). 2016-07-30 16:57:48 -05:00
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