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
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