R22 – The number of bits shall be 64

Have you ever wanted to encode things in 64 bits? Now you can!

The latest release adds support for x64 windows and all native filters have x64 compiles ready as well, however Avisynth x64 plugins can’t be loaded because the moron who originally converted the Avisynth header did it in a sloppy way and forgot to make the memory offsets stored as a ptrdiff_t.

There have also been substantial changes to the core code as all use of the Qt libraries have been removed and replaced with C++11 instead. This reduces the number of dependencies and makes VapourSynth easier to compile. During this process all the locking was reviewed and every relevant function should now be thread-safe. For those of you who want to contribute to the core project there are Visual Studio 2013 projects available in the repository which makes compiling a lot easier.

Those were the major changes, here’s a list of some of the smaller improvements made:

  • Added the MakeDiff and MergeDiff filters (equivalent to masktool’s mt_makediff and mt_adddiff)
  • Arguments passed to functions with the value None are now ignored in Python — this makes it much easier to pass on filter arguments
  • Filter arguments in Python now accept any iterable type and not just lists — go crazy and use expressions such range(3) or (clipa, clipb) as function arguments
  • The usual small tweaks such as improved code examples, fps display in vspipe and rare memory leak fixes

Important Compatibility Information

Lut2, Merge and MaskedMerge now take two clip arguments instead of the original two clip array. For example:

core.std.Merge(clips=[clip1, clip2], 0.5)

Should be changed to:

core.std.Merge(clipa=clip1, clipb=clip2, 0.5)

The python module will automatically rewrite it to the new version for now to keep script compatibility. Script writers who want to test that their script works with only the new behavior can create a new core this way:

vs.get_core(r21_arg_compat=False)

R22 Release Candidates for everyone!

I’ve posted a new release candidates to the usual doom9 thread. This is a major update that adds x64 support to windows, makes almost every single function thread-safe, gets rid of the Qt dependency and moves to C++11.

There’s still a little bit of debugging to do and some third party filters that haven’t gotten x64 compiles yet though so report any issues you find.

R21 – Big Improvements Again!

It’s once again time for a release. This release can mostly be described as a big bugfix one. Mostly taking care of some bugs introduced in R20 (which is no longer linked since R19 is better to use when testing if things work in a previous version). Anyway, the main new features are:

  • FrameEval — A nice and convenient way to do almost any per frame operation conceivable
  • RemoveGrain/Repair — Now ported to be native plugins
  • Text — A very handy function to print text for debug purposes

There are also plenty of small improvements such as error messages being printed on VFW error clips, optimizations of common functions and fixes here and there.

For R22 the long C++11 migration will start. The ultimate goal is to remove the dependency on Qt completely but that will most likely take over a year to accomplish. As a short term goal writing more filters is my priority.

R20 – Closer to done

About 3 months since the last release and another one is ready. The main news are plugin auto-loading on every OS. The other big change is that invoking a function per frame is possible. This mean that every Avisynth script in existence can now be converted to VapourSynth. It’s also possible to make interesting new ones…

Other notable fixes:

  • Opening a VapourSynth script inside a VapourSynth script now works
  • Cache size adjustment should work better now
  • Requesting an error frame twice no longer causes a deadlock
  • Addborders /Blankclip now default to black background color instead of the “zero memory pink”
  • No more crashes when Avisynth plugins are passed a colorspace Avisynth 2.5 doesn’t support

The core is mostly complete now (I always keep saying this until I remember something that’s missing). What’s left is mostly some code cleanup and merging simple text drawing into the core. Feel free to take a look at the bug tracker for some simple coding tasks to do. Especially adding constant folding to the Expr filter is a good starter task.

That’s all for this release. Next up will probably be a port of dither tool’s re-imaging of RemoveGrain. And the image writer I keep getting distracted from.

R19 – Finally some progress

R19 is finally done. It took a lot longer longer than expected due to all the comments about the new interface for simple embedding. Fortunately I took a trip to Germany so I’m all stocked up on good rum so I can get the next version done a lot sooner.

The main new features in R19 are:

  • VSScript – a simple API to use when embedding VapourSynth
  • Ported to work on arm and powerpc
  • Improvements to threading – Avisynth filters can no longer deadlock in rare circumstances
  • A consistent way to output clips in vsfs/vfw/command-line
  • Piles of bugfixes

There are several breaking changes in this release as well. Setting the output of a script is now done this way:

clip.set_output()

All traces of the magic variable last and the output method are gone. This simplifies things because now there’s only one way to set the output.

The core now uses a singleton pattern. This means that getting a new Core object is now done this way:

core = vs.get_core(threads=3)

There’s one final small issues that also affects a few script. Lut and Lut2 had the order of the lut and planes arguments switched so the order will make more sense.

The goals for the next version are x64 windows binaries, plugin autoloading, RemoveGrain lite and Qt5 compatibility.

Everything is moving

I’ve now switched to using git instead of subversion and the project is now located on github instead of google code. The links to the left for the bug tracker and source have been updated to reflect this.

This website is also going to switch host because dreamhost is slow and ridiculously expensive to use after the first year compared to what you actually get. Because of this the website may be down for a few days until everything is set up again. The domain switch should happen any day now…

Here’s a picture of a snail to illustrate the R19 release process:SAMSUNG CSC

Some Android App/Hardware Ideas

Here are some free ideas for Android and phones in general.

  • The palm sweat meter (prove that holding hands just isn’t that bad, the scientific way). Should be doable using the humidity sensor in the new Galaxy S4.
  • A game that simulates real physics. It will be dull but someone should make it just so it’s been done.
  • Someone should properly figure out all the mDNIe fields so Samsung’s oversaturated OLED travesty can be somewhat improved. I did figure out most of them on the Galaxy S2 but lacked a colorimeter at the time so I couldn’t write a simple display calibrator. It is possible to mostly fix color temperature and gamma (same curve shared for all RGB). 10K+ color temperature makes me blue.
  • An IR diod/front camera, so the useless Samsung face stay and rotate features can work when it’s not perfect lighting conditions. Like in bed.
  • Or to take the previous one even further. IR camera+laser projected IR pattern. Then we could have kinect style 3D scanning in our phone. Don’t think I’m crazy, if you can stick a projector into a phone this can be done too.
  • Bonus hardware feature: breathalyzer in next gen phones.

As you may have guessed I’ve used Samsung phones the past year.