Welcome to Doom9's Forum, THE in-place to be for everyone interested in DVD conversion.

Before you start posting please read the forum rules. By posting to this forum you agree to abide by the rules.

 

Go Back   Doom9's Forum > Capturing and Editing Video > Avisynth Development

Reply
 
Thread Tools Search this Thread Display Modes
Old 25th August 2009, 04:29   #1  |  Link
IanB
Avisynth Developer
 
Join Date: Jan 2003
Location: Melbourne, Australia
Posts: 3,168
AviSynth 2.6.0 Alpha3 [May 25th, 2011]

An interim patch release. I'll do a proper update of this first post when I get some more spare time.

Get AviSynth_110525.exe (4.9MiB) from SourceForge.

========================

Here is the 2nd official release of Avisynth 2.6. Again a purpose of this release is to confirm compatibility with version 2.5.8. For scripts using only 2.5.8 features the results should be identical.

This version now contain most of the features in the experimental 2_6 CVS tree. It supports Y8, YV24, YV16 and YV411 colour spaces in most existing filters.

It contain Sh0dans latest SoftWire updates and his SSSE3 code enhancements. In addition to his SSSE3 version, I have rewritten the MMX code for the vertical resizer which now does 8 pixels per cycle and also written an SSE2 version which does 16 pixels per cycle. And for the vertical PointResizer there is an ultra fast code path which does 64 bytes per cycle.

Due to limits in my available programming cycles, not all the new code has had my normal fastidious testing, so I am trying something new. I am putting up this version for you to use while I continue the testing and development. Next release will have the bug fixes for whatever I find and you report. Be aware!

Note this installer also does not include any of the documentation. You should install 2.5.8 and then install this version over the top. The next release should have at least the English 2.6 doco.

Get AviSynth_090927.exe (1.1MiB) from SourceForge.

========================
Changelist

Additions
* Added support for argument passing and EAX return value to SoftwireHelper.
* Added "Global OPT_VDubPlanarHack=True" to flip YV24 and YV16 chroma planes for old VDub's.
* Added ContinuedDenominator/ContinuedNumerator(f[]i[limit]i) script functions. [undocumented]
* Tweak: fix MaskPointResizing + put back Dividee ISSE code (use sse=true, can't use all settings in that case). [undocumented]
* Added ChromaPlacement and ChromaResample options to planar colour conversions.
* Added MaskHS.
* Minor tweaks to get ready for VC8.
* Add Y8 for DevIL, planarize EBMP.
* Planar support for many filters.
* Added Info() time indicator on audio length and video (current frame & total). (2.5.8)
* Added UtoY8 and VtoY8.
* Added more info to Info(). (2.5.8)
* ColorYUV: Added all adjustment parameters as conditional variables "coloryuv_SETTING". Enable by setting conditional=true. [undocumented]
* ConditionalReader: Added support for type String. [undocumented]
* ConditionalReader: Added offset keyword to offset all frame numbers after the keyword. [undocumented]
* Added SincResize() with optional taps parameter (default is 4).
* Added Custom band setting to SuperEQ to allow all 16 bands to be set from script. Usage: SuperEQ(clip,band1, band2, band3....) values are dB in float.
* Added fast 0-1-0 kernel for YV24 to ConvertBacktoYUY2().
* Added formats: YV24, YV16, Y8, YV411.

Bugfixes
* Fixed MonoToStereo with stereo sources.
* Fixed MergeChannels with only 1 input clip.
* Fixed support for negative height DIB format AVI's. (Oops still not quite right yet)
* Fixed Audio cache crashes.
* Fixed resize with YV411 missing code.
* Fixed ConditionalReader rounding with integer Interpolation.
* Fixed Softwire SSE2 bugs.
* Fixed SSSE3 CPU detection.
* Fixed SSSE3, SSE4.1 & SSE4.2 detection.
* Fixed Fastwire encoding of instructions that are >2 opcodes (SSSE3+4).
* Fixed _RPT5() macro for debug builds

Optimizations
* WriteFile() now supports 32 unlimited strings. (was 16 by 254 byte strings).
* SuperEQ: Improve channel unpacking/packing code.
* H-Resize: Use SSE4.1 (movntdqa) loads for use once memory access.
* H-Resize: Added SSE2 horizontal unpacker.
* Resize: Use SSE3 (lddqu) loads for unaligned memory access.
* Added ultra fast vertical PointResizer (64 pixel/cycle).
* Added dynamic SSSE3 vertical resizer (16 pixel/cycle) ~ twice as fast as old MMX.
* Added dynamic SSE2 vertical resizer (16 pixel/cycle).
* Added dynamic MMX vertical resizer (8 pixel/cycle).
* Added SSSE3 version for RGB<->YV24 conversions.
* Added dynamic compiled MMX/iSSE for RGB<->YV24 conversions. Speed is approx 200% of C-code.

Changes
* ConditionalReader/WriteFile: Full refactor.
* SoftwireHelper: explicit hardware exception handling.
* Resize: Moved GetResampleFunction into Resamplefuntion, to allow overrides.
* Resampler: Removed dead stlf code.
* Updated Soundtouch to 1.31 (2.5.8)
* Put dynamic matrix conversion into separate file.
* Moved chroma subsampling to image_type section.
* Added specific error reporting when requesting chromasubsampling with Y8.
* Split up merge and plane Swappers.
* Split up Plane transfers into separate classes.
* Added automatic destination colorspace detection on planar YtoUV.
* Took out greyscale and RGB32<->RGB24 from convert.cpp and placed them in separate files.
* All code assuming UVwidth = Ywidth/2 and similar should be gone.

Documentation can be found online (and in the 2.6 cvs tree).

Last edited by Guest; 29th October 2012 at 13:28.
IanB is offline   Reply With Quote
Old 25th August 2009, 05:29   #2  |  Link
sneaker_ger
Registered User
 
Join Date: Dec 2002
Posts: 4,464
VirtualDub 1.9.5 is already out:
Quote:
Reversed order of UV planes for YV16 and YV24 formats to match YV12. (Note: This does not affect filters.)
sneaker_ger is offline   Reply With Quote
Old 25th August 2009, 05:31   #3  |  Link
scharfis_brain
brainless
 
scharfis_brain's Avatar
 
Join Date: Mar 2003
Location: Germany
Posts: 3,605
Quote:
The next release will have an option to enable this hack on demand.
Without testing the new AVS 2.6...
SwapUV() should do the trick, shouldn't it?
__________________
Don't forget the 'c'!

Don't PM me for technical support, please.
scharfis_brain is offline   Reply With Quote
Old 25th August 2009, 07:10   #4  |  Link
lych_necross
ZZZzzzz...
 
lych_necross's Avatar
 
Join Date: Jan 2007
Location: USA
Posts: 302
Woo-hoo!! I can't wait to test it later this week when I have time.
lych_necross is offline   Reply With Quote
Old 25th August 2009, 07:37   #5  |  Link
7ekno
Registered User
 
Join Date: Jul 2007
Posts: 389
Nice work, does this include SEt's MT and memory leak fixes?!?

His build is running fine for me at the moment, just trying to anticipate whether this one is a forward or backward step !!

7ek
7ekno is offline   Reply With Quote
Old 25th August 2009, 07:45   #6  |  Link
Revgen
Registered User
 
Join Date: Sep 2004
Location: Near LA, California, USA
Posts: 1,543
^TSP submitted his MT code for avisynth 2.6 a couple years ago. Official MT support is supposed to happen once it's released.
__________________
Pirate: Now how would you like to die? Would you like to have your head chopped off or be burned at the stake?

Curly: Burned at the stake!

Moe: Why?

Curly: A hot steak is always better than a cold chop.
Revgen is offline   Reply With Quote
Old 25th August 2009, 09:28   #7  |  Link
tin3tin
Registered User
 
tin3tin's Avatar
 
Join Date: Mar 2005
Posts: 365
Very nice. Is there a changelog somewhere?
__________________
DVD slideshow GUI(Freeware).
tin3tin is offline   Reply With Quote
Old 25th August 2009, 12:44   #8  |  Link
SEt
Registered User
 
Join Date: Aug 2007
Posts: 374
Can we have clear trunk/stable svn repositories for Avisynth 2.6? I want to see major MT/cache changes you have in mind submitted asap as i have several thoughts myself but would rather modify new version.

PS: And why on Earth it's compiled with VS 6? I again suggest dropping this deprecated many years ago compiler with poor standards support and many code generation bugs.
SEt is offline   Reply With Quote
Old 25th August 2009, 18:46   #9  |  Link
Wilbert
Moderator
 
Join Date: Nov 2001
Location: Netherlands
Posts: 6,293
Nice job! I will move the docs to the main tree.

The changelist (note this is with respect to the cvs tree, and i'm not sure which ones are included in the alpha build). It might also be that some of the fixes are already in 2.58.

Additions
* Tweak: v2.58 catchup + fix MaskPointResizing + put back Dividee ISSE code (use sse=true, can't use all settings in that case). [undocumented]
* Added chromaplacement and chromaresample options to color conversions.
* Added MaskHS.
* Made VC8 project files.
* Minor tweaks for VC8 compile. All changes should be compatible with VC6 - there are two Soundtouch libraries for the same reason.
* Made VC8 projects for DirectshowSource and TCPDeliver.
* Add Y8 for DevIL, planarize EBMP.
* Planar support for many filters.
* Added time indicator on audio length and video (current frame & total).
* Added specific error reporting when requesting subsampling on Y8.
* Added MultiThreading support, including ScriptEnvironment::SetMTMode and ScriptEnvironment::GetMTMode.
* Added UtoY8 and VtoY8.
* Added more info to Info().
* ColorYUV: Added all adjustment parameters as conditional variables "coloryuv_SETTING". Enable by setting conditional=true. [undocumented]
* ConditionalReader: Added offset keyword to offset all frame numbers after the keyword. [undocumented]
* Added SincResize(). Optional taps parameter (default is 4).
* Added Custom band setting to SuperEQ to allow all 16 bands to be set from script. Usage: SuperEQ(clip,band1, band2, band3....) values are dB in float.
* Work in progress, Add fast 0-1-0 kernel YV24 back to YUY2. (status ?)
* Added formats: YV24, YV16, Y8, YV411.
* Added SoundOut plugin. It is a GUI driven sound output module for AviSynth (it exports audio to several compressors).

Bugfixes
* MT related fixes by SEt
* ColorYUV: Removed (unused) debug information code.
Resize: Use SSE3 (SSSE3 ??) loads for unaligned memory access.
* Resize: Free aligned horizontal resizers.
* Resize: Moved GetResampleFunction into Resamplefuntion, to allow overrides.
* TCPClient: Fixed uncompressed client not passing correctly through.
* TCPServer: GetFrame is now ensured to only be called by a single thread, if client should request frames.
* Fixed Softwire SSE2 bugs.
* Removed dead code from horizontal resizer
* Commented dynamic vertical resizer better.
* TCPDeliver: Fixed VC8 compilation on latest SDK.
* TCPDeliver: Image decompression is now done in client fetch thread to enable better multithreading
* TCPServer: Removed Secure printf's for VC6
* TCPDeliver: Using TCP_NODELAY, this will kill latency on client request packets, and server replies.
* Increment sequencecount in MakeWritable to avoid crash when calling GetFrame between MakeWritable() and GetWritePtr().

Optimizations
* Resize: Added SSSE3 horizontal unpacker.
* Added dynamic horizontal MMX resizer.
* Added dynamic SSSE3 horizontal resizer ~ twice as fast as MMX.
* Optimized horizontal SSSE3 resizer; approx 2.5 x speedup (38.1fps vs 14.2fps on test)
* Added dynamic compiled MMX/iSSE for RGB<->YV24 conversions. Speed is approx 200% of C-code.

Changes
* Fixed SSSE3, SSE4.1 & SSE4.2 detection.Softwire: Fixed encoding of instructions that are >2 opcodes (SSSE3+4).
* Fixed SSSE3 CPU detection.
* Resampler: Removed dead stlf code.
* Threading in TCPDeliver does not use AFX anymore.*
* Updated Soundtouch to 1.31
* Put dynamic matrix conversion into separate file.
* Moved chroma subsampling to image_type section.
* Added a synchronization class IClipLocalStorage and smartpointer PClipLocalStorage to handle synchronisation between class instances when using MTMode 2 and 4.
* Split up merge and plane Swappers.
* Split up Plane transfers into separate classes.
* Added automatic destination colorspace detection on planar YtoUV.
* Took out greyscale and RGB32<->RGB24 from convert.cpp and placed them in separate files.
* All code assuming UVwidth = Ywidth/2 and similar should be gone.

Documentation can be found online (and in the 2.6 cvs tree).

Last edited by Wilbert; 25th August 2009 at 18:51.
Wilbert is offline   Reply With Quote
Old 25th August 2009, 21:30   #10  |  Link
Fizick
AviSynth plugger
 
Fizick's Avatar
 
Join Date: Nov 2003
Location: Russia
Posts: 2,183
IanB, thanks for release!
1. I see you merged 2.6 branch to main at CVS.
So, today (or 20 august?) source code at CVS main is correspondent to released alpha?
2.
Quote:
Originally Posted by IanB View Post
The next release will contain Sh0dans latest FastWire updates...
SoftWire ?
3. And yes, if will will be nice if you trim (or crop ) the changelog posted by Wilbert to the correspondent state of released alpha.
Fizick is offline   Reply With Quote
Old 25th August 2009, 23:25   #11  |  Link
tin3tin
Registered User
 
tin3tin's Avatar
 
Join Date: Mar 2005
Posts: 365
I hope that this writefile issue could be adressed in the next alpha: http://forum.doom9.org/showthread.php?t=147536

__________________
DVD slideshow GUI(Freeware).
tin3tin is offline   Reply With Quote
Old 26th August 2009, 09:24   #12  |  Link
hanfrunz
Registered User
 
hanfrunz's Avatar
 
Join Date: Feb 2002
Location: Germany
Posts: 532
maybe a little bit OT, but are there any plans to move the avs-repo to a "modern" versioning system like git or mercurial?

hanfrunz
hanfrunz is offline   Reply With Quote
Old 28th August 2009, 17:24   #13  |  Link
a451guy451
Xbox Live: o 4lif o
 
a451guy451's Avatar
 
Join Date: Jun 2009
Location: Monrovia, CA
Posts: 64
Awesome stuff. Any chance we'll see a release with setmtmode anytime soon?
Thanks for the great work guys.
a451guy451 is offline   Reply With Quote
Old 28th August 2009, 19:24   #14  |  Link
Alex-Kid
Antronio's DV ambassador
 
Alex-Kid's Avatar
 
Join Date: Mar 2006
Location: Santiago, Chile
Posts: 111
These are great news, as long time has passed since last version and many new features were expected.

Quote:
Originally Posted by IanB
The main pupose of this release is to confirm compatibility with version 2.5.8.
Must be assumed that multithreading is not implemented yet and we'll have to wait until its final release? Just to know if I install it or not.

Everyday I like Avisynth more and more. Nice job guys, I salute you!

Saludos

By ALEX-KID
Alex-Kid is offline   Reply With Quote
Old 28th August 2009, 22:26   #15  |  Link
BigDid
Actually in reserve
 
Join Date: Oct 2004
Posts: 1,605
Quote:
Originally Posted by a451guy451 View Post
Awesome stuff. Any chance we'll see a release with setmtmode anytime soon?
Hi,

I have not tested the 2.6 rev but unless I am mistaken it is already integrated see:
Quote:
Originally Posted by Wilbert View Post
...
The changelist (note this is with respect to the cvs tree, and i'm not sure which ones are included in the alpha build). It might also be that some of the fixes are already in 2.58.
Additions
...
* Added MultiThreading support, including ScriptEnvironment::SetMTMode and ScriptEnvironment::GetMTMode.
...
Bugfixes
* MT related fixes by SEt
...
See also this post:http://forum.doom9.org/showthread.ph...82#post1319282
The test I made (with MT 2.58) show that using setmtmode() or not changes very little -speedwise- when your avisynth.dll (not the MT.dll that goes in the plugin directory) is multithreaded, which should be the case with this new 2.6 rev.

Also, until a specific MT.dll is dedicated for 2.6 (or a new way to MT), the 2.58 MT.dll should/could be used with the 2.6...

Please test and confirm or infim

Did
__________________
Having a problem with AutoGK? Read & use the FAQ & MORE FAQ first
Want to exchange on AutoGK? try doom10.org
In reserve (inactive) for an undefined period of time.
BigDid is offline   Reply With Quote
Old 28th August 2009, 23:21   #16  |  Link
a451guy451
Xbox Live: o 4lif o
 
a451guy451's Avatar
 
Join Date: Jun 2009
Location: Monrovia, CA
Posts: 64
Well, I'd been previously running and older pre-alpha of avisynth 2.6 (Avisynth_120806.exe) on a dual core machine for quite some time, and setmtmode almost doubled the speed of alot of my scripts (especially some really rigorous mvtools framerate conversion stuff). It never really gave me any problems whatsoever.

But, I recently upgraded to a quad core processor and that build of 2.6 did not like it at all (when using setmtmode that is, even if I limited it to two threads). It would run for a while on all 4 cores, but then would seem to crash (where upon I'd see all the core activity go from evenly distributed to to maxing out a single core without really continuing to render out the file). I repeated this on an 8 core machine a friend of mine has with the same result (I saw a slightly diminished return speed wise as compared to the quad core, but it was still significantly faster before it would crash).

So, I was hoping that this new release build would solve that issue, but it doesn't seem to have setmtmode as an active function (I just tried it out again to make sure). As I understand, that change list posted by Wilbert is from the CVS tree and he said he didn't know which features were actually included in this build. It makes sense that it's not there, cuz the point of this one is to test compatability with 2.5.8, which thus far seems to be perfect for me in all my tests.

It's not a big deal, I was just all excited about my quad core cpu and a little bummed I couldn't use this one yet (and now I'm just on the edge of my seat for the final release build;]). Before the scripts crashed though, I was definitely getting a really significant speed increase from 3 to 11fps with 4 threads on my mvtools script as compared to using one thread. I really haven't tried the mt.dll for a long time, as the setmtmode has been working well for me and I like that it processes frames as wholes, as opposed to split into 4 pieces.
a451guy451 is offline   Reply With Quote
Old 29th August 2009, 02:16   #17  |  Link
BigDid
Actually in reserve
 
Join Date: Oct 2004
Posts: 1,605
Hi,

You are right, it is not (yet) included; my bad.
In the meanwhile I will test SET 2.6 build ( 08/08/2009) which seems functional and multithreaded (setMT and MT with the 2.58 MT.dll); at least for my 2 cores.

Did
__________________
Having a problem with AutoGK? Read & use the FAQ & MORE FAQ first
Want to exchange on AutoGK? try doom10.org
In reserve (inactive) for an undefined period of time.
BigDid is offline   Reply With Quote
Old 29th August 2009, 03:37   #18  |  Link
hoboX10
Registered User
 
hoboX10's Avatar
 
Join Date: Jul 2008
Location: Texas
Posts: 50
I can't even begin to imagine how you begin to code such a thing like AviSynth... Amazing.
hoboX10 is offline   Reply With Quote
Old 29th August 2009, 13:09   #19  |  Link
aegisofrime
Registered User
 
Join Date: Apr 2009
Posts: 448
I don't think the alpha has multithread enabled, SetMTMode returns an unknown function error.

It does work with Jeremy Duncan's 2.58 MT.dll though.
aegisofrime is offline   Reply With Quote
Old 29th August 2009, 17:51   #20  |  Link
Myrsloik
Professional Code Monkey
 
Myrsloik's Avatar
 
Join Date: Jun 2003
Location: Ikea Chair
Posts: 1,465
I know you want to keep as much compatibility as possible with all old scripts, but did you consider moving arcane pieces of code such as http://avisynth.org/mediawiki/FixLuminance and several others you can dig up to something like a separate 2.5 compatibility plugin? I don't see why you should keep the most obscure ones around.

In the same spirit of making the core smaller (and more manageable in general), you should really separate out the imagereader/writer/source to reduce the compilation dependencies.

Maybe I read the wiki documentation wrong, but are lots of filters out of traditional/compatibility reasons going to return YV12 instead of Y8? It seems a bit odd to me but maybe that part just hasn't been updated.
__________________
VapourSynth - proving that scripting languages and video processing isn't dead yet
Myrsloik is offline   Reply With Quote
Reply

Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT +1. The time now is 06:13.


Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.