View Full Version : DGAVCDecNV 1.0.13: GPU decoding on Nvidia
squid_80
25th April 2009, 12:35
neuron2: Are you aware that due to a limitation of the nvcuvid decoder, clips with 16 reference frames are not decoded correctly?
Guest
25th April 2009, 13:53
I wasn't aware of that. Anyway, who would use 16 refs? Think of the massive DPB that would require.
squid_80
25th April 2009, 14:07
I fully agree, FWIW. Unfortunately people still do it.
The problem isn't the total size of the DPB (although it can be on cards with only 256MB), it's mainly due to windows/DXVA only allowing a DPB made up of 16 frames. In theory this is ok since non-ref B frames can bypass the DPB but this isn't how the nvcuvid decoder works - every frame is decoded via the DPB and if there's no free slot (all filled with reference frames) artifacts show up.
Manaka
28th April 2009, 07:40
Does DGAVCDECNV support x64 ? If yes I can try it on my Vista x64 with x264 x64. And I wonder about speed increase compare with ffdshow. thanks
forgive my bad english
Guest
28th April 2009, 13:59
People are running it successfully on x64, though I do not have an x64 machine.
Depending on your machine, you may get a performance increase for transcoding, but you also may get only a very small increase.
xopowo
2nd May 2009, 02:28
Yes, it works very well on an x64 platform. I have tested with Xp, Vista, and Windows 7 64-bit Operating Systems.
yesgrey
2nd May 2009, 20:44
I was backing up a movie using DGAVCDecNV for frame decoding and today, in the morning, after several x264 hours, when I looked into the computer I had a dialog stating that there was some cuda error decoding the frame. Everytime I closed the dialog, a new one appeared. I had to abort the encoding. After this I have opened the Avisynth script in VirtualDub to see if there was any error decoding the frame in which the encoding stopped, but there was no problem, it worked flawlessly.
It was my first real encoding using DGAVCDecNV. Before this, I have tryed it with small video segments and worked good. Only now, during a full movie encoding, this happened.
Any idea what could have happened?
some cuda error Next time write it down and report what it is.
squid_80
3rd May 2009, 04:04
Any idea what could have happened?
Try disabling your screen saver.
yesgrey
3rd May 2009, 13:45
Next time write it down and report what it is.
Is there any list of the possible errors available? If I see it, I can recognize it...
I think it was something like:
error.cuda.framedecoder():confused:
Try disabling your screen saver.
Is disabled.
yesgrey
4th May 2009, 10:00
I was backing up a movie using DGAVCDecNV for frame decoding and today, in the morning, after several x264 hours, when I looked into the computer I had a dialog stating that there was some cuda error decoding the frame.
Try disabling your screen saver.
I think I have discovered what happenned...
Yesterday I started the compression job again. At night, when I decided to go to bed and leave the PC running for the night, I was going to hit Ctrl+Alt+Del to keep the PC in locked mode. Then I remember the tip from squid_80, about the screen saver... I have it disabled, but when we hit Ctrl+Alt+Del to lock the PC, it enters a different state, covering the desktop with the login dialog.
I can not test it again right now because I don't want to mess up the encoding again, it already passed the critical point of yesterday.;)
I will test it and update here as soon as I could.
Yes, that is very likely the reason. The video driver gets into a different mode.
yesgrey
5th May 2009, 22:29
I think I have discovered what happenned...
Yes, that is very likely the reason. The video driver gets into a different mode.
I confirm. It was it. We cannot lock our computers while frame serving with CUVIDServer.
When I unlock the computer I have this message on screen:
9857
When I close this dialog, appears this other message:
9858
When I close it, appears the first again, and it keeps like this, always showing both messages, one after the other.
I believe this should be a problem in CUVIDServer. Do you think it could be fixed? If not, I think it's a good idea put a warning in your guides, because it's a bit annoying to crash a long encoding job just because we locked our computers for security reasons...:(
laserfan
5th May 2009, 22:42
Maybe I'm off-base w/this suggestion, but you might want to see if it works to run CUVIDServer as a service:
http://support.microsoft.com/kb/137890
I haven't tried it (yet) myself...
EDIT: Well I tried but was not successful in getting this to work. Maybe it's due to my XP x64 OS, or CUVIDServer itself, or maybe I didn't implement it correctly. Seems like a reasonable thing to attempt for a PC that uses it a lot though!? If anyone else can get it to work by all means please tell. :)
rack04
8th May 2009, 17:26
Is there a way to index only a specific number of frames?
For example:
I've set up a batch file which uses the WriteFile function in AviSynth to identify frame count, frame rate, width, and height of video streams. Currently, I index the entire h264 stream using DGAVCIndexNV, create a AviSynth script, and then feed the AviSyth script to ffmpeg to generate the WriteFile text file. Ideally, I'd like to specify just a few frames to index so this process is quicker. Though I don't know if this is even possible. Thanks.
"%DGAVCIndexNV_PATH%" -i "%INPUT_VIDEO%" -o "%WORKING_DIRECTORY%\%OUTPUT_FILENAME%-output.dga" -e -h
Echo LoadPlugin("C:\Program Files\DGAVCIndexNV\DGAVCDecodeNV.dll")>"%WORKING_DIRECTORY%\%OUTPUT_FILENAME%-analyze.avs"
Echo AVCSource("%WORKING_DIRECTORY%\%OUTPUT_FILENAME%-output.dga")>>"%WORKING_DIRECTORY%\%OUTPUT_FILENAME%-analyze.avs"
Echo WriteFile("%WORKING_DIRECTORY%\%OUTPUT_FILENAME%-framecount.txt","Framecount")>>"%WORKING_DIRECTORY%\%OUTPUT_FILENAME%-analyze.avs"
Echo WriteFile("%WORKING_DIRECTORY%\%OUTPUT_FILENAME%-framerate.txt","Framerate")>>"%WORKING_DIRECTORY%\%OUTPUT_FILENAME%-analyze.avs"
Echo WriteFile("%WORKING_DIRECTORY%\%OUTPUT_FILENAME%-width.txt","Width")>>"%WORKING_DIRECTORY%\%OUTPUT_FILENAME%-analyze.avs"
Echo WriteFile("%WORKING_DIRECTORY%\%OUTPUT_FILENAME%-height.txt","Height ")>>"%WORKING_DIRECTORY%\%OUTPUT_FILENAME%-analyze.avs"
goto ffmpeg
:ffmpeg
"%ffmpeg_PATH%" -i "%WORKING_DIRECTORY%\%OUTPUT_FILENAME%-analyze.avs"
goto end
yesgrey
10th May 2009, 15:40
Feature request: is it possible for you to include in the log file a small list (the higher 5) with the number of the frames that have the maximum bitrate? The higher the bitrate, the more complex the frames should be, so these frames should be a good reference when we are trying to find the apropriate encoding settings...
Kurtnoise
12th May 2009, 14:13
According to the doc for the command line use :
-o filename Name of output index file, including the .dga extension.
it seems that this is not the case with both DGAVCIndex(NV) tools...I tried:
DGAVCIndexNV.exe -i "E:\myfile.ts" -o "E:\myfile" -a -e -h
and dga file extension is missing. On the other hand, if I specify dga file extension for output,
DGAVCIndexNV.exe -i "E:\myfile.ts" -o "E:\myfile.dga" -a -e -h
audio streams extracted have this extension in their file names. This is not the case for DGindex...
Is this intentional ?
Guest
12th May 2009, 14:34
You're supposed to include the .dga but if it then appears in the audio filename, then it's a bug. I'll fix it.
Kurtnoise
12th May 2009, 14:42
Just to be clearer about audio streams...I've got this by example :
myfile.dga PID bc5 L2 2ch 48 160 DELAY -424ms.mp2
Should be better like this:
myfile PID bc5 L2 2ch 48 160 DELAY -424ms.mp2
This occurs only using command line, of course.
:thanks:
D-Train
14th May 2009, 18:45
Has anyone got DGAVCDecNV working with an onboard video card?
I'm looking to pair a mobo w/ onboard GeForce 8200 with an X4 920 2.8GHz processor.
The Nvidia site seems to indicate it would be supported:
http://www.nvidia.com/object/cuda_learn_products.html
One of my requirements for the new build is to frameserve AVC content. A main source for my content are Dish Network captures and I always had problems with the PAFF encoding with DGAVCDec, although I admit I haven't checked for awhile. It sounds like DXVA has better PAFF handling than libavcodec.
Thanks!
The Nvidia site seems to indicate it would be supported:
http://www.nvidia.com/object/cuda_learn_products.html
In addition to CUDA support, DGxxxDecNV also requires VP2/3 video decoding capabilities. Some cards (G80 models) listed on that page only have VP1. However, GeForce 8200 does have VP3, so it should work fine.
This table on Wikipedia is perhaps the most accurate list of video decoding capabilities in current NVIDIA GPUs: http://en.wikipedia.org/wiki/NVIDIA_PureVideo#Table_of_PureVideo_.28HD.29_GPUs
A main source for my content are Dish Network captures and I always had problems with the PAFF encoding with DGAVCDec, although I admit I haven't checked for awhile. It sounds like DXVA has better PAFF handling than libavcodec.
Current libavcodec handles PAFF fine, but DGAVCDec uses an older version that has problems.
halsboss
15th May 2009, 09:46
<snip> on h/w etc. query on license.
Guest
15th May 2009, 14:44
I have a Q6600/8600GT and a Q9540/8800GT with new motherboards (both motherboards, same batch, started to die within a week of each other!) each having dual onboard gigabit NICs. So, if I wanted a license for each, would I donate twice ? One donation gives you all the tools and a reasonable number of machines. I've not stated a limit but if someone asked me for a hundred, I'd start thinking about it. :)
Is the licensing OK with the dual-NICs setup It's treated as multiple machines, so no problem. All your IDs are supported in the one license file, so you can switch NICs on and off without problems. If a re-install changes the MAC addresses as reported by windows then you'll need a new license. This has happened only once.
halsboss
15th May 2009, 14:48
Thanks. Donated about 5 minutes ago. Looking forward to it !! Will be installing it on both PCs (hope it's easy).
Clumpco
15th May 2009, 22:40
Hi,
Me again...
For some strange reason that I can't fathom as yet any .ts that I cut with h264tsCutter throws an error when loaded into DGAVCIndexNV. I have had this problem before and it will probably clear by a re-install of the Haali splitter... HOWEVER, I have instead been using the "F1" option in DGAVCIndexNV to cut my .ts. I need to do this because a) I need to extract subtitles which are in sync and b) I like to keep a 1080p version for my own use. (This is BBC HD btw).
I have noticed that the .ts writing with F1 is painfully slow (12 minutes for 3.5 GB) - I know that it can be done far faster than this, for example TsPlayer that comes with DVBViewer takes about 5 minutes - but the cutting interface is clunky.
Could your future development please look at making this faster?
How about extracting subtitle tracks at the same time as audio when indexing?
Also, when using F1 I haven't yet spotted a way of seeing how the work is progressing.
Keep up the good work!
Cheers
halsboss
16th May 2009, 02:19
Hi neuron2, emailed you back however got this
...@comcast.net
SMTP error from remote mail server after initial connection:
host mx2b.comcast.net [76.96.30.116]: 554 ...
Comcast block for spam. Please see http://help.comcast.net/content/faq/BL000000and comcast.net link says
Our filters have determined that email from your mail server has been sent in patterns which are characteristic of spam. In an effort to protect subscribers, your mail server has been blocked from sending email to the Comcast network. Mail servers are typically shared by many users so it may be the case that another party using your mail server has sent spam, even if you have not. which is annoying since the ISP I use is a large one, it's sort of like blocking the 5th or 6th largest ISP's mail server in this country... grr at comcast. The world must end at their country's borders.
Guest
16th May 2009, 02:37
Send me the PayPal transaction number by PM and I will get you sorted out.
Don
halsboss
16th May 2009, 04:57
This version of DGAVCDecodeNV now uses a server application to decode the AVC video. Therefore, the CUVID Server (CUVIDServer.exe) must be started and left open before DGAVCDecodeNV can be used. If the server is not running then DGAVCDecodeNV will throw an error to Avisynth saying that the server is not running. Additionally, to prevent collisions at the GPU decoder, ensure that DGAVCIndexNV is closed before starting the CUVID Server.
Does this mean that it's limited to one-at-a-time decoding of .dga files into AVIsynth ? I sometimes have multiple re-encodes going, to chew up the cores a bit :)
Guest
16th May 2009, 05:27
Yes, one at a time. And don't try to use the VP2 engine for anything else at the same time.
halsboss
16th May 2009, 08:46
I searched but may have missed comments on SetMTmode.
SetMTmode(mode=5,threads=4)
SetMemoryMax(256)
LoadPlugin("C:\software\DGindex\DGAVCDecodeNV.dll")
AVCSource("G:\DVD\test.dga",deinterlace=1)
AssumeFPS(25)
#info()
An out-of-bounds memory access (access violation) occurred in module 'DGAVCDecodeNV'...
...writing address 07600004.
It works without SetMTmode; un-commenting SetMTmode makes it freeze and crash. Any way to make SetMTmode work too ?#SetMTmode(mode=5,threads=4)
SetMemoryMax(256)
LoadPlugin("C:\software\DGindex\DGAVCDecodeNV.dll")
AVCSource("G:\DVD\test.dga",deinterlace=1)
AssumeFPS(25)
#info()
Breathtaking result though. It really speeds along when just shrinking a HDTV sized mkv to SD mpv with HC. I'm pleased as punch.
XP-sp3, 8800GT, Nvidia driver 185.85, tsp's MT avisynth.
PS an extract of a .bat I use; I drop the .dga on it and eventually it gets to here:
START /b "CUVIDServer.exe" "C:\software\DGindex\CUVIDServer.exe"
"C:\software\HC\HC022\HCenc_022.exe" -ini "%InputHC%"
where the .INI contains the settings for that encode. I must find out how to make the NV server component automatically terminate after a encode; use PSkill probably.
kemuri-_9
16th May 2009, 17:19
It works without SetMTmode; un-commenting SetMTmode makes it freeze and crash. Any way to make SetMTmode work too ?
If my understanding is correct, SetMTMode would violate
Yes, one at a time. And don't try to use the VP2 engine for anything else at the same time.
as it's doing multiple accesses to the VP engine simultaneously.
You may just have to use MT() instead.
halsboss
17th May 2009, 01:19
If my understanding is correct, SetMTMode would violate ... as it's doing multiple accesses to the VP engine simultaneously.Oh. Of course. You may just have to use MT() instead.Thanks, yes have some scripts, must find the time to fiddle with them.
Hello.
I have a simple license question to neuron2: is there any trial or test version of dgavcdecnv that runs for a week or so? I need to test the benefit of cuda enabled decoding before i invest in an nvidia graphic card. Thanks
Guest
18th May 2009, 00:28
No trial version is available. If you need it you'd know. :)
halsboss
19th May 2009, 15:52
Searched the thread for vfr and couldn't find it. If Mediainfo says an MP4 source is
Frame rate mode : VFR
Frame rate mode : Variable
Frame rate : 23.976
Frame rate : 23.976 fps
Minimum frame rate : 23.810
Minimum frame rate : 23.810 fps
Maximum frame rate : 24.390
Maximum frame rate : 24.390 fps
and using coreavc-haali's GDSMux to convert that to an MKV which DGAVCDecNV likes, and mediainfo then says is
Frame rate mode : VFR
Frame rate mode : Variable
Then what will avisynth make of the AVCSource of the .dga produced from the MVK ? Will avisynth think it's 23.976 ? If I do assumefps(29.976) will everything turn out OK ?
Oh, just opened the log and it says
Stream Type: Matroska
Profile: Main
Level: 3
Frame Size: 852x480
SAR: 1:1
Display Size: 852x480
Frame Rate: 25.000000 fps
Colorimetry: BT.709* [2]
Frame Structure: Frame
Frame Type: I
Coded Number: 92708
Playback Number: 92708
Frame Repeats: 0
Field Repeats: 0
Bitrate: 0.034
Bitrate (Avg): 0.678
Bitrate (Max): 2.900
Audio Stream: 2: A_AAC 44100 2ch "eng"
Elapsed: 0:01:19
Remain: 0:00:00
FPS:
Info: Finished! which I guess means it isn't going to work. Am open to suggestions.
Guest
19th May 2009, 21:14
It defaults to 25 because the AVC stream does not specify the frame rate. Try forcing it to 23.976 in your script and see what happens.
Clumpco
20th May 2009, 10:03
Hello.
I need to test the benefit of cuda enabled decoding before i invest in an nvidia graphic card. Thanks
Let me assure you that the benefit is AWESOME.
On a Q6600 with a 9600GT a 720p-3.5Mb/s encode goes from 7-12 fps to 37-42 fps.
halsboss
20th May 2009, 12:42
I am well pleased, both with the nvidia card and the NV version. BTW, if you compare the raw throughput of various nvidia cards you may be surprised at the 9x series vs the 8x series http://www.nvidia.com/HelpMeChoose/fx/HelpMeChoose.asp and value for money. You may get more of a bargain than some think. Just ensure you get one with VP2/VP3 http://en.wikipedia.org/wiki/PureVideo#Table_of_PureVideo_.28HD.29_GPUs
D-Train
23rd May 2009, 19:00
In addition to CUDA support, DGxxxDecNV also requires VP2/3 video decoding capabilities. Some cards (G80 models) listed on that page only have VP1. However, GeForce 8200 does have VP3, so it should work fine.
Thanks NM. Just to follow up I did end up getting the motherboard (ASUS M3N78-EM with NVIDIA GeForce 8300) and DGAVCDecNV works great. With my dish rips (1440x1080 16:9) the frame rate with display disabled is about +/- 60 fps and with a blu ray rip about +/- 50 fps. Thanks neuron2 working great so far.
Audionut
26th May 2009, 07:28
Sorry if this has been asked before. Any plans to support .mpls?
Guest
26th May 2009, 14:17
What kind of support are you looking for?
Audionut
26th May 2009, 14:38
For blu-rays with movie spread across multiple m2ts. Ability to load the mpls instead.
My current workflow is to use bdinfo to check which m2ts file is the main movie or if the movie is spread across multiple m2ts files then use eac3to to load the mpls and demux the streams resulting in 1 h264 file, then using dgdec.
I don't seem to have luck using your tools to load the parts. In fact I just tried again and dgdec only seeks the first loaded m2ts file. No crashes or errors. But wont seek (or more correctly, doesn't display) 2nd, 3rd etc m2ts files.
Ideally, it would be nice to have dgdec list the movie playlists (mpls) so I could pick the main movie without the need of other tools. But I think that is out of the scope of your tools.
Could be worth another donation though. :)
edit: I just checked and it only indexes the first loaded file too.
Deinorius
26th May 2009, 15:05
Or you can mux the .mpls with tsmuxer to a .ts or .m2ts file. DGAVCIndex supports .m2ts, so you can index it and demux audio stream. Works without problems.
Audionut
26th May 2009, 15:16
Or you can mux the .mpls with tsmuxer
Yes, I could do that too. But I am requesting support from dgdec tools to minimize 3rd party tools.
Guest
26th May 2009, 15:44
It's a reasonable request.
I am already working on supporting multiple input files, so it may not be a big step to parse the playlist files.
Audionut
26th May 2009, 16:05
Thanks Don,
Now a little error report.
http://www.users.on.net/~audionut11/0.6.mkv
Frames 2193-2214
http://www.users.on.net/~audionut11/error.PNG
Stepping forward through frames is fine. Stepping backwards from frame 2216 is fine. Go say 15 frames forward and then step back at speed results in frames 2193-2214 looking like the screen shot above.
Encode settings don't matter. Here is a screen shot from the same frame range using significantly different encode settings.
http://www.users.on.net/~audionut11/error3.PNG
Guest
26th May 2009, 17:06
Does it happen with the demuxed ES?
Audionut
26th May 2009, 17:17
Yes..
opieant
3rd June 2009, 18:04
I didn't notice any reports in this thread on how DGAVCDecodeNV and DGAVCIndexNV behave on Windows 2000 so here's what they do for me:
DGAVCIndexNV opens normally, but when attempting to open an H.264 TS video the error message "GPU decoder: Failed to create video decoder [100]" appears. After clicking OK to the error dialog, nothing shows up in the DGAVCIndexNV window. The PIDs can be seen via the Stream menu options and the project can be saved, but the window cannot be closed normally (File -> Exit and the X just freeze the application).
Running CUVIDServer and using DGAVCDecodeNV.dll to open the project results in a "Failed to create video decoder" error in VirtualDub. This also causes VirtualDub to freeze and CUVIDServer to crash silently.
The same video plays back perfectly fine with the Cyberlink decoder under 2000. It also opens up with video in the normal DGAVCIndex under 2000, but doesn't decode properly, hence the interest in using DGAVCIndexNV.
Note that running an upgrade to XP on top of the 2000 installation without making any other changes results in DGAVCIndexNV, DGAVCDecodeNV, and CUVIDServer all working properly. Keeping XP installed on the PC I tested this on is not an option though.
I would be more than happy to help with any testing that might get DGAVCIndexNV running under 2000, but I won't be too surprised or disappointed if compatibility with it is a low priority.
vBulletin® v3.8.11, Copyright ©2000-2026, vBulletin Solutions Inc.