Deshaker Changelog

What's new in Deshaker 3.1

Jan 10, 2017
  • The process to calculate the smooth motion at the beginning of pass 2 (when it says "Deshaking...") now runs faster in many cases. The detected scenes are now processed individually and in parallel, and Adaptive zoom full is faster even if you just have a single scene.
  • Adaptive zoom full now often manages to zoom in slightly less than before.
  • You can now set a mask color that will make pass 1 ignore the masked area, and make pass 2 fill the area in the same way borders are filled. Read more under the 'Use color mask' setting above.
  • Soft borders are now enabled by default if Previous and future frames to fill in borders is enabled (because it generally looks better).
  • Changed the pixel aspect ratio presets slightly (again). Now, I've settled for the ratios that most people seem to agree on; 59/54 for PAL and 10/11 for NTSC.
  • The ranges of some settings have been extended. Destination width/height: 1 - 1000000, Motion smoothness: -1 - 1000000, Adaptive zoom smoothness: 0.1 - 1000000, Max. correction limits: 0.0001 - 1000.
  • The settings Discard motion of blocks that have match value less than X and Discard motion of blocks that have 2nd best match larger than best minus X now allow decimals.
  • The size of the info text in the output video during pass 1 now increases with the height of the video (once it gets high enough).
  • Other minor changes and fixes.

New in Deshaker 3.0 (Jan 10, 2017)

  • Added better detection of new scenes. Previously, you would get a new scene whenever a frame got skipped due to too few ok blocks. Read more under the 'Detect scenes' setting above. For skipped frames that are not new scenes, Deshaker will interpolate motion values in pass 2.
  • Default percentage for skipping frames was increased from 5% to 8% because Deshaker now handles skipped frames better.
  • Skipped frames will now be marked "skipped" in the logfile, and such lines won't have any values anymore. Missing frames in the logfile will also be treated like they are skipped, but they will not become new scenes as before.
  • Default value for initial search range was decreased from 40% to 30%, because an unnecessarily high value can have a slightly negative impact on the new scene detector, and 40% is way more than you need for most videos.
  • The option to do the matching in pass 1 in grayscale mode was removed because of the new scene detector.
  • Removed the option to discard dark pixels and replaced it with a better way to ignore noise. Read more under the 'Discard motion of blocks that have maximum pixel value difference less than X' setting above.
  • Smoothness for zoom stabilization and adaptive zoom are now controlled separately, so the usual zoom smoothness setting now controls only stabilization of zooming in the clip. As for controlling adaptive zoom smoothness, read more under the 'Adaptive zoom smoothness' setting above.
  • Adaptive zoom now uses a new smoothing algorithm, so it will look slightly different (better?). Its smoothness values are only approximately comparable to before in how smooth it gets.
  • Added a setting for controlling the amount (amplitude) of adaptive zoom, in percent. Read more under the 'Adaptive zoom amount' setting above.
  • Added a new edge compensation option Adaptive zoom full, which is similar to the usual Adaptive zoom, except that this one will remove borders completely (if adaptive zoom amount is 100%). Kind of like Adaptive+fixed, but doesn't add as much zoom in less shaky sections. Read more under the 'Edge compensation' setting above.
  • The original Adaptive zoom option changed name to Adaptive zoom average.
  • Removed the somewhat confusing edge compensation options Adaptive zoom only and Adaptive+fixed only. You can now get the same effect by using another adaptive zoom option and setting the zoom motion smoothness to 0. (When loading old settings files which used these removed options, Deshaker will automatically choose settings that work similarly as before.)
  • All edge compensation options (except None) now checks for rolling shutter distortions too. (Those distortions usually require some extra slight zoom to completely get rid of borders.)
  • Zoom stabilization and adaptive zoom no longer spill over scene changes. Previously, that would happen when edge compensation was used.
  • Made a tiny adjustment to amount of adaptive zoom, to make zoom factor exactly 1 for a still video sequence, to avoid degrading the quality due to resampling in such cases.
  • The very last frame (and any frame that has a skipped frame after it) of a rolling shutter video clip will now be compensated for rolling shutter distortion too, but a little less accurately. Previously, no compensation was made for those single frames.
  • Added two video output modes for pass 1, which make the motion vectors longer, by 2x or 5x. Read more under the 'Video output' setting above.
  • Added buttons in the configuration dialog to open or delete the current log file, and also to open the current log file folder. (Deleting the log file can be useful if you use the Append to file option, but want to get rid of old garbage (prior to running pass 1) that may otherwise influence the stabilization.)
  • Deshaker now uses less memory during pass 1 (which should allow for processing larger images/frames).
  • Deshaker will now try a little harder (but not too hard) to keep tracking the same object(s) if Remember discarded areas to next frame is enabled, even when frames become skipped due to too few ok blocks.
  • Added a somewhat hidden feature to make Deshaker forget the remembered discarded areas for current frame if you click once (or twice) on the Remember discarded areas to next frame checkbox.
  • While the Deep analysis algorithm is pretty good, it does ignore any remembered discarded areas from previous frame, which is usually bad. So now, Deep analysis will only be used whenever we're ignoring remembered areas from previous frame, either because remembering is disabled, or because we get way too few ok blocks.
  • The log file now looks somewhat different (although pass 2 can still read the old format). Each tabbed column is now reserved for a single thing. And a scene detection value and percent ok blocks are now written to the log file, after the comment character "#". And the "new_scene" keyword is now called "n_scene" (to make the log file look nice in notepad :)
  • Improved error handling.
  • Other minor changes and fixes.
  • Added an FAQ to this page.

New in Deshaker 2.7 (Jun 7, 2011)

  • Changed the way the size of the initial block was calculated, to make it more consistent. As a side effect, this meant that for certain settings (such as the default ones) and certain video sizes (such as interlaced 720x576 and interlaced 720x480), pass 1 would run a lot slower than before.

New in Deshaker 2.6 (Jun 7, 2011)

  • Fixed a bug that could cause a crash under some circumstances, such as sometimes when using prefilter cropping in VirtualDub.
  • Ignored areas are no longer completely black.
  • Fixed a bug that didn't let you change the ignored area (easily) when using the option Let area follow motion on progressive video.

New in Deshaker 2.5 (Jun 7, 2011)

  • When using future frames to fill in borders, you no longer need to manually pre-collect frames and delay the audio etc. Everything is now taken care of automatically, mostly by VirtualDub. This doesn't work for very old versions of VirtualDub, though. In fact, I strongly recommend version 1.9.9 or later.
  • You can now turn off detection of rotation and/or zoom during pass 1. Read more under the 'Detect rotation/zoom' setting above.
  • When the setting Remember discarded areas to next frame is enabled, the discarded areas are now remembered for all processed frames, so that when you want to reprocess some frames with other settings during pass 1, Deshaker will know which blocks were discarded in the frame prior to the frame you're starting reprocessing at. This only works as long as the total number of blocks (horizontally and vertically) don't change, which can happen if you, for example, change the block size.
  • The default edge compensation type was changed from Adaptive zoom to the more basic None, since I want you to decide for yourself if and how the borders should be taken care of. Also, the default smoothness values were changed from 400 (1500 for zoom) to 1000.
  • The C++ and MFC libraries are now linked statically. (This means you shouldn't need to install the C++ Redistribution Package any longer.)
  • Other smaller changes and bugfixes. Fixed a bug which caused Deshaker to sometimes ignore large areas during pass 1 for certain (unusual) settings.

New in Deshaker 2.4 (Jun 7, 2011)

  • Added two new edge compensation zoom options; adaptive+fixed and adaptive+fixed only.
  • The constant zoom that is added for the fixed zoom edge compensation options is now constant only for each scene in a clip. It used to be constant for the entire clip.
  • If you have a rolling shutter camcorder, you can now specify how severe this effect is for your camcorder model.
  • The default location of the log file has been changed (due to write access limitations).

New in Deshaker 2.2 (Oct 9, 2008)

  • The most time consuming parts of Deshaker are now multi-threaded, which allows for significantly faster processing on systems with more than one cpu.
  • Added an option to help ignoring large moving objects during matching. Read more under the 'Remember discarded areas to next frame' setting below. This new option is enabled by default (but not if you load old settings files).
  • Added an option to ignore motion vectors that are simply too long. Read more under the 'Discard motion of blocks that move more than X pixels (absolute motion)' setting below.
  • Improved handling of new scenes. When matching fails for a certain frame, the word 'new_scene' is written to the logfile, which allows pass 2 to take appropriate action.
  • Fixed a bug where some settings would change by themselves under some circumstances.
  • Fixed a bug that was introduced in version 2.0 where the borders would always look a bit bad if you used previous and future frames to fill in the border but didn't enable soft borders.