Reasons to hate Avisynth

  • Since it’s based on VFW it’s permanently stuck in the 90’s
  • It isn’t threadsafe at all
  • It STILL doesn’t support high bitdepth YUV and won’t do so in 2.6 either, because colorspaces are handled in a retarded way
  • It uses a C++ interface and throws C++ exceptions across library boundaries
  • It doesn’t support VFR
  • It doesn’t support any sort of frame metadata at all, really
  • The codebase is absolutely insane and full of hilarious hacks and inline assembly
  • For something that is so adaptable it really is remarkably rigid and un-extendable
  • Part of the API is compiled into each and every plugin, resulting in a lot of funky issues
  • Despite being so shitty, it’s so useful that people keep hacking retarded things into it because they want to use it in new and funny ways
  • The source code repository uses CVS
  • It can only be compiled with MSVC 6.0 (or maybe they finally fixed this, idk)
  • Memory leaks, memory leaks everywhere
  • The scripting language lacks basic control structures, resulting in funny recursive calls to emulate loops
  • Most plugins are really fucking shitty

Contributions to this list are welcome.

Comments (33)

  1. pokerface.jpg wrote:

    AND THE ALTERNATIVE IS … ?

    Sunday, September 18, 2011 at 21:32 #
  2. TheFluff wrote:

    Nothing! That’s yet another reason to hate it.

    Sunday, September 18, 2011 at 21:48 #
  3. Anonfag wrote:

    @pokerface.jpg
    Are you confused between “hate” and “not to use”? or just missingthepoint.avs?

    Sunday, September 18, 2011 at 21:53 #
  4. Anonfag wrote:

    Why aren’t memory leaks (distinctly) added to the list?

    Sunday, September 18, 2011 at 21:58 #
  5. TheFluff wrote:

    @4: added

    Sunday, September 18, 2011 at 22:04 #
  6. nitephire wrote:

    Huge plugin codebase compatibility bullshit aside … how big an endeavor would it be to develop an alternative? Core functionality only. Seems like something a small group of talented developers could handle over the course of a couple months.

    Sunday, September 18, 2011 at 22:31 #
  7. nitephire wrote:

    Also, throw in the fact that plugins aren’t required to be open-source or have any documentation. So a lot of the time you’ll run into a plugin where no one has any chance of figuring out what it actually does, e.g. checkmate.

    Sunday, September 18, 2011 at 22:39 #
  8. john aqua wrote:

    I’ll be waiting for you the make the fork :D

    Monday, September 19, 2011 at 04:12 #
  9. dmqslfkjffjfk wrote:

    * The scripting language lacks basic control structures, resulting in funny recursive calls to emulate loops

    * Lots of plugins made by incompetent programmers are not maintained but still in use, and exhibit various bugs and glitches.

    Monday, September 19, 2011 at 11:37 #
  10. analanguished wrote:

    @nitephire

    It’s been tried. Ever heard of Avisynth 3.0? It was a rewrite from the ground up by different guys to make a cross-platform version of Avisynth. Shit’s dead now.

    Tuesday, September 20, 2011 at 04:53 #
  11. nitephire wrote:

    @analanguished
    I’m familiar with Avisynth 3.0. From what I know, it did not qualify for either of points I listed. It tried to do more than just the core, and it was mainly just one guy whose competency is questionable.

    Tuesday, September 20, 2011 at 16:14 #
  12. zz wrote:

    Never had problem with mt (except with ffms2… but yeah, surely fflibavmpeg fault). Who cares about vfr and high bit depth, seriously ? For the other points, I must admit you are right or half right.

    Wednesday, September 21, 2011 at 22:09 #
  13. DGHFJKL.avsi wrote:

    DLL hell? I had to hunt for some libraries used by some denoising script from Rapidshare and Russian filesharing sites.

    Thursday, September 22, 2011 at 16:01 #
  14. asdfd wrote:

    Not so.
    http://avisynth.org/mediawiki/High_bit-depth_Support_with_Avisynth

    Sunday, September 25, 2011 at 04:10 #
  15. asdfd wrote:

    Gscript gives you the control structures.
    http://avisynth.org/mediawiki/Advanced_Scripting_Tips

    Sunday, September 25, 2011 at 04:12 #
  16. asdfd wrote:

    Again not true.
    Check mate is well documented:
    http://www.aquilinestudios.org/avsfilters/dotcrawl.html#checkmate
    It removes dotcrawl.

    Sunday, September 25, 2011 at 04:15 #
  17. asdfd wrote:

    ffms2 supports reading VFR. A guide to dealing with it http://avisynth.org/mediawiki/VFR
    But agreed, not native VFR.

    Sunday, September 25, 2011 at 04:20 #
  18. asdfd wrote:

    per-frame meta-data and vfr extension:
    http://forum.doom9.org/showthread.php?t=162436

    Sunday, September 25, 2011 at 04:22 #
  19. asdfd wrote:

    What’s wrong with inline assembly? How else are you supposed to write optimized code?
    ffmpeg uses it; yasm is the assembler. ffmpeg specifically *doesn’t* support MSVC because it *can’t* do inline assembly.
    http://ffmpeg.org/faq.html#SEC34

    http://ffmpeg.org/general.html#SEC20

    Sunday, September 25, 2011 at 04:27 #
  20. asdfd wrote:

    And there is sort of an alternative; an image converter called ImageMagick allows pretty advanced image processing in script.
    Small example creates 16bit image and returns lower 8 bits:
    convert -size 256×256 canvas:#010204 -evaluate rightshift 8 -evaluate and 255
    -evaluate leftshift 8 lsbtest.bmp

    -fx supports all sorts of mathemtical expressions; there’s also usual filters like sharpen, blurr, etc.

    Sunday, September 25, 2011 at 04:30 #
  21. asdfd wrote:

    I may be wrong about the inline assembly, sorry.

    Sunday, September 25, 2011 at 04:37 #
  22. asdfd wrote:

    One pass cfr to vfr
    http://forum.doom9.org/showthread.php?t=161386

    Sunday, September 25, 2011 at 04:55 #
  23. TheFluff wrote:

    holy shit that is a lot of hurfing

    No, the dither package’s ugly hack does not count as “supporting” high bit depth stuff.
    The per-frame metadata stuff is vaporware and not actually implemented anywhere yet, but even if it was it still wouldn’t count as “support”.
    Yes, I sorta know about ffms2 since I am one of its maintainers.
    Yes, you’re wrong about inline assembly.

    Sunday, September 25, 2011 at 05:15 #
  24. asdfd wrote:

    Regarding dll hell. Now there’s some installers appearing which include all requirements:
    http://www.sendspace.com/filegroup/S%2FsOTQDtCjklZTskl%2BsD2w

    Hey, it’s open source – if there’s a problem, fix it, right?

    Sunday, September 25, 2011 at 06:53 #
  25. asdfd wrote:

    There is a filter which implements the new per-frame meta-data and high bit-depth support:
    http://svn.int64.org/viewvc/int64/hqas/hqas/converttolq.cpp?view=markup

    Support for high bit-depth is there as a practical application for users. It may not meet the requirements of clean code for some developers; hopefully as this is improved we can attract talented coders as yourself. Thanks.

    Do you want to see the meta-frame merged into the main branch? That’s simple to arrange.

    Sunday, September 25, 2011 at 06:57 #
  26. nitephire wrote:

    @asdfd

    re: checkmate
    If you consider that well-documented, you obviously have never seen good documentation.

    re: “Hey, it’s open source – if there’s a problem, fix it, right?”
    Keep in mind the point I brought up earlier about some plugins being closed source.

    @TheFluff
    Are you interested in actually fixing what’s wrong with Avisynth in the form of a new frameserver? If so, please make it known so the right people can help.

    Monday, September 26, 2011 at 01:18 #
  27. asdfd wrote:

    I ‘checked’ out the Checkmate documentation. There is a part which talks about “he doesn’t remember what this does”, so I can agree with that point. However, there is enough information to be useable. I have to say, that in making algorithms you don’t always know what a setting will do. It’s just a matter for experimentation and tuning. What correlation value corresponds to a scenechange? I’d like to know myself.

    I’d really like to see the language be better, but it’s the best we have and I don’t hate it. Keep mentioning the problems, I’m a contributor and I will fix them!

    Wednesday, September 28, 2011 at 20:35 #
  28. Sammy wrote:

    hey fluff steve jobs is dead how do you feel???

    (expecting notasinglefuckwasgiven.jpg)

    Thursday, October 6, 2011 at 02:45 #
  29. d-_-b wrote:

    sammy: too zune, too zune.

    >FORK
    OLEDOIT~

    Tuesday, October 11, 2011 at 04:21 #
  30. Gyzome wrote:

    Add “arbitrarily decides not to work even though the very same script worked just fine yesterday”.

    Tuesday, October 25, 2011 at 17:14 #
  31. killazys wrote:

    No way to avoid it, huh.

    Monday, November 7, 2011 at 20:48 #
  32. Hush wrote:

    I think it’s very ironic that now 2 AviSynth alternatives exist [AvisynthPlus & VapourSynth] and yet the author of this “list” has yet to contribute anything useful for any of the two. Talk is cheap.

    Friday, December 20, 2013 at 03:58 #
  33. Xupicor wrote:

    Hush – thank you for your comment. While AvisynthPlus has some things that anybody that used Avisynth would welcome, I think VapourSynth is something with a great future.

    Sunday, February 16, 2014 at 17:40 #