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 > VapourSynth
Register FAQ Calendar Today's Posts Search

Reply
 
Thread Tools Search this Thread Display Modes
Old 20th August 2015, 15:33   #1  |  Link
feisty2
I'm Siri
 
feisty2's Avatar
 
Join Date: Oct 2012
Location: void
Posts: 2,633
nnedi3sf: single precision nnedi3 plugin

binary (x64 winnt) https://github.com/IFeelBloated/NNED...eleases/tag/r1

source code https://github.com/IFeelBloated/NNEDI3SF

namespace: nnedi3sf.nnedi3 (...)

same thing like http://forum.doom9.org/showthread.php?t=166434

differences:
1. it takes high precision float clips, unlike the original one which works on 8-16 bits int clips only
2. no direct support for YUV4XXPS clips, range UV to [0.0, 1.0] before using it and range them back to [-0.5, 0.5] when it's done, GrayS is the only format got native support
3. "opt" parameter is removed cuz I removed all asm codes, don't ask me why, inject asm stuff to the code urself if u want that and good luck with that
4. "nnedi3_rpow2" is removed cuz I don't need it
feisty2 is offline   Reply With Quote
Old 21st August 2015, 14:31   #2  |  Link
feisty2
I'm Siri
 
feisty2's Avatar
 
Join Date: Oct 2012
Location: void
Posts: 2,633
https://github.com/IFeelBloated/NNED...ses/tag/r1SSE2

this one got some SSE2 opt, so should work faster more or less
feisty2 is offline   Reply With Quote
Old 21st August 2015, 18:13   #3  |  Link
mastrboy
Registered User
 
Join Date: Sep 2008
Posts: 365
Quote:
Originally Posted by feisty2 View Post
differences:
1. it takes high precision float clips, unlike the original one which works on 8-16 bits int clips only
2. no direct support for YUV4XXPS clips, range UV to [0.0, 1.0] before using it and range them back to [-0.5, 0.5] when it's done, GrayS is the only format got native support
3. "opt" parameter is removed cuz I removed all asm codes, don't ask me why, inject asm stuff to the code urself if u want that and good luck with that
4. "nnedi3_rpow2" is removed cuz I don't need it
So the only new feature is support for > 16bit?
Or are there other use cases where this nnedi version is more appropriate to use than the original?
__________________
(i have a tendency to drunk post)
mastrboy is offline   Reply With Quote
Old 21st August 2015, 18:22   #4  |  Link
feisty2
I'm Siri
 
feisty2's Avatar
 
Join Date: Oct 2012
Location: void
Posts: 2,633
Quote:
Originally Posted by mastrboy View Post
So the only new feature is support for > 16bit?
Or are there other use cases where this nnedi version is more appropriate to use than the original?
Yeah, it's like that, you got it right, the only advantage over the original one is ultra high bit depth support (32bits float)
I made this mostly for, like a real example, a cool way to learn things about programming, so you know what I mean...
feisty2 is offline   Reply With Quote
Old 5th September 2015, 22:17   #5  |  Link
jackoneill
unsigned int
 
jackoneill's Avatar
 
Join Date: Oct 2012
Location: 🇪🇺
Posts: 760
Is the prescreener working the same as with 8 bit input? In my tests it flags a lot more pixels for the slow processing. You can check by commenting out the call to evalFunc_1 in nnedi3GetFrame. Look for the white pixels.

Code:
import vapoursynth as vs
c = vs.get_core()

src = c.lsmas.LibavSMASHSource("YUV420P8.mp4")
src = c.std.ShufflePlanes(src, planes=0, colorfamily=vs.GRAY)

test1 = c.nnedi3.nnedi3(src, field=1)

test2 = c.z.Depth(src, depth=32, sample=vs.FLOAT)
test2 = c.nnedi3.nnedi3(test2, field=1)
test2 = c.z.Depth(test2, depth=8, sample=vs.INTEGER)

src = c.std.Interleave([test1.text.Text("nnedi3 uint8_t", 5), test2.text.Text("nnedi3 float", 5)])

src.set_output()
__________________
Buy me a "coffee" and/or hire me to write code!
jackoneill is offline   Reply With Quote
Old 6th September 2015, 12:47   #6  |  Link
feisty2
I'm Siri
 
feisty2's Avatar
 
Join Date: Oct 2012
Location: void
Posts: 2,633
try "test1 = c.nnedi3.nnedi3(src, field=1, pscrn=1), test2 = c.nnedi3.nnedi3(test2, field=1, pscrn=1)"
pscrn is 2 by default on uint8_t clips, but it doesn't work at any higher bit depth, so the default of pscrn becomes 1 at uint16_t and float
feisty2 is offline   Reply With Quote
Old 7th September 2015, 14:42   #7  |  Link
jackoneill
unsigned int
 
jackoneill's Avatar
 
Join Date: Oct 2012
Location: 🇪🇺
Posts: 760
Quote:
Originally Posted by feisty2 View Post
try "test1 = c.nnedi3.nnedi3(src, field=1, pscrn=1), test2 = c.nnedi3.nnedi3(test2, field=1, pscrn=1)"
pscrn is 2 by default on uint8_t clips, but it doesn't work at any higher bit depth, so the default of pscrn becomes 1 at uint16_t and float
Ah, indeed. Such a silly mistake.
__________________
Buy me a "coffee" and/or hire me to write code!
jackoneill is offline   Reply With Quote
Reply


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 04:02.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2024, vBulletin Solutions Inc.