Open source video editor OpenShot 2.4.0 released with improved stability

Mr Jonathan Thomas, developer of OpenShot video editor has announced release of OpenShot 2.4.0, latest release of free, open source, non-linear, cross platform supported video editor. This stability focused release of OpenShot brings fixes for various issues which used to cause unexpected crash on run time. This make it suitable for more professional video editing.

For the past few months, Jonathan Thomas was working with other developers like Craig and Peter to track the issues in OpenShot. The first step of this activity was to figure out a minimal scenario in which issues are reproducible. Often this was a difficult task, due to unforeseen behavior of various crashes. Sometimes, it requires hours of effort to reproduce a crash. If you are a developer, you can relate this.


The efforts of Jonathan colleges did not go worthless. They were about to figure issues causing unexpected crash of OpenShot on run time. From Jonathan's words,
The crash was a race condition and memory corruption bug, caused by a few different things. We process video and audio data in a thread pool, and sometimes things happen in a very unpredictable order. In a very rare condition, memory was being cleared while it was still being accessed. Also, we switched from an older tr1::shared_ptr to std::shared_ptr, and changed the way we initialize our shared_ptr instances, reducing the amount of memory being requested. Also, there were a few spots that needed to be protected between threads, and required locks. So, in summary, a handful of small changes, and a few months of debugging, and we can no longer crash libopenshot during video processing or video encoding! I'm very excited about solving this one if you can't tell!
Quoting from official release announcement, following are changes in OpenShot 2.4.0 release:
openshot-qt (Video Editor)

  • Improving undo/redo support. Now the last X number of undo/redo actions are stored in the project file. The number can be adjusted in the prefences, under the auto-save tab. This also vastly improves the usefulness of the auto-save system, since it saves your undo/redo history as well.
  • Fixed Image Sequence exporting. Supports PNG, JPG, PPM, BMP and a few others. Also added 'Audio Only' and 'Video Only' export options.
  • Adding new Freeze and Freeze & Zoom presets, to quickly insert freezes into clips. 
  • Removing 'show waveform' from separate audio menu, to increase speed of separating audio. 
  • Protect file menu from invalid file_id.
  • Protect timeline dropEvent from empty item_id.
  • Cloaking timeline body until Angular loads fully (so we don't see the occasional pop-in debug layout).
  • Updating translations and supporters.
  • Bumping version to 2.4.0 (minimum libopenshot version 0.1.8).
libopenshot (Video Library)
  • Prevent crashes related to too many threads (on 24+ thread systems).
  • Migrating tr1 to std, adding C++11 support to build scripts, fixing crash in FFmpegReader (caused by shared_ptr, buffer, and last_video_frame corruption). Much improved stability with this change. Thanks to Craig and Peter for the help!
  • Fixing crash on Ubuntu build server.
  • Fixed a strange bug related to exporting image sequences. The filename property was not being set on the AVFormatContext. Also fixed a bug when exporting to JPEG image sequences related to max_b_frames and certain codecs.
  • Fixing issue with incorrect image size caches, which results in blurry/smudgy scaling on certain things.
  • Fix issue with loading time curves that are never processed (i.e. have no values)
  • Adding additional locks when adding/changing audio data. Reducing FrameMapper to a single frame at a time.
  • Fixing crash on Time keyframes where it would sometimes calculate an invalid frame number.
  • Fixing audio pops when stacking multiple clips with different offsets (pretty big issue for some people, just depending on your source framerates and position/start of clips).
  • Removing nested OMP processing from FrameMapper. Adding lock inside time mapping (to prevent crashes when speeding up/slowing down clips). Adding omp critial lock to Frame GetAudioChannelsCount() and GetAudioSamplesCount() methods.
  • Bumping version to 0.1.8 (SO version 13).

Share this