View Full Version : DGAVCDecNV 1.0.13: GPU decoding on Nvidia
Guest
14th September 2008, 15:43
I didn't mention that it plays fine using alpha 1 and it doesn't play at all using alpha 2 (tested with deinterlacing enabled and disabled). I accidentally had playback speed set to single step in the shipped INI file for alpha 2. Can you check that?
Best to delete the INI file and let a new one be created.
Yoshiyuki Blade
14th September 2008, 16:11
Glad to report that everything works fine on an 8400M GS, using Vista32.
lucassp
14th September 2008, 16:24
I accidentally had playback speed set to single step in the shipped INI file for alpha 2. Can you check that?
Best to delete the INI file and let a new one be created.
Thanks! It works fine now :)
steaa
14th September 2008, 16:27
Initally the application gave the "cuInt failed (100)" error when starting it up, and then when loading a file it gave the message "GPU decoder: Failed to create video decoder.". After copying the DLL files to System32 also, I had the same result.
I removed the dll files from System32 and then after installing CUDA driver and toolkit, it opened fine and loaded a file OK without any problem.
Nvidia 9600GT / Q6600 G0 Stepping / Windows XP (32Bit)
Results for BBC HD stream (1080i) -
Display enabled - 43 ~ 45fps. CPU - ~23%
Display disabled - 62 ~ 65fps. CPU - ~8%
Results for HD Suisse stream (720p) -
Display enabled - 71 ~ 74fps. CPU - ~23%
Display disabled - 106 ~ 113fps. CPU - ~7%
Guest
14th September 2008, 16:48
Thanks, guys.
DGAVCDecodeNV is well along. I expect to have an alpha in a day or two.
Ranguvar
14th September 2008, 18:23
Followed kemuri's instructions, but I still get artifacts with the non-lossless Touhou (link posted a while back), and the ther bugs mentioned in my first post. I also have the problem where eventually, it refuses to start, and I need to reboot.
Indexed with DGAVCIndex and decoded with DGAVCDecode: http://i37.tinypic.com/4qk6f8.png
Snapshot of the preview in DGAVCIndexNV (I had no way of playing the DGAVCIndexNV DGA, of course, so the flaw may only be in the preview): http://i36.tinypic.com/26449e1.png
I did not try DGAVCIndex's preview to see if it also has the flaw, as it does not let me seek to a specific frame, or even do anything to seek besides huge jumps and playback/pause.
Obviously, one uses different YV12 coefficients, but that's beside the point. Look at the bullets fired from the player. And no, this is not the lossless video, this is a "normal" H.264 stream. Other frames exhibit problems, too.
Alpha 2 used, w/o deinterlacing.
Sagekilla
14th September 2008, 20:12
Just would like to say, thanks for such a wonderful creation :) Greatly appreciate having hardware decode of H.264 for transcoding.
Guest
14th September 2008, 22:20
@Ranguvar
Please tell me what artifacts you are talking about. I looked at both your PNGs and I don't see anything. It's so frustrating when people just post a screenshot and go "see!". Make a circle around it or say it in words. I'm not a mind reader.
Ranguvar
14th September 2008, 22:26
There are huge differences between the correct DGAVCIndex one and the bad DGAVCIndexNV one.
DGAVCIndex (correct): http://i37.tinypic.com/4qk6f8.png
DGAVCIndexNV (modified to show artifact areas): http://i38.tinypic.com/2s7gkkj.png
G_M_C
14th September 2008, 22:32
Don't know if this is relevant or not; But does this new version have the same "DXVA"-limitations as other HW-assisted/DXVA decoders ?
i.e. Does it do L 5.1 x264's as well ?
Zwitterion
14th September 2008, 22:40
There are huge differences between the correct DGAVCIndex one and the bad DGAVCIndexNV one.
DGAVCIndex (correct): http://i37.tinypic.com/4qk6f8.png
DGAVCIndexNV (modified to show artifact areas): http://i38.tinypic.com/2s7gkkj.png
Probably the video can't be decoded by the GPU. I doubt that this is DGAVCIndexNV's fault. Try running it in MPC-HC and check the MPC Video Decoder whether DXVA is enabled or not.
It would be great if DGAVCIndexNV contained a check, so that people don't accidentally decode unsupported streams.
CruNcher
15th September 2008, 00:46
Yeah people create all kind of complexitys that are just to much for sane Hardware Decoders :) these block failures look exactly like the ones i experience with some X264 content and CoreAVC though might be not of the same nature but indeed ffdshow (libavcodec) doesn't show these kind of errors as it has a very primative error correction and can hide stream errors to some degress it seems (same for Mainconcepts Decoder) and these errors can also directly happen in the encoder not only because the stream has been damaged @ the transport. So i guess it would hide such occasional block errors very well from the viewer, CoreAVC can't do this but i guess Nvidias Hardware Decoder should also be able todo it like libavcodec does, as they expected it's being used for DVB watching :)
Guest
15th September 2008, 01:54
I see the artifacts now. Thank you.
I have a directory where I am collecting bad streams for CUDA. This has joined the collection. I'll be sending them to Nvidia for analysis. They've already fixed one bug exposed by some of my streams.
Ranguvar
15th September 2008, 05:07
Thanks very much :)
AtomX
16th September 2008, 00:40
So I realize that I'm being impatient, but I can't help but try and feed my curiosity. Has there been any progress on the decoder DLL? I'm really excited to start playing around with it.
Guest
16th September 2008, 00:48
Posted one day ago:
http://forum.doom9.org/showthread.php?p=1183558#post1183558
What do you want, hourly updates? I do have a life, you know. :)
It's basically working but there are some hangs on seeking that I am working on. If I don't sort it out in a few days I'll put out an alpha that at least does straight linear encode so that you can assess the effectiveness of the entire process when transcoding.
kemuri-_9
16th September 2008, 00:57
It's basically working but there are some hangs on seeking that I am working on. If I don't sort it out in a few days I'll put out an alpha that at least does straight linear encode so that you can assess the effectiveness of the entire process when transcoding.
sweet... looking forward to that at least.
AtomX
16th September 2008, 01:34
Posted one day ago:
http://forum.doom9.org/showthread.php?p=1183558#post1183558
What do you want, hourly updates? I do have a life, you know. :)
It's basically working but there are some hangs on seeking that I am working on. If I don't sort it out in a few days I'll put out an alpha that at least does straight linear encode so that you can assess the effectiveness of the entire process when transcoding.
Heh sorry to come off as a pest. As I said, I knew I was being impatient. Just excited to hear about progress, not trying to rush you at all.
Guest
16th September 2008, 02:14
I've just now found and fixed the problem with random access. I haven't coded anything for end of file yet so it just blows up. That shouldn't take me long. Looks good for an alpha tomorrow. The CUDA engine is a finicky beast and you have to get all your ducks in a row to reset it gracefully for a seek.
Ranguvar
16th September 2008, 02:51
Excellent! I remember that one. Does it also fix the error message pop-ups if you quit while playing?
Guest
16th September 2008, 03:49
Excellent! I remember that one. Does it also fix the error message pop-ups if you quit while playing? I don't know what you are talking about.
Ranguvar
16th September 2008, 11:12
2.) If I play either of those samples in the indexer, and then quit before stopping playback (with display on) I usually get the errors "cuvidMapVideoFrame: 201" and the same with the number 205, after I exit.
blahforcharacterlimit
Guest
16th September 2008, 13:40
That's in DGAVCIndexNV and I was talking about a fix to DGAVCDecodeNV. Still, I have managed now to duplicate it and I'll fix it. Thank you for reminding me about it.
Guest
17th September 2008, 14:51
Everything was looking good. I could open my indexed stream in VirtualDub, play and preview, and seek around.
Then I decided to try an encode. I fired up HCEnc and started an encoding. As the second pass began, HCEnc started reporting a mismatch in the number of frames between the first and second passes. Hmm, that's odd. And the resulting M2V was garbage.
Then I tried a simple HUFFYUV encode in VirtualDub. Worked great. Then a Cedocida DV encode. Worked great. Note that these are one-pass codecs.
Then I tried MeGUI with CE-Baseline. It crashed when I added the job to the queue. Then I tried DivX. It crashed.
So now I'm thinking, these guys are opening the AVS file twice or something, creating multiple instances of AVCSource(). So I opened the script in VirtualDub. Fine. Then I opened it again in VirtualDub, leaving the first one open too. Oops. The timeline looked just like the garbled M2V from HCEnc.
So the situation now is that I will try to verify my theory about the multiple opens and see if there is any mitigation for it (floating CUDA contexts?).
But be aware this has a strong potential to be a deal killer.
kemuri-_9
17th September 2008, 15:05
so there's a restriction that can only have one instance of the script open at once?
that shouldn't stop you from continuing to develop it, many encoders encode to lossless (ffvh, ffv1, lags, etc.) first
then encode the lossless in their lossy encoder of choice, so they wouldn't have problems using it.
Sharktooth
17th September 2008, 15:13
neuron2 cant you just fake the instances? i mean if the AVCSource() is using the same input, just redirect the second or nth instance to the first...
Guest
17th September 2008, 15:49
neuron2 cant you just fake the instances? i mean if the AVCSource() is using the same input, just redirect the second or nth instance to the first... I was thinking about that on the drive to work. I'll see if it can work. As long as the instances don't try to operate at the same time, it could be OK.
Meanwhile, do you know how MeGUI works inside? Am I correct that it opens the script several times? Why would it crash when I just add the job to the queue?
Sharktooth
17th September 2008, 16:01
yes, it opens several times coz before enqueuing the script is alredy open for displaying the preview. also megui stores 2 custom variables in the avs script for AR.
so when you hit enqueue the script is opened again for reading those vars and other stuff.
however the lack of multi-tasking (or multi-instancing) in cuda is quite a limiting factor.
Guest
17th September 2008, 16:12
yes, it opens several times coz before enqueuing the script is alredy open for displaying the preview. also megui stores 2 custom variables in the avs script for AR.
so when you hit enqueue the script is opened again for reading those vars and other stuff.
however the lack of multi-tasking (or multi-instancing) in cuda is quite a limiting factor. Ouch. CUDA can allow multi-instancing through floating contexts. I'll have to see if I can get it working. Every CUDA context switch would have to force the filter into seek mode.
After more thought, I don't think you can redirect an open filter instance to another one. I'd have to ask IanB about it, but I don't think Avisynth has that capability.
Quark.Fusion
17th September 2008, 16:49
How it will behave if another program uses CUDA? (i.e. F@H)
Sagekilla
17th September 2008, 16:59
Neuron2: Would you keep it still though, even if it completely bombs on 2-pass? There's still HUGE benefit for transcoding to an intermediary formats or for 1-pass CRF in x264.
I still would love to have a GPU accelerated decoder that can work for 1-pass CRF.
Edit: Any chance I could get my hands on that dll? ;)
Guest
17th September 2008, 17:21
Let me try it with 1-pass CRF and if it's OK I'll let you have it.
Sagekilla
17th September 2008, 17:24
Thanks! :) Greatly appreciate it.
Edit: neuron2, the behavior you describe effectively makes AVCSource() non-deterministic when it's called multiple times, correct?
Quark.Fusion
17th September 2008, 17:24
I think you can do two pass with that behaviour if you restart program before second pass.
Guest
17th September 2008, 17:59
I think you can do two pass with that behaviour if you restart program before second pass. Please pay attention. You cannot even queue the job in MeGUI.
Guest
17th September 2008, 18:01
x264 1-pass CRF encode works fine. I got 60 fps encode rate for 640x480 material. I don't normally do encodes, so I don't know if that is good.
I'll give it out this evening.
crypto
17th September 2008, 18:24
@neuron
Thanks for the update. I can't wait to check it out. Single instance should be ok for me.
CruNcher
17th September 2008, 18:39
thx neuron, that's great news these days 2pass encoding is anyways slowly dieing :)
kemuri-_9
17th September 2008, 19:25
thx neuron, that's great news these days 2pass encoding is anyways slowly dieing :)
uhhh no, plenty of people still use 2pass, it'll never die.
Quark.Fusion
17th September 2008, 19:31
Please pay attention. You cannot even queue the job in MeGUI.
Sorry, I'm using console, so just don't understand why it may fail in it (and I don't have build to test). Hope you will fix bug.
Guest
17th September 2008, 19:40
OK, I see. Sorry for my confusion. I'll try a 2-pass with x264 CLI tonight and let you know what happens.
Sagekilla
17th September 2008, 20:02
@kemuri-_9: That may be true, but crf is a very attractive alternative if you want a slightly faster encode (especially with prefiltering, or transcoding HD content) with consistent quality across the whole encode. Both are valid for what they're best in (2-pass for specific size, crf for specific quality).
Guest
17th September 2008, 20:12
Guys, please take 2-pass argument elsewhere.
Guest
18th September 2008, 02:49
Validated for x264 CLI one pass only:
http://neuron2.net/misc/DGAVCDecodeNV.zip
DO NOT post bug reports about this not working with MeGUI, etc.
This version will expire on 9-30-08. I hope to have a multi-instance version by then.
kemuri-_9
18th September 2008, 03:13
sweeeeeeeeeeeeeeeeeeeeeeeeeeeeeetttttttttttttttttt
Guest
18th September 2008, 03:34
Oops, redownload to get the users manual.
Set deinterlace=true for PureVideo deinterlacing. I'll be curious to see comparisons to Yadif, etc. It looks good to me, but remember a) I haven't used the fancy decombers a lot, and b) I'm a geezer; my eyes don't work good.
rack04
18th September 2008, 04:20
First of all, I want to personaly thank you for all your hard work. When I place the dll file into my avisynth plugin directory and load MeGUI avisynth script creator I get the following error message:
http://i11.photobucket.com/albums/a199/rack04/untitled-2.jpg
Now before you jump to conclusions, no I'm not trying to encode using the .dll. I'm not trying to create a script using the dll, though it appears that the dll file is automatically loaded.
Guest
18th September 2008, 12:55
http://neuron2.net/misc/NV.zip
Zip password is gpudecode
Put nvcuvid.dll somewhere in your DLL search path. System32 is good.
Preliminary tests indicate little significant speedup versus software decoding. Let's see what some other people achieve.
This is intended for testing with X264 CLI one-pass only. Do not put it in your Avisynth plugins directory. Do not try to use it with any GUI. Posts reporting issues with that will be ignored.
Audionut
18th September 2008, 13:23
Thanks. Your efforts are appreciated.
Snake91
18th September 2008, 14:03
System:
Windows XP SP3
nvidia 8800GT 1GB
ForceWare 177.98
Q6600 2.8Ghz
Playing speed: 43-60 fps (min-max), I tested on BD streams (Jumper and Transformers)
CPU usage: 4%
But when I try to save the project I get the usual cpu utilization (about 25% on only 1 core) and decoding speed
Thanks for your work
vBulletin® v3.8.11, Copyright ©2000-2026, vBulletin Solutions Inc.