github arch1t3cht/Aegisub feature_12
Feature Release 12

3 days ago

Hi - long time no see and all that. Life happened and I had a lot less time to work on Aegisub in the past year, but by now there've been enough small changes that it's time to make a new release. Sorry to everyone whose issues and/or pull requests I ignored until now - I'll get to them when I can.

Keep in mind that cutting-edge builds can always be found on the actions page

New features

  • Make the getPixel function in the Lua get_frame API return three separate color values rather than packing all values into a single integer. This is technically a breaking change, which is why it's at the top of the list. However, I'm not aware of a single script that ever used this function (since 99% of the time you just want getPixelFormatted instead), so I'm fairly sure that this does not actually break anything.
  • Add a function to the Lua get_frame API to get the raw buffer with the frame's data, e.g. in case you want to pass it on to some library.
  • Update BestSource to R8. Starting from R2, BestSource now has fast and safe seeking (when previously, while guaranteed to be exact, it was so slow that it was only useful as a last resort). Hence, the BestSource video and audio providers are now a feasible alternative for FFmpegSource with similar speed on seeking. BestSource requires more time when initially indexing a file, but in exchange it offers guaranteed frame accuracy when seeking. When BestSource cannot guarantee fast exact access, it will revert to (slow but still exact) linear decoding and alert the user.
  • Make the default audio script for the VapourSynth video provider use BestSource instead of bestaudiosource (the latter being deprecated) and ship the former instead of the latter with the installer.
  • Switch the import path order for the VapourSynth video provider's Python environment to make it possible to override Aegisub's Python modules in your user configuration directory (just like in the Lua API).
  • Bump FFMS2 to version 5.0, which among other improvements (including proper AV1 and VP9 support which previously needed custom patches) contains a number of fixes to seeking accuracy made by me. The FFmpegSource video provider should now be much more reliable than before. In fact, my experience has been that it is more reliable than LWLibavSource now (but I did not yet have time to switch the VapourSynth video provider's default script to use FFMS2).
  • Rework the font collector's font finding logic on Windows (PR by @moi15moi, #107). Font lookups should now be more reliable and e.g. no longer incorrectly return arial.ttf for certain fonts.
  • No longer truncate subtitle timestamps to 10 hours (PR by @TheOneric, #104). The maximum times for subtitle events is now at around 596 hours (the number of milliseconds that can fit into a 32-bit integer, as used by classic VSFilter).
  • Add an option to make Shift+Enter add a soft line break (\n) instead of a hard line break (\N). Soft line breaks only break lines when the WrapStyle is 2, so they can be useful when the script has a global WrapStyle of 2 set that viewers may want to override.
  • Allow setting a style's font encoding to -1 in the style editor. Encoding=-1 is a libass-only extension that enables more extensive text shaping and RTL/Bidirectional support. Refer to the libass wiki for more information.

Various bugfixes

  • Work around the double buffering issues in wx master that were causing the subtitle grid to flash in wx master builds. This was the biggest inconsistency on wx master builds.
  • Make the BestSource and VapourSynth video providers properly respect the file's YCbCr Matrix header (that is, force the video to be converted to RGB using that matrix), and improve support for this header for the FFmpegSource video provider (which previously only applied the header when it specified a BT.601 matrix on BT.709 video). The YCbCr Matrix logic is now better shared across all video providers, which should make it more consistent.
  • Do not allow opening the same dialog (e.g. the style manager) multiple times. Aegisub used to enforce this, but this logic broke in a refactor at some point. Now it matches the old behavior again.
  • Fix a crash when using search/replace with multiple windows (i.e. multiple windows of Aegisub launched from a single process using File > New Window). In my experience, using multiple windows can still be fairly unreliable and more prone to crashes (so I'd recommend users to just open separate instances), but at least now it is slightly less so.
  • Stop shifting all video timecodes to start at 0 milliseconds. This previously broke files like those with a two-frame video delay (sometimes reported as a -83ms audio delay in programs like MediaInfo) that were common in old CR downloads (see this article by CoffeeFlux). Support for such files in players and other software may still vary so I wouldn't recommend working on such files if you don't know what you're doing (I'm also considering to show a warning dialog when opening such files), but at least now it's possible to work on them if you do.
  • Properly wrap long status messages in the progress dialog instead of letting them overflow.
  • Don't crash in the VapourSynth video provider's default script if the cache directory's parent directory does not exist.
  • Improve the version detection for the lsmas plugin in the VapourSynth video provider.
  • Work around a crash in the thesaurus (caused by boost or gcc - PR by @mia-0, #137)

Backend stuff

  • The PR adding meson support to libass was finally merged, so Aegisub will now always use the latest libass version.
  • Bump wxWidgets (when not using wx master) back down to 3.1.4 (it was bumped when adding support for wx master) since it broke some things (#99).
  • Bump ffmpeg to 6.1 (PR by @0tkl, #103)
  • Bump boost to 1.83
  • Write minidump files on crashes on Windows. Aegisub used to do this, but this got lost during the port to meson.
  • Once again fix the Avisynth bundling in the portable build.
  • Fix some small memory safety problems in the Lua get_frame API. I don't think they ever caused actual issues, but they were technically UB. Either way, they're fixed now.
  • Switch to C++17 since some dependencies (in particular ICU) started breaking on older standards. This only updates the C++ standard, though, and does not pull any of the refactors made at TypesettingTools/Aegisub, since this rebasing all the feature branches on top of those would be a massive amount of work that I'd like to only have to do once.

No "super detailed backend stuff" section this time since anyone who really cares about those can just read the commit log anyway.

Read the "New Features" section for Release 11 for an explanation of the difference between "wx master" and the normal windows builds.

Don't miss a new Aegisub release

NewReleases is sending notifications on new releases.