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. |
19th September 2015, 17:08 | #41 | Link |
Pig on the wing
Join Date: Mar 2002
Location: Finland
Posts: 5,718
|
While you're designing the native VS build, I have a question regarding Vapoursynth's multithreading and DGSource. Is it generally safe to allow multithreading for DGSource or is it better to use core = vs.get_core(threads=1) before it and core = vs.get_core(threads=-1) afterwards? I assume it's mostly up to the GPU driver but there's no general opinion on this matter.
__________________
And if the band you're in starts playing different tunes I'll see you on the dark side of the Moon... |
19th September 2015, 17:17 | #42 | Link | |
Professional Code Monkey
Join Date: Jun 2003
Location: Kinnarps Chair
Posts: 2,548
|
Quote:
__________________
VapourSynth - proving that scripting languages and video processing isn't dead yet |
|
19th September 2015, 18:18 | #44 | Link |
Professional Code Monkey
Join Date: Jun 2003
Location: Kinnarps Chair
Posts: 2,548
|
It's still not avisynth.
__________________
VapourSynth - proving that scripting languages and video processing isn't dead yet |
19th September 2015, 22:38 | #46 | Link |
Useful n00b
Join Date: Jul 2014
Posts: 1,667
|
Things are looking real good, guys and gals. I am playing video with random access from a .vpy script with 64-bit DGDecodeNV.dll.
The only stuff left is to change the bitblt's for pulldown to Vapoursynth ones (AVSenv->BitBlt is obviously not available) and to implement the debug overlay. Then it's done! Last edited by videoh; 19th September 2015 at 22:41. |
20th September 2015, 02:04 | #49 | Link |
Useful n00b
Join Date: Jul 2014
Posts: 1,667
|
Here is some tasty DGDecodeNV cooked Vapoursynth-style. Your test results will be appreciated. The standard DGIndexNV should be used for indexing. Note that hinting is gone for Vapoursynth as it will be converted to use Vapoursynth per-frame properties.
http://rationalqm.us/misc/DGDecodeNV_Vapoursynth.zip This is a dual-function DLL for both Avisynth and Vapoursynth. Sample script: import vapoursynth as vs core = vs.get_core() core.std.LoadPlugin('dgdecodenv_vs64.dll') ret = core.dgdecodenv.DGSource('alba.dgi',debug=1) ret.set_output() Last edited by videoh; 20th September 2015 at 02:16. |
20th September 2015, 18:00 | #54 | Link |
Pig on the wing
Join Date: Mar 2002
Location: Finland
Posts: 5,718
|
Thanks for the test build Unfortunately it might take me a while to get to test it so you'll probably end up releasing a final build before that.. Nevertheless, great job once again!
__________________
And if the band you're in starts playing different tunes I'll see you on the dark side of the Moon... |
3rd October 2015, 10:04 | #56 | Link |
Pig on the wing
Join Date: Mar 2002
Location: Finland
Posts: 5,718
|
I didn't want to open a new thread so I'm posting this here since it seems to concern DGSource.
With a simple script, Code:
import vapoursynth as vs core = vs.get_core() clp = core.dgdecodenv.DGSource('L:\ALL_ABOUT_EVE\eve.dgi') clp.set_output() I checked on a different source I happened to have on my computer, and it doesn't have any problems. I'm using Vapoursynth R28RC1 with Python 3.5 and the latest slipstream of DGDecNV. Can you verify if this is more likely related to VS itself or DGDecNV?
__________________
And if the band you're in starts playing different tunes I'll see you on the dark side of the Moon... |
3rd October 2015, 10:43 | #57 | Link |
Professional Code Monkey
Join Date: Jun 2003
Location: Kinnarps Chair
Posts: 2,548
|
I added an extra check in r28 to make sure a certain framerate only has one representation. It makes checking for the same framerate much easier. Use vs_normalizeRational on the framerate field and it will work.
This change was made to fix things like 60000/2002 not being considered equal to 30000/1001.
__________________
VapourSynth - proving that scripting languages and video processing isn't dead yet |
3rd October 2015, 12:15 | #59 | Link |
Useful n00b
Join Date: Jul 2014
Posts: 1,667
|
It's more than odd. Vapoursynth now breaks working filters "to make things easier". It's a terrible precedent that evolution of Vapoursynth can break filters.
If Vapoursynth detects a "non-normalized framerate" (whatever that may be, I have seen no formal explanation) then why can't Vapoursynth normalize it internally if it needs to do so? Instead of having the code once, you require every source filter writer to do it? And for me it's not just the source filter; the indexer component will need to be changed as well (I'm not going to report one frame rate through the GUI and index file and then give a different one to Vapoursynth). Vapoursynth has code to detect a non-normalized rate and throw an error, but not to normalize it? Vapoursynth can't call vs_normalizeRational() itself on the incoming frame rate? That is bizarre. And what if a stream actually carries a non-normalized framerate? The source filter has to lie about it? I'm not just talking about multiples but also small deviations from exact rates. Speaking for myself, I have no intention of modifying DGDecNV this way, so if things stand then DGDecNV will be unusable in Vapoursynth (and I'll have a bad taste in my mouth about spending my time supporting Vapousynth). At least I'll save some time by not having to do it again for DGDecIM. Last edited by videoh; 3rd October 2015 at 12:59. |
3rd October 2015, 13:24 | #60 | Link | |
unsigned int
Join Date: Oct 2012
Location: 🇪🇺
Posts: 760
|
Quote:
This isn't about small deviations from "exact" rates. You simply need to pick the smallest pair of numbers that represent your frame rate, e.g. 24000/1001 rather than 120000/5005. That's all there is to it. It's one additional line in the VapourSynth filter, and maybe 10 in the indexer, if you copy vs_normalizeRational..
__________________
Buy me a "coffee" and/or hire me to write code! |
|
Thread Tools | Search this Thread |
Display Modes | |
|
|