Another vote for a native YUV Avisynth plugin...maybe?

suggest a way to improve Neat Video
Post Reply
AlabasterButtShine
Posts: 3
Joined: Thu Dec 02, 2010 8:08 pm

Another vote for a native YUV Avisynth plugin...maybe?

Post by AlabasterButtShine »

I know others have requested this before in years past, but I want to reiterate the interest in a native Avisynth plugin for NeatVideo.

I understand that the current VirtualDub plugin can be used in Avisynth, but there's a problem: Most people have YUV sources, and Avisynth users generally perform all of their work in a YUV colorspace like YV12 or YUY2. Using the VirtualDub plugin requires four lossy and gratuitous colorspace conversions: Source YUV->VirtualDub RGB->NeatVideo's Internal YUV->VirtualDub RGB->Destination YUV. I'm not sure about NeatVideo's internal RGB->YUV->RGB conversions, but at least the outer two conversions are both performed in 8 bits.

I never fully appreciated NeatVideo's superiority when I was dealing with a static/fixed noise pattern, but literally nothing else touches NeatVideo when it comes to ordinary noise. It's obviously closed source to protect the unrivaled secret sauce, but that also means others are unable to make a native Avisynth plugin for it. Do you know how much work that would take? My gut says it wouldn't be too problematic, since NeatVideo apparently works in a single YUV colorspace internally, but the source code could be factored in such a way that makes it difficult as well.

Anyway, do you guys have any plans for a native Avisynth plugin that bypasses round-trip conversions, or would that be too much work?

All that said, I've never actually seen any banding or broken histograms after testing NeatVideo: The conversions seem to cancel each other out pretty well, as long as the source fits into TV levels with a Y range in [16, 235]. Sources utilizing the full [0, 255] luma range require a technically lossier conversion formula, but I still haven't seen any huge differences there either though, and repeated conversions don't change much. Any damage is pretty much done with the first conversion, and it ironically seems to help with very slightly recovering particular gradients in sections of video with oversaturated colors. Maybe my colorspace conversion concerns are just totally misplaced?

It's funny...I started out writing a feature request, and now I'm not so sure if it's even worthwhile. What are your thoughts?
NVTeam
Posts: 2748
Joined: Thu Sep 01, 2005 4:12 pm
Contact:

Post by NVTeam »

Those external conversions are done in 8-bit precision by VirtualDub, but only one of them may really change anything that could be noticed - the final conversion from RGB to YUV. The errors of the input conversion are always dominated by the noise itself, and the internal conversions are done in higher precision. So there is only one conversion that can really change anything - the output one. And if you do not see any visible damage from it now, then it does not do a lot of it apparently.

In hosts like Premiere, AE, and some others, the host resolves the problem by doing the conversions and passing the video data in higher precision. Using lower precision is possible there too. So both cases can be compared directly. The results typically do not visually differ. Which means there is no much damage from that output conversion.

So I wouldn't worry much about the conversion. It seems to work quite well now.

Vlad
AlabasterButtShine
Posts: 3
Joined: Thu Dec 02, 2010 8:08 pm

Post by AlabasterButtShine »

Thanks, Vlad. That helped further put my mind at ease! :)
Post Reply