View Full Version : DGMPGDecNV 1.0.2
Sharc
10th April 2009, 16:24
Not sure why there isn't more excitement about this ....
I wasn't aware of its existence. Sure I will try it. It should greatly simplify the process. Thanks neuron2.
CruNcher
11th April 2009, 05:50
Don is there no way to use the Deinterlacer independent from the input ?
Guest
12th April 2009, 17:11
Don is there no way to use the Deinterlacer independent from the input ? Sorry but I don't understand the question. Can you clarify it please?
CruNcher
13th April 2009, 09:47
independent of the supported Video formats for any loaded Video :) something like nvdeint()
Varies
13th April 2009, 10:28
yeah :D and something like nvaaa() for nv hardware antialliasing :)
UsedUser
14th April 2009, 00:30
independent of the supported Video formats for any loaded Video :) something like nvdeint()
It would be useful in creating a generic AVS script, particularly for use with MeGUI, where it would be easier to create an AVS template with separate <input> and <deinterlace> sections.
yeah :D and something like nvaaa() for nv hardware antialliasing :)
See below.
There is a low-level API for using video decoding called CUVID. This API does not allow for controlling the postprocessing beyond enabling the PureVideo deinterlacer. I can ask Nvidia if it will ever be augmented, but right now there is no way for me to enable anything else through the CUVID API.
Blue_MiSfit
18th April 2009, 01:14
Hi neuron2,
Any plans for supporting 4:2:2 MPEG-2?
I'd imagine it's up to nVidia, but just thought I'd check :)
I have lots of 4:2:2 content, and would love to be able to run it through DGMPGIndexNV, and then decode with hardware deinterlacing!
~MiSfit
Guest
18th April 2009, 03:06
No plans until the API supports it.
UsedUser
19th April 2009, 23:43
That stream is hard telecined. You can tell that because it has the field pattern of 3:2 pulldown but when you preview it in DGMPGDecNV, the Field Rpts box stays at zero. Since there is no soft pulldown, there is nothing to honor or ignore, and those modes are irrelevant, as I said in my first reply.
...
Good to see that you are a seeker after truth, and value straight talk. :)
Seeking more truth. :)
I have another clip that shows 59% video in the d2v. The Field Rpts value does increment in DGIndex and in DGMPGIndexNV with PureVideo deinterlacer off. If I enable the single rate PureVideo deinterlacer, the Field Rpts value does not increment.
1) How do you determine the field pattern?
2) Do I want to enable the PureVideo deinterlacer when I create the dgm, if I intend to enable it in my AVS script, or doesn't it matter?
3) What else do I need to know to determine whether I should A) rely on the IVTC done by DGMPGDecNV ignoring the pulldown flags, and that's enough, B) use an external IVTC filter, or C) deinterlace (with PureVideo)?
Clip: http://www.mediafire.com/?sharekey=e967b615389dce0b391d7d881749d3a7e04e75f6e8ebb871
Guest
20th April 2009, 00:58
1) How do you determine the field pattern? http://neuron2.net/faq.html questions 1 and 2. This is an interesting clip. If you save project in DGIndex with Honor Pulldown Flags, you get the classical 3:2 field pattern, but it is achieved with a mix of hard and soft telecine. Therefore, this works:
telecide()
decimate()
Note that I said DGIndex! This clip cannot be handled properly with DGMPGDecNV (yet). Honoring of pulldown is not yet supported, so that won't work. And Ignoring won't work either, because there is a mix of hard and soft. And Force Film isn't implemented. So I need to add the proper modes as in DGIndex. I'll bump that up in priority as I see that DGMPGDecNV is being used for TS in addition to the BluRay M2TS that I intended it for.
[2) Do I want to enable the PureVideo deinterlacer when I create the dgm, if I intend to enable it in my AVS script, or doesn't it matter? Never deinterlace clean progressive material! Anyway, the setting in DGMPGIndexNV does not alter the DGM file. You would need to enable it in your DGSource() involation, but as noted, not for this case.
UsedUser
20th April 2009, 07:17
This is an interesting clip. If you save project in DGIndex with Honor Pulldown Flags, you get the classical 3:2 field pattern, but it is achieved with a mix of hard and soft telecine.
Thanks. I know it uses soft pulldown because of the Frame Rpts value; how can I know it's also using hard pulldown? Create another d2v, but with Ignore Pulldown Flags, and I should see the 3:2 field pattern disappear?
Never deinterlace clean progressive material! Anyway, the setting in DGMPGIndexNV does not alter the DGM file. You would need to enable it in your DGSource() involation, but as noted, not for this case.
Knowing this clip is progressive 3:2, it needs IVTC, not deinterlacing - you taught me that lesson last time. ;) Because I was seeing different field repeat values depending on the PureVideo setting, I just wanted to know if it affected the outcome.
Guest
20th April 2009, 13:12
how can I know it's also using hard pulldown? Use the method at the link I gave you. If you see the constant 3:2 field pattern but not all the duplicated fields are done with flags, then the only way for the remaining duplicates to be created is by hard copying.
Because I was seeing different field repeat values depending on the PureVideo setting, I just wanted to know if it affected the outcome. I'm not seeing that with your sample, and there's no reason for it to happen. Please check again.
Fotis_Greece
21st April 2009, 16:35
I am a bit confused. I have donated for a license, can I use this license also for your other tools DGAVCDecNV and DGVC1DecNV?
And since DGDecodeNV works with all three programs (or am I wrong?) why don't you just "merge" them into one powerful application?
BTW nice work. Would it be possible to allow multiple selections of the loaded video so we could just ommit the commercials and then just deinterlace and save as mpeg2 ready for dvd authoring?
Guest
21st April 2009, 17:41
I have donated for a license, can I use this license also for your other tools DGAVCDecNV and DGVC1DecNV? Yes. It says that at the web site. But feel free to make multiple donations if you prefer. :)
And since DGDecodeNV works with all three programs (or am I wrong?) why don't you just "merge" them into one powerful application? It's an ongoing process. I did the DLL first. I'm working on combining the indexers.
Would it be possible to allow multiple selections of the loaded video so we could just ommit the commercials and then just deinterlace and save as mpeg2 ready for dvd authoring? The problem with it is you could get orphaned frames that decode with macroblocks if you cut at open GOPs. I have an idea to make it work by replacing all the orphans at all the cut points with copies of the first decodable frame. Can't say when I might get to it though as these days half my time is going to theoretical physics simulations.
Fotis_Greece
21st April 2009, 22:24
Thanks neuron, and some last question (since I still wait for the license file so I cannot really test). When I load a m2ts (from HDV camcorder) file and select to enable deinterlacer and I click save and demux the resulting m2v video file is deinterlaced and there is no need to deal with dgdecode.dll and avisynth and cuvid server. Right?
So will the resulting video file be 1440x1080 25p (PAL country here)?
The original HDV is 1440x1080 50i (upper field first)
tre31
21st April 2009, 23:18
Thanks neuron, and some last question (since I still wait for the license file so I cannot really test). When I load a m2ts (from HDV camcorder) file and select to enable deinterlacer and I click save and demux the resulting m2v video file is deinterlaced and there is no need to deal with dgdecode.dll and avisynth and cuvid server. Right?
So will the resulting video file be 1440x1080 25p or 50p (PAL country here)?
The original HDV is 1440x1080 50i (upper field first)
No what dgindex basically does is index the source for frameserving too an encoder, so you still need avisynth too actually frameserve it, but yes using the cuda hardware deinterlacing will mean that within the avisynth script you will not need too deinterlace using other methods (not sure exactly how the cuda based dll works but I think it may have a deinterlacing parameter that is passed too it - neuron can correct me on this, also it should be in the manual, readme or faq - and if it isn't .. then ...).
Fotis_Greece
21st April 2009, 23:57
Well, I don't want to frameserve it. Only to deinterlace and demux.
Guest
22nd April 2009, 00:45
You cannot deinterlace without re-encoding using any tool.
You can remove pulldown so if the camera uses pulldown to achieve the video rate then you have a hope.
Fotis_Greece
22nd April 2009, 11:03
So in other words when saving and demuxing (with deinterlace checked) the only operationtaken place is just saving project and demuxing the video-audio, right?
Guest
22nd April 2009, 13:51
Right, exactly as stated in the users manual.
Varies
2nd May 2009, 05:49
I have a new problem with deinterlace :)
Here (http://rghost.ru/221487?key=e6bb6b21ede96cb8fec8a4d829566f5a) is the sample of video (source).
What DVD did you rip that from? It's pathological.
Varies
2nd May 2009, 14:44
It's TV translation from NHK-E japanese chanel ^ ^
I try other deint, best result with Decomb 3:2 pulldown remove. But same frames looks like incorrect :(
It's TV translation from NHK-E japanese chanel ^ ^ How did you get it?
Varies
2nd May 2009, 15:22
I download TS stream.
Don't ask me "how" :D This violates the rules :)
Inverse 3:2 Telecine with Pattern Guidance. If your telecined source material is NTSC 3:2 pulldown, you can enable pattern guidance, which can make the field matching more accurate for some clips. Proceed as follows:
AssumeTFF()
Telecide(order=1,guide=1)
Decimate(cycle=5)
You've already been struck for a rule 6 so you're well aware of the rules. Struck for rule 6.
hajj_3
19th May 2009, 13:46
any eta for program stream support yet? would love to use this instead of dgmpgdec, should help with the speed alot of 1080i .mpg files.
halsboss
19th May 2009, 14:59
I know you're busy, so just adding +1 to that .... hoping you can get around to it in the list of things you're doing.
Turtleggjp
21st May 2009, 22:05
I'm having trouble with the hardware bob deinterlacer. When I played back my encoded video, it was stuttering and not smooth. Looking back at the served video frame by frame, I saw that I was getting some duplicate frames often followed by some combed (not deinterlaced at all) frames. I thought that the problem was with my video card (Nvidia GeForce 9650m GT, the m means it is in my laptop) since it often struggles playing 1080i content smoothly. When I tried to use the indexer to clip out a sample to upload, the sample no longer had any combed frames, but still had some of the duplicate frames. By duplicate frames, I mean that it is repeating a frame and then another frame is missing, so no extra frames are being added.
Thinking that my video card was to blame, I tried a similar transcode using some of my video camera's footage (Canon HF100, AVCHD 1080i). However, the hardware deinterlacer seemed to work perfectly with the clips I tried. This leads me to believe that it is some sort of bug in DGMPGDecNV's code. The problems also show up when doing a preview in the index tool.
When I get home tonight I'll try putting together some sample clips. I don't think there is anything more I can do until I have access to the original file again, as my first attempt at making a sample didn't reproduce all issues. Thanks.
Matt
Guest
22nd May 2009, 00:06
any eta for program stream support yet? would love to use this instead of dgmpgdec, should help with the speed alot of 1080i .mpg files. I have finally started it. I have DGMPGIndexNV working with video and AC3 and MPA audio. I plan to get DGDecodeNV working next and then add the other audio types. What audio types do you need most?
I don't plan to support MPEG1 video or MPEG1 program streams. Is that a problem?
Guest
22nd May 2009, 00:10
I'm having trouble with the hardware bob deinterlacer. Try both field orders with the use_top_field set as true and false. If it won't work either way then upload a failing source stream.
hajj_3
22nd May 2009, 00:26
I have finally started it. I have DGMPGIndexNV working with video and AC3 and MPA audio. I plan to get DGDecodeNV working next and then add the other audio types. What audio types do you need most?
I don't plan to support MPEG1 video or MPEG1 program streams. Is that a problem?
Thats great i just cap ws.pdtv and 1080i mpeg2 so .ac3 and .mpa/.mp2 support is all i need and pretty much all anyone needs really, not many countries use mpeg2 with aac.
have u done any speed tests comparing it with the normal dgmpgdec? 1080i takes a while to make a .d2v file, SD is fairly quick, atleast for short tv shows.
No-one uses mpeg1 anymore, no point adding that.
Turtleggjp
22nd May 2009, 03:18
Uploading a sample now. It is a .ts file trimmed with HDTV2MPEG 1.11.89.
In the indexer, you can see the repeated frames, but no combed frames (even with Full HD display enabled). If I index the file, and serve it with AVISynth, I can see repeated frames and the following combed frames. If I set deinterlace=1 with use_top_field=true, it looks smooth (no repeated/dropped frames). With use_top_field=false, I can see duplicated frames, followed by a noticeable jump caused by a missing frame.
Here is the sample:
http://www.mediafire.com/?sharekey=ffd20e881bdc4436e5c3dee5769931ece04e75f6e8ebb871
halsboss
23rd May 2009, 15:44
I have fast sports field action HD sources with a lot of blocking (the channels mangle these, unfortunately, also upscaled SD due to inter-channel agreements). The non-NV version seems to provide deblocking natively and easily (can I make it stronger ?)
#ipp=true interlaced post-processing
#cpu=4 DEBLOCK_Y_H, DEBLOCK_Y_V, DEBLOCK_C_H, DEBLOCK_C_V
#cpu=6 DEBLOCK_Y_H, DEBLOCK_Y_V, DEBLOCK_C_H, DEBLOCK_C_V, DERING_Y, DERING_C
MPEG2Source("G:\HDTV\q2.d2v",info=0,ipp=true,cpu=6)
Does/will the NV version have the same facility ?
Guest
23rd May 2009, 16:51
Does/will the NV version have the same facility ? No, because the GPU delivers the decoded frame and my code has no access to the quants. You can use a deblocker in your script, such as BlindPP(), Deblock(), and others.
Guest
23rd May 2009, 16:53
1. When demuxing with the CLI, audio filenames no longer erroneously include the string ".dgm" in the filename.
2. Program streams are now supported. Currently, only MPA and AC3 audio is supported.
3. The machine ID field in the About box is now copyable.
4. Fixed a bug in PAT/PMT parsing.
5. Added a warning popup for cases of blank audio at the start of the stream that can cause incorrect reported audio delay. User is recommended to skip GOPs at the beginning of the project.
http://neuron2.net/dgmpgdecnv/dgmpgdecnv.html
Next I want to add pulldown handling and address the Purevideo deinterlacing issues that have been raised.
hajj_3
23rd May 2009, 17:55
ooooo :)
The license file would work with DGAVCDecNV too right?
How is the purevideo de-interlacing doing, does it do a good visual job, is it better than leakkerneldeint or field de-interlace (no blend)? Is it faster than those?
If i wanted to use this with gordianknot what would i need to put in the .avs to be able to load the .dgm file and would there be any way for me to check the cropping in gordian knot or would i have to use a different app to find out the cropping then manually enter the cropping needed into a .avs file?
keep up the great work neuron!
shon3i
23rd May 2009, 18:22
Something wrong when i select whole DVD or multiple vobs. Decoding stoped after first vob.
Guest
23rd May 2009, 19:49
Read the release notes.
halsboss
24th May 2009, 00:21
2. Program streams are now supported. Currently, only MPA and AC3 audio is supported.
etc
Nice. Thank you very much Neuron2.
halsboss
24th May 2009, 08:42
A hopeful query: if the GPU is doing the work of decoding and returning frames, and can deinterlace if you ask it to, are the cards/cuda smart enough to re-size (interlaced/deinterlaced) frames for you too to a specified size ? I guess I'm asking if that's possible, then would the NV based decoders may be able to resize something like HD1080i->SD576i. That'd be really really handy, if it could :) I ask about interlaced in particular since a lot of my footage is fast sports field action where the interlaced fields have quite large differences.
squid_80
24th May 2009, 14:06
Actually they can, the API allows the program to set the desired size of the decoded frames.
Guest
24th May 2009, 14:15
Actually they can, the API allows the program to set the desired size of the decoded frames. Can you be more specific and/or provide sample code, please?
squid_80
25th May 2009, 05:52
From the cudaVideoDecode SDK sample app:
VideoDecoder::VideoDecoder(const CUVIDEOFORMAT & rVideoFormat)
{
// Validate video format. Currently only a subset is
// supported via the cuvid API.
cudaVideoCodec eCodec = rVideoFormat.codec;
assert(cudaVideoCodec_MPEG1 == eCodec || cudaVideoCodec_MPEG2 == eCodec || cudaVideoCodec_H264 == eCodec);
assert(cudaVideoChromaFormat_420 == rVideoFormat.chroma_format);
// Fill the decoder-create-info struct from the given video-format struct.
memset(&oVideoDecodeCreateInfo_, 0, sizeof(CUVIDDECODECREATEINFO));
// Create video decoder
oVideoDecodeCreateInfo_.CodecType = rVideoFormat.codec;
oVideoDecodeCreateInfo_.ulWidth = rVideoFormat.coded_width;
oVideoDecodeCreateInfo_.ulHeight = rVideoFormat.coded_height;
oVideoDecodeCreateInfo_.ulNumDecodeSurfaces = FrameQueue::cnMaximumSize;
// Limit decode memory to 24MB (16M pixels at 4:2:0 = 24M bytes)
while (oVideoDecodeCreateInfo_.ulNumDecodeSurfaces * rVideoFormat.coded_width * rVideoFormat.coded_height > 16*1024*1024)
{
oVideoDecodeCreateInfo_.ulNumDecodeSurfaces--;
}
oVideoDecodeCreateInfo_.ChromaFormat = rVideoFormat.chroma_format;
oVideoDecodeCreateInfo_.OutputFormat = cudaVideoSurfaceFormat_NV12;
oVideoDecodeCreateInfo_.DeinterlaceMode = (rVideoFormat.progressive_sequence) ? cudaVideoDeinterlaceMode_Weave : cudaVideoDeinterlaceMode_Adaptive;
// No scaling
oVideoDecodeCreateInfo_.ulTargetWidth = oVideoDecodeCreateInfo_.ulWidth; // Set this to the desired output width
oVideoDecodeCreateInfo_.ulTargetHeight = oVideoDecodeCreateInfo_.ulHeight; // Set this to the desired output height
oVideoDecodeCreateInfo_.ulNumOutputSurfaces = 2; // We won't simultaneously map more than 2 surfaces
// create the decoder
CUresult oResult = cuvidCreateDecoder(&oDecoder_, &oVideoDecodeCreateInfo_);
assert(CUDA_SUCCESS == oResult);
}
I haven't played with different values myself so YMMV.
halsboss
25th May 2009, 09:07
this does interlaced resizing, right ? sorry to harp on it, but that's important for some people (well, me) with 1080i captured sources with lots of movement and panning/zooming, and only a SD (PAL 576) DVD player to watch it with)
Guest
25th May 2009, 15:08
Hold your horses there, bro'. We don't even know if it resizes at all yet.
halsboss
26th May 2009, 00:30
No worries :) I hope, but do not expect at all ! Imagine it, a GPU based sourcer/resizer. (I know, there's probably heaps of pragmatic issues which would rule it out). I wish upon a star that Nvidia had deblocking built-in as well, but that's for another decade or century :D All the best.
Turtleggjp
26th May 2009, 04:39
Next I want to add pulldown handling
Sweet. I'm unable to use your NV version for working with my TV shows right now, as most of them are using pulldown.
and address the Purevideo deinterlacing issues that have been raised.
Cool, so I can assume that you were able to repeat my problem on your end?
Guest
26th May 2009, 05:14
Yes, and Nvidia is looking at it. It appears to affect MPEG2 only.
laserfan
26th May 2009, 14:26
Hey I notice you've slipped-in a newer DGDecodeNV.dll to this release package! I'm gonna assume I should use this latest version for my VC1 and AVC testing now, unless you tell me differently... :)
EDIT: Oops--now I looked at the Properties of the old vs. new and they appear identical anyway! Never mind then! :o
vBulletin® v3.8.11, Copyright ©2000-2026, vBulletin Solutions Inc.