Commit Graph

  • bf0f809d4a Removing unused variable (Codacy suggestion) Jonathan Thomas 2023-03-11 21:10:42 -06:00
  • 45c273bf42 Large fix for FrameMapper when resampling audio - to correctly apply the EXTRA_INPUT_SAMPLES, to prevent the resampler from becoming input limited. Jonathan Thomas 2023-03-11 16:50:28 -06:00
  • ec1bd0185a Reverting GitHub Windows builder to use ffmpeg (instead of ffmpeg 4.4), and removing version logic around swresample/avresample logic - since GitHub versions are completely different than expected (for example: avformat version: 3.100 vs avformat version: 58.45.100) Jonathan Thomas 2023-03-10 14:36:08 -06:00
  • 1c832dc1d5 Changing GitHub windows builder to use ffmpeg 4.4 Jonathan Thomas 2023-03-10 14:14:52 -06:00
  • 09ce05bbf2 Many improvements for smooth audio playback when 'time' keyframes are used for time remapping. Jonathan Thomas 2023-03-10 01:15:14 -06:00
  • d104664da3 Fixed an issue with reversed resampled audio in FrameMapper, which caused lots of clicks / seams between frames... Also, added a new overload to GetInterleavedAudioSamples, to reverse the samples before returning the float* array. Essentially, the FrameMapper is now aware of it's parent clip, and especially the 'time' keyframe, if the audio is in the forward or reverse direction. Also fixed a memory leak in time remapping. Jonathan Thomas 2023-02-28 14:13:12 -06:00
  • 59d46e59be Large refactor of Clip::GetFrame and time-remapping of audio samples. - Refactor AudioLocation into own header - AudioResampler now supports variable channels - Adding cache back to Clips - to prevent the cost of multiple calls for the same GetFrame() frame, used in time-remapping - Large refactor of Clip::GetFrame, to prevent multiple code paths, and much improved time-remapping - Clip's time keyframe now supports Bezier and sub-frame precision - to you can curve audio speed using any curve shape - Fixing # of audio samples on Clip frame's, based on timeline position (to predictably divide samples per frame) - New Clip unit tests for time remapping and resampling audio, and reversing audio - New Frame::GetAudioSamples arg, to allow for reversing the direction of audio samples - Fix bug in Frame::AddAudioSilence() to correctly cache the # of audio samples - FrameMapper clean up resample context (when changing frame rate) - FrameMapper refactor to optimize # of calls to Reader()::GetFrame(), since calls to Clip::GetFrame are quite expensive - Removing RepeatingFraction functionality from Keyframe object (since it was a bad implementation detail from our previous time remapping) - Making Keyframe GetDelta method a float, and no longer an int - to allow for more precision on time remapping - Large amount of white space fixing (to make things consistent) Jonathan Thomas 2023-02-27 22:11:13 -06:00
  • 1fc4d6abac fix package name per https://packages.msys2.org/package/mingw-w64-x86_64-python3-PyOpenGL Ashot Janibekyan 2023-02-19 05:13:30 +04:00
  • 8f92bac0b7 Merge pull request #899 from OpenShot/improved-captions Jonathan Thomas 2023-02-15 13:15:03 -06:00
  • 450af52f64 WIP: Experimental Unit Tests without Display (#900) Jonathan Thomas 2023-02-14 01:44:38 -06:00
  • fbbe4571a5 Removing debug code for Caption effect unit tests Jonathan Thomas 2023-02-14 00:30:25 -06:00
  • bcade0c276 Enabling high DPI support for Caption unit test, and using different values for Windows and Linux unit tests, since fonts are rendering using different systems... and are not equal. Jonathan Thomas 2023-02-14 00:16:41 -06:00
  • 2131d38a72 Adding debug code for failed windows unit test Jonathan Thomas 2023-02-13 23:35:10 -06:00
  • 52a9e3be5d - Clip reader init should consider paths with a % to use FFmpegReader by default (i.e. image sequences) - FFmpegReader info struct should not be initialized during Open() after it is initially populated - so our SetJson() method can properly override it's values - FrameMapper Json() method should include it's mapped Reader JSON - even though it is not yet possible to read it back in yet - New unit tests for Timeline ApplyJsonDiff, and verification that we can override FFmpegReader info struct (i.e. updating FPS, time bases, etc...) - Some whitespace fixes Jonathan Thomas 2023-02-13 16:42:21 -06:00
  • 2f08ac0c1c Allow waveform generation to happen before Clip effects are processed. Also, allow the Caption effect to add image data (i.e. waveform graphic) and allow Clip to detect that image to output it correctly. The result of all this: audio-only files now support the Caption effect, on top of the generated waveform image. Lastly, generated waveforms should use the entire Timeline size - and not a pre-determined 720x480 size. Jonathan Thomas 2023-02-10 15:16:56 -06:00
  • 06c140c23c Improvement to Caption effect, including Caption unit-tests, and the following fixes: - improved regex, which now detects lines without blank lines separating them, and detects captions that start with numbers - line wrapping fixed for languages that don't use spaces - forced line wrapping of long strings of characters Jonathan Thomas 2023-02-10 15:14:10 -06:00
  • 70e86ef044 Improved Profile Class (Helper methods, Sortable, Unit tests) (#895) Jonathan Thomas 2023-02-02 16:29:38 -06:00
  • 03649af1c8 Replace Unittest++ with Catch2 Benson Muite 2023-01-29 23:12:40 +03:00
  • 510a7690f6 Remove CODEOWNERS file (#841) Frank Dana 2023-01-10 16:02:04 -05:00
  • 99aab0a12b Fix Brightness, Hue, and Saturation effects (#889) Jonathan Thomas 2022-12-21 22:18:42 -06:00
  • 4fbb4392ba Fix Transition/Mask replace_image Property (#888) Jonathan Thomas 2022-12-20 15:48:13 -06:00
  • 3001d1b059 Fix ColorShift bug when only adjusting the Y keyframes (#887) Jonathan Thomas 2022-12-20 12:24:16 -06:00
  • 94e5f740f1 Update README.md copyright and license info, to be more clear. Also updating dates. (#886) Jonathan Thomas 2022-12-19 17:08:45 -06:00
  • 31a1abb557 Add COPYING file back to repository, to make it clear the primary license which affects libopenshot source code (so GitHub will display it), and fix typo in reuse dep5 file. (#885) Jonathan Thomas 2022-12-19 16:46:32 -06:00
  • 186a4ca5c1 Refactoring Audio Device detection (don't crash on Windows, find actual sample rate and device details) (#883) Jonathan Thomas 2022-12-19 13:15:43 -06:00
  • 89e4b1dabd Merge pull request #879 from OpenShot/release-20221201 Jonathan Thomas 2022-12-10 15:31:55 -06:00
  • 264205da9f Bumping version to 0.3.0, SO 23, and minimum libopenshot-audio dependency to 0.3.0. v0.3.0 Jonathan Thomas 2022-12-01 16:04:03 -06:00
  • 5493ea9afd Merge pull request #878 from OpenShot/new-linux-appimage Jonathan Thomas 2022-11-30 09:09:17 -06:00
  • 5e5e052b26 Experimental AppImage glibc wrapping for backwards compatibility (older distros) Jonathan Thomas 2022-11-28 16:31:35 -06:00
  • 49d02bad19 Prevent divide by zero in Fraction Jonathan Thomas 2022-11-28 16:31:20 -06:00
  • 6acee2aec4 Updating linux runner to focal Jonathan Thomas 2022-11-27 17:32:11 -06:00
  • 6f800117b1 Merge pull request #876 from OpenShot/fix-double-avcodec-open Jonathan Thomas 2022-11-27 00:13:00 -06:00
  • 520446c5e4 Fix whitespace Jonathan Thomas 2022-11-26 22:47:28 -06:00
  • d8ff69c6ed Fix a huge regression which invokes the avcodec_open() method twice for every call to FFmpegReader::Open(), leaving many threads running and never joined/closed. Also, adding some additional error message when attempting to call avcodec_open(). Jonathan Thomas 2022-11-26 22:47:04 -06:00
  • bcd54c0270 Merge pull request #875 from OpenShot/seek-past-end-of-stream Jonathan Thomas 2022-11-23 16:07:49 -06:00
  • 5a380485da Fixing whitespace Jonathan Thomas 2022-11-23 14:01:43 -06:00
  • 1bd1fdcb2a Silence audio data if repeating last frame in FFmpegReader (to prevent audio glitch for files with invalid durations) Jonathan Thomas 2022-11-23 13:56:57 -06:00
  • 2defcc58d0 Remove example changes Jonathan Thomas 2022-11-23 12:52:32 -06:00
  • 70db06947d Prevent seeking past end of stream, which causes a huge # of Seeks once EOF is reached, if we try and request frame #s too large for the file Jonathan Thomas 2022-11-23 12:45:10 -06:00
  • 5aa9487e05 Merge pull request #874 from OpenShot/transition-wipe-contrast Jonathan Thomas 2022-11-18 17:31:13 -06:00
  • 2b4bcc1e5f Prevent divide by zero error Jonathan Thomas 2022-11-18 00:55:16 -06:00
  • fc7575b60e Implementing a fix for mask contrast proposed by GitHub user xotmatrix Jonathan Thomas 2022-11-18 00:32:48 -06:00
  • 20e7fba572 Fixing white space Jonathan Thomas 2022-11-18 00:25:05 -06:00
  • 553dcc64e1 Fixing regression with mask effect caused by contrast being adjusted after we modulate the brightness (sort error) Jonathan Thomas 2022-11-18 00:24:43 -06:00
  • 7617e9165e Merge pull request #872 from OpenShot/failing-video-decode Jonathan Thomas 2022-11-16 17:47:21 -06:00
  • 4039851a66 Adding Invalid Codec exception to AV1 unittest Jonathan Thomas 2022-11-16 17:11:30 -06:00
  • fdcf9b9118 Renaming variable in FFmpegReader to make more sense Jonathan Thomas 2022-11-16 15:17:03 -06:00
  • 2c24d0ff32 Updating unit tests to ignore older versions of FFmpeg that do not support AV1 decoding. Jonathan Thomas 2022-11-16 15:10:25 -06:00
  • 58dc99d1f9 Fixing whitespacae Jonathan Thomas 2022-11-15 14:52:13 -06:00
  • cbff18ad95 Update AV1 unit testing to verify pixel values, to ensure correct decoding Jonathan Thomas 2022-11-15 14:33:03 -06:00
  • e9aa87c3f3 Experimental refactor around sending/receiving packets with the decoder in FFmpegReader. Jonathan Thomas 2022-11-15 10:57:33 -06:00
  • ab8cae8368 Additional FFmpegReader decoding logging for AV1 Jonathan Thomas 2022-11-14 15:48:16 -06:00
  • 625581725e Restoring gitlab-ci yml for normal build servers, updating some Windows libopenshot docs Jonathan Thomas 2022-11-14 13:23:58 -06:00
  • 63ebc4f4f3 Adding test for AV1 sync verification on Windows builder Jonathan Thomas 2022-11-14 12:03:33 -06:00
  • 061b185e76 target custom windows builder, for experimental upgrades Jonathan Thomas 2022-11-11 15:59:25 -06:00
  • 107918b7ad Adding more debugging / logging to hardware acceleration Jonathan Thomas 2022-11-10 16:33:22 -06:00
  • b874e91579 Always decode frames in GetAVFrame() method, even if send fails Jonathan Thomas 2022-11-10 14:39:45 -06:00
  • 7a1e7bd0b6 Always try and receive an AVFrame even if the sending fails (FFmpegReader) - to support some types of multi-threaded video codecs (AV1) Jonathan Thomas 2022-11-10 12:45:14 -06:00
  • 17eaca652e Add additional decoding logging inside GetAVFrame method - failing on Windows and trying to debug Jonathan Thomas 2022-11-10 11:46:38 -06:00
  • 854a3aa3f8 Merge pull request #869 from OpenShot/audio-waveformer Jonathan Thomas 2022-11-03 16:18:30 -05:00
  • bdb161dc93 AudioWaveformData: Adding protection from divide by zero and readers with no audio, including additional unit tests and a faster zero() function Jonathan Thomas 2022-11-03 11:37:14 -05:00
  • d7ab1c61ec Merge pull request #868 from OpenShot/audio-waveformer Jonathan Thomas 2022-11-02 21:54:45 -05:00
  • 4265d84ff9 Some performance optimizations. to reduce # of calls to GetAudioSamples() Jonathan Thomas 2022-11-01 16:48:37 -05:00
  • c838c126ad Improvements to AudioWaveformer to use RMS (Root Mean Square), and return both average RMS and max RMS for graphing, including some new unit tests. Jonathan Thomas 2022-11-01 15:17:03 -05:00
  • 670baa5a35 Merge pull request #867 from OpenShot/avi-pts-fix Jonathan Thomas 2022-10-31 23:08:27 -05:00
  • ea8ffb5bc1 Add fallback for AVFrame.pkt_dts, which is only used on certain codecs (AV1) Jonathan Thomas 2022-10-31 18:57:51 -05:00
  • 9cd7dd68a8 Wrap vector<float> in Swig mappings, and enable thread-safe access to swig wrappers - so our long running waveformer does not block the Python GIL Jonathan Thomas 2022-10-31 14:20:18 -05:00
  • 864cfd84c3 Bump eps1lon/actions-label-merge-conflict from 2.0.1 to 2.1.0 dependabot[bot] 2022-10-31 11:02:46 +00:00
  • 2326532820 Initial commit of AudioWaveformer class, which is designed to iterate any ReaderBase, and return a reduced "average" sample set - more useful for generating waveforms - for example, reduce a 44100 samples per second down to 20 samples per second. Jonathan Thomas 2022-10-30 22:04:19 -05:00
  • cd514a1e7f Merge pull request #864 from OpenShot/fix-undo-redo Jonathan Thomas 2022-10-28 19:04:36 -05:00
  • 7a733c0a7b Fixing whitespace Jonathan Thomas 2022-10-28 19:03:17 -05:00
  • da813e08db Fixing whitespace Jonathan Thomas 2022-10-28 19:02:27 -05:00
  • 9f3fa0af52 Fixing whitespace Jonathan Thomas 2022-10-28 19:01:27 -05:00
  • 1547fb1d52 New unit tests around GetMaxFrame / GetMaxTime. Improvemetns to apply_json_to_timeline() to not clear all cache when setting the timeline's "duration" - an optimization for performance Jonathan Thomas 2022-10-28 15:25:30 -05:00
  • f50e18e3c2 A bit of refactoring around Clip Reader deletion - to prevent memory leak and some skipped readers Jonathan Thomas 2022-10-28 11:25:48 -05:00
  • c12e3fe96e - 2 new unit tests, to verify Reader() ownership and clean-up is correct - Bug fix for clip, to delete a new Reader, regardless of how it was set (correctly track allocated readers, and ignore FrameMappers pointed to existing allocated reader) - Bug fix for timeline to correctly wrap Reader with FrameMapper Jonathan Thomas 2022-10-28 11:00:47 -05:00
  • 52de46078a Adding mutex to Timeline::Close Jonathan Thomas 2022-10-26 23:15:50 -05:00
  • 1186c24d1d Merge pull request #863 from OpenShot/broken-image-formats Jonathan Thomas 2022-10-24 19:53:53 -05:00
  • 9f391f57c0 Merge pull request #862 from OpenShot/performance-profile-fixes Jonathan Thomas 2022-10-24 19:52:52 -05:00
  • b70f89ff6c Fixing whitespace Jonathan Thomas 2022-10-24 15:03:10 -05:00
  • 2bc1c28b75 Fixing whitespace Jonathan Thomas 2022-10-24 15:02:25 -05:00
  • f207e48fe4 Support many image formats with our FFmpegReader, by safely protecting empty packets in GetPacketPTS, and generating a duration and setting the has_single_image property. Jonathan Thomas 2022-10-24 14:43:10 -05:00
  • 6a234fe4ce Always cache starting 1 frame previous to the playhead - to prevent the Seek method from clearing all cache Jonathan Thomas 2022-10-24 13:08:37 -05:00
  • 05b997ac85 Merge pull request #861 from OpenShot/less-sort Jonathan Thomas 2022-10-23 17:14:24 -05:00
  • d46efe8c7c Small tweak to playback logic, to refresh frame anytime Player::Seek() is called - which allows for changing keyframes during playback (i.e. shaking a clip during playback) Jonathan Thomas 2022-10-22 23:40:42 -05:00
  • 389bf33adb - Protect AddClip(), RemoveClip(), update_open_clips(), sort_clips(), sort_effects() methods with mutex, making them thread safe - Refactor sorting of clips & effects, and only sort these arrays when the arrays change (instead of each call to GetFrame) - Cache max timeline duration, and make Timeline::GetMaxTime() thread safe - New multi-threaded unit tests, which are designed to verify no seg faults on multi-threaded calls to Timeline::GetFrame(), Timeline::AddClip(), and Timeline::RemoveClip() - New public Timeline::SortTimeline() method which is called by child Clips automatically, when certain properties are changed Jonathan Thomas 2022-10-22 22:55:40 -05:00
  • 87e14ba616 Refactor how Clip overrides ClipBase::End() Jonathan Thomas 2022-10-22 22:48:18 -05:00
  • 788a3c77a6 Fixing whitespace Jonathan Thomas 2022-10-21 18:15:41 -05:00
  • d8f8cba27f Do not sort_clips on every call to GetFrame, as this invalidates the internal clips list, and causes crashes in ClearAllCache() and Clear() methods. Jonathan Thomas 2022-10-21 18:11:32 -05:00
  • b890417ada Merge pull request #859 from OpenShot/remove-cache-from-clear Jonathan Thomas 2022-10-15 21:55:58 -05:00
  • ca33d951e6 Removing cache clearing from Timeline::Clear method - unneeded Jonathan Thomas 2022-10-15 21:48:55 -05:00
  • 4439fe980e Merge pull request #858 from OpenShot/stop-caching-when-disabled Jonathan Thomas 2022-10-15 00:18:15 -05:00
  • 28e6e0ba21 Break out of cache loop when caching is temporarily disabled (i.e. when transforming, editing keyframes, rotating, moving, resizing, etc...) Jonathan Thomas 2022-10-15 00:08:49 -05:00
  • 92677907a3 Merge pull request #857 from OpenShot/fixing-audio-regression Jonathan Thomas 2022-10-14 23:33:30 -05:00
  • 0800205e24 Remove regression causing blank audio on many audio files. Replacing the broken logic in a different way, to force a NULL packet to the ProcessAudioPacket() function at the end of stream / EOF. Jonathan Thomas 2022-10-14 23:15:31 -05:00
  • 9954b53b82 Merge pull request #856 from OpenShot/audio-eof-detection Jonathan Thomas 2022-10-13 17:43:11 -05:00
  • b13865c0e4 Detect audio EOF when all packets are decoded - since not all audio streams get a NULL packet at the end of stream Jonathan Thomas 2022-10-13 16:45:33 -05:00
  • d4830487a5 Merge pull request #855 from OpenShot/cache-improvements-round-2 Jonathan Thomas 2022-10-13 11:07:45 -05:00
  • ef7f9bc77a Bumping version to 0.2.8-dev, so 22 since libopenshot now contains breaking changes Jonathan Thomas 2022-10-13 10:39:37 -05:00
  • 4ad94c7727 Fixing more whitespace Jonathan Thomas 2022-10-13 10:25:04 -05:00