OpenShot Video Library (libopenshot) is a free, open-source C++ library dedicated to delivering high quality video editing, animation, and playback solutions to the world


OpenShot Video Library (libopenshot) is a free, open-source C++ library dedicated to delivering high quality video editing, animation, and playback solutions to the world.

Build Status

libopenshot CI Build libopenshot-audio CI Build


  • Cross-Platform (Linux, Mac, and Windows)
  • Multi-Layer Compositing
  • Video and Audio Effects (Chroma Key, Color Adjustment, Grayscale, etc…)
  • Animation Curves (Bézier, Linear, Constant)
  • Time Mapping (Curve-based Slow Down, Speed Up, Reverse)
  • Audio Mixing & Resampling (Curve-based)
  • Audio Plug-ins (VST & AU)
  • Audio Drivers (ASIO, WASAPI, DirectSound, CoreAudio, iPhone Audio, ALSA, JACK, and Android)
  • Telecine and Inverse Telecine (Film to TV, TV to Film)
  • Frame Rate Conversions
  • Multi-Processor Support (Performance)
  • Python and Ruby Bindings (All Features Supported)
  • Qt Video Player Included (Ability to display video on any QWidget)
  • Unit Tests (Stability)
  • All FFmpeg Formats and Codecs Supported (Images, Videos, and Audio files)
  • Full Documentation with Examples (Doxygen Generated)


Detailed instructions for building libopenshot and libopenshot-audio for each OS. These instructions are also available in the /docs/ source folder.

Hardware Acceleration

OpenShot now supports experimental hardware acceleration, both for encoding and decoding videos. When enabled, this can either speed up those operations or slow them down, depending on the power and features supported by your graphics card.

Please see doc/ for more information.


Beautiful HTML documentation can be generated using Doxygen.

make doc

(Also available online:


Are you interested in becoming more involved in the development of OpenShot? Build exciting new features, fix bugs, make friends, and become a hero! Please read the step-by-step instructions for getting source code, configuring dependencies, and building OpenShot.

Report a bug

You can report a new libopenshot issue directly on GitHub:



Copyright (c) 2008-2021 OpenShot Studios, LLC.

OpenShot Library (libopenshot) is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

OpenShot Library (libopenshot) is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with OpenShot Library. If not, see

To release a closed-source product which uses libopenshot (i.e. video editing and playback), commercial licenses are also available: contact [email protected] for more information.

  • QtTextReader and QtHtmlReader

    QtTextReader and QtHtmlReader

    I've been looking in to making some improvements to working with text in in libopenshot. One main feature in particular is to have text of different colours in a sentence. You see it quite a lot on news and social media videos where some of the words are highlited. Unfortunately I couldn't see a way to do this with Magick++.

    The best solution I could come up with was to use Qt's HTML features to do this and created QtHtmlReader - it supports all the HTML features here: Along the way we created a QtTextReader as well.

    An added bonus is that both of these are much faster than ImageMagick, nearly 3 times faster in my tests, even the HTML is faster.

    We've tried to follow the existing libopenshot code as best as possible. If you would like to merge these readers please review and suggest any changes/quaility/improvements. @ferdnyc I have removed the std namespace following your current pull request (#296).

    Special thanks to @jediserg who figured out the Qt stuff and wrote most of the code for this.

    opened by jeffski 63
  • Silence deprecated warnings in ffmpeg 3.x

    Silence deprecated warnings in ffmpeg 3.x

    The deprecated calls are and will be present in ffmpeg 3.x and later version use other calls. Therefore, the warning is useless and obscures only important warnings.

    opened by eisneinechse 55
  • Release of libopenshot 0.2.4 (SO 18)

    Release of libopenshot 0.2.4 (SO 18)

    This PR represents the release branch for libopenshot, version 0.2.4 (SO 18), and will be used during the release testing. Feel free to comment, or send PR's for this release branch.

    Related PR's:

    • libopenshot-audio release:
    • openshot-qt release:
    opened by jonoomph 42
  • Python bindings do not seem to work.

    Python bindings do not seem to work.

    if the doc/ is accurate, doing mingw32-make install should copy the binary files to C:\Program Files\openshot\lib, and the header files to C:\Program Files\openshot\include... This is where other projects will look for the libopenshot files when building.. Python 3 bindings are also installed at this point.

    with that said, doing Python

    import openshot

    gave me an error

    Traceback (most recent call last): File "", line 1, in File "C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python37_64\", line 15, in import _openshotTest ImportError: DLL load failed: The specified module could not be found.

    I'm not entirely sure if this is due to the Python bindings or the numerous tweaks I have done to the files to get it this far.

    Help would be deeply appreciated!

    opened by cminghao 42
  • Making OpenShot easier for newcomer developers

    Making OpenShot easier for newcomer developers

    I've been watching your project, and it is very interesting, but appears to be moving slowly and not having too many outside contributors.

    One of the reasons why is that contributing a new feature to your system (including the UI) requires knowledge in 3 domains: C++, Python, and Angular. Those are each huge. Imagine trying to find a writer that understood Spanish, Japanese, and Hindi. There are many millions of people who speak those languages, but not all three!

    In fact, many people who use Python, don't like Javascript. Many people who use Javasript don't know Python. Many people who want to make videos don't know how to program C++.

    Libopenshot is about 10K lines of code. I think it could be converted to Python / Numpy in a couple of weeks. That is a fast library, and there are other GPU and optimized Python libraries you could leverage. Porting to Python, and taking advantage of hardware would make Openshot faster and easier to contribute to. In my free time, I don't want to bother with C++. I'd be willing to help even though I don't know your codebase too much.

    Once you've got a PyQT interface, putting Angular on top makes it more complicated. I'm sure it adds some features, but it raises the barrier to entry.

    Can you consider this, and what Python libraries you could take advantage of if you restructured your code? Given the fact that you use ffmpeg and other tools to do the heavy lifting, it seems like you don't need to have much C/C++ to be very fast. Check out Mercurial as an example of a fast codebase with very little C/C++.

    I took a look at this file, for example:

    It seems like that could be converted to Python easily and be fast enough.

    opened by KeithCu 37
  • libavformat missing on compilation.. but its there

    libavformat missing on compilation.. but its there

    Note: I am on rpi3... its just for educational porpoise , I wont make any openshot project on it (but yes on rpi4!!) Note 2: This its a masterpiece software. thanks to make it open source.

    It could be than its broken somehow or its not the required version??

    I will compile master ffmpeg...

    [email protected]:~/Desktop/openshot_dependencies/libopenshot/build $ sudo apt install libavformat-dev
    Leyendo lista de paquetes... Hecho
    Creando árbol de dependencias       
    Leyendo la información de estado... Hecho
    libavformat-dev ya está en su versión más reciente (7:4.1.3-1+rpt1).
    El paquete indicado a continuación se instaló de forma automática y ya no es necesario.
    Utilice «sudo apt autoremove» para eliminarlo.
    0 actualizados, 0 nuevos se instalarán, 0 para eliminar y 0 no actualizados.
    [email protected]:~/Desktop/openshot_dependencies/libopenshot/build $ cmake ../
              Welcome to the OpenShot Build System!
    CMake will now check libopenshot's build dependencies and inform
    you of any missing files or other issues.
    For more information, please visit <>.
    Generating build files for OpenShot
      Building libopenshot (version 0.2.3)
      SO/API/ABI Version: 17
    CMake Error at /usr/share/cmake-3.13/Modules/FindPackageHandleStandardArgs.cmake:137 (message):
    Call Stack (most recent call first):
      /usr/share/cmake-3.13/Modules/FindPackageHandleStandardArgs.cmake:378 (_FPHSA_FAILURE_MESSAGE)
      cmake/Modules/FindFFmpeg.cmake:161 (find_package_handle_standard_args)
      src/CMakeLists.txt:83 (FIND_PACKAGE)
    -- Configuring incomplete, errors occurred!
    See also "/home/pi/Desktop/openshot_dependencies/libopenshot/build/CMakeFiles/CMakeOutput.log".
    opened by ghost 32
  • Keyframes and Masks play relative to timeline, not clip

    Keyframes and Masks play relative to timeline, not clip

    I have noticed an issue with how the timing of keyframes are applied and also a similar issue that means it's not possible to use a video as a mask.

    I have found that if you have a clip that starts at position 5 on the timeline, (i.e. it plays from the 5th second on the timeline), if I want to add a keyframe animation to the clip (lets say an alpha change) the first keyframe needs to start at second 5.

    This isn't very intuitive as in my mind the keyframe timing should be relative to the clip not the timeline. So the first keyframe should be at 0 to play from the start of the clip.

    I guess it's not a deal breaker as I can work around it. It would just be nice if keyframes were relative to the clip they are attached to and not the timeline.

    One thing that is not working however is using video (FFMpegReader) in Mask effects. It works fine if the clip the mask is added to starts from 0 on the timeline.

    The problem is the mask video seems to play from the start of the timeline so if the mask plays for 5 seconds but the clip starts at 5 seconds then the mask has already finished playing when the clip starts.

    I think this is maybe related to keyframes playing relative to the timeline, the mask also plays relative to the timeline but there is no way to adjust it, If the mask played relative to the clip rather than the timeline it should work.

    If video masks could be used I think you would be able to create some pretty awesome transitions and effects.

    Just posting this now to see if anyone has had the same experience, I'll add some code examples if it helps.

    opened by jeffski 32
  • Symbol not found: _aligned_alloc on MacOS 10.9.5

    Symbol not found: _aligned_alloc on MacOS 10.9.5

    A user reported this to me on MacOS 10.9.5 running our latest Mac builds. When launching OpenShot, an error during loading, looking for a missing symbol: Symbol not found: _aligned_alloc. It is expecting that symbol in /usr/lib/System.B.dylib.

    We are currently building with GCC 8.4 on MacOS 10.15 (Catalina), and using the MacOS 10.9 SDK while building. Hopefully this can be solved with some compiler flags, or something simple. Our current CMake command used on our Mac builder:

    cmake -DCMAKE_CXX_FLAGS=-I\ /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON -D"CMAKE_INSTALL_PREFIX:PATH=$CI_PROJECT_DIR/build/install-x64" -DCMAKE_CXX_COMPILER=/usr/local/opt/[email protected]/bin/g++-8 -DCMAKE_C_COMPILER=/usr/local/opt/[email protected]/bin/gcc-8 -DCMAKE_PREFIX_PATH=/usr/local/qt5/5.5/clang_64 -DPYTHON_INCLUDE_DIR=/Library/Frameworks/Python.framework/Versions/3.6/include/python3.6m -DPYTHON_LIBRARY=/Library/Frameworks/Python.framework/Versions/3.6/lib/libpython3.6.dylib -DPYTHON_MODULE_PATH=python -DPython_FRAMEWORKS=/Library/Frameworks/Python.framework/ -D"CMAKE_BUILD_TYPE:STRING=Release" -D"CMAKE_OSX_SYSROOT=/Applications/" -D"CMAKE_OSX_DEPLOYMENT_TARGET=10.9" -D"CMAKE_INSTALL_RPATH_USE_LINK_PATH=1" -D"ENABLE_RUBY=0" ../


    opened by jonoomph 26
  • Public interface for Keyframe

    Public interface for Keyframe

    The current public interface of Keyframe includes the public member Points. I'm about to remove this member. This will might break a lot of code (basically every place where Python code - e.g. in OpenShot-qt - uses keyframe["Points"] ... which is currently 88 places in OpenShot-qt nothing in OpenShot-qt as far as I can see now).

    There's AddPoint(), RemovePoint(), GetPoint() among others. These should be used instead of direct access to the Points member to give Keyframe a chance to keep it's internal state in order (e.g. sort order of points, interpolated values, ..).

    All in all the public interface of Keyframe is a bit chaotic. It supports access to the points similar like a container (add, remove, find, ..) but of course also access to interpolated values (it's main job, after all).

    The question is: How should the public interface of Keyframe look on the C++ side, and what should it look like on the Python side?

    edit: The question shifts a bit ... it's still important to get a clean public interface. But for openshot-qt the only really important functions are Keyframe::SetJsonValue(), Keyframe::AddPoint, the "get functions" and Keyframe::Json().

    opened by musteresel 26
  • Juce 5 changes

    Juce 5 changes

    Adjustments to build libopenshot against a libopenshot-audio built with the new Juce 5.4.3 changes from my companion PR OpenShot/libopenshot-audio#37.

    • All header files (7) which contained #include "JuceLibraryCode/JuceHeader.h" were changed to simply #include "JuceHeader.h", which works in concert with the new include dir layout for libopenshot-audio.
    • Savaged the cmake/Modules/FindOpenShotAudio.cmake discovery code to remove all of the recursive header-file discovery and LIBOPENSHOT_AUDIO_BASE_DIR noise. Now it simply looks for the file JuceHeader.h and considers that location to be the LIBOPENSHOT_AUDIO_INCLUDE_DIR, which it is. So much simpler it's not even funny.

    (Note: DO NOT MERGE until after the corresponding changes to libopenshot-audio are committed. See OpenShot/libopenshot-audio#37 .)

    opened by ferdnyc 26
  • OpenCV: Adapt to API changes in OpenCV 4.5.2+

    OpenCV: Adapt to API changes in OpenCV 4.5.2+

    Seems that OpenCV 4.5.1 has massively altered the cv::Tracker API, with the one our code uses being moved to cv::legacy::Tracker, and a new implementation taking its place in cv::Tracker.

    Why this trigger was pulled with only a revision bump from 4.5.0 to 4.5.1, I cannot for the life of me understand, but cv::TrackerBoosted and friends are present in 4.5.0, but suddenly gone in 4.5.1. I encountered this when trying to build on Windows 10, now that MSYS2 is packaging OpenCV 4.5.1.

    A function cv::legacy::upgradeTrackingAPI() is provided which can seemingly be used to wrap old code. But, since that function is only present in 4.5.1+, it doesn't help us with simultaneous support of OpenCV versions before and after 4.5.1.

    Supporting OpenCV 4.5.1, specifically, turned out to be impossible as the released code is horribly broken for the "legacy" tracking API. There are headers missing from the install that make it unusable. Fortunately, 4.5.2 is since released that corrects this.

    So, this PR blocks use of OpenCV verson 4.5.1 with a warning about the problem, and adds an OpenCVUtilities.h header which normalizes our code to be compatible with both the previous 4.5.0-and-earlier API, as well as the new-legacy 4.5.2+, in the manner of our other *Utilities.h headers.

    The CMake build will define USE_LEGACY_TRACKER on the build command line if the OpenCV version is greater than 4.5.1, and if that macro is defined:

    • OPENCV_TRACKER_TYPE is defined to be cv::legacy::Tracker
    • OPENCV_TRACKER_NS is defined as cv::legacy

    Otherwise, they are cv::Tracker and cv, respectively.

    The rest of the code uses cv::Ptr<OPENCV_TRACKER_TYPE> as the pointer type for tracker, and OPENCV_TRACKER_NS::TrackerImplementation::create() to instantiate trackers.

    Other included changes

    1. I moved the ClipProcessingJobs class into the openshot namespace, because for some reason it wasn't.
    2. I moved some includes around between .h and .cpp files, to avoid over-including headers, and dropped some unnecessary includes
    3. I dropped the using namespace std; from CVTracker.cpp, adding std:: prefixes where needed.
    opened by ferdnyc 24
  • Bump actions/cache from 3.0.1 to 3.2.2

    Bump actions/cache from 3.0.1 to 3.2.2

    Bumps actions/cache from 3.0.1 to 3.2.2.

    Release notes

    Sourced from actions/cache's releases.


    What's Changed

    New Contributors

    Full Changelog:


    What's Changed

    Full Changelog:


    What's Changed

    New Contributors

    ... (truncated)


    Sourced from actions/cache's changelog.


    • Added support for caching from GHES 3.5.
    • Fixed download issue for files > 2GB during restore.


    • Added support for dynamic cache size cap on GHES.


    • Fixed avoiding empty cache save when no files are available for caching. (issue)


    • Fixed tar creation error while trying to create tar with path as ~/ home folder on ubuntu-latest. (issue)


    • Removed error handling by consuming actions/cache 3.0 toolkit, Now cache server error handling will be done by toolkit. (PR)


    • Fixed #809 - zstd -d: no such file or directory error
    • Fixed #833 - cache doesn't work with github workspace directory


    • Fixed #810 - download stuck issue. A new timeout is introduced in the download process to abort the download if it gets stuck and doesn't finish within an hour.


    • Fix zstd not working for windows on gnu tar in issues #888 and #891.
    • Allowing users to provide a custom timeout as input for aborting download of a cache segment using an environment variable SEGMENT_DOWNLOAD_TIMEOUT_MINS. Default is 60 minutes.


    • Enhanced the warning message for cache unavailablity in case of GHES.


    • Fix a bug with sorting inputs.
    • Update definition for restore-keys in


    • Update toolkit version to 3.0.5 to include @actions/core@^1.10.0
    • Update @actions/cache to use updated saveState and setOutput functions from @actions/core@^1.10.0


    • Update @actions/cache on windows to use gnu tar and zstd by default and fallback to bsdtar and zstd if gnu tar is not available. (issue)


    • Added support for fallback to gzip to restore old caches on windows.


    • Bug fixes for bsdtar fallback if gnutar not available and gzip fallback if cache saved using old cache action on windows.


    • Added two new actions - restore and save for granular control on cache.

    ... (truncated)

    • 4723a57 Revert compression changes related to windows but keep version logging (#1049)
    • d1507cc Merge pull request #1042 from me-and/correct-readme-re-windows
    • 3337563 Merge branch 'main' into correct-readme-re-windows
    • 60c7666 save/ Fix typo in example (#1040)
    • b053f2b Fix formatting error in restore/ (#1044)
    • 501277c remove outdated Windows cache tip link
    • c1a5de8 Upgrade codeql to v2 (#1023)
    • 9b0be58 Release compression related changes for windows (#1039)
    • c17f4bf GA for granular cache (#1035)
    • ac25611 docs: fix an invalid link in (#929)
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.

    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    opened by dependabot[bot] 1
  • NVENC: Error while writing raw video frame

    NVENC: Error while writing raw video frame

    The issue occurs when using the NVENC options when exporting the video (in openshot-qt). Everything reads and writes fine until frame 33 where FFmpeg unexpectedly returns -22 (Invalid argument) The export works fine on every other option (with CPU or VAAPI) This probably has to do with av_packet_rescale_ts on line 2270 of FFmpegWriter.cpp, it might be wrong (although I can't easily use a C++ debugger on a Python script that is openshot-qt)

    OS: Gentoo Linux x86_64 RAM: 16GB CPU: Intel i7-8750H (12) @ 4.100GHz GPU: Intel CoffeeLake-H GT2 [UHD Graphics 630] GPU: NVIDIA GeForce GTX 1050 Ti Mobile libopenshot: 0.3.0 (built from upstream using a custom package manager overlay) nVidia drivers: 525.60.13 FFmpeg: 4.4.3

    Here's a log file for reference: libopenshot.log This issue is probably equivalent to the one on

    opened by tildeman 0
  • Segfault related to protobuf

    Segfault related to protobuf


    Distributor ID:	Ubuntu
    Description:	Ubuntu 22.04.1 LTS
    Release:	22.04
    Codename:	jammy

    A built-from-source v0.3.0 libopenshot, and subsequent src/ yields:

    Program received signal SIGSEGV, Segmentation fault.
    #0  google::protobuf::io::CodedInputStream::ReadTagWithCutoffNoLastTag(unsigne
        at ./google/protobuf/io/coded_stream.h:1027
    #1  google::protobuf::FileDescriptorProto::MergePartialFromCodedStream(google:4b0ca0)
        at google/protobuf/
    #2  0x00007fffeb33ade9 in bool google::protobuf::internal::MergeFromImpl<false) 
    #3  0x00007fffeb3aa666 in google::protobuf::EncodedDescriptorDatabase::Add(voi
    #4  0x00007fffeb378574 in google::protobuf::DescriptorPool::InternalAddGenerat
    #5  0x00007fffeb3ed417 in google::protobuf::internal::AddDescriptors(google::pr
        at /lib/x86_64-linux-gnu/
    #19 0x00007ffff7cb6748 in dlopen_implementation
    #24 0x000055555569b3b0 in _PyEval_EvalFrameDefault ()

    To get around this, I turned off ENABLE_OPENCV in CMakeLists.txt, and all is good!

    opened by dickmao 0
  • How is libopenshot LGPL when it uses JUCE which has proprietary license?

    How is libopenshot LGPL when it uses JUCE which has proprietary license?

    Hi, libopenshot looks amazing. I can't figure out the licensing though.

    libopenshot says it's LGPL - libopenshot-audio says it's GPL - and based on JUCE which has a VERY proprietary license:

    But then this page says libopenshot uses libopenshot-audio as a library:

    Not saying your wrong, I'm just confused and need to understand before I use it.

    Is libopenshot-audio optional? Is JUCE for audio plugins? Why not use the ffmpeg codecs? Why not have a in the repo?

    Thank you!

    opened by MichaelJCole 0
  • What form of Gamma Adjustment PR would you prefer?

    What form of Gamma Adjustment PR would you prefer?

    Adding gamma adjustment is my priority. I can easily substitute the code for brightness in the existing plugin. What would be the preferred form of adding the feature? An additional parameter in the existing brightness/contrast 'plugin', or a seperate plugin?

    opened by clort81 0
  • v0.3.0(Dec 8, 2022)

    Highlights & Features:

    • Part of the OpenShot Video Editor v3.0.0 Release
    • Bumping version to 0.3.0, SO 23 (minimum libopenshot-audio dependency to 0.3.0)
    • Huge PTS-related improvements (smoother playback, better at finding missing frames, better video compatibility)
    • Reduce # of threads during video decoding (fixed huge regression)
    • Better handling of invalid durations (return last image with no audio)
    • Better handling around EOF detection (return all frames)
    • Improved Support for AV1 videos
    • Fixed wipe / mask effect (fixed contrast algorithm)
    • Improved ability to extract audio waveforms (improved data and algorithm)
    • Added support for many new image formats with FFmpegReader
    • Better thread safety around AddClip() & AddEffect() and related operations
    • Many new unit tests to verify thread safety (helped to identify crashes)
    • Improved performance and caching for GetMaxTime()
    • Improved clean-up of allocated readers (FFmpegReader and FrameMapper)
    • Huge caching optimizations (for improved real-time playback)
    • Fix to multi-line captions (captions effect)
    • Improvements to caption effect (background only behind text, text centering)
    • Better detection for video length and duration
    • Improved snapping precision for clips and transitions
    • Improved QImage copying and buffer clean-up
    • Fix invalid frame mapping calculation (causing some frames to be skipped)
    • Switch to Catch2 unit tests (from cppunittest)
    • Added ability to pause video cache (extremely useful in UI when making rapid changes)
    • Improvements in real-time video & audio playback (sample rate & audio device detection, correct timing)
    • Adding pre-roll to VideoCacheThread (for smoother playback)
    • Huge memory leak fixed, related to decoding video
    • Improved resvg support & performance
    • Added support for BABL color library (improved chroma key effect - many new keying methods)
    • Added support for anamorphic profiles
    • Many new unit tests

    libopenshot Changelog (Version: 0.3.0, SO: 23)

    • 264205da 2022-12-01 Jonathan Thomas Bumping version to 0.3.0, SO 23, and minimum libopenshot-audio dependency to 0.3.0. HEAD, origin/release-20221201
    • 5493ea9a 2022-11-30 Jonathan Thomas Merge pull request #878 from OpenShot/new-linux-appimage origin/develop
    • 5e5e052b 2022-11-28 Jonathan Thomas Experimental AppImage glibc wrapping for backwards compatibility (older distros)
    • 49d02bad 2022-11-28 Jonathan Thomas Prevent divide by zero in Fraction
    • 6acee2ae 2022-11-27 Jonathan Thomas Updating linux runner to focal
    • 6f800117 2022-11-27 Jonathan Thomas Merge pull request #876 from OpenShot/fix-double-avcodec-open
    • 520446c5 2022-11-26 Jonathan Thomas Fix whitespace
    • d8ff69c6 2022-11-26 Jonathan Thomas 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().
    • bcd54c02 2022-11-23 Jonathan Thomas Merge pull request #875 from OpenShot/seek-past-end-of-stream
    • 5a380485 2022-11-23 Jonathan Thomas Fixing whitespace
    • 1bd1fdcb 2022-11-23 Jonathan Thomas Silence audio data if repeating last frame in FFmpegReader (to prevent audio glitch for files with invalid durations)
    • 2defcc58 2022-11-23 Jonathan Thomas Remove example changes
    • 70db0694 2022-11-23 Jonathan Thomas 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
    • 5aa9487e 2022-11-18 Jonathan Thomas Merge pull request #874 from OpenShot/transition-wipe-contrast
    • 2b4bcc1e 2022-11-18 Jonathan Thomas Prevent divide by zero error
    • fc7575b6 2022-11-18 Jonathan Thomas Implementing a fix for mask contrast proposed by GitHub user xotmatrix
    • 20e7fba5 2022-11-18 Jonathan Thomas Fixing white space
    • 553dcc64 2022-11-18 Jonathan Thomas Fixing regression with mask effect caused by contrast being adjusted after we modulate the brightness (sort error)
    • 7617e916 2022-11-16 Jonathan Thomas Merge pull request #872 from OpenShot/failing-video-decode
    • 4039851a 2022-11-16 Jonathan Thomas Adding Invalid Codec exception to AV1 unittest
    • fdcf9b91 2022-11-16 Jonathan Thomas Renaming variable in FFmpegReader to make more sense
    • 2c24d0ff 2022-11-16 Jonathan Thomas Updating unit tests to ignore older versions of FFmpeg that do not support AV1 decoding.
    • 58dc99d1 2022-11-15 Jonathan Thomas Fixing whitespacae
    • cbff18ad 2022-11-15 Jonathan Thomas Update AV1 unit testing to verify pixel values, to ensure correct decoding
    • e9aa87c3 2022-11-15 Jonathan Thomas Experimental refactor around sending/receiving packets with the decoder in FFmpegReader.
    • ab8cae83 2022-11-14 Jonathan Thomas Additional FFmpegReader decoding logging for AV1
    • 62558172 2022-11-14 Jonathan Thomas Restoring gitlab-ci yml for normal build servers, updating some Windows libopenshot docs
    • 63ebc4f4 2022-11-14 Jonathan Thomas Adding test for AV1 sync verification on Windows builder
    • 061b185e 2022-11-11 Jonathan Thomas target custom windows builder, for experimental upgrades
    • 107918b7 2022-11-10 Jonathan Thomas Adding more debugging / logging to hardware acceleration
    • b874e915 2022-11-10 Jonathan Thomas Always decode frames in GetAVFrame() method, even if send fails
    • 7a1e7bd0 2022-11-10 Jonathan Thomas Always try and receive an AVFrame even if the sending fails (FFmpegReader) - to support some types of multi-threaded video codecs (AV1)
    • 17eaca65 2022-11-10 Jonathan Thomas Add additional decoding logging inside GetAVFrame method - failing on Windows and trying to debug
    • 854a3aa3 2022-11-03 Jonathan Thomas Merge pull request #869 from OpenShot/audio-waveformer
    • bdb161dc 2022-11-03 Jonathan Thomas AudioWaveformData: Adding protection from divide by zero and readers with no audio, including additional unit tests and a faster zero() function
    • d7ab1c61 2022-11-02 Jonathan Thomas Merge pull request #868 from OpenShot/audio-waveformer
    • 4265d84f 2022-11-01 Jonathan Thomas Some performance optimizations. to reduce # of calls to GetAudioSamples()
    • c838c126 2022-11-01 Jonathan Thomas Improvements to AudioWaveformer to use RMS (Root Mean Square), and return both average RMS and max RMS for graphing, including some new unit tests.
    • 670baa5a 2022-10-31 Jonathan Thomas Merge pull request #867 from OpenShot/avi-pts-fix
    • ea8ffb5b 2022-10-31 Jonathan Thomas Add fallback for AVFrame.pkt_dts, which is only used on certain codecs (AV1)
    • 9cd7dd68 2022-10-31 Jonathan Thomas Wrap vector in Swig mappings, and enable thread-safe access to swig wrappers - so our long running waveformer does not block the Python GIL
    • 23265328 2022-10-30 Jonathan Thomas 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.
    • cd514a1e 2022-10-28 Jonathan Thomas Merge pull request #864 from OpenShot/fix-undo-redo
    • 7a733c0a 2022-10-28 Jonathan Thomas Fixing whitespace
    • da813e08 2022-10-28 Jonathan Thomas Fixing whitespace
    • 9f3fa0af 2022-10-28 Jonathan Thomas Fixing whitespace
    • 1547fb1d 2022-10-28 Jonathan Thomas 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
    • f50e18e3 2022-10-28 Jonathan Thomas A bit of refactoring around Clip Reader deletion - to prevent memory leak and some skipped readers
    • c12e3fe9 2022-10-28 Jonathan Thomas - 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
    • 52de4607 2022-10-26 Jonathan Thomas Adding mutex to Timeline::Close
    • 1186c24d 2022-10-24 Jonathan Thomas Merge pull request #863 from OpenShot/broken-image-formats
    • 9f391f57 2022-10-24 Jonathan Thomas Merge pull request #862 from OpenShot/performance-profile-fixes
    • b70f89ff 2022-10-24 Jonathan Thomas Fixing whitespace
    • 2bc1c28b 2022-10-24 Jonathan Thomas Fixing whitespace
    • f207e48f 2022-10-24 Jonathan Thomas 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.
    • 6a234fe4 2022-10-24 Jonathan Thomas Always cache starting 1 frame previous to the playhead - to prevent the Seek method from clearing all cache
    • 05b997ac 2022-10-23 Jonathan Thomas Merge pull request #861 from OpenShot/less-sort
    • d46efe8c 2022-10-22 Jonathan Thomas 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)
    • 389bf33a 2022-10-22 Jonathan Thomas - 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
    • 87e14ba6 2022-10-22 Jonathan Thomas Refactor how Clip overrides ClipBase::End()
    • 788a3c77 2022-10-21 Jonathan Thomas Fixing whitespace
    • d8f8cba2 2022-10-21 Jonathan Thomas Do not sort_clips on every call to GetFrame, as this invalidates the internal clips list, and causes crashes in ClearAllCache() and Clear() methods.
    • b890417a 2022-10-15 Jonathan Thomas Merge pull request #859 from OpenShot/remove-cache-from-clear
    • ca33d951 2022-10-15 Jonathan Thomas Removing cache clearing from Timeline::Clear method - unneeded
    • 4439fe98 2022-10-15 Jonathan Thomas Merge pull request #858 from OpenShot/stop-caching-when-disabled
    • 28e6e0ba 2022-10-15 Jonathan Thomas Break out of cache loop when caching is temporarily disabled (i.e. when transforming, editing keyframes, rotating, moving, resizing, etc...)
    • 92677907 2022-10-14 Jonathan Thomas Merge pull request #857 from OpenShot/fixing-audio-regression
    • 0800205e 2022-10-14 Jonathan Thomas 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.
    • 9954b53b 2022-10-13 Jonathan Thomas Merge pull request #856 from OpenShot/audio-eof-detection
    • b13865c0 2022-10-13 Jonathan Thomas Detect audio EOF when all packets are decoded - since not all audio streams get a NULL packet at the end of stream
    • d4830487 2022-10-13 Jonathan Thomas Merge pull request #855 from OpenShot/cache-improvements-round-2
    • ef7f9bc7 2022-10-13 Jonathan Thomas Bumping version to 0.2.8-dev, so 22 since libopenshot now contains breaking changes
    • 4ad94c77 2022-10-13 Jonathan Thomas Fixing more whitespace
    • 92841138 2022-10-13 Jonathan Thomas Fixing more whitespace
    • 032ff776 2022-10-13 Jonathan Thomas Fixing more whitespace
    • 4e12ceb5 2022-10-13 Jonathan Thomas Fixing more whitespace
    • 9eb5d6f9 2022-10-13 Jonathan Thomas Fixing more whitespace
    • 5cdf4278 2022-10-13 Jonathan Thomas Updating default cache settings to 24 (min preroll), 48 (max preroll), 300 (max frames), and 0.7 (percent ahead)
    • 87052b5a 2022-10-13 Jonathan Thomas Fixing whitespace issues
    • 31566a19 2022-10-13 Jonathan Thomas Protection for ClearAllCache method, to prevent messing with closed clips. Added a multi-threaded unit tests for Timeline::GetFrame access - to verify nothing crashes.
    • 8fcdbc9d 2022-10-11 Jonathan Thomas Timeline now checks cache 2nd time, after mutex - incase previous call generated the same frame
    • 5f9c4e06 2022-10-11 Jonathan Thomas Large performance regression fixed by moving mutex further into the Timeline::GetFrame method - only when generating a new frame (allowing cache to actually work freely). Adding mutex back to FFmpegReader::GetFrame. Removing redundant mutex from ReaderBase.h. Adding mutex to all methods that call shrink_to_fit().
    • 245186f2 2022-10-10 Jonathan Thomas Fixing some small memory related issues - uninitialized variable, RESVG initialization only for svg files, Close QtImageReader on destructor, erase allocated_effects and allocated_clips.
    • 32a89cfc 2022-10-06 Jonathan Thomas Add lock to new Clear() method to prevent crashes
    • 934ca786 2022-10-06 Jonathan Thomas Adding new Clear() method to Timeline, to delete all allocated clips, effects, and frame mapeprs (freeing memory). Also, keep track of allocated clips and effects on timeline (when using SetJson to create them), so we can clean them up correctly on Clear() or RemoveClip()/RemoveEffect(). Added new test case for Clear().
    • 8ac1589b 2022-10-04 Jonathan Thomas Optimizing caching thread to exclude frames where no clips exist, and simplify some of the caching loop logic
    • 23da61bf 2022-09-27 Jonathan Thomas Merge pull request #851 from OpenShot/fix-hasvideo-override
    • ec79c92f 2022-09-26 Jonathan Thomas Refactor of packet counting and EOF detection. Instead of tracking overall packets read & decoded, we now track per stream (video and audio), so we can more accurately know when a packet is still pending for one of those streams (i.e. async decoding)
    • 01900819 2022-09-24 Jonathan Thomas Merge pull request #849 from OpenShot/fix-hasvideo-override
    • 5f6998d9 2022-09-24 Jonathan Thomas Fixing whitespace
    • 906a5af9 2022-09-24 Jonathan Thomas Increasing max_attempts to prevent failures on Seeking from far away positions
    • 285b4952 2022-09-24 Jonathan Thomas Fixing behavior of manual override of has_video or has_audio, to remove unused packets, and not get stuck in an endless loop due to 1 or 2 pending packets that are no longer needed after the override.
    • 87da5db8 2022-09-22 JacksonRG Merge pull request #848 from OpenShot/multi-line-captions
    • 239444ac 2022-09-22 Jonathan Thomas Merge pull request #847 from OpenShot/improved-caching
    • c023d29b 2022-09-22 jackson Allow intentional line breaks origin/multi-line-captions
    • 969a2015 2022-09-20 Jonathan Thomas Increasing max video cache frames, moving percentage-ahead caching to a setting, fixing a calculation error on bytes per frame
    • 16dc5408 2022-09-16 Jonathan Thomas Fixing white space issue
    • 95100f2a 2022-09-16 Jonathan Thomas Fixing white space issue
    • 6ecc8b89 2022-09-16 Jonathan Thomas Fixing white space issue
    • 5d644154 2022-09-16 Jonathan Thomas Fixing white space issue
    • 8c7b463e 2022-09-15 Jonathan Thomas Improvements to the ClearAllCache() function, allowing both shallow and deep clearing. Lots of bug fixes in VideoCacheThread, to correctly pre-roll and cache the correct frames, and a new method of disabling/enabling the cache thread.
    • 8a3e2eb2 2022-09-15 Jonathan Thomas Refactor of cache code, and fixed a crash generating Json from an empty cache object.
    • 7c2a205d 2022-09-15 Jonathan Thomas Adding new settings, to control how video caching works, and how many frames to pre-roll and cache
    • 5b6d3ce8 2022-09-15 JacksonRG Merge pull request #846 from OpenShot/correct-timeline-frame-numbers
    • af1117b2 2022-09-14 jackson Subtract the start value from the timeline frame number. origin/correct-timeline-frame-numbers
    • cfca6e77 2022-09-02 Jonathan Thomas Merge pull request #845 from OpenShot/invalid-number-frames
    • 5f692f18 2022-09-02 Jonathan Thomas Protect video_length from being overwritten if CheckFPS overwrites it first
    • 60805bee 2022-09-02 Jonathan Thomas Adding support for detecting video_length (i.e. # of video frames) from the metadata, instead of calculating from duration * fps. This is occasionally different by a small amount, and in my testing, the metadata is more accurate.
    • 61b22218 2022-08-27 Jonathan Thomas Merge pull request #844 from OpenShot/snapping-precision
    • d0a30028 2022-08-27 Jonathan Thomas Fixing transition end frame calculation
    • c23a9b1b 2022-08-24 Jonathan Thomas Merge pull request #843 from OpenShot/improved-caption-background
    • fd1043be 2022-08-23 Jonathan Thomas Fixing many caption related issues: - background color now sticks to the text - background border now scales correctly (at different resolutions) - background padding now scales correctly - stroke size now scales correctly - margins are now defaulted to 15% on left/right - text caption area now centers between available left/right margins - background color can now be faded in and out, animated - new property: line_spacing, a % from 1.0 (100%) to affect how much space are between lines - Use each font's default lineSpacing, instead of a fixed distance between lines. This property can be adjusted with the new line_spacing keyframe.
    • 02bd8966 2022-08-17 Jonathan Thomas Merge pull request #837 from OpenShot/improved-pts-support
    • 0419f2c2 2022-08-17 Jonathan Thomas Fixing some whitespace issues
    • 02c256cd 2022-08-03 Jonathan Thomas Fixed FrameMapper::info::video_length after calling FrameMapper::ChangeMapping(). Added some unit tests to verify.
    • 2f145234 2022-07-27 Jonathan Thomas Fixing more whitespace and wrapping issues. Also removed some audio pts debug code.
    • c5f166a4 2022-07-27 Jonathan Thomas Removing debug log lines and more whitespace issues
    • 7c6e20d5 2022-07-27 Jonathan Thomas Removing test code from CMaketest
    • 694d86a4 2022-07-27 Jonathan Thomas Cleanup of debug logs and other whitespace issues
    • 5ee38518 2022-07-27 Jonathan Thomas Experimental: Adding some fsanitize flags, a new example exe, a mutex on FFmpegReader::Close, and some additional clean-up code on AddImage (when a previous image exists)
    • 01d16fe0 2022-07-26 Jonathan Thomas Experimental: Adding more QImage clean-up logging, to track buffer addresses
    • 2c193463 2022-07-26 Jonathan Thomas Experimental: No QImage cleanup
    • 0164bd28 2022-07-26 Jonathan Thomas Experimental: Change method of copying QImage from previous frames to use qimage.copy method.
    • f2852e8c 2022-07-26 Jonathan Thomas Experimental: additional logging around AddImage() calls
    • 89321d3b 2022-07-26 Jonathan Thomas Experimental: adding debug logging to Frame destructor and QImage cleanup. Also, preventing processing of empty samples
    • 285059ba 2022-07-25 Jonathan Thomas Experimental: adding debug symbols
    • 29734903 2022-07-25 Jonathan Thomas Experimental FFmpegReader::Close changes, adding new drain decoder logic on Close
    • 68f273d9 2022-07-23 Jonathan Thomas Experimental FFmpegReader::Close changes
    • 3883d2d8 2022-07-23 Jonathan Thomas Experimental FFmpegReader::Close changes
    • 70bf0ade 2022-07-22 Jonathan Thomas Refactoring FFmpegReader::Close, trying to prevent a crash on Windows
    • 54971bac 2022-07-22 Jonathan Thomas Removing some logic in FFmpegReader::Close which clears the video and audio stream - which can cause a crash if the decoder is still working on a packet. Reverting this code.
    • 156fed2f 2022-07-22 Jonathan Thomas Adding debugging to FFmpegReader::Close and removing a discard property that is probably unneeded
    • 671e8ce4 2022-07-21 Jonathan Thomas Clean up of whitespace, and removal of unneeded logic on CheckWorkingFrames() method. It is okay to finalize a frame from a stream that has not decoded a packet yet... although it would be unlikely.
    • dd25b783 2022-07-21 Jonathan Thomas Removing failing macos from our GitHub build CI
    • 9202d94e 2022-07-21 Jonathan Thomas Fixing whitespace issues (converting spaces back to tabs... for now)
    • f200c00e 2022-07-21 Jonathan Thomas Fixing Codacy issues
    • f4966b25 2022-07-21 Jonathan Thomas Large refactor of timestamps on FFmpegReader (PTS / presentation time stamps): - Improved PTS offset logic (to offset our streams so that at least one of them starts at position 0.0) - Removed missing frame detection (no needed anymore) - Use timestamps to reason about missing frames - Fixed many async decoding issues (jumbled frames, missing beginning or ending frames) - Much improved support for video/audio files with missing chunks/gaps (i.e. missing timestamps) - Improved CheckWorkingFrames() method, to determine when working frames are ready to be finalized - Improved FPS detection for invalid or missing FPS
    • d093004d 2022-07-21 Jonathan Thomas Fixing timeline tests. Recent FrameMapper bug fixes changed the mapping slightly, for certain tests
    • cba67646 2022-06-25 Jonathan Thomas Fixing invalid frame mapping calculation (when using a linear algorithm to map framerates). We were accidentally adding +1 to the video_length, causing a slight rounding error, causing some random frames to be skipped.
    • d2c7e856 2022-06-25 Jonathan Thomas Fixing invalid "end frame" calculation for clips (we were accidentally adding +1) to the last frame of every clip, causing a repeat of the clip's last frame.
    • d243db8a 2022-06-25 Jonathan Thomas Adding new GetFrames method to CacheBase, to return an ordered vector of Frame objects. Useful when needing to iterate through the current cached frames.
    • 5776efd7 2022-06-22 Jonathan Thomas Merge pull request #834 from OpenShot/fix-object-detector-class-name
    • 7355ac3c 2022-06-21 Jonathan Thomas Fix regression caused by, where we changed the class_name of Object Detector
    • 7c6fcb0c 2022-06-18 Frank Dana Merge pull request #828 from ferdnyc/catch-upgrade
    • 54c96505 2022-06-18 dependabot[bot] Bump actions/cache from 2 to 3.0.1 (#821)
    • 6c5ffe1c 2022-06-18 FeRD (Frank Dana) HACK: 'using namespace Catch' in v3 header
    • 190bd915 2022-06-17 FeRD (Frank Dana) Catch2v3: Use catch_all header
    • 677ed5f5 2022-06-17 FeRD (Frank Dana) Tests: Switch test files to openshot_catch.h
    • 159d4fc6 2022-06-17 FeRD (Frank Dana) tests/CMakeLists: Handle Catch2 v2 vs. v3
    • 6db5f141 2022-06-17 FeRD (Frank Dana) Update catch_main.cpp (only for Catch2v2)
    • 5ae71124 2022-06-17 FeRD (Frank Dana) Catch2: Header templates for tests
    • 957d4f6a 2022-06-17 Frank Dana Fix class_name for Tracker and ObjectDetection (#827)
    • 664c5db8 2022-05-13 Jonathan Thomas Merge pull request #825 from OpenShot/fix-boosting-tracker
    • eced6054 2022-05-13 Jonathan Thomas Update CVTracker unit test, since we've rounded bounding coordinates, we need to update the expected value in our unit test. Seems close enough to be a rounding error onw.
    • 8ffcc36c 2022-05-12 Jonathan Thomas Ensure CVTracker bbox uses INT values for it's Rect2d bounding box, and not float. The floats are killing the BOOSTING detector.
    • 50a9a648 2022-05-02 JacksonRG Merge pull request #819 from OpenShot/time-keyframes-mk2
    • 7ebe9a9b 2022-03-29 jackson Adding comment for clarity.
    • 5ac659a1 2022-03-29 jackson Correct the frame number after mapping frame
    • 7b6df209 2022-03-26 jackson Apply keyframes based on the frame of the clip, rather than frame of the file.
    • a956c1a9 2022-04-27 dependabot[bot] Bump codecov/codecov-action from 2.1.0 to 3.1.0 (#823)
    • d909eccd 2022-04-03 Frank Dana python/openshot.i: Convert to 4-space indents (#820)
    • 04db6ce8 2022-03-21 JacksonRG Merge pull request #817 from OpenShot/revert-815-fix-time-keyframes
    • 0bf99160 2022-03-21 JacksonRG Revert "Only map key numbers to time once"
    • a5054432 2022-03-21 JacksonRG Merge pull request #815 from OpenShot/fix-time-keyframes
    • 08b49756 2022-03-16 Frank Dana Replace av_init_packet in FFmpeg 3.2+ (#784)
    • aee76211 2022-03-16 Frank Dana Merge pull request #809 from ferdnyc/drop-ffmpegw-fmt
    • 132c2df2 2022-03-16 jackson Only map key numbers to time once
    • 9adb94c3 2022-03-13 Frank Dana Add CODEOWNERS file (#806)
    • 98d24756 2022-03-13 dependabot[bot] Bump actions/checkout from 2 to 3 (#813)
    • 6c546408 2022-03-13 Frank Dana src/FFmpegWriter.cpp: Fix indents
    • f29ce408 2022-03-03 Jonathan Thomas Merge pull request #812 from OpenShot/clip-silence-past-reader-length
    • a8e9c95f 2022-03-02 Jonathan Thomas Silence openshot::Frame audio when requesting a Clip::GetFrame() past the end of the Clip's Reader. For example, if a Clip has 1000 frames, and the user requests frame 1001, we will return the last cached openshot::Frame object, but we don't want to repeat the audio samples (causing a stutter). Any frame past the end of the reader, should always silence the audio samples. Also, fixed a few invalid comments, and added a Unit test.
    • 5148f402 2022-03-01 Jonathan Thomas Merge pull request #811 from OpenShot/make-cache-less-aggressive
    • 8864bea8 2022-03-01 Jonathan Thomas Renaming variable for clarity
    • c71a1af6 2022-02-28 Jonathan Thomas Allow cache on initial pause, to use the Timeline cache size to initially cache a bunch more frames... and then fully pause. This allows for a balance between not-caching during pause (for Transform and Scrubbing performance), but still caching frames on pause so the user can wait for a smoother playback experience.
    • d8cb71c5 2022-02-25 Jonathan Thomas Merge pull request #810 from OpenShot/make-cache-less-aggressive
    • 64815d6b 2022-02-24 Jonathan Thomas Removing adaptive caching support, and make things generally less aggressive. Do not cache when paused (to allow for transform tool and timeline scrubbing to only render the current frame needed, for speed). This results in very smooth transform tool editing, very smooth timeline scrubbing, and I'm still seeing very smooth video playback when not paused. Needs more testing though.
    • 2a93c0c3 2022-02-24 FeRD (Frank Dana) FFmpegWriter: Don't use AVPicture (gone in 5.0)
    • eac566f8 2022-02-24 FeRD (Frank Dana) FFmpegWriter: Don't force deprecated stream member
    • 93debab7 2022-02-24 FeRD (Frank Dana) FFmpegWriter: Macro & member cleanup
    • f2b89e32 2022-02-13 Jonathan Thomas Merge pull request #796 from OpenShot/caching-timing-improvements
    • fdb5e527 2022-02-13 Jonathan Thomas Remove debugging code
    • 34a6af2a 2022-02-13 Jonathan Thomas Removing file
    • fbd0ecfc 2022-02-13 Jonathan Thomas Merge branch 'develop' into caching-timing-improvements
    • d24e3940 2022-02-12 Jonathan Thomas Prevent crashes: - Tweaking GetSmallestFrame to not use an additional mutex. - Replace 2 mutex on Timeline::GetFrame with 1 mutex. - Remove mutex from Timeline::ClearAllCache. - Slow down loop on video cache thread. - Protect audioThread::Seek() if missing a source. - Rearrange StopPlayback to always stop the videoCache thread first.
    • 97ed0f92 2022-02-11 Jonathan Thomas Improved scrubbing to not wait on pre-roll
    • fd3865a8 2022-02-11 Jonathan Thomas Detecting default sample rate of default audio device (Windows seems to play audio out of sync on certain audio drivers, if there is a mismatch between OpenShot and the default system audio sample rate). This info will help debug issues. Adding back in a mutex on Timeline::GetFrame causing crashes.
    • ec64635a 2022-02-10 Jonathan Thomas Don't use any input channels when initializing audio device
    • 2e9afdb1 2022-02-10 Jonathan Thomas DEBUG output of default output sample rate
    • 35d4629d 2022-02-09 Jonathan Thomas Large refactor to caching and playback timing: - Support different speeds (-1X, 2X, 4X, etc...) - Clamp getFrame between 1 and timeline length - Support rewind using new timing code - Caching in both directions (based on previous speed) - Removing mutex from Timeline::GetFrame (cached path) - Caching supports actual speed now - Bust cache and trigger pre-roll if we encounter too many uncached frames. This will re-sync the video + audio threads. - Sleep less in cache loop / Adjusting min frames to 24 (trial and error). Too few and backwards playback suffers. Too many and all playback waits.
    • 0035fc64 2022-02-02 Jonathan Thomas Removing audio seek from PlayerPrivate.cpp pause code, since this causes crashes when terminating openshot-qt.
    • 32347a4c 2022-02-02 Jonathan Thomas Fixing memory issues with FrameMapper, Cache, and Keyframe objects (which use vectors that can hold tons of objects, and were not fully releasing the memory on the heap until the program terminates)
    • 5fe398bd 2022-02-01 Jonathan Thomas Reducing pre-roll to 12 frames
    • f70ca4b8 2022-02-01 Jonathan Thomas Break out of cache loop if playback speed changes during caching. Move getFrame() below pause code, to prevent accidental incrementing video_position.
    • 87a6aa9b 2022-01-31 Jonathan Thomas Improved pausing code on video playback, to allow for scrubbing during paused state.
    • ff455f07 2022-01-31 Jonathan Thomas Moving from high resolution timer to system_clock, trying to avoid a Mac build error
    • 176f2fff 2022-01-31 Jonathan Thomas Big refactor of AudioReaderSource, to be simpler, and only fill the audio samples requested (removed double/internal buffer complexity). Also, we now initialize the audio device manager at a specific sampleRate and # of channels correctly. Removed 'latency' adjustment in PrivatePlayer (no longer needed with no read-ahead buffer). Increased the min_frames_required on the video cache to 24.
    • 133bae40 2022-01-26 Jonathan Thomas Adding pre-roll to VideoCacheThread, and making video & audio threads wait for the isReady() method before playing. Also fixed an audio bug where our internal buffer was not being cleared on seek. Removed some unused caching from Clip, and did some minor refactor on FrameMapper/Clip cache clearing.
    • f1c2cc06 2022-01-26 Jonathan Thomas Adding ability to open *.osp files in QtPlayer app.
    • a86097a3 2022-01-25 Frank Dana Make coverage work on macOS, enable in CI (#804)
    • 49d6ba3b 2022-01-18 Frank Dana Merge pull request #793 from ferdnyc/reformat-log-calls
    • 8633b3ab 2022-01-18 Frank Dana Win CI: Prune Qt5 package set (#800)
    • c55b644f 2022-01-18 Jonathan Thomas Refactoring video playback timing to use absolute timestamps and predicted frame times, instead of relative sleep. Adjusting audio buffer smaller (less latency).
    • 03262ab9 2022-01-18 Frank Dana CI: Use windows-2022, clean-slate MSYS2 image (#799)
    • 4d3aab82 2022-01-17 Jonathan Thomas Merge remote-tracking branch 'origin/caching-timing-improvements' into caching-timing-improvements
    • 84eb0081 2022-01-17 Jonathan Thomas Using more aggressive adjustment increment, and adding DEBUG output
    • a42f82b7 2022-01-15 jackson add logging file
    • a5f35fb4 2022-01-14 Jonathan Thomas Refactoring the VideoCacheThread to check every frame before requesting it. Adding a new method: Contains() to our cache objects, to facilitate this. Removing cache clearning experimental code from Timeline (causing playback issues). Refactoring PrivatePlayer playback timing code, to calculate an average # of frame difference between audio and video threads, and slowly adjust back towards zero when needed.
    • 8344e5c7 2022-01-12 FeRD (Frank Dana) FrameMapper: Reformat logging calls
    • 549149d6 2022-01-12 FeRD (Frank Dana) src/Qt/*: Reformat logging calls, fix indents
    • 806052f9 2022-01-12 FeRD (Frank Dana) Clip, Timeline: Reformat logging calls
    • 3b1d4102 2022-01-12 FeRD (Frank Dana) FFmpegWriter: Format ZmqLogger calls, move headers
    • 951215e5 2022-01-03 jackson Simplify math, add max sleep time.
    • f6942b28 2021-12-30 jackson Re-included debug statement
    • a180209f 2021-12-30 jackson Better comment, tune the timing
    • 28fb2784 2021-12-29 jackson skip frames when over a frame_duration behind
    • 8a9c00d3 2021-12-27 jackson - Searched for word 'millisecond' replaced with 'microsecond' - Simplify timing correction with the cube of the difference between audio and video times. - If the correction is longer than it took to generate a frame. skip frames until under a frame behind.
    • 3c8dc71b 2021-12-07 Jonathan Thomas Merge pull request #719 from OpenShot/audio-devices
    • 91c47eb9 2021-12-07 Jonathan Thomas Removing debug output, and adding some improved handling of audio/video sync conditions
    • 089b30f7 2021-12-06 Jonathan Thomas Switch from milli seconds to micro seconds, for added precision. For example, instead of sleeping for 0.041666667 seconds... due to milliseconds, we were only sleeping 0.41. This would de-sync the audio and video pretty quickly, over a few seconds, causing stuttering
    • f3e7208d 2021-12-06 Jonathan Thomas Adding some additional logging
    • 09bcf2ab 2021-12-03 Jonathan Thomas Fix sleep time calculation to change when the project profile is changed (big bug), and add some additional logging/debugging statements
    • 4a529417 2021-12-03 Jonathan Thomas Experimental logging to detect delay on Windows playback
    • ac376292 2021-12-02 Jonathan Thomas Updating licensing for reuse compliance
    • 9eda7578 2021-12-02 Jonathan Thomas Merge branch 'develop' into audio-devices
    • 7b19fa21 2021-12-02 Jonathan Thomas Merge pull request #782 from dankamongmen/dankamongmen/constify
    • 99034feb 2021-11-21 nick black constify some AVCodecIDs, necessary for new ffmpeg
    • 18bdad43 2021-11-18 Jonathan Thomas Merge pull request #781 from OpenShot/missing-memory-include
    • 520c8c5b 2021-11-18 Jonathan Thomas Resolve a build failure for missing include. This is needed for shared_ptr to build on certain compilers.
    • e7ed3b37 2021-11-15 Frank Dana CacheBase: Add missing include (#780)
    • c9669180 2021-11-11 Jonathan Thomas Merge pull request #778 from ferdnyc/new-docs
    • dec6b044 2021-11-11 Jonathan Thomas Merge pull request #771 from ferdnyc/move-magick-code
    • 0c1e9d07 2021-11-11 Frank Dana tests/Fraction: Approx() floating-point for 32bit (#777)
    • c9ad762f 2021-11-11 FeRD (Frank Dana) Switch to C++14 [[deprecated]] annotation
    • e11b9434 2021-11-11 FeRD (Frank Dana) Docs: Fix doc ambiguities when matching functions
    • 9aa9e70b 2021-11-11 FeRD (Frank Dana) Unexclude headers
    • 11bfccc5 2021-11-11 FeRD (Frank Dana) Audio effects: Clean up doc comments, parameters
    • ce895cc8 2021-11-11 FeRD (Frank Dana) Docs: Fix image paths, more PREDEFINED
    • 1686842e 2021-11-11 FeRD (Frank Dana) Docs: Switch to doxygen_add_docs()
    • e4769eba 2021-11-10 Jonathan Thomas Merge pull request #776 from OpenShot/revert-613-new-docs
    • e085397c 2021-11-10 Jonathan Thomas Revert "Docs: Switch from UseDoxygen to doxygen_add_docs"
    • 8a87784f 2021-11-10 Jonathan Thomas Merge pull request #775 from OpenShot/revert-673-develop
    • e598d82e 2021-11-10 Jonathan Thomas Revert "fix cmake instructions using '-d' argument in MacOs"
    • 5ed6929a 2021-11-10 FeRD (Frank Dana) ImageWriter: Fix includes
    • f8a73791 2021-11-10 Frank Dana Merge branch 'develop' into move-magick-code
    • 5adf45ab 2021-11-10 Jonathan Thomas Merge pull request #768 from ferdnyc/fraction-operators
    • 6b2ca8aa 2021-11-10 Jonathan Thomas Merge pull request #746 from jeffski/decide-content
    • dab4568f 2021-11-10 Jonathan Thomas Merge pull request #730 from ferdnyc/chromakey-unit
    • 9c4a98a1 2021-11-10 Jonathan Thomas Merge pull request #704 from ferdnyc/py_message
    • 9c117296 2021-11-10 Jonathan Thomas Merge pull request #673 from wasimafser/develop
    • ed70b572 2021-11-10 Jonathan Thomas Merge pull request #613 from ferdnyc/new-docs
    • e1f75637 2021-11-10 Jonathan Thomas Merge pull request #774 from ferdnyc/pre-juce612
    • 59108504 2021-10-27 FeRD (Frank Dana) Code changes for compatibility with JUCE 6.x
    • ef535c85 2021-11-09 FeRD (Frank Dana) ChromaKey: Replace juce math with cmath std:: fxns
    • a6f3547a 2021-10-27 FeRD (Frank Dana) Enums.h: Unindent
    • 42344a5d 2021-11-08 Jonathan Thomas Merge pull request #773 from OpenShot/max-sleept-time
    • eae3fb13 2021-11-04 Jonathan Thomas Adding in a limit on video playback sleep, so we don't get a huge, runaway wait time. Also adding in a kill time when shutdown threads (so we don't wait indefinitely for them to stop)
    • aee3a44b 2021-11-03 Frank Dana CI: Avoid always recompiling Resvg (#772)
    • 5662f153 2021-11-03 FeRD (Frank Dana) tests/QtImageReader: Fix indents
    • cff21093 2021-11-03 FeRD (Frank Dana) tests/ImageWriter: Increase coverage
    • 83133a80 2021-11-02 FeRD (Frank Dana) tests/ChromaKey: Add license indentifiers
    • be20f9b3 2021-11-02 Frank Dana Merge branch 'develop' into chromakey-unit
    • 1c5e9dbe 2021-11-02 FeRD (Frank Dana) TimelineBase: Add virtual defaulted destructor
    • 5da5adc3 2021-11-02 FeRD (Frank Dana) Move ImageMagick code out of Frame class
    • f7cebb7f 2021-11-02 Frank Dana Merge pull request #767 from troyrollo/imagemagick-cassert-error-workaround
    • fe58e802 2021-11-01 FeRD (Frank Dana) Move some headers around
    • 233d5550 2021-10-31 Troy Rollo Avoid a bug in ImageMagick or cassert headers
    • 974df996 2021-10-31 Frank Dana CI: Fix Resvg branch selection (#770)
    • 2a0076ca 2021-10-31 Frank Dana tests/Crop: Add license metadata (#769)
    • eab4b3e4 2021-10-31 FeRD (Frank Dana) Merge branch 'crop-license-tag' into fraction-operators
    • a8ec79f6 2021-10-31 FeRD (Frank Dana) tests/Crop: Add license metadata
    • 397db7ba 2021-10-31 FeRD (Frank Dana) Fraction: Python operators, formatter
    • 1af4d0f8 2021-10-31 FeRD (Frank Dana) Fraction: Unit test / and *
    • 6498e343 2021-10-31 FeRD (Frank Dana) Fraction: Templated / and * operators
    • f81f620c 2021-10-29 Jonathan Thomas Merge pull request #732 from ferdnyc/crop-qpainter
    • bbbb72aa 2021-10-28 Jonathan Thomas Merge pull request #757 from ferdnyc/resvg-in-ci
    • 0add6f89 2021-10-28 Jonathan Thomas Merge pull request #766 from OpenShot/fix-windows-x86-path
    • 54c2a800 2021-10-28 Jonathan Thomas Updating docs for babl INSTALL
    • 88a70804 2021-10-28 Jonathan Thomas Removing env variable as it's not needed
    • 5bb56482 2021-10-28 Jonathan Thomas Setting babl_DIR as Cmake variable
    • ad058b5a 2021-10-28 Jonathan Thomas Setting babl_DIR environment variable
    • 5a33edf8 2021-10-28 Jonathan Thomas Experimental test to add mingw32/lib folder to path for babl support
    • 68934136 2021-10-28 Jonathan Thomas Merge pull request #716 from troyrollo/babl-integration
    • 5f891074 2021-10-27 Jonathan Thomas Merge pull request #712 from ferdnyc/color-qcolor-ctor
    • 1b5739f0 2021-10-27 Jonathan Thomas Merge pull request #763 from ferdnyc/fix-has-video
    • 311d8695 2021-10-27 Frank Dana Include FFmpegUtilities.h earlier (#764)
    • b1d98d8d 2021-08-09 FeRD (Frank Dana) Color: Add Color(QColor) ctor, with unit test
    • 9133389b 2021-10-27 FeRD (Frank Dana) Clip: Fix has_video, add unit test
    • b9833b71 2021-10-24 Frank Dana Merge pull request #687 from ferdnyc/timeline-inheritance
    • f26a574b 2021-10-24 Frank Dana Only duplicate Settings test involving envvar (#762)
    • b1b1045a 2021-10-22 Frank Dana Merge pull request #729 from ferdnyc/move-proto-build
    • 5c8ee393 2021-10-22 FeRD (Frank Dana) Findbabl: Add license headers
    • 49f23196 2021-10-22 Frank Dana Merge branch 'develop' into babl-integration
    • 2d2a062b 2021-10-20 Frank Dana Remove (broken) BlackMagic DeckLink support (#760)
    • 75a56e58 2021-10-16 FeRD (Frank Dana) Clean up some header comments / classes
    • 7ac54f05 2021-09-11 FeRD (Frank Dana) Fold libopenshot_protobuf into libopenshot
    • 33a36d32 2021-02-18 FeRD (Frank Dana) CMake: Indentation fixes
    • d0f48674 2021-02-18 FeRD (Frank Dana) CMake: Deprecate ENABLE_DOCS, fix internal vars
    • ef77a27f 2021-01-03 FeRD (Frank Dana) Remove template
    • 68a6c589 2021-01-03 FeRD (Frank Dana) Docs: Switch from UseDoxygen to doxygen_add_docs
    • dae8ca5e 2021-10-16 Frank Dana CI: Validate repository licensing with Reuse (#758)
    • 59138ea3 2021-10-16 Frank Dana Adopt license management via Reuse project/tool (#711)
    • c3ef319e 2021-09-21 Troy Rollo Fix errors in LCH Chroma keying and Findbabl.cmake
    • 111026d8 2021-10-08 Jonathan Thomas Merge pull request #753 from OpenShot/anomorphic-fix
    • 9c668e4d 2021-10-08 Jonathan Thomas Merge pull request #752 from OpenShot/duration-detection-improvements
    • 4c171cc1 2021-10-08 Jonathan Thomas Merge pull request #751 from OpenShot/prevent-cache-crash
    • c9cbf3f2 2021-10-08 FeRD (Frank Dana) QtImageReader.cpp: Convert tabs to spaces
    • ce8b0823 2021-10-08 Frank Dana Enable Win builds without unit tests (#750)
    • cb9d1b11 2021-10-08 Frank Dana Merge branch 'develop' into babl-integration
    • af15649f 2021-10-08 FeRD (Frank Dana) Add support for Resvg 0.11.0+
    • e3ca106f 2021-10-08 FeRD (Frank Dana) CI: Add cached Resvg build (Linux clang)
    • c02ab708 2021-10-08 FeRD (Frank Dana) FindResvg: Updates for discovery, version-parsing
    • 8e663e72 2021-10-08 Frank Dana Include either Resvg or QtSVG, not both (#756)
    • 15e52852 2021-10-07 Jonathan Thomas Support for anamorphic profiles, i.e. non-square pixels. Fixes include Frame::Display, Frame::Save, and Timeline::SetMaxSize, all which had various issues. Added sample_aspect_ratio to FFmpegWriter, so the exported videos will continue to be anamorphic.
    • 7fa3782b 2021-10-07 Jonathan Thomas Better detection of duration, especially for audio-only files. Improved PTS offset detection (for when start_time is used), mainly things recorded from streams. Better bitrate detection as well.
    • 2e8c74e8 2021-10-07 Jonathan Thomas Prevent crash when smallest frame detected in memory object is NULL
    • d78ac099 2021-10-03 Frank Dana CodeQL fixes, take 2 (#745)
    • ae66933c 2021-10-03 Jeff Shillitto Determine file type based on content, not extension
    • ac956f05 2021-09-29 Frank Dana CI: Add Windows and macOS builds, unit testing (#734)
    • 3d18347e 2021-09-27 Frank Dana Protect values against integer overflow (#743)
    • e2e3a54c 2021-09-27 Frank Dana Don't use right-aligned std::boolalpha (#742)
    • 2b2cf3fd 2021-09-27 Frank Dana Merge branch 'develop' into timeline-inheritance
    • 88d30114 2021-09-27 Frank Dana Unit tests: Use == to compare strings (#741)
    • 90a726a6 2021-09-27 Frank Dana Merge branch 'develop' into crop-qpainter
    • b8b55050 2021-09-26 Frank Dana Merge pull request #661 from ferdnyc/redirect-print-fxns
    • 34f12642 2021-09-23 Frank Dana Merge pull request #688 from ferdnyc/unbreak-timeline-cache
    • d4d200f1 2021-09-23 Frank Dana CMake: Set -DDEBUG for debug builds (#739)
    • 7bed7264 2021-09-22 Jonathan Thomas Merge pull request #738 from OpenShot/fix-caption-with-no-clip
    • c128b6ca 2021-09-22 Jonathan Thomas Protecting a caption effect with no Clip (i.e. effect added directly to timeline)
    • d41c482c 2021-09-22 Frank Dana CI: Fix Clang builds, coverage (#736)
    • 3df83794 2021-09-21 dependabot[bot] Bump codecov/codecov-action from 2.0.3 to 2.1.0 (#733)
    • e45d798c 2021-06-10 FeRD (Frank Dana) Revert final_cache size breakage
    • 69640d10 2021-09-20 FeRD (Frank Dana) Compare QColor values directly
    • 7b9f3980 2021-09-20 troyrollo Merge branch 'OpenShot:develop' into babl-integration
    • 331cc1f3 2021-09-19 Troy Rollo Improve new Chroma Key options.
    • c52b2c1c 2021-09-19 Troy Rollo Use int for temporaries where possible in CIE distance calculations.
    • eff61c84 2021-08-22 Troy Rollo Add support for more Chroma Key methods
    • 42e7049e 2021-09-18 FeRD (Frank Dana) Cleanup includes to reflect actual dependencies
    • ab60286a 2021-09-18 FeRD (Frank Dana) Crop effect: Add unit tests
    • 03d49410 2021-09-18 FeRD (Frank Dana) Crop: Extend ctor with optional x, y args
    • a76925f3 2021-09-16 FeRD (Frank Dana) Rewrite Crop effect using QPainter
    • 62b7370b 2021-09-16 Frank Dana Add explicit QtSvg dependency (#731)
    • ed1c4f4b 2021-09-11 FeRD (Frank Dana) ChromaKey: Minimal unit testing
    • 21597c8a 2021-09-10 Jonathan Thomas Merge pull request #728 from OpenShot/merge-master-sept-10-2021
    • cc41c551 2021-09-10 Jonathan Thomas Bump version for dev
    • c25e3cfd 2021-09-10 Jonathan Thomas Merge branch 'master' into develop
    • 71a66547 2021-09-10 Jonathan Thomas Merge pull request #725 from OpenShot/release-20210904 origin/master
    • 2dbb8d53 2021-09-08 dependabot[bot] Bump codecov/codecov-action from 2.0.2 to 2.0.3 (#722)
    • fea43bdd 2021-09-08 Frank Dana CI: Build audio lib & cache (#727)
    • dda23ab9 2021-09-08 Frank Dana Merge pull request #726 from ferdnyc/cvtracker-tests
    • aee95d3b 2021-09-08 FeRD (Frank Dana) CVTracker: Fix bug in JSON error handling
    • 01d40b22 2021-09-08 FeRD (Frank Dana) CVTracker: Add some error-case unit tests
    • 31bfdf0e 2021-09-06 FeRD (Frank Dana) Fix CVTracker test for OpenCV 4.5.2+
    • 003d44d7 2021-09-06 FeRD (Frank Dana) CVTracker: Clean up spacing
    • 6aab6fd9 2021-08-24 FeRD (Frank Dana) Audio: New device name lookup
    • 76fb7c80 2021-08-24 FeRD (Frank Dana) Rename AudioSampleBuffer to AudioBuffer
    • e5d70a8d 2021-08-11 Frank Dana Merge branch 'develop' into redirect-print-fxns
    • 29b6810c 2021-08-09 FeRD (Frank Dana) Init members in initializer lists
    • 369555b4 2021-08-09 FeRD (Frank Dana) Fix pedantic warnings (unnecessary ;s)
    • b39ff359 2021-07-12 FeRD (Frank Dana) Exceptions: Add py_message() for Python
    • 584e075f 2021-07-02 FeRD (Frank Dana) Point: Rethink stream formatting
    • b3c43166 2021-07-02 FeRD (Frank Dana) Fraction.h: Fix indentation
    • 21519f3b 2021-07-02 FeRD (Frank Dana) Coordinate.h: Fix indentation, docs
    • 6a1579ed 2021-06-11 FeRD (Frank Dana) tests/KeyFrame: Tests for Print__() methods
    • f6013666 2021-06-11 FeRD (Frank Dana) KeyFrame: New PrintPoints() and PrintValues()
    • 032ca616 2020-11-27 FeRD (Frank Dana) Tests: test << for Coordinate, Fraction, Point
    • bf80251a 2020-11-27 FeRD (Frank Dana) Add operator<< for Coordinate, Fraction, Point
    • 70ea2659 2021-05-07 FeRD (Frank Dana) tests/FFmpegWriter: Add DisplayInfo test
    • 52891902 2021-05-07 FeRD (Frank Dana) Code formatting
    • aac42a7a 2021-05-05 FeRD (Frank Dana) tests/FrameMapper: Add PrintMapping() test
    • 9d79b394 2021-04-19 FeRD (Frank Dana) Make remaining print functions testable
    • 2a90aa09 2021-04-19 FeRD (Frank Dana) ReaderBase: Make DisplayInfo testable
    • cd12edac 2021-06-10 FeRD (Frank Dana) tests/Timeline: Test TimelineBase::Clips()
    • 2257aec5 2021-06-10 FeRD (Frank Dana) Timeline/Base: Fix Clips() inheritance
    • f443c991 2021-05-16 Wasim Afser merge suggestions from ferdnyc
    • 4133f675 2021-05-14 Wasim Afser fix cmake instructions using '-d' argument
    Source code(tar.gz)
    Source code(zip)
  • v0.2.7(Sep 6, 2021)

    Highlights & Features:

    • Refactor of Crop effect
    • Adding X and Y offset to Crop effect
    • Defaulting crop effect to 0 border lengths
    • Bump version to 0.2.7 (SO 21)

    libopenshot Changelog (Version: 0.2.7, SO: 21)

    • 5987878 2021-09-04 Jonathan Thomas Merge branch 'release-20210904' of into release-20210904 HEAD, origin/release-20210904
    • 4106f1f 2021-09-04 Jonathan Thomas Bumping version to 0.2.7, SO 21
    • 82498b2 2021-09-04 Jonathan Thomas Bumping version to 0.2.7, SO 20
    • 5a8ffe3 2021-09-03 Jonathan Thomas Merge pull request #724 from OpenShot/improved-crop-effect origin/develop
    • 5f91ddc 2021-09-03 Jonathan Thomas Reversing y_offset direction to match previous OpenShot crop behavior
    • f9e5db6 2021-09-03 Jonathan Thomas Adding an X and Y offset to the current crop effect, to better support previous clip crop parameters (for migrating crop options from OpenShot 2.5.1 to OpenShot 2.6). Also refactoring the crop effect, to actually copy the pixels into a new image buffer.
    • d58febf 2021-08-26 JacksonRG Merge pull request #718 from OpenShot/default-crop-border-of-zero
    • fc05893 2021-08-25 JacksonRG Merge pull request #721 from OpenShot/merge-master-0.2.6
    • 569b591 2021-08-25 Jackson Merge master 0.2.6 into develop
    • 3275251 2021-08-25 JacksonRG Merge pull request #720 from OpenShot/release-20210819 origin/master
    • 928c37b 2021-08-23 Jackson set default crop border to 0
    Source code(tar.gz)
    Source code(zip)
OpenShot Studios, LLC
OpenShot Studios, LLC
Video stabilization is a software-based approach in real-time to eliminating environmental effects (wind, heavy vehicle etc.) and enhance the visual performance that degrade video streaming quality.

Video Stabilization Contents General Info Installation To Do General Info Video stabilization is a software-based approach in real-time to eliminating

null 7 Nov 23, 2022
A project for the latest Steam PC (US) release of Resident Evil 4 that patches the game to use high-quality MP4 video.

A project for the latest Steam PC (US) release of Resident Evil 4 that patches the game to use high-quality MP4 video.

Megan Grass 6 Oct 10, 2022
Dolby AC-4 Audio & ATSC 3.0/HEVC Video Playback

VideoPlayer Qt+ffmpeg+SDL2+Dolby+AC-4+AC4+HEVC+ATSC3.0+4K+video This is a fork of the video player found here:

Stephen Ferrell 6 Dec 23, 2022
Shotcut - a free, open source, cross-platform video editor

cross-platform (Qt), open-source (GPLv3) video editor

MLT Framework 7.3k Dec 29, 2022
Kodi is an award-winning free and open source software media player and entertainment hub for digital media

website • docs • community • add-ons Welcome to Kodi Home Theater Software! Kodi is an award-winning free and open source software media player and en

Team Kodi 15k Jan 2, 2023
Free and open-source media player written in C++

Liquid Media Player Free and open-source media player written in C++. Currently in development. Build Guide Windows Install the MSYS2 Building Platfor

Arrow Interactive 4 Sep 20, 2022
AAAAnimation - An ASCII Art animation program working with FFmpeg and Qt. Some code is written in assembly.

AAAAnimation About This is a term project of the Assembly Language and System Programming course in NCU. It decodes video with FFmpeg and plays ASCII

null 18 May 25, 2022
Olive is a free non-linear video editor for Windows, macOS, and Linux.

Olive is a free non-linear video editor for Windows, macOS, and Linux.

Olive Team 6.7k Dec 31, 2022
Free plugin-based video converter

SEZE II Смотреть на русском SEZE is a plugin-based video converter for Windows/Linux. You can write your video filter in C++ (see section "How to make

Ilya Halilov 32 Jan 3, 2023
SRS is a simple, high efficiency and realtime video server, supports RTMP/WebRTC/HLS/HTTP-FLV/SRT/GB28181.

SRS is a simple, high efficiency and realtime video server, supports RTMP/WebRTC/HLS/HTTP-FLV/SRT/GB28181.

ossrs 20.4k Jan 5, 2023
Vulkan Video Sample Application demonstrating an end-to-end, all-Vulkan, processing of h.264/5 compressed video content.

This project is a Vulkan Video Sample Application demonstrating an end-to-end, all-Vulkan, processing of h.264/5 compressed video content. The application decodes the h.264/5 compressed content using an HW accelerated decoder, the decoded YCbCr frames are processed with Vulkan Graphics and then presented via the Vulkan WSI.

NVIDIA DesignWorks Samples 132 Dec 15, 2022
Minimalist video maker -- simplify your music score video making process!

VisualScores 极简视频制作程序,简化你的乐谱视频制作! 如果需要编译,请解压 lib 文件夹中压缩包。 使用前请参考 manual 文件夹中的用户手册。 请勿修改、移动或删除 resource 文件夹中的任何文件。 VisualScores Minimalist video maker

Chen and Sim 7 Sep 7, 2022
Open h.265 video codec implementation.

libde265 - open h.265 codec implementation libde265 is an open source implementation of the h.265 video codec. It is written from scratch and has a pl

struktur AG 1.4k Dec 30, 2022
Open Source H.264 Codec

OpenH264 OpenH264 is a codec library which supports H.264 encoding and decoding. It is suitable for use in real time applications such as WebRTC. See

Cisco Systems 4.8k Jan 1, 2023
GStreamer open-source multimedia framework

GStreamer open-source multimedia framework

GStreamer GitHub mirrors 1.5k Jan 1, 2023
Even newer Custom Firmware for Xiaomi Cameras based on Hi3518ev200 Chipset. It includes free RTSP, ONVIF and other improvements based on the work by roleoroleo

Why this Yi-Hack-V5 firmware? The answer is simple: missing updates, RTSP and not based on the latest stock firmware (which features improvements and

null 381 Dec 30, 2022
yangwebrtc is a self-developed rtc architecture supporting Webrtc/Srt/Rtmp, including a variety of video and audio codecs and processing, etc.

YangWebrtc Overview yangwebrtc是一个自主研发的支持Webrtc/Srt/Rtmp的rtc架构,包含多种视音频编解码和处理等。 支持视频会议、高清录播直播、直播互动等多种视音频应用。 可用于远程教育、远程医疗、指挥调度、安防监控、影视录播、协同办公、直播互动等多种行业应用

null 331 Dec 27, 2022
Vireo is a lightweight and versatile video processing library written in C++11

Overview Vireo is a lightweight and versatile video processing library that powers our video transcoding service, deep learning recognition systems an

Twitter 875 Jan 2, 2023
Video game library manager with support for wide range of 3rd party libraries and game emulation support, providing one unified interface for your games.

An open source video game library manager and launcher with support for 3rd party libraries like Steam, GOG, Origin, and Uplay. Includes game emulation support, providing one unified interface for your games.

Josef Nemec 4.8k Jan 3, 2023