Jonathan Thomas
e879188a7d
FFmpeg 3 & 4 support, Travis CI support, OpenMP schedule change ( #160 )
...
* FFmpeg4 support. Compile warnings fixes. Credit goes to many people, including ferdnyc, peterM, and other awesome folks!
* Adding environment checking to enable/disable omp taskwait after each video/audio frame is processed. This is experimental for some users with crashes.
* Moving `omp taskwait` to after the ProcessVideoPacket() method, since that is the only place it is useful.
* Fixing crashes on missing Clip source file, and changing FFmpeg scaling algorthm from SWS_BILINEAR to SWS_LANCZOS (for higher quality scaling)
* Update FindFFmpeg.cmake module, and updating build script. Also enabling debug builds.
* Updating experimental travis build script
* Fixed unit test for newer version of FFmpeg (audio resampling)
* Experimental travis multiple jobs
* Adding OMP schedule hint (thanks PeterM), which prevents crashes in some circumstances.
2018-09-11 00:40:31 -05:00
Jonathan Thomas
2f45a4eb38
Adding new audio mixing enum, to allow for no automatic audio mixing, average mixing (where all overlapping clips average to 100% audio), or reduce mixing (where clips overlapping clips are all reduced by a constant value to reduce popping). ( #131 )
2018-06-27 01:35:38 -05:00
Jonathan Thomas
93c2c0247a
Make copy of time mapped image data, so those frames can be manipulated (transformed, passed to effects, etc...)
2018-05-25 00:34:29 -05:00
Jonathan Thomas
7fc657c82b
Removing anchor from clip properties (since it is unused)
2018-04-21 15:51:43 -05:00
Jonathan Thomas
181a8b42d8
Fixing regression on Clip constructor, and simplifying pointer initialization
2018-02-06 13:05:30 -06:00
Jonathan Thomas
f2b0f3a0f4
Adding metadata from format, audio stream, and video streams to ReaderBase.info, which in some cases includes the 'rotate' metadata added by certain cameras, and audio metadata like title, album, artist, copyright, dates, etc... Auto-Rotates any Clip with Reader metadata 'rotate' attribute.
2018-02-03 01:57:18 -06:00
Jonathan Thomas
566c8f5a82
Spelling and typo fixes. Thanks Gelma for the pull request
2018-01-06 02:22:05 -06:00
Jonathan Thomas
2b41ad9938
More experimental critial sections trying to prevent race conditions on high CPU core systems
2017-11-11 17:16:56 -06:00
Jonathan Thomas
2fcb35ddcc
Removing throw statements from header files (thanks Peter)
2017-10-26 18:44:35 -05:00
Jonathan Thomas
c95db460d6
Big update! Updating all "long int" frame number types to int64_t, so all 3 OSes will produce the same depth and precision on frame numbers. Also removing variable bitrate support temporarily, since it causes more problems than it solves.
2017-09-28 16:03:01 -05:00
Jonathan Thomas
f12ffe692b
Migrating tr1 to std, adding C++11 support to build scripts, fixing crash in FFmpegReader (caused by shared_ptr, buffer, and last_video_frame corruption). Much improved stability with this change. Thanks to Craig and Peter for the help!
2017-08-20 17:37:39 -05:00
Jonathan Thomas
b094ac8469
Fixing issue with incorrect image size caches, which results in blurry/smudgy scaling on certain things.
2017-07-27 02:25:20 -05:00
Jonathan Thomas
2134769f1a
Fix issue with loading time curves that are never processed (i.e. have no values)
2017-07-24 15:43:35 -05:00
Jonathan Thomas
c30dbb90d8
Adding additional locks when adding/changing audio data. Reducing FrameMapper to a single frame at a time (increase seek speed and decrease crashes). Fixing crash on Time keyframes where it would sometimes calculate an invalid frame number.
2017-07-19 16:05:07 -05:00
Jonathan Thomas
a322411669
Removing nested OMP processing from FrameMapper. Adding lock inside time mapping (to prevent crashes when speeding up/slowing down clips). Adding omp critial lock to Frame GetAudioChannelsCount() and GetAudioSamplesCount() methods.
2017-06-22 15:26:40 -05:00
Jonathan Thomas
5290f67a97
Fixing regression where source readers could have their info.has_video and info.has_audio set to an invalid state... causing crashes and freezes.
2017-05-30 15:35:43 -05:00
Jonathan Thomas
3a884e71dc
Big improvement with handling invalid video and audio timestamps, defaulting to more sane values (when huge crazy timestamps are detected). Also fixing a bug when disabling video/audio tracks on FrameMappers. Also adding additional bail-out code when stuck searching for a video/audio packet that probably doesn't exist. Added improved "checked" handling, and once 1 frame is detected as invalid, clean out any other invalid ones as well.
2017-05-17 01:17:42 -05:00
Jonathan Thomas
97ec6298ff
Adding frame number display options to a clip, which can be super useful when debugging issues. Options include: None, Clip, Timeline, or Both. Also improving missing frame detection, to have less false positives (i.e. flickering 1st frame)
2017-03-15 02:06:53 -05:00
Jonathan Thomas
dc25576fab
Removing transform handles, since I will instead implement that in Python rather this library. Also, refactoring a bit of the clip transforms, to keep the rotation center correct.
2017-02-04 22:01:06 -06:00
Jonathan Thomas
559d6a0545
Huge refactor of keyframe point handles (bezier quadratic curves) to use CSS-style syntax. Basically, the left and right handles of a point now use percentages, such as 0.0, 1.0, 0.5, 1.0 (between 0 and 1), and become real coordinates based on the value differences between points (in real time). Also simplified the JSON property creation. Also, many unit tests have been updated, because they were actually generating the incorrect values from before... although only slightly in most cases. Now they have correct values from the default bezier handles.
2016-10-19 02:19:07 -05:00
Jonathan Thomas
d2b3651d87
Fixing crash when FrameMapper sometimes returns a blank Frame objects. Not sure why that is possible, but now it fails gracefully. Also, extending the cache clearing code on timeline +/- 1 more frame, to be sure we clear frames that have changed.
2016-09-19 22:27:36 -05:00
Jonathan Thomas
1743558f99
Improved image caching logic, to better estimate max image sizes possible, based on clip scale and keyframe settings... so we are always dealing with the smallest possible frame sizes for performance (without losing quality)
2016-09-17 17:14:27 -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
33bba65cfd
Adding transform selection handles to a clip, which doesn't have much of a purpose yet, but it renders the rectangle handles for a clip (will soon be tied into the UI). Finally implemented shearing as a basic clip transform, which can be keyframed and animated. Refactored the timeline code where we do matrix transformations (QTransform), to simplify it.
2016-09-16 00:12:17 -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