Log in

View Full Version : EEDI3 v0.9.2 (x86/x64)


Elegant
30th July 2015, 01:36
Hi guys, I noticed that EEDI3 did not have a x64 version after firesledge's mod. I've quickly updated this filter to support x64 as well as the 2.6 API.

Further information can be found in the readme as well as on my GitHub (https://github.com/Elegant996/EEDI3).

Reel.Deel
31st July 2015, 02:56
Thanks for another updated plugin! Any interest in adding support for the additional planar colorspaces in AviSynth 2.6? Also can you please add the option to use FTurn (http://forum.doom9.org/showthread.php?t=168315) in eedi3_rpow2? This yields a nice speed increase. The optimized FTurn code is already integrated into the AviSynth+ core so there's no real improvement there but it does benefit AviSynth 2.6/MT users. A bit more info here (http://forum.doom9.org/showthread.php?t=147695&page=24#post1639017).

mp3dom
21st March 2018, 21:31
Sorry to bump, but this version (EEDI3 0.9.2.1 by Elegant x64) have something really wrong with YUY2.
Even this

colorbars(width=720,height=480,pixel_type="yuy2")
eedi3(0)

Is enough to output wrong colorbars.
This affects the x64 version ONLY and only YUY2 colorspace, since it works fine in YV12 (x86 version works fine in both YUY2 and YV12)

StainlessS
22nd March 2018, 17:01
mp3dom, there is asm in source, have you tried use C only


opt (default: 0)

Sets which cpu optimizations to use. Possible settings:

0 = auto detect
1 = use c
2 = use sse2


Just to give someone who speaks asm a clue. [EDIT: Or as x64 prob, then probably intrinsic rather than asm]

EDIT: memcpy_amd_asm_x64.asm does indeed contain asm, I thought asm not supported on x64(???).

EDIT: I dont see anything obviously wrong in the C YUY2->YV22->YUY2 routines

void PlanarFrame::convYUY2to422(const uint8_t *src,uint8_t *py,uint8_t *pu,uint8_t *pv,int pitch1,int pitch2Y,int pitch2UV,
int width,int height)
{
if (((cpu&CPU_SSE2)!=0) && useSIMD && (((size_t(src)|pitch1)&15)==0))
convYUY2to422_SSE2(src,py,pu,pv,pitch1,pitch2Y,pitch2UV,width,height);
else
{
if (((cpu&CPU_MMX)!=0) && useSIMD) convYUY2to422_MMX(src,py,pu,pv,pitch1,pitch2Y,pitch2UV,width,height);
else
{
width >>= 1;
for (int y=0; y<height; ++y)
{
int x_1=0,x_2=0;

for (int x=0; x<width; ++x)
{
py[x_1] = src[x_2];
pu[x] = src[x_2+1];
py[x_1+1] = src[x_2+2];
pv[x] = src[x_2+3];
x_1+=2;
x_2+=4;
}
py += pitch2Y;
pu += pitch2UV;
pv += pitch2UV;
src += pitch1;
}
}
}
}


void PlanarFrame::conv422toYUY2(uint8_t *py,uint8_t *pu,uint8_t *pv,uint8_t *dst,int pitch1Y,int pitch1UV,int pitch2,
int width,int height)
{
if (((cpu&CPU_SSE2)!=0) && useSIMD && ((size_t(dst)&15)==0))
conv422toYUY2_SSE2(py,pu,pv,dst,pitch1Y,pitch1UV,pitch2,width,height);
else
{
if (((cpu&CPU_MMX)!=0) && useSIMD) conv422toYUY2_MMX(py,pu,pv,dst,pitch1Y,pitch1UV,pitch2,width,height);
else
{
width >>= 1;
for (int y=0; y<height; ++y)
{
int x_1=0,x_2=0;

for (int x=0; x<width; ++x)
{
dst[x_2] = py[x_1];
dst[x_2+1] = pu[x];
dst[x_2+2] = py[x_1+1];
dst[x_2+3] = pv[x];
x_1+=2;
x_2+=4;
}
py += pitch1Y;
pu += pitch1UV;
pv += pitch1UV;
dst += pitch2;
}
}
}
}


EDIT: Looks like uses MASM assembler, so presumably x64 asm just not supported in compiler.

pinterf
23rd March 2018, 13:13
This one perhaps? (The x86 version is even a bit faster for me than 0.9.2.1)
https://github.com/pinterf/EEDI3/releases/tag/v0.9.2.2

DJATOM
23rd March 2018, 14:15
Since you forked and currently working on eedi3... I'd like to request Y8 support. U=false, V=false is just bad since sometimes I need to feed 873p descales for antialiasing and it's just not even mod2.
I did such modification on my local copy near 1 year ago, but didn't yet posted it on github.

pinterf
23rd March 2018, 15:28
Yeah, it was just a quick mod, Y8, YV16 and YV24 paths are being reconstructed. (YUY2 is like YV16, RGB24 is like YV24 inside)

pinterf
23rd March 2018, 16:09
And another quick one:
https://github.com/pinterf/EEDI3/releases/tag/v0.9.2.3

Please test.

v0.9.2.3 - March 23, 2018
- Y8, YV16 and YV24 colorspaces as input: go live.

v0.9.2.2 - March 23, 2018
- Moved to Visual Studio 2017
- Removed external asm files (integrated/replaced with intrinsics)
- Update Avisynth headers
- fix YUY2 x64 artifacts
- https://github.com/pinterf/EEDI3

DJATOM
23rd March 2018, 16:24
Tested via RDP, don't see any issues with my scripts (it works with y8 internally).

StainlessS
23rd March 2018, 16:56
Part Man - Part Machine, thanx muchly Pinterf :)

EDIT: To below post:
Welcome back RD, its aways nice when you get back out of jail again. :)

Reel.Deel
24th March 2018, 04:14
Part Man - Part Machine, thanx muchly Pinterf :)

Indeed! Thanks pinterf!

------------------

I've been away for sometime but I'm glad to see some of you are still going strong. :)

mp3dom
24th March 2018, 14:43
Thanks to all for this quick fix and also additional colorspaces support!

real.finder
2nd December 2020, 12:57
Yeah, it was just a quick mod, Y8, YV16 and YV24 paths are being reconstructed. (YUY2 is like YV16, RGB24 is like YV24 inside)

can we got HBD too? :)

there are https://github.com/HomeOfVapourSynthEvolution/VapourSynth-EEDI3 maybe help with adding HBD and sse4.1, avx, avx512 optimization

pinterf
3rd December 2020, 08:17
can we got HBD too? :)

there are https://github.com/HomeOfVapourSynthEvolution/VapourSynth-EEDI3 maybe help with adding HBD and sse4.1, avx, avx512 optimization
Not from me, it's not a five minutes job.

kedautinh12
28th November 2022, 18:10
EEDI3CL supports HBD now
https://github.com/Asd-g/AviSynthPlus-EEDI3CL/releases

kedautinh12
23rd July 2023, 00:43
EEDI3CL 1.0.2
Fixed crashing when unsupported Avs+ used by explicitly throwing error.
Changed the required Avs+ version.
Used libraries:

OpenCL-SDK v2023.04.17.
boost_1_82_0.7z.
https://github.com/Asd-g/AviSynthPlus-EEDI3CL/releases

Jamaika
14th August 2025, 09:53
I'm wondering about the strange spots in the checkerboard.
eedi3_rpow2 (rfactor=2,threads=0,opt=0)
https://i.postimg.cc/PJLqScDF/111.png (https://postimages.org/)

Edit: Years have passed and add-ons do not have convYUY2to422_AVX2 function.