View Full Version : LAV CUVID Decoder - High Quality Hardware decoding for NVIDIA
nevcairiel
25th March 2011, 23:34
LAV CUVID is DEAD. All of its functionality has been merged into LAV Video (http://forum.doom9.org/showthread.php?t=156191). LAV CUVID will not be developed any further.
------------------------------------------------------------------------------------------------------
Hi folks,
i would like to introduce my LAV CUVID Decoder.
It is a DirectShow Video Decoder utilizing the NVIDIA hardware decoder engine through the CUDA Video Decoding API ("CUVID").
Its still in its early stages, but its already been tested thoroughly and supports all major formats that the NVIDIA hardware can decode, which are right now H264, VC-1, MPEG2 and MPEG4-ASP (DivX/Xvid). Both progressive and interlaced types are supported.
As a bonus, when decoding interlaced content, it can do full adaptive deinterlacing, the best your GPU has to offer.
So, without further introduction, here it is!
Features
- Decoding of H264, VC-1, MPEG2 and MPEG4-ASP (each given appropriate hardware support)
- Full Adaptive Deinterlacing, including Frame Doubling (perfect smooth playback of 1080i/60 content!)
- Usable with all renderers! Including madVR (http://forum.doom9.org/showthread.php?t=146228), which is recommended for the best playback quality!
- NV12/YV12 output
Download
Source Code is available from my Git repository (http://git.1f0.de/gitweb?p=lavcuvid.git;a=summary)
Binarys are available here:
Version 0.13: Installer (32/64-bit, CUDA 4.0+) (http://files.1f0.de/cuvid/LAVCUVID-0.13.exe) - 32-bit (CUDA 4.0+) (http://files.1f0.de/cuvid/LAVCUVID-0.13.zip) - 64-bit (CUDA 4.0+) (http://files.1f0.de/cuvid/LAVCUVID-0.13-x64.zip) -- 32-bit (Older CUDA) (http://files.1f0.de/cuvid/LAVCUVID-0.13-LegacyCUDA.zip)
A note on the different versions: The CUDA 4.0 builds require a 270 series driver (or newer). The "Old CUDA" build should in theory work with much older drivers, in case you cannot upgrade.
Changelog -- Full changelog (http://git.1f0.de/gitweb?p=lavcuvid.git;a=blob;f=CHANGELOG.txt;hb=HEAD) -- Release Notes (http://forum.doom9.org/showthread.php?p=1525979#post1525979)
0.13 - 2011/09/13
- Improved resource release behavior
- Improved VC-1 in EVO with pulldown flags
nevcairiel
25th March 2011, 23:35
This is a decoder for NVIDIA GPUs, it does not work with ATI/AMD or Intel, and it never will!
Requirements/Recommendations
- NVIDIA PureVideo HD capable graphics card (VDPAU Feature Set A or better - see list here (http://en.wikipedia.org/wiki/Nvidia_PureVideo#Table_of_PureVideo_.28HD.29_GPUs))
- At least 256MB of Video RAM, 512MB recommended
- Recent NVIDIA Drivers - CUDA 4.0 compatible driver recommended (270 series), older drivers may work with the "Old CUDA" build.
- Vista/7 recommended due to much improved driver handling, but XP SP3 "should work" (see hints below)
Performance
- 1080p60 decoding is only supported on VP4 hardware (VDPAU Feature Set C)
- When encountering performance issues, turning off the "HQ DXVA processing" option will yield the best gain in performance, at a minimal loss of quality.
- Using the latest driver (275.33 at the time of writing), can greatly improve the performance.
Hints
- When running on Windows XP, its recommended to turn the "Use HQ DXVA processing" setting off, its not fully supported on XP and might cause image corruption.
Known Issues
- The decoder will try to decode all video streams, and not refuse formats that are not supported.
- VC-1/MPEG4-ASP VFR content will most likely not play properly.
reserved for FAQ, etc.
nevcairiel
25th March 2011, 23:42
To say a few words about 0.1:
First: This is a very early test version, it can quite possibly blow up.
It comes without any configuration, and its only tested on VP4 (Fermi) hardware.
In the future, you will be able to configure things like:
- Use Stream Aspect Ratio (currently always on)
- Which Codecs should be active
- Should Deinterlacing be performed (currently always in "adaptive" mode)
- And whatever i can think of.
Also, it only supports NV12 output. This might change in the future, but any conversion of course gives you a performance penality, and NV12 is the native format of the decoder.
Oh, and if you're using it together with LAV Splitter on interlaced VC-1, make sure to disable the VC1 timestamp correction in the LAV Splitter settings. The next version of LAV Splitter will have this decoder added to the auto-detect mode.
BTW, if anyone is good with assembler, i could need some asm function which changes the stride of a NV12 image. My C implementation is probably quite slow.
Sebastiii
25th March 2011, 23:46
Amazing :)
Can't register filter, maybe need minimum driver version or hardware (9600GT) ?
Thanks.
adam777
25th March 2011, 23:46
Hi nev,
I'm unfortunately unable to utilize this decoder due to my laptop being equipped with an ATI card, but I suggest writing as clear as possible why ATI can't be supported, at least for the foreseeable future.
I suppose it won't be long before this question starts popping up.
BatKnight
25th March 2011, 23:51
When I use your LAV CUVID Decoder to play a 1280x688 movie at a 1920x1080 resolution in MPC-HC, what is doing the upsample? My GPU? The MPC-HC?
When I used ffdshow I had an Avisynth script to spline36resize my videos to 1920x1080, but when using CUVID I no longer know if it is being done by the graphics card (would this be a good thing, quality-wise?) or being done by what I have selected at the MPC-HC Resizer's drop-down box.
Nuno
nevcairiel
25th March 2011, 23:52
The decoder does not do any upscaling, so it'll be the renderer MPC-HC uses.
Can't register filter, maybe need minimum driver version or hardware (9600GT) ?
Which driver are you using?
The CUDA SDK 3.2 is relatively new (Jan. 2011), could be that you need at least a 260 series driver.
I can probably use a bit older SDK, and switch to dynamically loading the dlls, so such issues can be avoided.
For Hardware Support, Wikipedia to the rescue. You need at least VDPAU Feature Set A for H264 decoding, B for VC-1 and MPEG2, and C for MPEG4-ASP.
http://en.wikipedia.org/wiki/Nvidia_PureVideo#Table_of_PureVideo_.28HD.29_GPUs
The 9600GT is a "A" Feature Set, so at least you get H264 decoding out of it.
SamuriHL
26th March 2011, 00:08
Oh sure. This gets released while I was just forcing my bedroom machine to use software decoding temporarily while I waited. :p Guess I'll go back in there and get this set up. Thank you so much, Nev!!!
BatKnight
26th March 2011, 00:16
I am getting dropped frames every 5 seconds approximately when playing 1920x1080 movies, either AVC or VC-1.
I get smooth playing on 720p movies or others.
My specs are in my signature.
At the moment of playing my GPU is at 20% usage at most, measured by EVGA Precision.
I've tried EVR Custom and EVR Sync, and every option in MPC-HC, and all kind of combinations don't make a difference.
BUT, maVR is flawless. No dropped frames at all. In fact it solved my dropped frames problem with madVR when using ffdshow.
But, why is EVR Custom and Sync dropping frames?
How can I help you debug this?
Nuno
bjd
26th March 2011, 00:17
@nevcairel
This really is impressive work. Just testing it with my bluray collection - awesome performance with 1080p VC-1,AVC and MPEG2. No issues on a GT430 just simply amazing PQ via MadVR.
Also tested on some MPEG2 576P/50i material - works a treat.
:thanks: :thanks:
nevcairiel
26th March 2011, 00:19
I am getting dropped frames every 5 seconds approximately when playing 1920x1080 movies, either AVC or VC-1.
Not sure whats going on there. Do you have frame time correction on in EVR? Try enabling/disabling it, depending what you had before.
My movies play just fine in EVR Custom as well as madVR.
SamuriHL
26th March 2011, 00:22
Ok, initial impressions. WOW! This is AWESOME! My "problem" MKV that nothing does well is Golden Compass. It's a blu-ray rip and is VC-1. Nothing really plays it well, including DXVA, at 24Hz. Before I came out and saw you had released this, I had set up ArcSoft video decoder to handle VC-1 decoding. It pegged the CPU but was decent enough to watch. With your decoder, CPU utilization went down to about 25% or so, which for that machine, is VERY good. Had no problems with subtitles or video. Next up was an AVC MKV blu-ray rip. CPU was again good, but, unfortunately, when skipping around in the video to test certain parts I got a very odd thing going on. It gives me a green block overlay in the middle of the screen. It comes and goes quite a bit. I haven't tried other AVC movies to see if that's reproducible or not. Don't forget that my goal here is to pump this out to madVR in MPC-HC, so, that's how I'm testing this. I didn't see these issues with CoreAVC on that same video.
BatKnight
26th March 2011, 00:38
Not sure whats going on there. Do you have frame time correction on in EVR? Try enabling/disabling it, depending what you had before.
My movies play just fine in EVR Custom as well as madVR.
Nope, it was off, but enabling it didn't change anything.
The graph is a mess, even playing at 24Hz I used to have a perfect straight green line, but with CUVID it is a mess, full of spikes.
I've found that disabling Wait For Flushes stops the dropping frames but now I get noticeable tearing and stuttering.
But like I said, madVR is almost perfect.
Any ideas?
Nuno
sneaker_ger
26th March 2011, 00:42
Thank you.
I did a short test with a 9200M GS (VP3 feature set B) and it will attempt to open ASP, which is bound to fail of course: the screen stays black. H.264 and VC1 worked fine in a short test. It will also attempt to decode H.264 with the resolutions not supported by VP3 (http://en.wikipedia.org/wiki/PureVideo#The_Third_Generation_PureVideo_HD) which will also result in a black screen.
sneaker_ger
26th March 2011, 00:45
Amazing :)
Can't register filter, maybe need minimum driver version or hardware (9600GT) ?
Thanks.
Did you install the VC++2010 runtime components (http://www.microsoft.com/downloads/details.aspx?FamilyID=a7b7a05e-6de6-4d3a-a423-37bf0912db84) yet?
BatKnight
26th March 2011, 00:59
More feedback.
I've done testing and testing and got to a conclusion: When playing an AVC/H.264/x264 1920x1080 MKV the audio doesn't match/sync with lips after seeking. This happened on all my AVC movies. This only happens with 1920x1080 AVC videos, with 1920x800 or lower then I can't reproduce it...
With VC-1 movies the audio matches/syncs perfectly with lips and I've randomly seeked and couldn't make it unsync.
Nuno
PS: Tested it with madVR, with Aero on and off
yesgrey
26th March 2011, 01:37
nevcairiel,
I just want to say a big thanks!
I was hoping that someone would bring something like this, so that I could be able to watch those WVC1 interlaced music concerts with hardware deinterlacing. It's working very good with me.
:thanks:
Sebastiii
26th March 2011, 02:02
Did you install the VC++2010 runtime components (http://www.microsoft.com/downloads/details.aspx?FamilyID=a7b7a05e-6de6-4d3a-a423-37bf0912db84) yet?
Yep :)
I think it's nev answer me need recent driver and surely more recent video card :)
Thanks, will update this soon :)
ranpha
26th March 2011, 02:06
Running my test files over this decoder (testing mostly XviD files first), but I am very impressed by the decoder-level deinterlacing capabilities.
SamuriHL
26th March 2011, 02:09
No one else is seeing the issue I'm having with a greenish rectangle showing up in AVC playback? :(
ranpha
26th March 2011, 02:15
No one else is seeing the issue I'm having with a greenish rectangle showing up in AVC playback? :(
I have seen green rectangles too when playing a couple of my H.264 videos (those are DXVA-compliant clips too). In fact, H.264 videos presents the most problems to me with this decoder as of now. Haven't seen any problems with VC-1/MPEG4-ASP as of yet, need to test more, especially VC-1.
SamuriHL
26th March 2011, 02:18
VC-1 is flawless for me. It's just AVC that's giving me the issue so far. Thanks for the confirmation. Hopefully Nev will look into it when he has time. No rush, Nev. I'm super pleased to have VC-1 working. I can use CoreAVC in the meantime. SO awesome that I don't have to upgrade my bedroom machine to get madVR support. And yes, it works at 24Hz. Amazing work!
sneaker_ger
26th March 2011, 02:26
Following sample crashes on start:
http://www.mediafire.com/?sjw9tw8u01uk4c7
robpdotcom
26th March 2011, 02:39
Hardware decoding with madVR..... man, I wish I had an nVidia card.
My next one will surely be nVidia now, so thanks in advance.:cool:
SamuriHL
26th March 2011, 02:41
Yea, it's really truly awesome. It will probably affect my decision if I ever upgrade my main HTPC, as well. Even if my machine is fast enough to do software decoding, why NOT use the hardware and let madVR do its magic at the same time?? :)
nevcairiel
26th March 2011, 09:25
I did a short test with a 9200M GS (VP3 feature set B) and it will attempt to open ASP, which is bound to fail of course: the screen stays black. H.264 and VC1 worked fine in a short test. It will also attempt to decode H.264 with the resolutions not supported by VP3 (http://en.wikipedia.org/wiki/PureVideo#The_Third_Generation_PureVideo_HD) which will also result in a black screen.
This should be fixed in the next version, i hope. Previously i "forgot" to actually error out when the hardware would say that its incompatible.
Following sample crashes on start:
http://www.mediafire.com/?sjw9tw8u01uk4c7
I told you it might blow up. :D
Not quite sure why this one crashes, the crash is in nvidias code, but i'll look into it.
No one else is seeing the issue I'm having with a greenish rectangle showing up in AVC playback? :(
Can you somehow reproduce that reliably?
Sebastiii
26th March 2011, 09:59
Which driver are you using?
The CUDA SDK 3.2 is relatively new (Jan. 2011), could be that you need at least a 260 series driver.
I can probably use a bit older SDK, and switch to dynamically loading the dlls, so such issues can be avoided.
For Hardware Support, Wikipedia to the rescue. You need at least VDPAU Feature Set A for H264 decoding, B for VC-1 and MPEG2, and C for MPEG4-ASP.
http://en.wikipedia.org/wiki/Nvidia_PureVideo#Table_of_PureVideo_.28HD.29_GPUs
The 9600GT is a "A" Feature Set, so at least you get H264 decoding out of it.
Hi Nev :) i can confirm all above, need new drivers and only H264 works with my old card :)
:thanks:
CruNcher
26th March 2011, 11:54
Nice nev the 2nd Directshow Filter after the "Cuda Video Decoder" filter from the Chinese that supports nvcuvid for Dshow now :)
Now there is only a free Nvcuvenc filter missing :)
Though now that i moved to Sandybridge Discrete GPU DSP Decoding limits become more and more obvious 60 fps (@ 20W idle Fermi + 3W 1080p Decoding DSP) seem slow if you can manage 4 cores efficiently (@ that low power), and in that terms Intels more performant Quicksync solution also beats AMD/Nvidias easily currently.
The major Drawbacks for nvcuvid though are no 4:2:2 (Donald talked about this was in discussion state some months ago) and 10-bit, 4K support (never most likely) :(
I wonder what Cuda 4.0 brings new to Nvcuvid and Nvcuvenc, they at least fixed some (Motion Estimation) bugs in the Encoder didn't test the Decoder yet :)
Also it seems clear that neither AMDs nor Nvidias DSP will stay for a long time inside some of the Discrete GPUs lineup anymore it seems useless from a Power, Performance and Cost efficiency point now with CPU/GPU combined in the newer (AMD/INTEL) Desktop Platforms these days for Video based workloads at least.
nevcairiel
26th March 2011, 12:54
QuickSync is only encoding, the decode engine in Intel CPUs still has some bugs, and it can only be used with the integrated GPU. Now if they were to decouple this, and allow decoding directly into system RAM, without using the integrated GPU .. i would agree with you - but they don't.
CruNcher
26th March 2011, 14:12
QuickSync is only encoding, the decode engine in Intel CPUs still has some bugs, and it can only be used with the integrated GPU. Now if they were to decouple this, and allow decoding directly into system RAM, without using the integrated GPU .. i would agree with you - but they don't.
Hmm did i miss something the Intel iGPU inside Sandy Bridge has no memory so it uses the shared memory that is like copying directly into the Ram because it's system memory, you don't have the path AMD/Nvidias Discrete DSP has to go which Nvidia with GPU Direct at least improved for GPU2GPU transfers (avoiding GPU0 Ram ->System Memory->GPU1 Ram by going directly GPU0 Ram->GPU1 Ram)
Also looking @ Intels research they improving in terms of Video Deinterlacing and still work on more efficient stuff based on the available EUs
nevcairiel
26th March 2011, 14:15
Hmm did i miss something the GPU has no memory so it uses the shared memory that is like copying directly into the Ram because it's system memory ;)
Its in the same hardware memory, but you still have to copy it around once into the system area, and you still have to use the integrated GPU - which you usually don't do when you have a dedicated GPU in there.
SamuriHL
26th March 2011, 14:21
Can you somehow reproduce that reliably?
Yup. I have a file it happens on every time. Very easy to repro, how can I help?
nevcairiel
26th March 2011, 14:45
Yup. I have a file it happens on every time. Very easy to repro, how can I help?
Can you see if cutting an area out of the file where it happens still makes it happen on that cut, and upload it?
SamuriHL
26th March 2011, 14:49
Can you see if cutting an area out of the file where it happens still makes it happen on that cut, and upload it?
Yea, I can do that today. My wife is still sleeping so I can't do it til later. But I'll definitely give that a shot. The movie is Alice in Wonderland and I made the MKV with MakeMKV.
General
Complete name : AliceInWonderland.mkv
Format : Matroska
File size : 21.3 GiB
Duration : 1h 48mn
Overall bit rate : 28.1 Mbps
Encoded date : UTC 2010-06-29 23:33:38
Writing application : MakeMKV v1.5.6 beta win(x64-release)
Writing library : libmakemkv v1.5.6 beta (0.7.7/0.8.1) win(x64-release)
Video
ID : 1
Format : AVC
Format/Info : Advanced Video Codec
Format profile : High@L4.1
Format settings, CABAC : Yes
Format settings, ReFrames : 4 frames
Muxing mode : Container profile=Unknown@4.1
Codec ID : V_MPEG4/ISO/AVC
Duration : 1h 48mn
Bit rate mode : Variable
Maximum bit rate : 31.0 Mbps
Width : 1 920 pixels
Height : 1 080 pixels
Display aspect ratio : 16:9a
Frame rate : 23.976 fps
Color space : YUV
Chroma subsampling : 4:2:0
Bit depth : 8 bits
Scan type : Progressive
Language : English
Color primaries : BT.709-5, BT.1361, IEC 61966-2-4, SMPTE RP177
Transfer characteristics : BT.709-5, BT.1361
Matrix coefficients : BT.709-5, BT.1361, IEC 61966-2-4 709, SMPTE RP177
Audio
ID : 2
Format : DTS
Format/Info : Digital Theater Systems
Format profile : MA
Codec ID : A_DTS
Duration : 1h 48mn
Bit rate mode : Variable
Channel(s) : 6 channels
Channel positions : Front: L C R, Side: L R, LFE
Sampling rate : 48.0 KHz
Bit depth : 24 bits
Title : HD Lossless
Language : English
Text
ID : 3
Format : PGS
Codec ID : S_HDMV/PGS
Codec ID/Info : The same subtitle format used on BDs/HD-DVDs
Language : English
Menu
00:00:00.000 : en:Chapter 00
00:04:24.889 : en:Chapter 01
00:10:36.886 : en:Chapter 02
00:18:13.509 : en:Chapter 03
00:24:44.316 : en:Chapter 04
00:28:41.344 : en:Chapter 05
00:36:51.125 : en:Chapter 06
00:46:15.731 : en:Chapter 07
00:52:44.786 : en:Chapter 08
01:04:05.049 : en:Chapter 09
01:10:02.198 : en:Chapter 10
01:15:36.490 : en:Chapter 11
01:23:39.264 : en:Chapter 12
01:34:12.688 : en:Chapter 13
01:36:58.354 : en:Chapter 14
01:40:12.131 : en:Chapter 15
nevcairiel
26th March 2011, 14:54
If you have the original BluRay of that movie handy, can you try playing the m2ts with LAV Splitter?
The H264 in MKVs and MP4s is muxed somewhat differently, and i have some code which manually brings it into the same form as from MPEG-TS, which is the only form the hardware understands. So if it works from the original BluRay, but not from the MKV you made from it (without re-encoding, just remuxing), then i know which area to check first.
PS:
Only LAV Splitter delivers that untouched, Haali and MPC-HC internal convert H264 from MPEG-TS into the same form as it would be in MKV/MP4.
SamuriHL
26th March 2011, 15:05
I'll have to look and see if that's one of the discs my parents grabbed when they were here. I think my mom wanted to see it so it may be at their house right now. If so I'll get it back next weekend. My dad's still not set up for playing things on a PC, but, given they have an OLD Sony player that sucks, I might be fixing that soon. :) Anyway, I'll look and see if that's one they took with them. They borrowed a bunch of discs as my dad is now retired.
madshi
26th March 2011, 15:16
Hmm did i miss something the Intel iGPU inside Sandy Bridge has no memory so it uses the shared memory that is like copying directly into the Ram because it's system memory, you don't have the path AMD/Nvidias Discrete DSP has to go which Nvidia with GPU Direct at least improved for GPU2GPU transfers (avoiding GPU0 Ram ->System Memory->GPU1 Ram by going directly GPU0 Ram->GPU1 Ram)
There's a difference between theory and practice. Im my real life measurements I can transfer 1080p NV12 textures from GPU RAM to System RAM with up to 700fps when using a newer NVidia card. With an Intel GPU I get somewhere between 5fps and 25fps, depending on GPU model. This is by using D3D standard methods to transfer surfaces. I know that the Intel Media SDK internally uses a different transfer method which is a lot faster. But it's not available via D3D.
SamuriHL
26th March 2011, 15:18
Yea, that's a disc that my parents borrowed. Figures cause I can't get it to happen on ANY other MKV I have. I'm splitting it now so I can get you a sample that breaks.
kieranrk
26th March 2011, 15:20
As a bonus, when decoding interlaced content, it can do full adaptive deinterlacing, the best your GPU has to offer.
Do you know if the card actually uses the best deinterlacing or just claims to do so but actually doesn't as shown by didee?
nevcairiel
26th March 2011, 15:22
Do you know if the card actually uses the best deinterlacing or just claims to do so but actually doesn't as shown by didee?
I know that the cheese slice test looks pretty good to me.
I can only tell it to use adaptive deinterlacing, it doesn't give me feedback what its actually doing, though.
SamuriHL
26th March 2011, 15:45
Nev,
You were right. I took a clip (http://www.mediafire.com/?ubgs42nnihjhl41) that makes it happen and converted it back to m2ts and then opened it. Plays perfect. So, play around with that clip and see if you can repro it. Then use tsMuxer to convert it to m2ts if you want and it plays fine. Thanks!!!
nevcairiel
26th March 2011, 16:12
It looks like the problem is simple. The SPS/PPS Header stored in the MKV is not valid for that part of the file, so you get corrupted playback until the bitstream contains a new one, but then it corrupts again because i actually inject the header before every IDR frame..
I'll have to figure out how to deal with that. Maybe i can analyse the stream and see if it contains its own SPS/PPS NALUs, or only feed the container header to the decoder once at the beginning.
If anyone has some insight when the decoders expect to receive the SPS/PPS, please do tell. =)
madshi
26th March 2011, 16:23
FWIW, eac3to muxes MKV files practically unchanged. All headers remain in the bitstream. SPS/PPS headers are stored "in front of" the video frames which follow them. Works great for all MPEG2, VC-1 and h264 this way.
Not sure how to handle playback if you seek and the bitstream doesn't contain SPS/PPS headers. How are you (as a splitter) supposed to know whether the SPS/PPS headers in the container are still valid for the seek point? How are you supposed to know whether the stream itself contains valid headers or not? I guess the best way to handle this would be to keep current headers in a cache and update them whenever they occur in the bitstream. After a seek you should probably check whether the seeked to frame has headers in front of them. If so, use them. If not, well then you're screwed... :) In that case I'd probably add those headers from the container.
Hmmm... But then: If the headers don't ever change, then why injecting them into the stream at all? Maybe you should simply not inject headers *AT ALL*?
nevcairiel
26th March 2011, 16:25
My current plan would be to just inject them at the beginning and after a seek.
DXVA probably requires this as well, i should check with MPC-HCs code how they deal with that.
madshi
26th March 2011, 16:27
My current plan would be to just inject them at the beginning and after a seek.
What if the bitstream itself contains headers at every seek point? If you inject headers you might overwrite the correct headers with wrong ones.
nevcairiel
26th March 2011, 16:34
If i send my headers to the decoder before any other data, shouldn't a new header that was actually contained in the data overwrite mine?
I'll have to think about this.
Too bad just decoding a buffer that only contains SPS and PPS to init it doesn't work, for some reason it doesn't like that.
What the DXVA MPC-HC codec does is basically decode the headers of every frame, updating its context as it goes forward. But i do not keep my own context, its all in the CUVID driver. I'll have to figure out when it actually "forgets" about the context - does a full flush (as it happens on seeks) already cause it to forget? If not, sending the container SPS/PPS on start would be good enough, i figure.
nevcairiel
26th March 2011, 16:48
Ok, some testing revealed, a Flush does actually drop its state, but feeding it the SPS/PPS after the flush does seem to work just fine. The Sample from SamuriHL plays fine now, and files that were directly encoded into MKV (so, no SPS/PPS NALUs in the bitstream), are still working fine as well.
I'll do some more tests, and finish working on some configuration that i had lined up.
SamuriHL
26th March 2011, 17:12
That's awesome, Nev and Madshi! Thank you for looking into that!
ranpha
26th March 2011, 17:37
After testing more Xvid videos, it seems that Xvid videos (a lot of them I say) in AVI containers stutters a lot. Remuxing the very same videos into .mp4/.mkv containers and they started playing smoothly! Anyone else seen the same issue?
nevcairiel
26th March 2011, 17:38
After testing more Xvid videos, it seems that Xvid videos (a lot of them I say) in AVI containers stutters a lot. Remuxing the very same videos into .mp4/.mkv containers and they started playing smoothly! Anyone else seen the same issue?
I have seen this, its mostly because AVI really doesn't have much of a timestamp. If using MPC-HC and EVR-CP, turn on frame-time correction. madVR should also work fine. At least thats what i've seen so far.
ranpha
26th March 2011, 17:53
I have seen this, its mostly because AVI really doesn't have much of a timestamp. If using MPC-HC and EVR-CP, turn on frame-time correction. madVR should also work fine. At least thats what i've seen so far.
I use madVR latest version (I will redo my tests with EVR custiom presenter later), and the stuttering is still there.
edit: Just tested some of the problematic MPEG4-ASP AVI files with EVR custom presenter, and the problem disappear.
CruNcher
26th March 2011, 23:16
Nev your decoder also fails @ 1080p 60 fps H.264 on a VMR9 Renderless surface in MPC-HC (demuxer and ffdshow audio render) same as almost every ISV Decoder existing it drops frames like there is no tomorrow this happens either in Cuda or DXVA mode (always on VMR9 Renderless) there are only 2 Decoder yet who survive this test on Nvidia VP2 and that's CoreAVC CUDA and Cyberlinks DXVA H.264 Decoder neither Mainconcept DXVA does playback it without framedrops nor does Arcsofts Decoder manages this.
Every of the Decoder plays fine on VMR9 and VMR7 Renderless Renderer but only CoreAVC and Cyberlink survive VMR9 Renderless @ 1080p 60 fps flawless yet
Yours the same as the Chinese Nvcuvid Decoder and others stay stable for 12 seconds then start to drop frames like crazy with that Sony 60 fps Stream on VMR9 Renderless
nevcairiel
26th March 2011, 23:17
Its not optimized at all yet. If by fails you mean it drops frames or is too slow, there is still alot of room for improvement.
Btw, any convenient place to find a 1080p/60 test stream?
CruNcher
27th March 2011, 00:10
This is the one i use for testing http://e.dl.playstation.net/e/wipeouthd/assets/WipEoutHD_EN_1080p.zip
nevcairiel
27th March 2011, 00:11
Thanks, i'll see what i can do to get some more speed out of this. :)
CruNcher
27th March 2011, 01:05
With a Mpeg-2 .ts Test stream it fallsback to Video Renderer doesn't connect to VMR9 Renderless @ all (Cyberlink works flawless) :(
BatKnight
27th March 2011, 01:53
This is the one i use for testing http://e.dl.playstation.net/e/wipeouthd/assets/WipEoutHD_EN_1080p.zip
@CruNcher
I can play this file flawless at VMR9 Renderless with CUVID decoder. No drop frames. But I own a GF104, which has VP4, and nevcairieal's graphics card is also a VP4.
I've tried different combinations and this Wipehout video never breaks, delays or get unwatchable.
@nevcairiel
I've manage to sort all those problems I've refered before on previous posts by reducing the EVR Buffers to 5 or 10 (I had them at 25).
But I've found a reproduceable bug: When I play a MKV with h264/AVC and FLAC track with LAV Audio then the audio isn't sync with the video. But if I force madflac instead, then the audio is sync with video.
This doesn't happen with AC3 or DTS tracks, only FLAC.
EDIT: Looks like that CUVID isn't the problem, ffdshow also does this. The only constant is the FLAC track. Sorry to have posted this here.
To reproduce: MKV with h264/AVC + FLAC track + LAV Audio
Nuno
PS: All these videos with FLAC tracks were at 1920x1080
jmone
27th March 2011, 02:32
Well I'll be ... there could be a mainstream nVidia GPU in my future! I managed to get the following working on my MBA 11" (Late 2010) series (Win7 Only build - no OSX). The MBA is my only nVidia GPU equipped PC *and took some "encouragement" to get V260+ drivers on) and it only has a 320M GPU, 2GB total System RAM (shared with GPU), and a C2D.
- J.River Media Center as the Player using: LAV Splitter, LAV CUVID, FFDSHOW Subtitle Filter, LAV Audio Decoder, madVR (bottom settings), and Directsound --> Output is 1080p &5.1 LPCM over HDMI (using mini display port to HDMI adapter)
It all worked including:
- x264, VC-1, MPEG-2
- Subtitles
- VC-1 60i being deinterlaced nicely
The only issue I saw with my test files was x264 1080/50p (Camcorder) footage that the MBA clearly does not have the horse power to play smoothly BUT, the Audio drifted out of sync very quickly (I've seen this with other filters previously). A short clip is here http://forum.cyberlink.com/forum/posts/downloadAttach/3802.page but let me know if you need a longer sample.
jmone
27th March 2011, 02:50
Nev your decoder also fails @ 1080p 60 fps H.264 on a VMR9 Renderless surface in MPC-HC (demuxer and ffdshow audio render) same as almost every ISV Decoder existing it drops frames like there is no tomorrow this happens either in Cuda or DXVA mode (always on VMR9 Renderless) there are only 2 Decoder yet who survive this test on Nvidia VP2 and that's CoreAVC CUDA and Cyberlinks DXVA H.264 Decoder neither Mainconcept DXVA does playback it without framedrops nor does Arcsofts Decoder manages this.
Every of the Decoder plays fine on VMR9 and VMR7 Renderless Renderer but only CoreAVC and Cyberlink survive VMR9 Renderless @ 1080p 60 fps flawless yet
Yours the same as the Chinese Nvcuvid Decoder and others stay stable for 12 seconds then start to drop frames like crazy with that Sony 60 fps Stream on VMR9 Renderless
FYI, from what I've seen on playing back 264/AVC 1080/50p content, ffdshow ffmpeg-mt plays back smoothly with a range of renderers (my current setup)
nevcairiel
27th March 2011, 09:34
With a Mpeg-2 .ts Test stream it fallsback to Video Renderer doesn't connect to VMR9 Renderless @ all (Cyberlink works flawless) :(
The only reason it wouldn't connect is when VMR9 does either not accept NV12, or does not understand a VIDEOINFOHEADER2 format.
In any case, the output media type is not dependent on the input type (except for width/height and AR), so it doesn't make any sense that the mpeg2 would not work, but others would.
roozhou
27th March 2011, 09:35
Excellent work! I have waited for such decoders for years. This would be a great tool for high-speed transcoding. We can now throw away CoreAVC 2.x and DGNV.
About the AVI problem, IMO AVI stores the sorted PTS instead of PTS for each frame itself. It looks like an elementary stream along with a timecode v2 file. The decoder wrapper should keep all incoming PTS and assign the decoded frame the least unused PTS from the PTS buffer.
CruNcher
27th March 2011, 09:42
@CruNcher
I can play this file flawless at VMR9 Renderless with CUVID decoder. No drop frames. But I own a GF104, which has VP4, and nevcairieal's graphics card is also a VP4.
I've tried different combinations and this Wipehout video never breaks, delays or get unwatchable.
@nevcairiel
I've manage to sort all those problems I've refered before on previous posts by reducing the EVR Buffers to 5 or 10 (I had them at 25).
But I've found a reproduceable bug: When I play a MKV with h264/AVC and FLAC track with LAV Audio then the audio isn't sync with the video. But if I force madflac instead, then the audio is sync with video.
This doesn't happen with AC3 or DTS tracks, only FLAC.
EDIT: Looks like that CUVID isn't the problem, ffdshow also does this. The only constant is the FLAC track. Sorry to have posted this here.
To reproduce: MKV with h264/AVC + FLAC track + LAV Audio
Nuno
PS: All these videos with FLAC tracks were at 1920x1080
Not sure if its because of the VP4/2 difference i would guess more because of Windows Vista/7 DWM (Direct 3D/DXVA2) vs Windows XP (DirectDraw/DXVA1) ;)
Nev maybe that Mpeg-2 .ts render fallback is a problem between Arcsofts Mpeg Demuxer and your filter, Arcsofts and Cyberlinks Demultiplexer work quite different (more robust) then for example MPC-HCs or Gabest. I will disable Arcsofts Demuxer and try all the streams with Mpc-HC and see if it works better now i have not so good experience with MPC-HCs splitter thats why i normaly use either Cyberlinks (no DTS HD) or Arcsofts (supports DTS HD) especially when it comes to Interlaced or Interlaced/Progressive VC-1 in TS/PS streams. Maybe your lavf splitter again becomes an option working better together with your Cuda decoder :)
My combo looks like this currently
ffdshows audio decoder for everything (libavcodec) most interoperable audio decoder between all Decoder Splitter combinations mostly every ISV supports it flawless :)
(Base MPEG/Blu-Ray/Microsoft Decoding)
Cyberlink Decoder + Arcsoft Demuxer = H.264 (TS/PS)
Cyberlink Decoder + MPC-HC Demuxer = H.264 (Mp4/MKV/Mov))
Arcsoft Decoder + Arcsoft Demuxer = (VC1 TS/PS/WMV (Arcsofts WMV Demuxer) (WMV9/VC1) some streams need to fallback to Microsofts Decoder because of Partial VP2 acceleration some stream GUIDs shows strange results, especialy old Complex VC-1 bitstreams, ah and yeah VC-1 inside MKV though it would fill a whole side with own issues and how to get that falling back efficiently between Microsofts Decoder and Arcsoft ;))
Elecard Decoder + Arcsoft Demuxer = Mpeg-2 (TS/PS)
DivX Decoder + MPC-HC Demuxer (MP4-SP/ASP Software Decode)
Was quite hard to get this all working Hardware accelerated (especially finding workarounds for different WMV9 bitstreams not supported by VP2 or the Decoder and falling back either to Software or Microsofts Decoder in DXVA mode) on XP (VP2/DXVA1 except SP/ASP no doubt DivX Decoder is the most efficient MT Decoder here ffdshow/ffmpeg doesn't comes near in overall decoding performance yet) as it does now lots of endless hours changing GUIDs moving Decoders splitters and testing bitstreams like crazy,monitoring resources and decoding efficiency performance jitter, also Speedstep/Turbo Boost/AMD C&Q efficiency fast frequency,timer changes is something many Windows developer don't seem to take into account when optimizing decoder/encoder (still there are issues as to much reference streams don't fallback to software or Cuda only Mainconcepts DXVA, ffdshow DXVA, MPC-HC DXVA H.264 decoder support that feature yet, it's announced for a CoreAVC <2.5 though :)) :(
This is also only for Displaying inside MPC-HC in software mode it looks quite different also getting this separated wasn't easy (Encoding efficiency outside of MPC-HC)
There was no 1 fits all Scenarios (all bitstreams supported) solution especially the WMV9, VC1 TS/PS and VMR9 Renderless 1080p 60 fps H.264 issue with most Decoders kills allot (no use of Shaders and so generaly only Cyberlink and CoreAVC are capable of this on older Systems though Cyberlinks DXVA is preferable vs the old CoreAVC 2.0 with Cuda only didn't tried CoreAVC 2.5 with DXVA that could change alot for Decoding on VPx (because of the system overhead))
Though im now on Sandy Bridge and i could allow myself now to don't care about efficiency anymore, and maybe even completely switch over from Nvidia nvcuvid XP to Media SDK 2.0 Vista/7 though as nev said it might be still quiete buggy decoding wise i guess i don't need to test my test stream cabinet of horror on it so ;)
Maybe some of those clever (clever in terms of shuffling together different ISV stuff and inc it into his Player obviously totally illegal) Chinese guys reads what i wrote here and creates the next uber Dshow Player (Storm Baofeng guys anyone ;) )
Though all of this is optimized for Windows XP, Nvidia VP2 via nvcuvid.dll and DXVA via VMR9 Renderless it could majorly fail on ATI UVD ;)
Also about Arcsoft Decoder as they realized they didn't get that WMV DXVA VP2 (different Bitstreams) issues under control (they seem to have no fantasy ;)) they just disabled DXVA support for it entirely (easiest way avoiding support questions, why does this WVC1 60 fps Complex Bitstream blocks so heavily with DXVA, answer we disable it, easiest solutions was to fallback to Microsofts own DXVA decoder for such Bitstreams, if you don't can fix your own decoding bugs for whatever reason by disabling it they disabled the complete DXVA for all the other Bitstreams that worked well and dont get accelerated with Microsofts XP Decoder :rolleyes: ).
nevcairiel
27th March 2011, 11:45
LAV CUVID Decoder 0.2
0.2 - 2011/03/27
- The codec will now refuse connection if an unsupported format is detected
- Fixed an issue that caused H264 to sometimes produce artifacts while decoding
- Added configuration for enabled formats, deinterlacing and stream aspect ratio
Download: 32-bit (http://files.1f0.de/cuvid/LAVCUVID-0.2.zip)
You will need to re-install the filter to get the options property page to show up (just re-run install.bat).
Next up will probably be some performance enhancements. Right now i block the decoder while i deliver the sample to the renderer, the goal is to have a queue of already decoded images (actually, just their surface index), and let the decoder work in advance. NVIDIA suggest to have at least 3 frames in the decoder at all times for efficiency .. we'll see how that turns out.
Oh, note that all configuration options only take effect after the filter has been reloaded.
CruNcher
27th March 2011, 12:55
If you can achieve CoreAVC Cuda and Cyberlinks DXVA constant 1080p 60 fps H.264 MPC-HC VMR9 Renderless Performance your are one of the few ones that managed this under XP (DXVA1) and im quiete sure if not you who else should be able to ;)
Gonna upload the hardest streams to get working out of my horror cabinet of streams uploading all would be way to much, and only those which show issues with LAV CUVID, some are well known and have been discussed a lot here :)
roozhou
27th March 2011, 16:14
@CruNcher
This decoder has nothing to do with DXVA, so there should be no difference between XP and Win7 because neither DXVA1 nor DXVA2 is used.
CruNcher
27th March 2011, 18:00
roozhou of course your right so the chinese CUDA Decoder from Baofeng is actually a DXVA implementation your right as it also shows DXVA is being played in MPC-HC what LAV CUVID doesn't, though it shows the same Performance issues in its DXVA mode then LA CUVID does on the 60 fps 1080p @ VMR9 Renderless (same after 12 secodns massive frame drops) that neither Cyberlink DXVA nor CoreAVC CUDA suffer from but many other DXVA decoder inlcuding Mainconcepts and Arcsofts and that must be somehow explainable ;) ?.
VMR9 Renderless Results:
http://www.mediafire.com/download.php?7hddy3klaxz9kyf <- VC1 in .ts a hard one it shows the same problems with LAV CUVID as many other Demuxer/Decoder combos Framedrops/sync issues/Audio cracks/jitter problems
http://www.mediafire.com/download.php?3rr3ur3q65dbb23 <- wouldn't have thought that this is problematic for LAV CUVID it shows in combination with Arcsofts Demuxer problems in correct Deinterlacing (it doesn't deinterlace @ all) with MPC-HC splitter it has chromatic blend failures where Deinterlacing should have taken place.
bjd
27th March 2011, 18:30
http://www.mediafire.com/download.php?7hddy3klaxz9kyf <- VC1 in .ts a hard one it shows the same problems with LAV CUVID as many other Demuxer/Decoder combos Framedrops/sync issues/Audio cracks/jitter problems
That sample plays fine on Mpc-Hc .2993 using either the internal splitter or LAV. Whether VMR9 or MadVR is used, playback is smooth with no audio drop outs.
CPU 11-12% on Athlon 5200+, Geforce GT430, Windows XP. LAV Audio and CUVID decoder in the chain, Reclock used as the audio renderer.
CruNcher
27th March 2011, 18:43
That sample plays fine on Mpc-Hc .2993 using either the internal splitter or LAV. Whether VMR9 or MadVR is used, playback is smooth with no audio drop outs.
CPU 11-12% on Athlon 5200+, Geforce GT430, Windows XP. LAV Audio and CUVID decoder in the chain, Reclock used as the audio renderer.
you have to be careful with playback is smooth (too smooth or micro stutter is hardly visible) look @ the VMR9 Renderless Status display or MPC-HCs OSD to be sure their is no or low Jitter and drop frames are you also using C&Q so Minimal Energy Profile and low CPU frequency with dynamic switching or do you use a Stable Frequency ?
Also would be nice if you could post which Forceware Driver Revision ? with LAV Audio do you mean ffdshow or did i missed nevs audio decoder filter ?
Also its hardly comparable as your GT430 is VP4 and has full acceleration for VC-1 which my VP2 hasn't and needs different optimizations to not error out VP4 is much easier to handle as every Bitstream should be decoded properly entirely on the DSP without needing to optimize for different paths which normally should take place inside nvcuvid.dll but for DXVA needs different handling see the Arcsoft Decoder example i shown above.
ranpha
27th March 2011, 18:44
Can anyone reproduce image quality corruptions + green bar on this sample (http://goo.gl/vRNdi). The clip plays fine with either CoreAVC CUDA or nVidia's own CUVID MF transform filter.
nevcairiel
27th March 2011, 19:01
Also its hardly comparable as your GT430 is VP4 and has full acceleration for VC-1 which my VP2 hasn't
As far as i am aware, only full acceleration is supported by CUVID. I would be surprised if it implements partial acceleration .. but then, i don't have a VP2 card in any working system to test.
In any case, i'm not that interested in supporting partial acceleration in my filter, its usually a PITA to work with.
Can anyone reproduce image quality corruptions + green bar on this sample (http://goo.gl/vRNdi). The clip plays fine with either CoreAVC CUDA or nVidia's own CUVID MF transform filter.
works fine here, are you using 0.2?
bjd
27th March 2011, 19:08
do you use a Stable Frequency ?
I think so
Also would be nice if you could post which Forceware Driver Revision ?
267.24 Beta
with LAV Audio do you mean ffdshow or did i missed nevs audio decoder filter ?
LAV audio as bundled with Nev's splitter
Point taken about VP4. Guess you will have to hold off until the decoder has developed further and been optimised for earlier generation Nvidia/Cuda cards.
All I can say is that I am really pleased I opted for NVidia rather than ATI when looking for a new graphics card 3 months ago - LAV Cuvid and MadVR complement each other perfectly. I have only one bluray in my collection that I cannot play with LAVCuvid/MadVR, and that is because it is a seamless branching title and the 1080P AVC is split by Mpc-HC as 720x 480 which kind of throws a spanner in the works. :mad:
nevcairiel
27th March 2011, 19:10
Wait for bluray support in LAV Splitter.... :)
I'm working on that again, now that LAV CUVID is released.
bjd
27th March 2011, 19:18
thanks Nev, looking forward to it.
ranpha
27th March 2011, 19:31
works fine here, are you using 0.2?
yes, I'm using version 0.2.
TinTime
27th March 2011, 19:33
Thanks for this! - I'll give it a go shortly.
As far as i am aware, only full acceleration is supported by CUVID. I would be surprised if it implements partial acceleration .. but then, i don't have a VP2 card in any working system to test.
I've got an 8600GT so I'll see what happens. Using DGNV tools I'm able to decode VC-1 and MPEG-2 despite it being a VP2 card. Apparently it decodes in software somewhere in the NVidia drivers.
CruNcher
27th March 2011, 19:34
As far as i am aware, only full acceleration is supported by CUVID. I would be surprised if it implements partial acceleration .. but then, i don't have a VP2 card in any working system to test.
In any case, i'm not that interested in supporting partial acceleration in my filter, its usually a PITA to work with.
Hmm i would say so as Donalds NVDgdec has no problems playing back that stream with partial acceleration on VP2 and that is a really direct Nvcuvid implementation, DXVA has also no Problems with it @ least if the Decoder is correctly optimized for every WMV9 (WMV3) VC-1 bitstream obviously no WMV1/2 bitstream is accelleratable (for that i either use ffdshow or Microsofts Decoder also for some Special WVC1 bitstreams that are outdated spec i use Microsofts Decoder for DXVA as i said Arcsoft Fails with such bitstreams on DXVA same visual problem like the to much reference problem that H.264 suffers on DXVA from) :)
nevcairiel
27th March 2011, 19:38
I still have a GTX260 sitting around somewhere .. i can probably throw it in some PC to test at some point. But still enough to do until then.
jmone
27th March 2011, 21:12
Sorry to ask, but don't know my nVidia card models from my elbow! Any recomendations for a HTPC (Silent or Quite with venting out the back as it is to go into a Shuttle), HDMI for LPCM Audio, Powerful enough for LAV / madVR but will work in a 300w Shuttle PSU. Eg I recently got a HD5670 which works well but is obviously incompatible for LAV CUVID
SamuriHL
27th March 2011, 21:13
The 430 should do it, yes?
nevcairiel
27th March 2011, 21:17
The 430 with its 1GB of memory should be plenty. If you want some room to improve, i have a 450 in my HTPC, and its very quiet (the gigabyte version with their custom cooler)
Edit:
this one: http://www.gigabyte.com/products/product-page.aspx?pid=3593#ov
Not sure about the non-OC version, the cooler looks weird and bulky.
The Windforce cooler on some Gigabyte cards is usually pretty quiet.
For 430 you can even get passive, but not sure how that works out in such a small shuttle case.
SamuriHL
27th March 2011, 21:20
I have the 450, as well, and it's incredibly quiet. It's in my bedroom and it's on when I sleep, so, it's really very quiet. Power wise, it's very easy on the power.
madshi
27th March 2011, 21:25
Just as a hint: Things move fast in the computer world. If you have a bit of patience, throwing out your ATI card and replacing it with an NVidia card might not be necessary in the long run. Of course it all depends on how much patience you have. nevcairiel's solution for hardware decoding + deinterlacing with madVR is here now, so if you don't have much patience, a decent NVidia card should be a pretty good solution right now. On the other hand, ATI cards currently seem to have the better performance per watt ratio, and maybe there'll be a solution for using hardware decoding + deinterlacing with ATI + madVR sooner or later, too.
A 430 should be good enough, I guess. At least for pure decoding plus general madVR 2D Blu-Ray rendering. It might not be fast enough for future madVR algorithms or for 1080p60 or 3D 1080p24 rendering with highest scaling algorithms (if you need to scale 1080p content at all), can't say for certain.
markanini
27th March 2011, 21:32
Hardware decoding with madVR.....
And hardware de interlacing at that, very awesome indeed. There was a Chinese decoder that could do this earlier? FWIW on my 9800GT interlaced mpeg2 ts and ps files work as expected. Progressive H264 also work fine. VC1 wont start.
jmone
27th March 2011, 22:56
Mmmm.....thanks all for the GPU feedback, and I'm not sure I'll jump and cross grade at this stage as the 5670 is low power (good for the little PSU in the shuttle), vents out the back, is quite, has DD5 mem and handles my 1080/50p content with madVR just fine. The only thing I don't currently get is great deinterlacing (especially of 1080/60i VC-1... and I really don't have much of that anyway (the odd Video Concert etc)). The alternative nVidia range "seems" to be:
- 430: I can only see DD3 based products (may be limited on future madVR / AVC 1080/50p) but power consumption, etc looks fine
- 450: Specs claim you need a 400w PSU and the current available designs dump the heat into the Box not back vented.
yesgrey
27th March 2011, 23:03
Any recomendations for a HTPC
The GT 440 is preferable. The GT 430 uses DDR3 memory, while the GT 440 uses DDR5, and that will make a lot of difference: double the memory bandwidth.
Aleksoid1978
28th March 2011, 00:11
I have a bug - after seek video resize/zoom to 100% in MPC-HC.
sneaker_ger
28th March 2011, 03:09
I have a bug - after seek video resize/zoom to 100% in MPC-HC.
Same here. (MPC-HC 2988, madVR 0.47)
ranpha
28th March 2011, 03:51
Can anyone reproduce image quality corruptions + green bar on this sample (http://goo.gl/vRNdi). The clip plays fine with either CoreAVC CUDA or nVidia's own CUVID MF transform filter.
Already found out why playback of the sample is broken: Haali Media Splitter. Using MPC-HC internal MP4 splitter and playback is fine.
Aleksoid1978
28th March 2011, 07:54
Another bug - slow framerate while playback XVID video. Original fps - 25, play with ~16.
Play in MPC-HC, EVR Custom.
nevcairiel
28th March 2011, 08:16
Another bug - slow framerate while playback XVID video. Original fps - 25, play with ~16.
Play in MPC-HC, EVR Custom.
Turn on Frame Time Correction.
jmone
28th March 2011, 09:58
Wait for bluray support in LAV Splitter.... :)
I'm working on that again, now that LAV CUVID is released.
Great news as this gives the first every DirectShow solution for BD!
SamuriHL
28th March 2011, 14:04
Great news as this gives the first every DirectShow solution for BD!
You ain't kidding. What an amazing solution this is shaping up to be! First the awesome splitter so we get great MKV playback. Then the decoder to help those of us with slow machines to make use of madVR. And finally blu-ray support. I love it!
nevcairiel
28th March 2011, 14:11
The CUVID decoder was an accident really. I stumbled upon the CUVID sample application one day, and it looked so super simple, so i wondered how hard it would be to wrap DirectShow around it .. turns out, not that hard!
Still needs alot of work to improve timestamping behaviour so it works better with some of the "funny" renderers out there, but for me, it seems to work quite smoothly with madVR, no matter what i throw at it. :) I'll be focusing on the splitter again now for the near future, though.
bjd
28th March 2011, 14:33
but for me, it seems to work quite smoothly with madVR
Yep, same here.
SamuriHL
28th March 2011, 14:36
Yea, it works perfectly for me with madVR, as well. Since you fixed the bug I ran into, I've not had any more problems. :thanks: I'm really truly happy with how your code has been progressing. Once you get bitstreaming in the audio decoder I can nuke ffdshow completely. I was using it for scaling but I have other ways to pull that off now that work just as well or better. And now I can use madVR on my bedroom machine for both h.264 and VC-1. That is a godsend!
I found two problems:
-Some H.264 videos produce chroma offset: The chroma is displayed about 16 pixel to high, the 16 px at the bottom are green/grey (depends on renderer), like second picture (Anixe HD) I posted in the DiAVC thread: http://forum.doom9.org/showthread.php?p=1442323#post1442323.
-Does not work correctly with DVBViewer:
MPEG-2 decodes, but has problems after channel change (DVBViewer does not rebuild graph, LAVCUVID need to detect stream change and reset decoder).
H.264 decodes <1 second with major display problems (picture is completly disordered), then it crashes.
goldie
28th March 2011, 16:11
How could I missing this. :mad:
Just bought an ATI Radeon graphics card for madVR! :p
nevcairiel
28th March 2011, 17:18
-Some H.264 videos produce chroma offset: The chroma is displayed about 16 pixel to high, the 16 px at the bottom are green/grey (depends on renderer), like second picture (Anixe HD)
This sounds like an issue with the files, or incompatibilities with the hardware decoder. Do you have CoreAVC, and can compare if its not happening there when using the CUDA mode?
-Does not work correctly with DVBViewer:
MPEG-2 decodes, but has problems after channel change (DVBViewer does not rebuild graph, LAVCUVID need to detect stream change and reset decoder).
H.264 decodes <1 second with major display problems (picture is completly disordered), then it crashes.
I'll add support for format changes in the next version.
CruNcher
28th March 2011, 19:54
This sounds like an issue with the files, or incompatibilities with the hardware decoder. Do you have CoreAVC, and can compare if its not happening there when using the CUDA mode?
I'll add support for format changes in the next version.
Thats the chromatic blend issue i have tried to describe earlier that i get with MPC-HC Splitter and Deinterlacing on the premiere-paff.ts sample see my earlier post with the 2 samples, i guess it could have todo with the nature of 1920x1088 Sat ratio NVDgdec/CoreAVC for example clip that 8 pixel it seems LA CUVID has issues with that signal resulting in Deinterlacing being done wrong ;) other TS Demuxer (more stable ones) wont accept the way LA CUVID handles that @ all and dont deinterlace see Arcsofts Demuxer http://forum.doom9.org/showpost.php?p=1487864&postcount=66 .
So far with Arcsofts Demuxer there are are only this 2 samples error out the other ts samples seem to work fine, except obviously Mpeg-2 Studio Profile as nvcuvid doesn't support 4:2:2 streams yet :)
This sounds like an issue with the files, or incompatibilities with the hardware decoder. Do you have CoreAVC, and can compare if its not happening there when using the CUDA mode?I do not have CoreAVC, but DGDecNV and it works perfectly there. I also remuxed the file, problem is still the same.
By the way, the file the problem occurs is not recorded from DVB, but encoded by a DSLR and is in MOV container, I remuxed to MKV, same problem. File is 1080p25 (1088 coded). Plays fine with ffdshow.
I'll add support for format changes in the next version. Thanks! Could you also investigate the H.264 problem with DVBViewer?
Another question: MPEG-2, MPEG-4 ASP and H.264 work for me, but it refuses to accept WMV3 (from wmv/asf file), which is the same as VC-1? Or are there some differences and CUDA cannot decode it?
nevcairiel
29th March 2011, 07:46
I do not have CoreAVC, but DGDecNV and it works perfectly there. I also remuxed the file, problem is still the same.
By the way, the file the problem occurs is not recorded from DVB, but encoded by a DSLR and is in MOV container, I remuxed to MKV, same problem. File is 1080p25 (1088 coded). Plays fine with ffdshow.
Can you upload a short sample that shows the problem? Maybe cutting it to 1080 solves it already, but i dont think i have a video with those problems
Another question: MPEG-2, MPEG-4 ASP and H.264 work for me, but it refuses to accept WMV3 (from wmv/asf file), which is the same as VC-1? Or are there some differences and CUDA cannot decode it?
I suppose i can try feeding it directly into the decoder and claiming its VC1, and see what happens..
CruNcher
29th March 2011, 09:23
Nev might be interesting http://forum.doom9.org/showpost.php?p=1488268&postcount=6181 especially the 12 second pattern before drops start (buffer difference ?) for some Decoder including yours :)
Can you upload a short sample that shows the problem? Maybe cutting it to 1080 solves it already, but i dont think i have a video with those problems
Here it is:
http://www.megaupload.com/?d=F7S8JZO1
Thanks
neoufo51
29th March 2011, 23:50
For some reason, no matter what, this decoder will only work when I play H264 files. It doesn't work at all with any XVID files. I've disabled the MPC-HC decoder but it then just uses the Microsoft mpeg4 DMO.
EDIT: Whoops, my main card only supports featureset B. My mistake.
SamuriHL
29th March 2011, 23:51
That's because it only decodes h.264/vc-1/mpeg2 afaik.
BatKnight
30th March 2011, 00:44
That's because it only decodes h.264/vc-1/mpeg2 afaik.
Nope, LAV CUVID decodes H264, VC-1, MPEG2 and MPEG4-ASP (DivX/Xvid) as long as you own a nVIDIA card that supports the VDPAU Feature Set C.
Cards supporting only Feature Set B or A can't decode MPEG4-ASP (DivX/Xvid)
You may check http://en.wikipedia.org/wiki/Nvidia_PureVideo#Table_of_PureVideo_.28HD.29_GPUs for a complete list of availability.
Nuno
SamuriHL
30th March 2011, 00:54
Nope, LAV CUVID decodes H264, VC-1, MPEG2 and MPEG4-ASP (DivX/Xvid) as long as you own a nVIDIA card that supports the VDPAU Feature Set C.
Cards supporting only Feature Set B or A can't decode MPEG4-ASP (DivX/Xvid)
You may check http://en.wikipedia.org/wiki/Nvidia_PureVideo#Table_of_PureVideo_.28HD.29_GPUs for a complete list of availability.
Nuno
Ah, neat. I didn't know it did mpeg4-asp. Well, obviously if your card supports it. Mine would. Sweet!
neoufo51
30th March 2011, 00:56
Nope, LAV CUVID decodes H264, VC-1, MPEG2 and MPEG4-ASP (DivX/Xvid) as long as you own a nVIDIA card that supports the VDPAU Feature Set C.
Cards supporting only Feature Set B or A can't decode MPEG4-ASP (DivX/Xvid)
You may check http://en.wikipedia.org/wiki/Nvidia_PureVideo#Table_of_PureVideo_.28HD.29_GPUs for a complete list of availability.
Nuno
Crap, that's exactly the problem. I thought my card supported C but I doubled checked and its B. I'll buy new hardware in the near future anyway. Thanks for your help.
JarrettH
30th March 2011, 02:19
Doesn't seem to be loading for me.
Using MPC and EVR-CP I blocked Microsoft DTV-DVD Decoder, made LAVCUDSFDFGFDS decoder preferred, DVD still loads with MPEG-2 Video Decoder (low merit)
ranpha
30th March 2011, 03:06
Doesn't seem to be loading for me.
Using MPC and EVR-CP I blocked Microsoft DTV-DVD Decoder, made LAVCUDSFDFGFDS decoder preferred, DVD still loads with MPEG-2 Video Decoder (low merit)
Yeah, it seems that using the 'Open DVD' function, and LAV CUVID isn't used (it uses the Cyberlink decoder in my case - and surprisingly, there are no Macrovision error with madVR). Only if I open the .vob file directly, LAV CUVID decoder will be used.
JarrettH
30th March 2011, 03:19
I am also wondering what this does that the Microsoft DTV-DVD one does not. The Microsoft one looks pretty great to be honest. :cool:
thuan
30th March 2011, 03:51
@nevcairiel:
Since the time nvidia released driver newer than 258.96, DXVA and CUDA acceleration has been very choppy for me (home config), the worst is with 1080p video, with your decoder it plays like slideshow (1 frame per 4 or 5 seconds), with CoreAVC CUDA or MPC DXVA I still have it at certain positions in a video and after seek. It is really annoying that I'm thinking of changing hardware. So can you compile this decoder with an older version of CUDA SDK so I can use it with the older driver? It will be very appreciated. Also what is the current state of playback on your newer nvidia (GTS 450 I presume), is it butter smooth for any video resolution/bitrate?
Thanks.
nevcairiel
30th March 2011, 06:53
Playback is perfect for me, on both my GTS 450 and my GTX 570, using either the 267.24 or 266.58 driver.
bjd
30th March 2011, 09:20
Yeah, it seems that using the 'Open DVD' function, and LAV CUVID isn't used (it uses the Cyberlink decoder in my case - and surprisingly, there are no Macrovision error with madVR). Only if I open the .vob file directly, LAV CUVID decoder will be used.
MediaType issue:
OpenDVD will produce MEDIATYPE_ENCRYPTEDPACK (not supported)
Open VOB will produce MEDIATYPE_VIDEO
thuan
30th March 2011, 09:39
@nevcairiel: Then I do hope I see you compile a version of your filter that support older graphic driver before I lost my patience and jump the gun :D. Don't really wanna change GFX card now as I'm going oversea sometime this year but this issue has been going for a while already and it seems to affect other with nvidia gtx 260/280 and older cards (saw a few on guru3d forum).
CruNcher
30th March 2011, 11:22
@nevcairiel:
Since the time nvidia released driver newer than 258.96, DXVA and CUDA acceleration has been very choppy for me (home config), the worst is with 1080p video, with your decoder it plays like slideshow (1 frame per 4 or 5 seconds), with CoreAVC CUDA or MPC DXVA I still have it at certain positions in a video and after seek. It is really annoying that I'm thinking of changing hardware. So can you compile this decoder with an older version of CUDA SDK so I can use it with the older driver? It will be very appreciated. Also what is the current state of playback on your newer nvidia (GTS 450 I presume), is it butter smooth for any video resolution/bitrate?
Thanks.
Hmm could you post Cuda-Z memory bandwith results ?
Low Power Profile
http://img836.imageshack.us/img836/1623/9800gtsb.png
High Power Profile
http://img690.imageshack.us/img690/1493/9800gtsbhigh.png
Also what for a renderer are you using ?
Also be carefull the DSP is only optimized upto H.264 1080p 60 fps if you try to playback something @ higher framerates you would need the VPx core that supports MVC :)
jj666
30th March 2011, 11:33
Thuan,
I'm using the 9800 GX2 with 267.60 driver (and previously 267.24), according to Wikipedia, should be exactly the same processing unit as the 9800 GT. No problems here...
GeForce 9600 GSO, 9800 GT, 9800 GTX, 9800 GTX+, 9800 GX2 G92 VP2 A March 2008
Cheers,
-jj-
thuan
30th March 2011, 11:42
@jj666: Your OS is? I will search for and try 267.60
@CruNcher: Here's the screenshot in High Power mode
http://thumbnails35.imagebam.com/12577/4a29e7125762717.jpg (http://www.imagebam.com/image/4a29e7125762717)
My GPU is factory overclocked to 740MHz core and 1850 shader though. Driver is 266.58 ATM of testing.
madVR or EVR-CP, same problem.
And no, I was trying to play simple 1080p 24fps file.
CruNcher
30th March 2011, 12:37
Hmm quite low (what for System Memory you use ? Frequency,timings ?)
are these also result in playback issues (maybe even frame drops use the Youtube Info display, right click )
http://www.youtube.com/watch_popup?v=wdySQHhLXjA&vq=hd1080
http://www.youtube.com/watch_popup?v=qxXf7AJZ73A&vq=hd1080
don't forget to turn hardware acceleration on
nevcairiel
30th March 2011, 12:40
Note that LAV CUVID is only using pinned memory to transfer the image back from the GPU to the System RAM, as pageable memory is known to have performance problems.
Playback is perfect for me, on both my GTS 450 and my GTX 570, using either the 267.24 or 266.58 driver.
Tested again:
MPC internal splitter: problem
Haali Splitter: problem
LAVSplitter: works
The renderer doesnīt matter. Since all other decoders Iīve tested (ffdshow, mpc internal, DivX, Microsoft, DiAVC trial) work with haali/mpc splitter the bug is probably in your decoder.
nevcairiel
30th March 2011, 12:41
Lesson learned: use LAV Splitter! :)
I'll do some tests once i'm working on the decoder again, but from my past experience, there really has been a cycle of bugs surrounding the MPC splitters, the mpc decoders and ffdshow, where they all rely on the bugs of the other to work properly, and no-one is really doing it just right.
Selur
30th March 2011, 12:53
just wondering,..
would it be possible to use this decoder (on a windows system) with mplayer/mencoder by modifying the codecs.conf similiar to
videocodec lavcuvid
info "LAV CUVID Decoder"
status working
fourcc AVC,avc
fourcc VSSH
fourcc X264,x264
fourcc h264,H264
driver dshow
dll "LAVCUVID.ax"
out YV12
(since DGNVDec can't output Yv12 to stdout and feed i.e. x264 directly I just thought that using mencoder this might be a way to get gpu decoding to x264 without the need for avisynth and DGNVDec.)
Cu Selur
nevcairiel
30th March 2011, 12:56
I have no idea how those setups work, but two things:
- the fourccs are AVC1 and avc1 (FourCC kinda implies its always 4 :P)
- It can only output NV12, not YV12
Selur
30th March 2011, 13:00
Thanks! Will try a bit if I get this working,.. ;)
thuan
30th March 2011, 13:03
http://thumbnails25.imagebam.com/12577/0cf6a7125768934.jpg (http://www.imagebam.com/image/0cf6a7125768934)
4x2GB Kingmax DDR2-800. Your question reminds me of some BIOS options related to VGA performance in my Gigabyte board. Gonna try tweaking.
I tried these youtube video with latest flash player and those play fine (only problem is my internet speed, 1.5Mbps). Unrelated note, the first video also reminds me how I dislike trance/house/club/psychedelic music, funny how other ppl in their twenties like them but I simply can't.
CruNcher
30th March 2011, 13:15
Thanks! Will try a bit if I get this working,.. ;)
http://forum.doom9.org/showthread.php?t=141441 <- easier way (also should be more performant then going stdout):)
@thuan
memory speed seems not to be the problem as nev also said he uses pinned memory try a new driver with a newer nvcuvid.dll you can also test different nvcuvid.dll by just pushing them in LA CUVIDs main filter directory if you want to seperate 3D from Video in Nvidias driver (works only reliable though if they didn't made major CUDA branch changes that impact also nvcuvid or and nvcuvenc)
Selur
30th March 2011, 13:30
easier way
but it would require
1. for the .ax file to be registered,..
2. the use of directshow splitters
("also should be more performant then going stdout" -> shouldn't do much of a difference decoding with mencoder/ffmpeg and piping to x264 was on par with x264 and internal decoding, last time I checked ;))
-> played a bit around with the codecs.conf of mplayer, but didn't get it working,.. (may be I'll try it again some time)
Cu Selur
CruNcher
30th March 2011, 13:37
Hehe yeah it would require a controlled Dshow environment else Dshow Hell is guaranteed, and yeah i myself use mencoder and piping and yet have to see lower performance same as stan and you use it reliable for their encoding frameworks (oldshool) ;)
thuan
30th March 2011, 13:51
@cruNcher: Indeed trying to change these settings in my BIOS did little to the whole problem, albeit setting Robust Graphic Booster at Turbo and set memory speed to integer multiple of my FSB seems to make the problem a "little" less severe but it is still nowhere acceptable. I'm using the latest 267.91 now and still the same problem. I'm thinking Gigabyte did something to this graphic board BIOS that causes it to conflict with newer nvidia driver. The only configuration I know that work is 258.96 with DXVA or CoreAVC CUDA, unfortunately lav cuvid is not compiled to be compatible with that driver version so I can't test. I also don't think it's a broken windows installation as I have tried to reinstall once and still only 258.96 works.
I'm torn between getting a GTS 450 board and waiting for a fix. Considering I'm only of minority (seen some other had this problems too), likely it will be the same as that ATI chroma upsampling problem that I reported to ATI a few years ago (the respondents said the screenshots I sent them looks fine lol, that guy must have worked with 14in CRT). We are at the mercy of manufacturers.
@selur: I don't think that is going to work as this DirectShow filter is only a wrapper of CUDA calls included in a Windows DLL that works with Windows driver.
CruNcher
30th March 2011, 14:05
As you can read in CoreCodecs CoreAVC 2.5 changelog they use some ASM modifications for the CUDA Part i guess LA CUVID uses plain the Nvidia API but not really any optimization yet be it Colorspace Conversion or maybe other parts, though unfortunately the issue im facing Personally with both is not RAW Performance related at all and i don't found the reason for it yet.:confused:
SamuriHL
30th March 2011, 16:10
GPUDirect 2.0....does that buy any performance?
nevcairiel
30th March 2011, 17:39
As i understand it, GPUDirect is just a smart way to copy data between two CUDA cards, without ever seeing the CPU.
SamuriHL
30th March 2011, 18:21
Ah, I see. Not useful for us then. Thanks!
CruNcher
30th March 2011, 18:42
finally its out that Drivers nvcuvenc.dll also fixes a very pesky Encoder bug that caused strange moving chroma :)
mark0077
30th March 2011, 19:22
Thanks alot navcairiel, very impressive stuff with the decoder. Strangely, and maybe I'm hoping you could explain if this is something that could be improved up on or not, but using this or the coreavc decoders with my GTX295 / core i7 920 setup on Windows 7, I get more frame drops than with ffdshow ffmpeg software decoder.
I am using madVR and some avisynth scripts that change the frame rate from ~24 -> 50fps so I'm not sure if anything in this chain, is known to cause a bottleneck somewhere gpu wize thats causing the frame drops. Its only 1 or 2 frame drops a second but I am now getting 0 with the software decoders... Not a big deal but just thought I should mention it and I'm here if you need any tests / trials done to see if this can be resolved. I'd love to use your decoder, and even push my avisynth scripts further (quality wise) due to the freed up cpu.
Im using the 270.51 drivers released today. Testing today with a blu-ray vc1
mindbomb
30th March 2011, 19:56
im getting persistant stuttering on vc-1 content.
i have an nvidia 9400m, using madvr as my renderer, and lav splitter
CruNcher
30th March 2011, 20:25
im getting persistant stuttering on vc-1 content.
i have an nvidia 9400m, using madvr as my renderer, and lav splitter
very container dependent if it's inside PS/TS it wont surprise ;)
nevcairiel
30th March 2011, 20:29
im getting persistant stuttering on vc-1 content.
i have an nvidia 9400m, using madvr as my renderer, and lav splitter
Turn off "Enable VC-1 Timestamp Correction" in the LAV Splitter settings.
That goes for mark0077 as well.
The next version of LAV Splitter will have LAV CUVID in the list of decoders to autodetect it should be off.
mindbomb
30th March 2011, 21:13
I am still noticing dropped and delayed frames in madvr still with vc-1 actually on both my 9400m and gtx 260
I am also getting poor performance for h264 for my 2 computers each with vp2 cards (a gtx 260 and an 8600gt) . But especially for the 8600gt; 1080p video was unwatchable.
For the gtx 260, it was almost perfect.
namaiki
31st March 2011, 14:42
mindbomb, how much video ram on all of those cards? Also, you can check statistics for GPU/VRAM usage and load with the latest Forceware with GPU-z.
mindbomb
31st March 2011, 17:11
the 9400m has none since it's integrated, but it's vp3, so is suspect thats why it has very good performance for h264
the gtx 260 has 896mb, and the 8600gt has 256mb
i dont think its a video ram issue on the 8600gt, since it seems to use 240mb of ram for all videos, but performance is especially poor for 1080p h264, while 720p h264 is fine, and vc-1 isn't perfect, but its in much better shape than 1080p h264.
CruNcher
31st March 2011, 19:19
nev http://forum.doom9.org/showpost.php?p=1488268&postcount=6181 <- im almost sure this is somehow timestamp related changing Mainconcepts timestamp setting has several effects on the droped frames rate. Im trying your Lav Splitter and audio decoder again :)
I tried the combination of Lav Audio Decoder + Lavf Splitter + VMR9 Renderless and still i get frame drops after 12 seconds :(
VMR9 Renderless = Drops after 12 seconds
VMR7 Renderless = OK (useless no Shader support)
VMR9 Windowed = Drops after 12 seconds (useless no Shader support)
VMR7 Windowed = OK (useless no Shader support)
So its affecting only VMR9 on my system and with Cyberlinks Decoder its ok so it seems only renderer related not really timestamp @ all or a combo of both maybe even Driver related. Still i wonder what Cyberlink does different that it doesn't get affected compared to all the others.
I guess i try another player with VMR9 support and see if it happens their too (maybe it has something todo with MPC-HC sync stuff and GPU buffering)
Hmm nope same in Graphstudio connected to Video Rendering Mixer 9 every decoder DXVA or CUDA fails with that stream except Cyberlinks Decoder maybe it has todo something with my more strict Windows Timings.
IDLE
ClockRes v2.0 - View the system clock resolution
Copyright (C) 2009 Mark Russinovich
SysInternals - www.sysinternals.com
Maximum timer interval: 15.625 ms
Minimum timer interval: 1.000 ms
Current timer interval: 15.625 ms
Video Playback
ClockRes v2.0 - View the system clock resolution
Copyright (C) 2009 Mark Russinovich
SysInternals - www.sysinternals.com
Maximum timer interval: 15.625 ms
Minimum timer interval: 1.000 ms
Current timer interval: 0.977 ms
seems that with really high resolution timings not every decoder can cope with on VMR9
thuan
1st April 2011, 09:51
On my 9800GT with 512MB RAM, with madVR and LAV CUVID or EVR-CP and DXVA, playing 1080p video use around 450MB RAM. The funny thing is the video decoder engine usage is a mess jumping around to around max 70% and sometimes down to 10% with mem controller load never goes over 20% but it still stutters on certain heavy bitrate video like slideshow.
roozhou
1st April 2011, 10:08
I have a 8500gt with 128MB VRAM. With driver earlier than 197.45, the VP2 unit on this card is unable to decode H264 video with width >1856. With newer driver, DXVA1 can be used on 1920x1080 content but CUDA still has the 1856 width limit (Both CoreAVC and LAV CUVID).
Found another bug:
LAVCUVID will connect and try to decode not supported H.264 profiles, tested with lossless (old and new format).
Result is heavily corrupted image (new lossless format) or no output at wrong resolution (old lossless format). Would be great if LAVCUVID could detect unsupported H.264 profiles and refuse the connection.
CruNcher
2nd April 2011, 21:45
Yep thats a big no go if you cant decode it let the next filter in the chain try it ISVs should also learn that, though i guess nev just missed to parse for x264 losless as nvcuvid knowingly doesn't support it and never will ;)
It also tries to playback Mpeg-2 Studio Profile as well and obviously fails
PS: I also wanted to add that even benchmarks show that its slower then CoreCodecs Nvcuvid implementation http://forum.doom9.org/showpost.php?p=1489410&postcount=48 therefore it is more stable (more consistent playback results) if you close MPC-HC playback reopen close reopen CoreAVCs Nvcuvid has a tendency to lose efficiency and recovers after the 3rd run very slowly LA CUVID doesn't show this behavior (every run it goes to its full speed of 45 fps), something that DXVAchecker obviously ignores ;)
Xorp
3rd April 2011, 19:02
Any chance this decoder could someday perform inverse telecine on interlaced film content? (ie the occasional 1080i60 movie Blu-ray) Like Dscaler does for MPEG2.
madshi
3rd April 2011, 19:05
@Xorp, nevcairiel says it already does. I don't fully believe it yet, though. I think the hardware should properly detect the cadence and put the right fields together, but I doubt that the hardware will mod the output to 24p. I think the output will be either 30p or 60p. I'm ready to be proven wrong, though... :p
CruNcher
3rd April 2011, 20:28
Nev any idea where round about 40 fps of 45 fps are disappearing too when rendering out with any of the NVcuvid Dshow filters (not only yours) on either Haalis or Madshis renderer ?
it looks like that currently
VMR7 = 45 fps
VMR9 = 45 fps
Haali = 4 fps
Madvr = 4 fps
Haali(CPU) = 60 fps
Madvr(CPU) = 60 fps
little heavy that loss, catch them and force them to arrive @ Haali/Madvr ;)
nevcairiel
3rd April 2011, 21:03
I can play 60fps content just fine on madVR.
CruNcher
3rd April 2011, 21:10
Hmm strange i tried that 4 girls stream it tasks VP2 a lot here http://forum.doom9.org/showthread.php?p=1477571#post1477571 impossible to get 60 fps with that on VMR even Cyberlink DXVA only goes up to 53 fps
Hmm but with Madvr and Haali in combination with LAV CUVID (no connection to Haali actually falls back to Video Renderer), CoreAVC CUDA or CUDA Video Decoder its really problematic almost every frame drops away you don't even need a OSD to see that over here ;)
Arggggghhhh
http://img715.imageshack.us/img715/9756/heavyjitterhaalicoreavc.png
do you see what i see ??? that could explain it
lets see what i send madshi over with madnv12test ;)
D3D9 Surface speed test:
NV12: upload 440 fps, download 554 fps, trick download failed
YV12: upload 76 fps, download 17 fps, trick download failed
A8R8G8B8: upload 431 fps, download 262 fps, trick download failed
Forcing CoreAVC Nvcuvid to NV12 only on Madvr is indeed much faster though still more of a Slideshow compared to DXVA :(
GTPVHD
6th April 2011, 10:41
VP2 and VP3 doesn't have enough performance to decode 60FPS videos, only VP4 can do it. Upgrade to a VP4 enabled Nvidia GPU.
http://www.nvnews.net/vbulletin/showpost.php?p=2352086&postcount=325(VP4)
http://www.nvnews.net/vbulletin/showpost.php?p=2375607&postcount=339(VP4)
H264 DECODING (1920x1080): 66 frames/s
http://www.nvnews.net/vbulletin/showpost.php?p=2392864&postcount=364(VP3)
H264 DECODING (1920x1080): 52 frames/s
http://www.nvnews.net/vbulletin/showpost.php?p=2289028&postcount=306(VP2)
H264 DECODING (1920x1080): 44 frames/s
sneaker_ger
6th April 2011, 13:16
VP2 and VP3 doesn't have enough performance to decode 60FPS videos, only VP4 can do it. Upgrade to a VP4 enabled Nvidia GPU.
How bitrate dependent is this? I got some 70 fps on 1080p with a VP3 on a quick graphstudio benchmark.
mark0077
6th April 2011, 19:14
Hi nevcairiel, your tweak of disabling vc-1 frame time correction in the lav splitter fixed my random frame drops here and there.
Now comparing your decoder to ffmpeg-mt, unfortunately I still get more dropped frames and I have an idea where incase its any help.
When I was tweaking my avisynth mvtools scripts recently, and when i didn't know about ffmpeg-mt, I would find that certain scenes in 1080p movies brought up my cpu usage just that little bit, I assume due to more detailed scenes / higher bitrate. Whatever the reason, I would get 1,2, maybe a bunch of even 10 frame drops all at once in these busy scenes. I noticed that cpu and gpu usage was still very very low (core i7 920 @ 3.7ghz, gtx 295). So I found that the simple switch to the multithreaded decoder spread the load that little bit so that the increases in cpu / gpu usage during those busy scenes wasn't enough to overload one core of my cpus.
Now I see the very same behaviour with your decoder. I get frame drops in these busy scenes again, that I don't with ffmpeg-mt. I'm basically asking is there anything in your decoders code that puts any sort of load on the cpu that could also be made to be multithreaded. I have a strong feeling that if this was possible, that I could also see 0 frame drops with your decoder like I do with ffmpeg-mt as none of my cpu cores would reach a point where I would get dropped frames. Feel free to ask any questions about my setup if you're interested in pursuing any possible enhancements. :)
I'm outputting from lav splitter -> lav cuvid decoder -> nv12 -> ffdshow + avisynth -> nv12 -> madVR -> GTX295
nevcairiel
6th April 2011, 19:23
The decoding is all done in hardware, i cannot really change how that works. However, there are some ways to improve the pipelining, like right now i only have one output buffer, which once its filled with a picture, gets send to the renderer. What i will do is allow more output buffers (which will increase memory usage on the GPU, though), and then queue them up for sending to the renderer - this might help in "busy" situations.
mark0077
6th April 2011, 19:25
Thanks navcairiel, I'll test out any changes that you might be able to make and report back whenever any new builds are available :) Keep up the good work.
CruNcher
6th April 2011, 20:10
VP2 and VP3 doesn't have enough performance to decode 60FPS videos, only VP4 can do it. Upgrade to a VP4 enabled Nvidia GPU.
http://www.nvnews.net/vbulletin/showpost.php?p=2352086&postcount=325(VP4)
http://www.nvnews.net/vbulletin/showpost.php?p=2375607&postcount=339(VP4)
http://www.nvnews.net/vbulletin/showpost.php?p=2392864&postcount=364(VP3)
http://www.nvnews.net/vbulletin/showpost.php?p=2289028&postcount=306(VP2)
What was the sample i get 52 fps (VP2) on a 60 fps sample which tasks according to GPU-Z the Video Engine @ 95% it's not that easy to confirm if all test different sample complexities ;)
Virtual_ManPL
7th April 2011, 17:37
FYI - CUDA Toolkit 4.0 RC2 (32bit & 64bit) (http://developer.nvidia.com/cuda-toolkit-40)
Waiting for 64bit release of LAV CUVID Decoder :devil:
tiny
8th April 2011, 18:26
Possible bug?
The framerate of pure interlaced sources is not doubled in the output with force bob enabled. It happens with all renderers.
Tested using MPC-HC 1.5.2.3018 on WinXP SP3. CPU: C2D @ 2.13GHz, GPU: GTS450.
Tom Keller
9th April 2011, 00:17
Using MPC-HC 1.5.2.3018 with a couple of 1080p H.264 clips @23.976fps (on WinXP SP3; C2D E6600 @2,4Ghz; 9600GT with driver version 267.24) i always experience some very high cpu consumption here (around 50-55%) with almost every video renderer... except madVR :confused: . I counter checked with GraphStudio - same there.
So using VMR9 or EVR with the LAV CUVID Decoder simply gives me a higher cpu load, than pure software decoding :eek: ... and therefore occasional stuttering. The only exception is madVR as video renderer - this lowers my cpu consumption to a total of 13-17% playing the same files.
Any suggestions on what may be the reason of this behavior?
roozhou
9th April 2011, 16:40
Using MPC-HC 1.5.2.3018 with a couple of 1080p H.264 clips @23.976fps (on WinXP SP3; C2D E6600 @2,4Ghz; 9600GT with driver version 267.24) i always experience some very high cpu consumption here (around 50-55%) with almost every video renderer... except madVR :confused: . I counter checked with GraphStudio - same there.
So using VMR9 or EVR with the LAV CUVID Decoder simply gives me a higher cpu load, than pure software decoding :eek: ... and therefore occasional stuttering. The only exception is madVR as video renderer - this lowers my cpu consumption to a total of 13-17% playing the same files.
Any suggestions on what may be the reason of this behavior?
Did you tried overlay mixer? This has the least cpu and GPU comsumption under WinXP.
Tom Keller
9th April 2011, 17:56
I did. Always the same: 50-55% cpu load, occasional stuttering and a bit of a laggy mouse cursor while playing. But no problem using madVR.
EDIT: I assume the problem is in some kind related to the NV12 colorspace, since CoreAVC behaves the same, when setting NV12 as only output format :eek: . CoreAVC doing fine though, using its internal colorspace conversion.
So when using LAV CUVID Decoder plus ffdshow for colorspace conversion there are no problems (with around 20-30% cpu load).
I guess i'll have to wait, till the LAV CUVID Decoder supports colorspace conversion itself and therefore different output formats. Or (maybe) a different graphics driver helps(?)...
EDIT 2: Tried GeForce driver versions 267.91 & 270.51 - no change at all :( .
Carpo
9th April 2011, 18:42
only thing stoping me from using this decoder is the fact that it using it and madvr means i dont get any subtitles, other than that, they are a winning team
sneaker_ger
9th April 2011, 18:45
only thing stoping me from using this decoder is the fact that it using it and madvr means i dont get any subtitles, other than that, they are a winning team
This is not the fault of LAV CUVID but most likely a misconfiguration on your side.
SamuriHL
9th April 2011, 18:51
Yea, I use it with madVR and the latest MPC-HC and I get subs. They work great for me.
Carpo
9th April 2011, 18:58
Yes, some how auto load subtitles was unticked, which is strange because i cant remember unticking it, and shouldn't be unticked on a fresh install of MPC-HC :/
pankov
10th April 2011, 14:06
nev,
I've just changed my video card from ATI 5750 to NVidia GTX 460 SE so I can use your decoder, cause I need hardware deinterlacing and often subtitles at the same time which is not possible with any other decoder out there but I'm sad to report that it's not working as I expected.
If you try the following sample
http://www.mediafire.com/?em2ouktaqfvd36f
(the same BBC-HD sample from the World Cup - Argentina vs. Nigeria that crashes VSFilter)
with MS DTV-DVD Video decoder and EVR you'll see perfect fluid motion.
With LAV CUVID decoder it's somewhat strange - if I pause the video I get the same picture, so it's not Bob-ed but it's not Vector Adaptive that I get with MS' decoder. .... or it could be that the frames are not sent to the deinterlacer in the correct order. I'm just guessing here but I hope you have some control over this and you can fix it.
Just to say that the problem is not only with this sample but with others that don't have subtitles or simply use a splitter (like Haali's) that doesn't expose the embedded DVB subtitles.
nevcairiel
10th April 2011, 14:19
Well one difference is that when decoding it normally and letting EVR do the deinterlacing, you will actually get 50fps to the renderer, while when the decoder does it, it gets reduced to 25fps (no frame doubling). I don't know if/how i can influence that behaviour though..
pankov
10th April 2011, 15:03
I see now that you are absolutely right but I hope you'll be able to find a solution to output all 50/60 deinterlaced frames.
Till then can you, please, add an option to output the interlaced frames/fields and set the appropriate interlaced flag so we can use the hardware deinterlacer in the renderer?
madshi
10th April 2011, 15:27
Well one difference is that when decoding it normally and letting EVR do the deinterlacing, you will actually get 50fps to the renderer, while when the decoder does it, it gets reduced to 25fps (no frame doubling). I don't know if/how i can influence that behaviour though..
Interesting. So what does that mean for IVTC? I guess LAV CUVID outputs 30p for NTSC/ATSC interlaced movie content?
pankov
10th April 2011, 21:16
Nev,
I think I've found a problem when using LAV CUVID and subtitles. To be precise LAV CUVID + DirectVobSub.
From my tests I noticed that these two don't work at all and sadly that's the only way to show subtitles in ZoomPlayer.
I think I've also found the reason but I'll be happy if you confirm and probably fix it in the future. From your posts I understand that currently LAV CUVID supports NV12 output while DirectVobSub doesn't support it at all. :( It still supports YV12 and from madshi's posts in the madVR thread I understood that these two formats are almost the same - there is a quick and lossless transformation between them.
So my question is "do you plan to add YV12 support to your decoder?" ... or NV12 support to VobSub if it's easier ... or I better ask the MPC developers for the last one?
nevcairiel
10th April 2011, 21:17
The hardware decoder always outputs NV12, and i currently have no plans to write code to convert it into anything else, sorry.
italospain
10th April 2011, 21:27
nev,
I've just changed my video card from ATI 5750 to NVidia GTX 460 SE so I can use your decoder, cause I need hardware deinterlacing and often subtitles at the same time which is not possible with any other decoder out there but I'm sad to report that it's not working as I expected.
If you try the following sample
http://www.mediafire.com/?em2ouktaqfvd36f
(the same BBC-HD sample from the World Cup - Argentina vs. Nigeria that crashes VSFilter)
with MS DTV-DVD Video decoder and EVR you'll see perfect fluid motion.
With LAV CUVID decoder it's somewhat strange - if I pause the video I get the same picture, so it's not Bob-ed but it's not Vector Adaptive that I get with MS' decoder. .... or it could be that the frames are not sent to the deinterlacer in the correct order. I'm just guessing here but I hope you have some control over this and you can fix it.
Just to say that the problem is not only with this sample but with others that don't have subtitles or simply use a splitter (like Haali's) that doesn't expose the embedded DVB subtitles.
There is no problem to get Subtitles with Hardware Deinterlacing with Zoom Player at least with ATI Cards.
I use ffdshow raw filter after CoreAVC (output set to Y12) to aktivate NV12 BOB and subtitles. It fixes CoreAVC wrong field order too.
I do the same with DScaler IVTC Mod for mpeg2 (doesnt support NV12) but this way i get hardware deinterlacing and subtitles.
pankov
10th April 2011, 21:29
:(
I guess I should read better next time before deciding on changing hardware just on hunches that it will solve all my problems.
At the moment both my dreams (VA deinterlacing with madVR and VA deinterlacing + subtitles) are unfulfilled :(
but nevertheless thanks for all your hard work
pankov
10th April 2011, 21:36
italospain,
are you saying that you get the great quality of the Vector Adaptive deinterlacing that we get with the MS decoder?
I simply can't imagine how it's possible for ffdshow to add subtitles to an interlaced video stream and still keep it unmolested and send it to the renderer. btw which renderer are you using?
can you, please, post (or if it's better to send them as PM - to not pollute this thread) some screenshots of your ffdshow settings?
italospain
10th April 2011, 21:57
italospain,
are you saying that you get the great quality of the Vector Adaptive deinterlacing that we get with the MS decoder?
I simply can't imagine how it's possible for ffdshow to add subtitles to an interlaced video stream and still keep it unmolested and send it to the renderer. btw which renderer are you using?
can you, please, post (or if it's better to send them as PM - to not pollute this thread) some screenshots of your ffdshow settings?
yeah i get vector adaptive deinterlacing.
there are no special ffdshow settings only nv12 and bob and subtitles
I have made a ffdshow Profile for interlaced material (*.mkv-i in ffdshow Profiles) together with Smart play Profile of Zoom player (use EVR & ffdshow raw filter(NV12 BOB Subtitles) only for interlaced material otherwise madVR(YV12 Weave DirectVobSub))
if you dont want CoreAVC you can use ffdshow decoder the subtitles works fine with hardware deinterlacing.
oh and there is a bug in Zoom Player Version 6 the subtitles must be external to be shown by ffdshow (you can do it with MKVtoolnix)
sorry for the wrong thread
italospain
11th April 2011, 10:28
Interesting. So what does that mean for IVTC? I guess LAV CUVID outputs 30p for NTSC/ATSC interlaced movie content?
for ATI Cards you can activate Hardware IVTC like Hardware Deinterlacing (NV12 & BOB & EVR)
pankov
11th April 2011, 11:54
yes,
but the question madshi aks is will the decoer (LAV CUVID) know that the framerate is change from 30 fps (29.940) to 24fps (23.976) and be able to tell it to renderer (madVR)
roozhou
11th April 2011, 14:31
Compared to deinterlace, IVTC is quite easier. IMO it is not very difficult to add an adaptive IVTC option to the renderer.
nevcairiel
11th April 2011, 14:38
From what i can tell, it does actually do IVTC (as in combining the fields properly), but it doesn't remove the extra frames. There are some flags that are set on the decoded frames that would indicate this, i have however no actual evidence that they are always set properly. If it sets them, i could easily just adapt the frame timings to account for the 29.97 -> 23.976 change.
Currently, my time is however focused on other projects. This was really more of a toy project, to see if it can be done, and turns out, it was super easy, and was working beautifully - so i decided to share it. :)
SamuriHL
11th April 2011, 14:56
Currently, my time is however focused on other projects. This was really more of a toy project, to see if it can be done, and turns out, it was super easy, and was working beautifully - so i decided to share it. :)
And I don't think anyone is more happy about that than I am. :) It really makes my bedroom HTPC 100x more useful to me. VERY appreciated. :)
CruNcher
11th April 2011, 15:22
Nev will a future LAV CUVID version support chain fallback if 4:2:2 H.264 or 10-bit Bitstreams are detected both aren't supported by Nvcuvid ? if the Decoder cant detect it you could try it with the Splitter and then let the Decoder fallback to the Dshow Graph using the next Decoder Filter (just leave the decision to the automatic Graph connection) this would be really awesome and fix major Playback problems being able to fallback to Mainconcepts Decoder :) Same for Mpeg-2 Studio Bitstreams trying to forcefully playback them is wrong :(
I really doubt VP4 now supports any of these Bitstreams
nevcairiel
11th April 2011, 15:33
If the source/splitter sets the profile properly on the media type, it would be possible to check that. Anything above High is not supported (High 10, High 4:2:2, High 4:4:4). I know that at least my splitter can detect the proper profile, although i don't have any 10bit or H264 4:2:2 sources.
As an alternative, i could check the SPS/PPS in the extradata, if the splitter supplys that. (Most do, but its not required if streaming MPEG-TS H264 in AnnexB format)
Some samples to confirm would be nice, especially 10bit.
CruNcher
11th April 2011, 16:40
http://www.mediafire.com/download.php?q468dp9he6mj3bz <- AVC High 4:2:2 Level 4.0
http://samples.mplayerhq.hu/MPEG2/mpeg422/422_sample_from_DVB.mpeg <- Mpeg-2 4:2:2 aka Mpeg-2 Studio Profile
http://www.mediafire.com/download.php?ukdh5txb1czq0hi <- High 10 ?
x264 lossless = High 4:4:4 (huuge please create one ;) )
roozhou
11th April 2011, 16:53
@nevcairiel
When will you make the source code of LAV CUVID public?
CruNcher
11th April 2011, 17:12
Hehe roozhou would be a nice thing to have in x264dshow, though if you force it it should work already like CoreAVC CUDA does though the fallback for unsupported streams would also fix x264dshow CoreAVC CUDA issues and give it support that a lot of encoder frameworks lack currently combined with Mainconcepts Decoders ;)
Though i see a problem with x264 lossless as also Mainconcept will try to playback that and it should better fall back to either CoreAVC,DiAVC or ffmpeg, though with some merit fiddling this shouldn't be a big issue.
nevcairiel
12th April 2011, 06:47
Hey, so regarding IVTC, i had a 60i VC-1 stream from a HD-DVD, which is supposed to be played back as 24p - and surprise, the CUVID decoder does actually produce and output a proper and fluid 24p stream.
FWIW, So did other commercial decoders like Cyberlink and ArcSoft - ffdshow plays it as 29,97fps however (moving too fast and getting out of sync very badly!)
I guess it will do its job IVTC'ing as long as the pulldown flags in the bitstream are properly set.
I dunno if this is a special case for HD-DVD content - as evidenced by ffdshow it cannot be played back at 30fps at all, because the frames are apparently not there, so it doesn't have to decimate them, but i was still kinda happy that it just worked. :)
madshi
12th April 2011, 07:33
Hey, so regarding IVTC, i had a 60i VC-1 stream from a HD-DVD, which is supposed to be played back as 24p - and surprise, the CUVID decoder does actually produce and output a proper and fluid 24p stream.
FWIW, So did other commercial decoders like Cyberlink and ArcSoft
That's not too big a surprise. Almost all PC VC-1 decoders have always treated HD DVD 60i movie files as being 24p, because the files clearly say so. Practically the files are 24p with added 60i flags. The decoders are simply ignoring the 60i flags. The real problem are files where the 3:2 pulldown is hard coded. Meaning, the file actually contains 60 interlaced fields. There it's dramatically more difficult for decoders to actually output perfect 24p.
roozhou
12th April 2011, 10:47
Madshi is right. When referring to IVTC, we always talk about hard-telecined videos.
SamuriHL
12th April 2011, 13:39
And it gets even more complicated when those streams are added to an MKV container, but, let's not go there right now.
spartan711
13th April 2011, 20:01
so just to clarify, using nev's video decoder, with madshi's madvr, will allow for hardware de-interlacing with subs? And essentially the best PQ from hardware?
pankov
13th April 2011, 23:39
sadly, no
For the moment (and it's not even certain that this is fixable) LAV CUVID decoder will not output the doubled framerate which results in jerky playback.
You get nice deinterlaced picture but with judder which is not acceptable for sports ... or anything else if you are serious about your quality experience.
spartan711
13th April 2011, 23:50
hm...I'm having trouble getting subtitles to show using mpc-hc+CUVID+MadVR+Arcsoft Audio HD decoder. Any tips?
pankov
13th April 2011, 23:57
You have to use one of the latest versions (not older than two weeks or so) of mpc-hc to have subtitles with madVR.
Actually I don't use MPC-HC but I'm just following it's and madVR's threads so may be somebody else can be more helpful
sneaker_ger
14th April 2011, 00:28
You have to use one of the latest versions (not older than two weeks or so) of mpc-hc to have subtitles with madVR.
Actually I don't use MPC-HC but I'm just following it's and madVR's threads so may be somebody else can be more helpful
Yes, you need a recent revision from here (http://xhmikosr.1f0.de/) and activate "Auto-load subtitles" under "Playback" in MPC-HC's options.
spartan711
14th April 2011, 00:33
and it workingggg. Wohoo! That was so painless! I have HD audio decoding, and amazing PQ! All within half an hour. This is such a great solution, thank you nevcairiel.
SamuriHL
14th April 2011, 00:39
It really is am amazing solution. Once the title selection is available from within MPC-HC, quite frankly, commercial players are replaced as far as I'm concerned. :)
spartan711
14th April 2011, 01:23
hmm... I am having some trouble switching subtitles, or changing anything once they are loaded. To reiterate, I can turn them off by not loading them from the mpc-options. However, if that option is on, then I cannot change anything involving subs from the madVR tray icon. Anyone have any solutions? Sorry, I know this is not the right thread for this, so after this, I'll be posting in the madVR thread.
I have had no problems with the decoder! Windowed mode is not smooth, but I don't watch it in windowed, so that's ok for me.
sneaker_ger
14th April 2011, 01:31
It depends on the splitter where you can switch the tracks. For Haali and LAV you can use "filters" or the madVR icon, for MPC-HC's internal filter you use the "subtitle" menu.
nevcairiel
14th April 2011, 07:09
sadly, no
For the moment (and it's not even certain that this is fixable) LAV CUVID decoder will not output the doubled framerate which results in jerky playback.
You get nice deinterlaced picture but with judder which is not acceptable for sports ... or anything else if you are serious about your quality experience.
Someone that knows more about actual technical details of deinterlacing .. how does the doubled framerate work?
I assume it doesn't simply output the same image twice, the two will be minimally different, right?
If i have 60 fields, how do i create 60 frames out of that?
the CUVID API has some parameters that i can set to get different images out of the post-processor .. but i'm not sure what i really want to get.
I haven't really bothered to look into the technical details of deinterlacing up until now - it also seems to be a well guarded secret. :p
madshi
14th April 2011, 08:07
Someone that knows more about actual technical details of deinterlacing .. how does the doubled framerate work?
I assume it doesn't simply output the same image twice, the two will be minimally different, right?
If i have 60 fields, how do i create 60 frames out of that?
the CUVID API has some parameters that i can set to get different images out of the post-processor .. but i'm not sure what i really want to get.
I haven't really bothered to look into the technical details of deinterlacing up until now - it also seems to be a well guarded secret. :p
You probably know this already, but let me explain, just to be safe:
First of all you must strictly separate between movie and video content.
movie content was originally shot in 24p (or in Europe eventually in 25p). This is then converted to 60i (or 50i) by first interlacing the progressive frames and then repeating some of the interlaced fields, if necessary (not with 25p -> 50i). Meaning that for perfect deinterlacing you need to throw away the repeated fields (if any) and then fuse the correct original fields together to get back to the original 24p/25p. This is called IVTC. Important to note is that all the interlaced fields originate from only 24 (or 25) different points in time.
video content was originally shot in 60i or 50i. It's important to note here that every interlaced field comes from a different point in time (!!). There are different kinds of cameras. Some shoot directly interlaced. Others shoot progressive and then throw away (or filter away) half the scanlines to produce interlaced output. Deinterlacing video content to 30p or 25p is VERY wrong. The reason for that is that you cannot simply put two fields together which come from a different point in time. Basically the only proper way of deinterlacing video content is to create 60 or 50 progressive frames. The most simple way to do that is to simply take one field at a time and scale it 2x up vertically. This will give you 60p or 50p with fluid motion. But of course this will not be very sharp. This is called BOB deinterlacing. There are better methods. But one thing is clear: The output *must* be 50p or 60p.
I don't suppose either DXVA or CUVID can automatically handle all this for you, but I don't really know. My best guess is that you need to offer users a switch between movie / video content. Then for video content you should make CUVID output 50/60 progressive frames. For movie content you should make it output 24/25 progressive frames. I don't know if the latter is possible. 25p output should be no problem. But for NTSC/ATSC movie content maybe CUVID can only output 30p, I don't know.
Of course things can get even more complicated than this. E.g. broadcasters like to blend *video* fonts / advertisements over movie content. Then you have a funny mixture of video and movie content in one stream. This is why better hardware deinterlacers decide per pixel (not per frame) whether the content is video or movie based. For this kind of content the best output is probably 60p / 50p.
tiny
14th April 2011, 11:46
Regarding the case of deinterlacing and CUVID it might be interesting to look at the (rather lenghty) dialog between Doom9's forum user neuron2 and Nvidia that took place during the development of DGAVCDecNV (http://neuron2.net/dgdecnv/dgdecnv.html).
That dialog is available here: http://neuron2.net/dgdecnv/cuda/cuda.html
yesgrey
14th April 2011, 12:28
I assume it doesn't simply output the same image twice, the two will be minimally different, right?
Right.
If i have 60 fields, how do i create 60 frames out of that?
Regarding the case of deinterlacing and CUVID it might be interesting to look at the (rather lenghty) dialog between Doom9's forum user neuron2 and Nvidia
Here is a quote from it that might answer your question...
"I'm assuming you mean 60Hz (or double frame rate) deinterlacing. This can be implemented by calling cuvidMapVideoFrame() twice: the first time with second_field=0, and the second time with second_field=1. The actual deinterlacing mode is still currently going to be the driver default (may be different on different GPUs and OSes), but it would allow you for example to convert 30Hz interlaced to 60Hz progressive (better than dropping one of the fields)."
nevcairiel
14th April 2011, 12:34
Here is a quote from it that might answer your question...
"I'm assuming you mean 60Hz (or double frame rate) deinterlacing. This can be implemented by calling cuvidMapVideoFrame() twice: the first time with second_field=0, and the second time with second_field=1. The actual deinterlacing mode is still currently going to be the driver default (may be different on different GPUs and OSes), but it would allow you for example to convert 30Hz interlaced to 60Hz progressive (better than dropping one of the fields)."
That was actually one of the things i found in the API that i was going to test, having some confirmation that it might even do what i want it to do, great! :)
yesgrey
14th April 2011, 12:45
Here is another quote that might be useful. It seems in some situations one problem can arise, and the NVidia guy suggests a way of solving that problem.
I've noticed that one frame remains salted away somewhere when the deinterlacer is enabled and I am unable to flush it. When I do my reset and start pushing NALUs again, the hidden frame from the previous decoding comes out and I cannot find a way to flush it.
Any ideas?
The unflushable frame that I mentioned in my last mail appears to be in the D3D instance somehow, because I can get rid of it by killing the server and re-starting it.
Would you know if there is a way to flush it out with a D3D call? If I kill and remake the D3D instance, I'm going to get hit by the crash on second D3D instantiation problem again.
I've seen this problem as well: what is happening is that when this particular high-end deinterlacing method is used, it unfortunately introduces one field delay, which does suck (not a problem for normal playback, but a big issue for a generic API like NVCUVID).
So far, I haven't been able to get rid of this, but if your only concern is being able to flush it, one way to do so is to start at second_field=1 after a discontinuity.
Ultimately, the best way to get rid of this is to perform the deinterlacing within NVCUVID using a cuda kernel, rather than relying on VMR9, with sometimes some rather obscure side effects, but this requires fairly significant amount of changes in nvcuvid, so it's going to take a while.
Aha, I confirm what you say. It has nothing to do with unsuccessful flushing.
If my field sequence shown in [] delimited frames is:
[a b] [c d] [e f] [g h] [i j] ...
Then when I deinterlace double rate, I get this sequence of bobbed frames:
X a b c d e f g ...
Where X is a leftover (field now a frame) from the end of the last decode sequence. The first field is just garbage.
And yes, your suggested strategy looks good. It's a complication for my random access code so I'll have to implement it carefully.
@neuron2,
I hope you don't mind for me to put this quote here. In case you do, let me know and I'll remove it.
yesgrey
14th April 2011, 12:47
Another thing that might be worth it to try is if the double rate is only achievable when using BOB, or if it can also be achieved when using adaptive.
madshi
14th April 2011, 13:19
Adaptive is for video, not for movies. It would be a major design flaw if it couldn't do double rate. The only deinterlacing modes that shouldn't do double rate are IVTC and Weave.
yesgrey
14th April 2011, 15:47
Adaptive is for video, not for movies.
Right.
It would be a major design flaw if it couldn't do double rate.
Not necessarily, it would depend on how the adaptive mode works.
Let's consider the first 6 frames of a 60fps interlaced video:
a b c d e f
I think that deinterlacers typically work outputting half the frame rate by combining the frames in pairs, like this: ab cd ef
However, this is not the best solution. One better solution would be outputting the original frame rate but with frames created using the adjacent frames, like this: ab abc bcd cde def ef
According to what I've quoted in my previous posts, it seems the CUVID deinterlacing works like the first one, grouping the frames in pairs, and if that's the case, I don't think it would be possible to get double rate using other than BOB, because the second frame will not have any info about the next frame. However, without knowing the internals of it I can't say for sure.
Furthermore, neuron2's tool only allows double frame rate using bob. If it would work I don't see why neuron2 didn't do it...
madshi
14th April 2011, 16:00
I think that deinterlacers typically work outputting half the frame rate by combining the frames in pairs
No, they don't. Doing that would simply be broken design, nothing else. No single CE (consumer electronics) hardware deinterlacer I've ever heard of does that.
"Adaptive" probably means "motion adaptive deinterlacing" which means that for moving image parts BOB is used while for static image content WEAVE is used. BOB always outputs 60p/50p, unless you throw away every other field, which would again be broken design.
yesgrey
14th April 2011, 16:50
No single CE (consumer electronics) hardware deinterlacer I've ever heard of does that.
You're right, but I was talking about software deinterlacers, not hardware ones.
BOB always outputs 60p/50p, unless you throw away every other field, which would again be broken design.
I agree. From what I've read on the discussion between neuron2 and nvidia, it seems it's not a broken design, because internally the deinterlacer uses the original frame rate, but then it only outputs half of it unless told otherwise...
madshi
14th April 2011, 17:13
You're right, but I was talking about software deinterlacers, not hardware ones.
Well, I don't know much about HTPC software deinterlacers. If some/many of them do 60i -> 30p for video content then IMHO the deinterlacer devs didn't know what they were doing.
CruNcher
14th April 2011, 19:30
Eh it's an option not that you have todo it :) 60i->60p takes alot of resources and bandwith (depending on resolution) so some want to save that nothing wrong with it, since VPx and UVD on the Desktop tough it can be done with Yadiff matching quality (currently) @ 1080p with fairly low system requirements and shaders in Realtime @ relatively low power consumption, so only bandwith is an issue ;)
Sure doing that on a soccer game to save some bandwith would be crazy unless you want to create a more film style look for the Game and leave what in real was captured by the camera ;)
Might be currently one of the worlds most advanced Software Deinterlacer (http://forum.doom9.org/showthread.php?t=156028)
And here it might be one of the Worlds most advanced Hardware counterpart developed from US Military Research (http://www.hqv.com/index.cfm?page=tech.de-interlacing)
Dogway
14th April 2011, 19:37
Is LAVCUVID suited for bluray playback? Im doing some tests and it performs laggish, ffdshow is OK, it's apocalypto bluray.
VincAlastor
14th April 2011, 20:09
thank you for LAV CUVID. LAV CUVID doesn't run judder-free on my notebook with nvidia 8400m gt gpu and latest mpc hc, madvr 0.53 and LAV splitter, but thats not so important, to play around with your great tools is fascinating enough :D.
is it possible to fuse LAV CUVID, LAV splitter and madVR into one amazing new high quality avisynth source filter with cuda acceleration and maybe first-time avisynth dxva acceleration if madshi integrates dxva in madVR?
thank you nevcairiel and thank you madshi my videos look fantastic!
madshi
14th April 2011, 20:24
Eh it's an option not that you have todo it :) 60i->60p takes alot of resources and bandwith (depending on resolution) so some want to save that nothing wrong with it
Well, if you want to save resources and bandwidth you can also decode only key frames and throw away all other frames. Nothing wrong with that, either... :p
spartan711
14th April 2011, 21:16
I have consistent stuttering every 10 seconds. ~ 8 frames dropped every time. Here is the MediaInfo profile of the media.
Video
ID : 1
Format : AVC
Format/Info : Advanced Video Codec
Format profile : High@L4.1
Format settings, CABAC : Yes
Format settings, ReFrames : 5 frames
Codec ID : V_MPEG4/ISO/AVC
Duration : 1h 47mn
Bit rate : 8 062 Kbps
Width : 1 920 pixels
Height : 800 pixels
Display aspect ratio : 2.40:1
Frame rate : 23.976 fps
Color space : YUV
Chroma subsampling : 4:2:0
Bit depth : 8 bits
Scan type : Progressive
Bits/(Pixel*Frame) : 0.219
Stream size : 5.95 GiB (91%)
Writing library : x264 core 79 r1342 e8501ef
Encoding settings : cabac=1 / ref=5 / deblock=1:0:0 / analyse=0x3:0x113 / me=umh / subme=7 / psy=1 / psy_rd=1.0:0.2 / mixed_ref=1 / me_range=16 / chroma_me=1 / trellis=1 / 8x8dct=1 / cqm=0 / deadzone=21,11 / chroma_qp_offset=-3 / threads=12 / nr=0 / decimate=1 /
mbaff=0 / constrained_intra=0 / bframes=3 / b_pyramid=0 / b_adapt=1 / b_bias=0 / direct=1 / wpredb=1 / wpredp=0 / keyint=250 / keyint_min=25 / scenecut=40 / rc_lookahead=40 / rc=2pass / mbtree=1 / bitrate=8062 / ratetol=1.0 / qcomp=0.60 / qpmin=10 / qpmax=51 / qpstep=4 / cplxblur=20.0 / qblur=0.5 / ip_ratio=1.40 / aq=1:1.00
Language : English
Audio
ID : 2
Format : AC-3
Format/Info : Audio Coding 3
Mode extension : CM (complete main)
Codec ID : A_AC3
Duration : 1h 47mn
Bit rate mode : Constant
Bit rate : 640 Kbps
Channel(s) : 6 channels
Channel positions : Front: L C R, Side: L R, LFE
Sampling rate : 48.0 KHz
Bit depth : 16 bits
Compression mode : Lossy
Stream size : 494 MiB (7%)
Language : English
Text
ID : 3
Format : UTF-8
Codec ID : S_TEXT/UTF8
Codec ID/Info : UTF-8 Plain Text
Language : English
Hardware is
Processor: C2D T5800 2.0 Ghz
RAM: 4GB
Video Card: 9600M GT
OS: 64 bit Windows 7 Pro
Process priority is on high, and I have nothing else running.
Tom Keller
15th April 2011, 01:11
is it possible to fuse LAV CUVID, LAV splitter and madVR into one amazing new high quality avisynth source filter with cuda acceleration and maybe first-time avisynth dxva acceleration if madshi integrates dxva in madVR?
MadVR is great (not just cause it's the only video renderer that works perfect with the LAV CUVID Decoder for me :p )! But since madVR simply IS a video renderer, it has no place in AviSynth, since AviSynth doesn't need any video renderer at all. It "only" outputs uncompressed video to any appropriate application - so AviSynth doesn't need to do video rendering.
However... i guess it should be possible to use the same (or at least: similar) scaling and upsampling algorithms inside AviSynth (for HQ resizing and color space conversion), which are used by madVR.
As to the rest: with DGDecNV one source filter with CUDA acceleration still exists. It's not free though - but it works damn good.
roozhou
15th April 2011, 10:09
However... i guess it should be possible to use the same (or at least: similar) scaling and upsampling algorithms inside AviSynth (for HQ resizing and color space conversion), which are used by madVR.
Avisynth's built-in resizers is CPU only. And more importantly, unlike libswscale and most resizers used in video renderers, Avisynth's built-in resizers do not apply any colorspace conversion.
e.g. You want to watch a 720x480 DVD video fullscreen on a 1920x1080 monitor. MadVR will convert 720x480 YV12 -> 1920x1080 RGB(8bit or 10bit) in one step. The intermediate results are 16bits or higher so rounding errors are minimized. Unfortunately avisynth has to use two filters.
LanczosResize(1920,1080).ConvertToRGB32()
The chroma is upscaled two times, so it is slower and the quality is lower.
VincAlastor
15th April 2011, 11:01
MadVR is great (not just cause it's the only video renderer that works perfect with the LAV CUVID Decoder for me :p )! But since madVR simply IS a video renderer, it has no place in AviSynth, since AviSynth doesn't need any video renderer at all. It "only" outputs uncompressed video to any appropriate application - so AviSynth doesn't need to do video rendering.
However... i guess it should be possible to use the same (or at least: similar) scaling and upsampling algorithms inside AviSynth (for HQ resizing and color space conversion), which are used by madVR.
As to the rest: with DGDecNV one source filter with CUDA acceleration still exists. It's not free though - but it works damn good.
thank you, i thought for dxva avisynth need a videorenderer. and madvr's gpu scaler and gpu upsampler are missing in avisynth. i use DGDecNV!, but avi's can not be decoded, indexing is nerving and an adaptive deinterlacer is missing too. and maybe LAV CUVID is faster....
a new all in one high quality hardware accelerated source filter were good for avisynth, and a strong and fast bundle of LAV splitter, LAV CUVID, ffdshow/ffmpeg and (parts of) madVR could make it possible (i think, i wish) ...if i had studying informatics and experience, damn...
do you thing my nvidia 8400m gt isn't to slow for LAV CUVID and full hd material???
roozhou
15th April 2011, 11:05
avisynth cannot use DXVA and LAV CUVID does not use DXVA. 8400m is enough for LAV CUVID as long as you 128M+ vmem.
VincAlastor
15th April 2011, 11:15
avisynth cannot use DXVA and LAV CUVID does not use DXVA. 8400m is enough for LAV CUVID as long as you 128M+ vmem.
i meant madvr with dxva in future, but not necessary if avisynth can't use a renderer for dxva. :) but madshi's gpu upsampler and gpu scaler are missing in avisynth, maybe madshi could make a high quality spatio-temoral gpu shaders denoiser and sharpener. i think he can when i watch my videos with his renderer.
my 8400m gt has 256mb vmem, but full hd videos are juddering.
yesgrey
15th April 2011, 13:16
i use DGDecNV!, but avi's can not be decoded, indexing is nerving and an adaptive deinterlacer is missing too.
That's not correct. DGDecNV also uses the adaptive deinterlacer, the same used in LAV CUVID.
However, considering this other quote from neuron2's discussion with nvidia guys
Because we currently rely on default DirectX behavior, tweaked for realtime performance,
there is no guarantee for the type of deinterlacing that will be used (to the contrary,
I can guarantee that it's not the best deinterlacing mode available on the GPU)
we might not be able to have the best deinterlacing adaptive mode via CUVID like we get via DXVA...
CruNcher
15th April 2011, 18:48
That's not correct. DGDecNV also uses the adaptive deinterlacer, the same used in LAV CUVID.
However, considering this other quote from neuron2's discussion with nvidia guys
Because we currently rely on default DirectX behavior, tweaked for realtime performance,
there is no guarantee for the type of deinterlacing that will be used (to the contrary,
I can guarantee that it's not the best deinterlacing mode available on the GPU)
we might not be able to have the best deinterlacing adaptive mode via CUVID like we get via DXVA...
It's known that they dynamically decide via the driver based on the shader amount which cuda core (deinterlacing complexity) to use though i had always the impression it will be the same Motion Adaptive Deinterlacer (when the GPU is strong enough) for both DXVA aswell as Nvcuvid (Yadiff comparable Quality, see also the many tests of Avisynth Deinterlacers vs DGDecNV NVcuvids Deinterlacer). You can also see that in one of my earlier posts where in one Driver they accidentally disabled that check and i had the Motion Adaptive Deinterlacer available on my 7600 GS they prepared for the 8 series obviously with it i couldn't reach 1080 Mpeg-2 30i->60p anymore in Realtime the 7600 GS was just to weak but the results where much better (im pretty sure that was the time when they reached Yadiff quality) and that i guess is what he wanted to say with this and the other thing might be he meant cuda deinterlacing cores that are running in their labs @ the time of the talk with Donald and will come with new Drivers (which most probably should be out by now). :D.
Though what you read out of this conversation i guess should be visually provable using roozhou DXVA decoder with his framegrabber if VMR Deinterlacing should be applied with the captured output ?, and some interlaced test samples be it SD or HD :)
And then compare those results with either LAV CUVIDs output and DGDecNV or any other Nvcuvid based app. Also if you think logic it makes no sense to use a better deinterlacer for VMR (Higher Complexity more resource needs) to gain as he said Realtime Playback results and on the Nvcuvid side a lower Quality one where Realtime plays no role @ all, that would be exactly the contrary.
Though it would make sense if you are as naughty and don't want 3rd parties be able to reach the Deinterlacing quality with their Products Output as you would be able to achieve Realtime, though i dont see what for a reason Nvidia should have todo that they sell Hardware it would be plain dumb to restrict 3rd party apis that way, hmm unless you target a more pro area and cards (Quadro) and need some feature to differentiate from the Consumer area ;)
yesgrey
15th April 2011, 20:12
Unfortunately the above quote pretty much explains the results I got some while ago when I compared the CUVID deinterlacers with the same ones via DXVA. At that time I used DGDecNV for CUDA and ffdshow for DXVA. I've found the test images and made a new one with LAV CUVID to be sure, and it gave exactly the same result as DGDecNV, so it's a CUVID limitation.
I agree, it's pretty dumb, but it is what it is. If we want to use the best deinterlacers that our GPUs have we need to use DXVA.
I've also included two images using ffdshow's yadif, and its quality it's pretty close to DXVA... however, I could not catch the same frame, so the comparison is not as good as with all the other deinterlacers. My GPU is a NVidia GT 240.
You can grab my tests results here (http://www.megaupload.com/?d=ZJL57VPH).
@madshi,
it seems that you still need to consider support DXVA in madVR for us to get access to the best deinterlacing algos available on nvidia GPUs (and ATI GPUs too).
nevcairiel
15th April 2011, 20:18
The CUVID driver has a flag with which you can select your preferred decoder. The options are CUVID, DXVA, and CUDA (which seems to fallback to one of the other, because there is no CUDA decoder). I wonder if that can emulate real DXVA mode and give us the full power..
I can provide a test build with it switched, or even add an option for that for testing..
CruNcher
15th April 2011, 20:32
@yesgrey
Im not sure what your test their should show but i took out only the important ones based on this thread and the quote from nvidia which are
dgdecnv_double.png
dgdecnv_single.png
ffdshow_adapt.png
lavcuvid_adapt.png
its virtualy impossible to compare them slicies is a good test but comparing all of these in different rendering environments (madvr,vmr/evr,avisynth?) is no good idea to get a clean comparable result, that blurring on the lavcuvid result you cant be sure that this isnt coming from the renderer instead the deinterlacer as compared to the DXVA result on VMR/EVR. You can see though that dgdecnv_single and lavcuvid_adapt match same renderer also for the ffdshow_adapt ?. Visually you can clearly see that the ffdshow_adapt has less aliasing on the football field line which is NEDI quality :) but without comparing all on the same renderer i wouldn't put my hand into the fire that this is the effect of the deinterlacer and maybe not difference that the renderer introduces.
nevcairiel
15th April 2011, 20:48
I created a quick and dirty option in the GUI that will let you enable the DXVA interop mode of the CUVID decoder. It does look different to me, a quick comparison of the slicies test seems like it does look really similar to the output of EVR doing deinterlacing on NV12 content send by ffdshow with interlaced flags set. Before the CUVID output looked worse, some of the horizontal lines went missing etc, now its basically the same, to my eyes anyway. Didn't do screenshots for comparison or anything.
Here is the test built, just flip the switch and restart the player / reload the file.
http://files.1f0.de/cuvid/LAVCUVID-0.2-dxva-interop.zip
Would be great if you could test that. :)
yesgrey
15th April 2011, 20:48
The CUVID driver has a flag with which you can select your preferred decoder. The options are CUVID, DXVA, and CUDA (which seems to fallback to one of the other, because there is no CUDA decoder). I wonder if that can emulate real DXVA mode and give us the full power..
I can provide a test build with it switched, or even add an option for that for testing..
If you want to, post it and I will give it a try.
You can see though that dgdecnv_single and lavcuvid_adapt match same renderer also for the ffdshow_adapt ?.
The ones to compare are dgdecnv_single, lavcuvid_adapt and ffdshow_adapt. All these three are using the adaptive mode. The differences between ffdshow (dxva) and the other two are so obvious that could not be justified by a different renderer. Furthermore, we are having much higher quality with EVR (ffdshow) than with madVR (LAV cuvid) and exact frame grabbing via avisynth (DGDecNV), so it shows even more that something is not right with the CUVID decoders.
Let's hope that what nevcairiel suggested works...
nevcairiel
15th April 2011, 20:53
See one post above yours ^
yesgrey
15th April 2011, 21:05
See one post above yours ^
Here (http://www.megaupload.com/?d=IWSZOXT5) is the result with the dxva option checked.
Exactly the same as with ffdshow/evr. There is only a slight difference on the red contour, but that's due to different chroma upsampling.
So now we nvidia guys already have the best hardware deinterlacing via madVR. :)
In short: You're da man!!! :thanks:
PS: Now, to be perfect, we only need the double rate method... ;)
Dogway
15th April 2011, 21:18
This is my GPU load:
http://img19.imageshack.us/img19/7361/asgg.th.gif (http://img19.imageshack.us/img19/7361/asgg.gif)
RAM was 830Mb and CPU around 10%
So I dont see a reason Bluray couldn't play, it is LAVCUVID or some settings in my card related to it, because ffmpeg-mt could play it.
nevcairiel
15th April 2011, 21:23
So now we nvidia guys already have the best hardware deinterlacing via madVR. :)
Great, at least something related to interlacing "just works". :)
madshi
15th April 2011, 21:40
So now we nvidia guys already have the best hardware deinterlacing via madVR. :)
No, not yet. 60i -> 30p is far from good for video content... :p
(sorry)
nevcairiel
15th April 2011, 21:42
PS: Now, to be perfect, we only need the double rate method... ;)
I just did a quick hack, instructing CUVID to give me the same image a second time with the "second_field" flag set, and running a memcmp() on the two resulting buffers - and it did actually produce different results.
This at least lets me hope that i might actually get the second field separately .. i'll implement this soon and see what happens.
I wish there was some easy way to detect the difference between 60i VIDEO to be played at 60p and 60i FILM to be played at 24p. But then again, i don't have much 60i FILM content, so huh! :)
SamuriHL
15th April 2011, 21:50
Just a quite note, Nev. CUVID does in fact play my HD DVD converted to MKV with audio in sync. madVR shows the fps as 29.whatever but it stays in sync. With my AMD machine using HAM mode madVR doesn't have a clue what the fps is but it still works.
madshi
15th April 2011, 22:03
I just did a quick hack, instructing CUVID to give me the same image a second time with the "second_field" flag set, and running a memcmp() on the two resulting buffers - and it did actually produce different results.
Sounds promising!
I wish there was some easy way [...]
Yeah, me too.
nevcairiel
15th April 2011, 22:12
I did some really, really hacky implementation of this, but my eyes are tricking me, and i don't know if its really smoother.
This version will most likely do the weirdest things on progressive content, but if you have some interlaced VIDEO file (50i/60i) where you can directly see a difference in smoothness to the previous version, please do a visual comparison, and give me some hints if i'm on the right track.
No options or anything, just plain frame doubling, for any and all content you throw at it. :)
http://files.1f0.de/cuvid/LAVCUVID-0.2-frame-doubling.zip
BTW, how common are files that are mixed interlaced and progressive content?
yesgrey
15th April 2011, 22:29
No, not yet. 60i -> 30p is far from good for video content... :p
PS: Now, to be perfect, we only need the double rate method... ;)
You missed my PS... However, I was referring to the best adaptive mode available from the GPU, and not to the best possible... ;)
I wish there was some easy way to detect the difference between 60i VIDEO to be played at 60p and 60i FILM to be played at 24p.
Now with Blu-ray I think that is not so critical anymore... but with dvds it would be problematic... and it would be dvds which would benefit the most from the hardware deinterlacing...
I did some really, really hacky implementation of this, but my eyes are tricking me, and i don't know if its really smoother.
Great! I will give it a try. Have you done it with both BOB and adaptive, or only with BOB?
BTW, how common are files that are mixed interlaced and progressive content?
I don't know. I think it happens when you are watching the full Blu-rays or DVDs. However, for me that's not a problem, because I always convert to mkv before watching.
nevcairiel
15th April 2011, 22:30
Great! I will give it a try. Have you done it with both BOB and adaptive, or only with BOB?
Both should work. Hell it will most likely even double the weave frame rate, but i havent tested it. Like i said, its really just an ugly hack to see what images it outputs. ;)
yesgrey
15th April 2011, 22:43
Hell it will most likely even double the weave frame rate, but i havent tested it.
In that case it would give two equal images, because the second field variable only is valid for BOB and adaptive.
pankov
15th April 2011, 23:49
I did some really, really hacky implementation of this, but my eyes are tricking me, and i don't know if its really smoother.
This version will most likely do the weirdest things on progressive content, but if you have some interlaced VIDEO file (50i/60i) where you can directly see a difference in smoothness to the previous version, please do a visual comparison, and give me some hints if i'm on the right track.
No options or anything, just plain frame doubling, for any and all content you throw at it. :)
http://files.1f0.de/cuvid/LAVCUVID-0.2-frame-doubling.zip
Nev,
you are going to give me an eye orgasm if you continue this
;)
I've just tried this version with a few 50i and 60i sports recordings and I must say that you've nailed it.
Using this and latest madVR (0.56) is close to video nirvana
:D
:thanks::thanks::thanks:
yesgrey
15th April 2011, 23:58
I'm getting very jerky results with massive frames dropping. I think my computer might not be able to handle full 1080i... I will give a try with 480i.
As a side note, are you changing the reported frame rate? It seems you aren't, because madVR still reports it as 29.97, and after the doubling it should be 59.94. I don't know if this would affect negatively the output...
JarrettH
16th April 2011, 00:01
Is there a benefit to using this versus the Microsoft DTV Decoder? I'm talking strictly for DVDs
yesgrey
16th April 2011, 00:42
OK. I've tested with a DVD NTSC music concert I have and the result is ........................ (sorry, I'm speechless)
No, not yet. 60i -> 30p is far from good for video content...
madshi was so right!... It's a completely new experience watching video with such a fluidity... it's everything so smooth that we almost forget that we are watching an interlaced source. Of course there is some jagginess, sometimes, on some diagonals, but this was with a 480i source. I'm sure that with a 1080i source the results should be magnificent!
Of course the new madVR path is also a must. In fact, it only works when using madVR's fullscreen exclusive mode, both new and old paths. With windowed mode I got lots of dropped frames, but it might be related to LAC CUVID not yet reporting the correct frame rate to the renderer. madshi might clear this up better.
Another thing that might be useful would be allowing the selection of the top/bottom field order. Some files might work better with different settings.
@nevcariel,
congratulations and thank you very much once again. What a proficuous day you had today!!!
:thanks::thanks::thanks:
yesgrey
16th April 2011, 00:44
Is there a benefit to using this versus the Microsoft DTV Decoder? I'm talking strictly for DVDs
If you want GPU decoding and deinterlacing with madVR the answer is YES.
yesgrey
16th April 2011, 01:57
A few more tests...
I decided to run timeCodec to measure LAV CUVID performance with my graphics card (nvidia GT 240)
With a WVC1 1080i 29.97 source file:
v0.2: 47.1 dfps
v0.2 dxva-interop: 29.6 dfps
v0.2 frame-doubling: 21.3 dfps
Here's the reason for not being able to get smooth playback with frame doubling, my GPU is too slow. It seems I would need 3x the processing power of my current GPU for watching smooth 1080i video. So, the deinterlacing should be performed by using the shaders, and not specific hardware on the GPU.
It would be interesting to see test results from more powerful GPUs to have an idea of what would be needed for smooth playback.
Dogway
16th April 2011, 02:41
I tested over an AVC file with timecodec:
lavcuvid
600fps
109dfps
ffdshow-mt
2700fps
118dfps
I have core2duo 2.53Ghz 1066fsb, and a 9600mgt card. Is my CPU supposed to go faster than the GPU?
nevcairiel
16th April 2011, 06:24
It would be interesting to see test results from more powerful GPUs to have an idea of what would be needed for smooth playback.
I actually had a 1080i/60 file that did not play properly on my GTX570, and i might know why. The execution is not really properly pipelined - right now i get one frame from the source, decode it, post process it, deliver it - wait for the next frame.
This was also mentioned in neuron's chat with NVIDIA, you should have more frames in the pipeline for much higher efficiency.
Luckily, NVIDIA also gave an example how to do this, so i'll be implementing this as well - hope it makes the difference.
PS:
My results for my problem file on my high-end card
w/ DXVA and frame doubling
74fps with BOB
59fps with Adaptive
while 59fps comes close, it was not fast enough. In EVR i get around ~50fps runing that file
nevcairiel
16th April 2011, 08:05
The improvements worked just fine, went from 59 fps in timeCodec to 88, with DXVA interop and frame doubling. Playback is super smooth in EVR and madVR now. Looking forward for the finished version to share with you guys. :)
madshi
16th April 2011, 08:18
With windowed mode I got lots of dropped frames, but it might be related to LAC CUVID not yet reporting the correct frame rate to the renderer. madshi might clear this up better.
madVR currently only prints out the media type framerate information but doesn't use it anywhere. It will be used, though, once madVR gets automatic refresh rate changing.
The improvements worked just fine, went from 59 fps in timeCodec to 88, with DXVA interop and frame doubling. Playback is super smooth in EVR and madVR now. Looking forward for the finished version to share with you guys. :)
Well, congrats on and thanks for some rather important and well working changes today. :)
nevcairiel
16th April 2011, 08:35
The improvements worked just fine, went from 59 fps in timeCodec to 88, with DXVA interop and frame doubling. Playback is super smooth in EVR and madVR now. Looking forward for the finished version to share with you guys. :)
Did some more testing on this. Progressive content seems to go around 10% up, when you add deinterlacing w/ frame doubling in the mix, you get nearly a 30-40% improvement.
clsid
16th April 2011, 11:53
Do you have any specific plans for making the decoder more robust in case of incompatible streams?
Two ideas:
1) Integrate software decoder (ffmpeg). Then the first few frames could be decoded in software, allowing you to determine stream properties. If the stream is found to be compatible, switch to CUVID decoding (on next keyframe?). Otherwise keep decoding in software.
2) Let LAVSplitter parse enough data to determine whether a stream is compatible. Let it connect to LAVCUVID only if a stream is compatible, or use some other way of signaling this info. Add option to let LAVCUVID connect only to LAVSplitter.
yesgrey
16th April 2011, 12:01
I tested over an AVC file with timecodec
Thanks for testing, but I was asking for 1080i 60fps files testing. We already know that decoding progressive files works great. What we need to discover now is how the different GPUs would handle the interlaced files, specially 1080i ones.
Looking forward for the finished version to share with you guys. :)
Us too. :)
Did some more testing on this. Progressive content seems to go around 10% up, when you add deinterlacing w/ frame doubling in the mix, you get nearly a 30-40% improvement.
Great, but unfortunately I think it still won't be enough for me. :(
I got 21.3 with adaptive and 23.8 with bob, so 30-40% would still be far from what I need... However, that improvement would lower the GPU requisites. The GTS 450 or the new GTX 550 Ti should be more than enough for smooth and fluid double rate deinterlacing of 1080i60.
nevcairiel
16th April 2011, 12:02
Two ideas:
1) Integrate software decoder (ffmpeg). Then the first few frames could be decoded in software, allowing you to determine stream properties. If the stream is found to be compatible, switch to CUVID decoding (on next keyframe?). Otherwise keep decoding in software.
This is a terrible idea.
2) Let LAVSplitter parse enough data to determine whether a stream is compatible. Let it connect to LAVCUVID only if a stream is compatible, or use some other way of signaling this info. Add option to let LAVCUVID connect only to LAVSplitter.
I don't know which hardware is exactly compatible with what.
At least for H264 the important informations are probably in the SPS/PPS headers that are in the media type anyway. But i really cba to figure out which hardware is compatible with what features. If there is some "big" feature that can be easily detected out of the SPS, i can add that at some point.
In the future it'll eventually refuse connection to 10bit or 4:2:2 files, but thats all i'm going to do for now.
nevcairiel
16th April 2011, 12:04
Great, but unfortunately I think it still won't be enough for me. :(
I got 21.3 with adaptive and 23.8 with bob, so 30-40% would still be far from what I need... However, that improvement would lower the GPU requisites. The GTS 450 or the new GTX 550 Ti should be more than enough for smooth and fluid double rate deinterlacing of 1080i60.
I didn't even see that big drop in FPS that you are seeing just from enabling DXVA-interop.
Which OS are you using? Which drivers?
But anyway, give me a couple of hours, and i'll have a new version up.
Dogway
16th April 2011, 12:10
@yesgrey: thanks for the input. Id like to think it works great, but as I can't manage to get those results I can't confirm it. GPU load isn't even at its limit... I can't even think about interlaced media.
madshi
16th April 2011, 12:13
2) Let LAVSplitter parse enough data to determine whether a stream is compatible. Let it connect to LAVCUVID only if a stream is compatible, or use some other way of signaling this info.
Is there some way in DirectShow that allows a decoder to "request" a few video frames before deciding whether to accept a connection?
yesgrey
16th April 2011, 12:14
I didn't even see that big drop in FPS that you are seeing just from enabling DXVA-interop.
OK. I will redo my tests.
Which OS are you using? Which drivers?
Win7 x64 SP1
GeForce GT 240 512 MB DDR5 (memory overclocked to 4GHz), drivers 270.51 beta
CPU Intel E5400@3.6GHz, 2GB RAM
nevcairiel
16th April 2011, 12:15
Is there some way in DirectShow that allows a decoder to "request" a few video frames before deciding whether to accept a connection?
Sadly, no.
You also cannot drop the connection if you notice that it doesn't work out. Once its connected, you're stuck.
yesgrey
16th April 2011, 12:18
I can't even think about interlaced media.
Do you have any 1080i60 file for testing? If you haven't I can upload a 20s sample for testing with timeCodec...
nevcairiel
16th April 2011, 12:19
Once i'm done coding, i'll run some tests on my GTS 450 HTPC - back then i decided to get the 450 instead of the 430 for some extra performance for future plans, i hope it was worth it. ;)
pankov
16th April 2011, 12:23
yesgrey,
please upload a sample.
I do have many 1080i60/50 files but it's more accurate to test with the same sample because different video (bitrate/complexity/motion) will bring different results.
Dogway
16th April 2011, 12:31
yes, upload please. I need to install Haali I think but, more importantly, I test CUVID against what...
madshi
16th April 2011, 12:47
Sadly, no.
You also cannot drop the connection if you notice that it doesn't work out. Once its connected, you're stuck.
You can use IFilterGraph::Disconnect, can't you?
yesgrey
16th April 2011, 12:55
back then i decided to get the 450 instead of the 430 for some extra performance for future plans, i hope it was worth it. ;)
Good decision. The 430 (DDR3) is worse than the GT 240 (DDR5). For madVR it's more than enough (for now), but I did not think about 1080i60 deinterlacing...
yesgrey,
please upload a sample.
OK.
SamuriHL
16th April 2011, 12:59
Glad I got a 450 as well. :)
nevcairiel
16th April 2011, 13:02
You can use IFilterGraph::Disconnect, can't you?
Well sure. But the graph doesn't magically rebuild itself. If the caller is the component that actually wants to get out of the graph, it sounds like it would end up being a total mess - especially with video decoders and renderers.
One thing i learned when writing the stream switching in LAV Splitter, alot of video codecs, and some renderers as well - they don't like getting a disconnect during playback. Heck some decoders don't even like a dynamic reconnect to switch the video media type -- all they eventually accept without freaking out is sending the media type together with some data packet, but sadly that won't give you any feedback if they like the new format.
I would rather stay away from any form of reconnection in the video chain during playback.
CruNcher
16th April 2011, 13:21
A few more tests...
I decided to run timeCodec to measure LAV CUVID performance with my graphics card (nvidia GT 240)
With a WVC1 1080i 29.97 source file:
v0.2: 47.1 dfps
v0.2 dxva-interop: 29.6 dfps
v0.2 frame-doubling: 21.3 dfps
Here's the reason for not being able to get smooth playback with frame doubling, my GPU is too slow. It seems I would need 3x the processing power of my current GPU for watching smooth 1080i video. So, the deinterlacing should be performed by using the shaders, and not specific hardware on the GPU.
It would be interesting to see test results from more powerful GPUs to have an idea of what would be needed for smooth playback.
Thats why the Nvidia guy said it will be problematic for Realtime also dont forget to compare with GPU-Z the GPU and Video Engine Load as well as the Memory everything i guess should be higher (except Video Engine Load) obviously the Bandwith also so check with CUDA-Z and calculate per frame if it's enough pinned memory bandwith available, though it's nice to have NEDI quality now available if you right we should immediately compare it vs QTGMC :) Im really surprised that Donald doesn't has this mode implemented in DGDecNV if all is true :)
Though your GPU has the Memcopy Hardware improvements i don't wanna know how slow it will be on mine :P (G92), @ all the DXVA interop Deinterlacing should be a additional option in the GUI when final as it will be slower and some might wonder why they don't reach realtime playback anymore.
Here is a FULL HD PAL Soccer sequence for testing 50i->50p (Main 4.0 PAFF) http://www.mediafire.com/download.php?3rr3ur3q65dbb23
nevcairiel
16th April 2011, 14:03
LAV CUVID Decoder 0.3
0.3 - 2011/04/16
- Improved decoding performance by up to 40%
- Added "Double Framerate" Deinterlacing
- Added a DXVA Interoperability mode, which increases deinterlacing quality.
- Added an option to control the field order supplied to the deinterlacer.
Download: 32-bit (http://files.1f0.de/cuvid/LAVCUVID-0.3.zip)
The 40% is a speed up i pulled out of a hat. Well, actually its the biggest speed up i could measure on my hardware. It may be significantly more on slow hardware.
As there currently is no IVTC going on, i activated the double framerate deinterlacing by default, but of course there is an option to turn it off.
Would be great if you could run some benchmarks on your hardware, i just know that the new version, even with DXVA interop and Double Framerate deinterlacing turned on, is still faster then the old one on my hardware. But my hardware is a GTX570, so..
In any case, the way the pipeline gets processed now, one slow component does no longer pull down the whole process. As long as every component is fast enough to finish one frame in around 16ms (for 60fps), it'll be fine - the times do not add up anymore, they work in parallel now.
Hope it works for you as well as it does for me. :)
PS:
Even though some options seem to have an effect directly after changing them, i recommend restarting the player / reloading the file to make sure everything is setup alright.
CruNcher
16th April 2011, 14:13
Thx nev gonna test it also comparing the quality vs CoreAVC CUDA to see if they have this mode as default (Hardware Deinterlacing option) ;)
also gonna retest the 4 Girls Clip with that 40% improvement that could be a nice gain there (also thinking about getting either a GTS 450 or GTX 550 TI) :)
Here is another PAL test 1440x1080 50i->50p (High 4.0 MBAFF) http://www.mediafire.com/download.php?w4pwfq2mjfgjiqf
madshi
16th April 2011, 14:15
Well done! :)
CruNcher
16th April 2011, 14:22
Yeh i guess ATI guys are already asking themselves when does LAV OVD gets released (known to many better as Cyberlink HAM option) ;)
With all these tools it will be easy peasy to also test Nvidia Nvcuvid Performance/Quality @ least vs Intel Media SDK Performance/Quality :)
sneaker_ger
16th April 2011, 14:25
Thx, I measured a performance decrease of almost 10% for 1080p24 on my VP3, but the actual playback now works fine with madVR, while it was dropping frames left and right with 0.2.
nevcairiel
16th April 2011, 14:27
Yeh i guess ATI guys are already asking themselves when does LAV OVD gets released
Never! :p
Thx, I measured a performance decrease of almost 10% for 1080p24 on my VP3, but the actual playback now works fine with madVR, while it was dropping frames left and right with 0.2.
Try turning off the DXVA Interop option, on progressive content it may potentially be a slow down (depending on the content), and has no advantage (that i know off)
also gonna retest the 4 Girls Clip with that 40% improvement that could be a nice gain there
You'll maybe get 10% on progressive content, the real big speed up is only when doing deinterlacing.
The differences are also measured using timeCodec, other tools may yield other results, of course.
sneaker_ger
16th April 2011, 14:42
Try turning off the DXVA Interop option, on progressive content it may potentially be a slow down (depending on the content), and has no advantage (that i know off)
1%-2% increase vs. 0.2
yesgrey
16th April 2011, 15:10
Here are the results of my benchmarks using timeCodec. I've used two 1080i59.94 files that I cut from the original Blu-ray sources, one avc and the other wvc1. They are very short samples, so I guess it would be OK to upload them under the fair use clause... If you want to test with these files you can grab them here (http://www.megaupload.com/?d=YFZ0TJ4F).
NVidia GeForce GT 240 - 270.51 drivers - Win7 x64 SP1
ffdshow libavcodec rev 3765
Test_clip_avc.1080i59.94.ac3.5.1 - dfps: 42.8
WMVideo Decoder DMO
Test_clip_wvc1.1080i59.94.flac.5.1 - dfps: 40.8
LAV CUVID v0.2 - BOB
Test_clip_avc.1080i59.94.ac3.5.1 - dfps: 48.2
Test_clip_wvc1.1080i59.94.flac.5.1 - dfps: 52.8
LAV CUVID v0.2 - Adaptive
Test_clip_avc.1080i59.94.ac3.5.1 - dfps: 45.4
Test_clip_wvc1.1080i59.94.flac.5.1 - dfps: 47.0
LAV CUVID v0.2 - frame doubling - BOB
Test_clip_avc.1080i59.94.ac3.5.1 - dfps: 43.7
Test_clip_wvc1.1080i59.94.flac.5.1 - dfps: 43.9
LAV CUVID v0.2 - frame doubling - Adaptive
Test_clip_avc.1080i59.94.ac3.5.1 - dfps: 39.6
Test_clip_wvc1.1080i59.94.flac.5.1 - dfps: 36.7
LAV CUVID v0.2 DXVA - BOB
Test_clip_avc.1080i59.94.ac3.5.1 - dfps: 38.1
Test_clip_wvc1.1080i59.94.flac.5.1 - dfps: 34.7
LAV CUVID v0.2 DXVA - Adaptive
Test_clip_avc.1080i59.94.ac3.5.1 - dfps: 32.9
Test_clip_wvc1.1080i59.94.flac.5.1 - dfps: 29.6
LAV CUVID v0.2 DXVA - frame doubling - BOB
Test_clip_avc.1080i59.94.ac3.5.1 - dfps: 28.4
Test_clip_wvc1.1080i59.94.flac.5.1 - dfps: 23.7
LAV CUVID v0.2 DXVA - frame doubling - Adaptive
Test_clip_avc.1080i59.94.ac3.5.1 - dfps: 25.2
Test_clip_wvc1.1080i59.94.flac.5.1 - dfps: 21.3
I've tested both BOB and Adaptive because my GPU is not that powerful, but I think that you should only test the Adaptive, because we already know that BOB always performs slightly best.
About my results, I find it curious than with DXVA WVC1 performs worse than AVC, and the no DXVA results makes me hope to be able to use my GPU with v0.3...
I will now start testing v0.3 and will post my results.
Note: I've also included ffdshow and WMVDecoder just for reference.
nevcairiel
16th April 2011, 16:04
Here are results from my two systems, only 0.3, i included Weave as a baseline reference.
GTX570, 270.51, Win7 x64, Core i7 2600K
LAV CUVID 0.3 - Weave
Test_clip_avc.1080i59.94.ac3.5.1 - dfps: 67.3
Test_clip_wvc1.1080i59.94.flac.5.1 - dfps: 71.9
LAV CUVID 0.3 - Adaptive
Test_clip_avc.1080i59.94.ac3.5.1 - dfps: 67.3
Test_clip_wvc1.1080i59.94.flac.5.1 - dfps: 72.1
LAV CUVID 0.3 - frame doubling - Adaptive
Test_clip_avc.1080i59.94.ac3.5.1 - dfps: 67.2
Test_clip_wvc1.1080i59.94.flac.5.1 - dfps: 71.9
LAV CUVID 0.3 DXVA - Adaptive
Test_clip_avc.1080i59.94.ac3.5.1 - dfps: 60.4
Test_clip_wvc1.1080i59.94.flac.5.1 - dfps: 70.5
LAV CUVID 0.3 DXVA - frame doubling - Adaptive
Test_clip_avc.1080i59.94.ac3.5.1 - dfps: 64.3
Test_clip_wvc1.1080i59.94.flac.5.1 - dfps: 70.4
GTS450, 270.51, Win7 x64, AMD Phenom II X4 955
LAV CUVID 0.3 - Weave
Test_clip_avc.1080i59.94.ac3.5.1 - dfps: 67.1
Test_clip_wvc1.1080i59.94.flac.5.1 - dfps: 71.8
LAV CUVID 0.3 - Adaptive
Test_clip_avc.1080i59.94.ac3.5.1 - dfps: 66.7
Test_clip_wvc1.1080i59.94.flac.5.1 - dfps: 71.8
LAV CUVID 0.3 - frame doubling - Adaptive
Test_clip_avc.1080i59.94.ac3.5.1 - dfps: 66.6
Test_clip_wvc1.1080i59.94.flac.5.1 - dfps: 71.4
LAV CUVID 0.3 DXVA - Adaptive
Test_clip_avc.1080i59.94.ac3.5.1 - dfps: 62.3
Test_clip_wvc1.1080i59.94.flac.5.1 - dfps: 68.7
LAV CUVID 0.3 DXVA - frame doubling - Adaptive
Test_clip_avc.1080i59.94.ac3.5.1 - dfps: 60.8
Test_clip_wvc1.1080i59.94.flac.5.1 - dfps: 61.5
A small conclusion .. DXVA mode does reduce the FPS more then any other option. If you can live with not-perfect-yet-still-good deinterlacing, non-DXVA with double framerate is probably the way to go for realtime playback.
All non-DXVA results for my two cards are pretty much identical, statistical variances aside, so it would seem the limiting factor is the VP4 decoding engine in those cards, which should be identical.
I do however have some issues that the queues in madVR drop very low and frames get dropped when i go into FSE mode. Windowed mode is fine, so is old FSE path. I'll tweak some things and see if something helps.
yesgrey
16th April 2011, 16:30
Here are my results with v0.3:
NVidia GeForce GT 240 - 270.51 drivers - Win7 x64 SP1
LAV CUVID v0.3 - Weave
Test_clip_avc.1080i59.94.ac3.5.1 - dfps: 65.7
Test_clip_wvc1.1080i59.94.flac.5.1 - dfps: 68.5
LAV CUVID v0.3 - BOB
Test_clip_avc.1080i59.94.ac3.5.1 - dfps: 65.7
Test_clip_wvc1.1080i59.94.flac.5.1 - dfps: 68.5
LAV CUVID v0.3 - Adaptive
Test_clip_avc.1080i59.94.ac3.5.1 - dfps: 66.0
Test_clip_wvc1.1080i59.94.flac.5.1 - dfps: 68.3
LAV CUVID v0.3 - frame doubling - BOB
Test_clip_avc.1080i59.94.ac3.5.1 - dfps: 65.7
Test_clip_wvc1.1080i59.94.flac.5.1 - dfps: 67.9
LAV CUVID v0.3 - frame doubling - Adaptive
Test_clip_avc.1080i59.94.ac3.5.1 - dfps: 65.2
Test_clip_wvc1.1080i59.94.flac.5.1 - dfps: 68.2
LAV CUVID v0.3 DXVA - BOB
Test_clip_avc.1080i59.94.ac3.5.1 - dfps: 62.9
Test_clip_wvc1.1080i59.94.flac.5.1 - dfps: 67.2
LAV CUVID v0.3 DXVA - Adaptive
Test_clip_avc.1080i59.94.ac3.5.1 - dfps: 47.0
Test_clip_wvc1.1080i59.94.flac.5.1 - dfps: 51.5
LAV CUVID v0.3 DXVA - frame doubling - BOB
Test_clip_avc.1080i59.94.ac3.5.1 - dfps: 35.9
Test_clip_wvc1.1080i59.94.flac.5.1 - dfps: 36.2
LAV CUVID v0.3 DXVA - frame doubling - Adaptive
Test_clip_avc.1080i59.94.ac3.5.1 - dfps: 29.8
Test_clip_wvc1.1080i59.94.flac.5.1 - dfps: 31.1
nice performance improvements over v0.2. More than 40%! :)
Now, if I disable DXVA, I can play using double frame rate, but I feel that my GPU it's the absolut minimum for allowing double frame rate of 60i sources. I have to reduce some quality in madVR to avoid frames dropping. I will try to overclock it a little to see if it works better.
By the way... The smoothness is amazing!
Once again, great job!
:thanks:
yesgrey
16th April 2011, 16:34
All non-DXVA results for my two cards are pretty much identical, statistical variances aside, so it would seem the limiting factor is the VP4 decoding engine in those cards, which should be identical.
Agreed. My results are pretty much the same (also VP4).
yesgrey
16th April 2011, 16:49
I do however have some issues that the queues in madVR drop very low and frames get dropped when i go into FSE mode. Windowed mode is fine, so is old FSE path.
Same happening here.
nevcairiel
16th April 2011, 17:14
Further testing shows, it seems to only affect interlaced VC-1 tracks, possibly only VC-1 in MKV, some VC-1 in m2ts i had handy seemed just fine. All interlaced H264 are fine too (played 15 minutes of some BBC Earth documentary, man what an awesome image)
VC-1 in MKV is the weirdest format, maybe it doesn't like that i actually split every timestamp in two? I did some debug logging, and the frames going out of the decoder seem to not be properly ordered, now when i double those timestamps, does madVR get confused?
It may be something i can fix in LAV Splitter.
But then, why only in the new FSE mode?
madshi? :D
Edit:
Fixed it in LAV Splitter, will need to do some proper code to only do it with LAV CUVID, or Cyberlink and folks break again.
yesgrey, can you confirm it only happens on VC-1?
yesgrey
16th April 2011, 17:18
Further testing shows, it seems to only affect interlaced VC-1 tracks, possibly only VC-1 in MKV. All interlaced H264 are fine too
Same here.
madshi
16th April 2011, 17:21
Further testing shows, it seems to only affect interlaced VC-1 tracks, possibly only VC-1 in MKV, some VC-1 in m2ts i had handy seemed just fine. All interlaced H264 are fine too (played 15 minutes of some BBC Earth documentary, man what an awesome image)
VC-1 in MKV is the weirdest format, maybe it doesn't like that i actually split every timestamp in two? I did some debug logging, and the frames going out of the decoder seem to not be properly ordered, now when i double those timestamps, does madVR get confused?
It may be something i can fix in LAV Splitter.
But then, why only in the new FSE mode?
madshi? :D
If you upload a log with the frame drops, I can have a look at why they happen.
SamuriHL
16th April 2011, 17:29
So, Nev...my Serenity MKV from my HD DVD. VC1. I installed 0.3 and was up to about 700 dropped frames in just over a minute and a half! :eek: I thought it was DXVA mode causing it. Nope. That double frame thing. Turned that off and I was back to pure bliss. I'd only want that with interlaced content, right? I assume there's a plan to make this a bit more robust and only use it when necessary? :)
nevcairiel
16th April 2011, 17:36
HD DVDs shall be deleted.
But anyway, it should actually only be on for interlaced content, but those HD DVDs are weird with their pull down flags, so i guess it actually detects them as interlaced.
Screw VC-1 in MKV, nothing but problems with that shit.
sneaker_ger
16th April 2011, 17:37
So, Nev...my Serenity MKV from my HD DVD. VC1. I installed 0.3 and was up to about 700 dropped frames in just over a minute and a half! :eek: I thought it was DXVA mode causing it. Nope. That double frame thing. Turned that off and I was back to pure bliss. I'd only want that with interlaced content, right? I assume there's a plan to make this a bit more robust and only use it when necessary? :)
Is that MKV encoded as interlaced despite being progressive?
SamuriHL
16th April 2011, 17:37
Yes, yes, I know my outdated format is dead. Why do you think I'm converting them to a more useful format?! :D However, the inability to get rid of the pulldown flag is definitely an issue. I wish there was some util that could take the MKV and fix the pulldown without a lot of work.
SamuriHL
16th April 2011, 17:39
Is that MKV encoded as interlaced despite being progressive?
No. See here:
Format : Matroska
File size : 14.7 GiB
Duration : 1h 59mn
Overall bit rate : 17.7 Mbps
Encoded date : UTC 2011-04-15 15:28:29
Writing application : MakeMKV v1.6.7 win(x64-release)
Writing library : libmakemkv v1.6.7 (0.7.7/0.8.1) win(x64-release)
Video
ID : 1
Format : VC-1
Format profile : AP@L3
Codec ID : WVC1
Codec ID/Hint : Microsoft
Duration : 1h 59mn
Bit rate : 15.8 Mbps
Width : 1 920 pixels
Height : 1 080 pixels
Display aspect ratio : 16:9
Frame rate : 29.970 fps
Chroma subsampling : 4:2:0
Bit depth : 8 bits
Scan type : Progressive
Scan order : Top Field First
Bits/(Pixel*Frame) : 0.255
Stream size : 13.2 GiB (89%)
Language : English
Audio
ID : 2
Format : E-AC-3
Format/Info : Audio Coding 3
Codec ID : A_EAC3
Duration : 1h 59mn
Bit rate mode : Constant
Bit rate : 1 536 Kbps
Channel(s) : 6 channels
Channel positions : Front: L C R, Side: L R, LFE
Sampling rate : 48.0 KHz
Video delay : -50ms
Stream size : 1.28 GiB (9%)
Title : 3/2+1
Language : English
Text
ID : 3
Format : VobSub
Codec ID : S_VOBSUB
Codec ID/Info : The same subtitle format used on DVDs
Language : English
Menu
00:00:00.000 : en:Living Weapon
00:05:00.450 : en:A Better World
00:09:31.366 : en:Aboard Serenity (Main Titles)
00:14:48.200 : en:Going for a Ride
00:19:48.666 : en:Reavers
00:29:11.250 : en:Triggered
00:36:16.083 : en:Mr. Universe
00:44:06.616 : en:Safe Haven
00:49:51.700 : en:Civilized Resolution
00:55:40.700 : en:Posing a Threat
00:59:24.750 : en:Miranda
01:04:41.366 : en:"Just Believe"
01:09:09.583 : en:Suicide Mission
01:13:29.366 : en:Learning the Secret
01:22:33.616 : en:Caught in the Middle
01:30:13.166 : en:Can't Stop the Signal
01:36:51.666 : en:Fighting for a Belief
01:45:49.866 : en:Do We Have an Order?
01:47:30.583 : en:It's Not Over
01:53:14.783 : en:End Titles
yesgrey
16th April 2011, 17:40
I wish there was some util that could take the MKV and fix the pulldown without a lot of work.
I think eac3to does it...
madshi
16th April 2011, 17:44
I think eac3to does it...
Yes, it does!
(1) eac3to source.mkv dest.mkv
(2) mkvtoolnix to put audio tracks back in
Done.
@SamuriHL, I'm wondering why you don't use eac3to (or one of the many eac3to GUIs) to do your HD DVD -> MKV stuff in the first place? I thought eac3to was the standard tool to do this. It would have removed the pulldown flags from any MPEG2, VC-1 and h264 HD DVD for you. Automatically. Actually eac3to removes the pulldown flags in a better way than the Microsoft tool does, which Warner was using for their initial Blu-Rays.
nevcairiel
16th April 2011, 17:46
If you upload a log with the frame drops, I can have a look at why they happen.
http://files.1f0.de/madVR-vc1-mkv.zip
I have since fixed LAV Splitter to avoid this problem (the log is actually with Haali, which shows the exact same problem).
Sadly my fix was the removal of a fix for something else, so i'll have to think about another solution for that..
But now its time to cook some food.
yesgrey
16th April 2011, 17:48
Im really surprised that Donald doesn't has this mode implemented in DGDecNV if all is true :)
I'm sure that if he is following this thread he will update DGDecNV accordingly.
In fact, that's my only hope of using the DXVA deinterlacer mode... reencode the original converting it to progressive with the best deinterlacer enabled (using DGDecNV). Yes, it would be a little crazy, but the end result would be very similar. :D
SamuriHL
16th April 2011, 17:50
Yes, it does!
(1) eac3to source.mkv dest.mkv
(2) mkvtoolnix to put audio tracks back in
Done.
@SamuriHL, I'm wondering why you don't use eac3to (or one of the many eac3to GUIs) to do your HD DVD -> MKV stuff in the first place? I thought eac3to was the standard tool to do this. It would have removed the pulldown flags from any MPEG2, VC-1 and h264 HD DVD for you. Automatically.
Cause I'm freaking lazy. :D MakeMKV allows me to stick the disc in, scan it, and click a button. LOL! I will have to try it, though. When I scanned the MKV with eac3to it gave me a nice warning about how it didn't like the eac3 audio and vobsub subtitle tracks. I was going to try exactly that. Ok, I'll stop being lazy and put some actual effort into this now. Still need to get the damn subtitles working though. sigh.
EDIT: Oh, right, I forgot about that one, too. "Getting Haali matroska muxer instance failed." I need haali installed. Just shoot me. :D
markanini
16th April 2011, 17:52
Anyone else get a black image with MPEG-2 PS (DVD) in MPC-HC+MadVR? MPEG-2 TS Works fine btw.
madshi
16th April 2011, 17:54
http://files.1f0.de/madVR-vc1-mkv.zip
I have since fixed LAV Splitter to avoid this problem (the log is actually with Haali, which shows the exact same problem).
Sadly my fix was the removal of a fix for something else, so i'll have to think about another solution for that..
According to the log the timestamps eac3to gets are really bad:
frame 89: 14010000 -> vsync 86
frame 90: 14846833 -> vsync 91
frame 91: 14176833 -> vsync 88
frame 92: 15350000 -> vsync 95
frame 93: 15516833 -> vsync 96
frame 94: 15680000 -> vsync 97
frame 95: 15020000 -> vsync 93
frame 96: 15846833 -> vsync 98
That's just too messed up for madVR to handle. The result is that even after madVR's timestamp fixing some frame drops can't be avoided. In this case frame 95 was dropped because it just didn't fit in at all.
But now its time to cook some food.
Can I have some, too? :)
nevcairiel
16th April 2011, 17:55
That's just too messed up for madVR to handle. The result is that even after madVR's timestamp fixing some frame drops can't be avoided. In this case frame 95 was dropped because it just didn't fit in at all.
I figured it would be something like that after debugging a bit. But the fact that it worked in windowed and old-FSE just confused me.
madshi
16th April 2011, 17:59
Cause I'm freaking lazy. :D
Haha! Well, in the end you always pay when prefering other software over mine, hehe... :devil:
EDIT: Oh, right, I forgot about that one, too. "Getting Haali matroska muxer instance failed." I need haali installed. Just shoot me. :D
If you trust mkvtoolnix then you don't need Haali. Just do "eac3to source dest.*" to demux everything. eac3to will still remove the pulldown flags for you. You can then mux with mkvtoolnix. Have you tried some of the eac3to GUIs? I've heard ClownBD is supposed to be easy to use. Not sure if it handles HD DVDs, but I think it does.
madshi
16th April 2011, 18:03
I figured it would be something like that after debugging a bit. But the fact that it worked in windowed and old-FSE just confused me.
I think that's caused by the new FSE to present so many frames in advance. Once the frames are presented, they're out of madVR's hands, so madVR can't switch them around, anymore. With windowed mode and the old FSE only one frame is presented (out of madVR's hands) at any time, so madVR has more time to swap timecodes around. How many frames did you ask madVR to pre-present? If you're going with 8 then madVR pretty much presents every frame as soon as it comes in, which means that there's almost zero chance to swap timecodes. I've already thought that I should make the decoder queue bigger than all other queues, so that I always have enough time & room to swap broken timestamps etc. Maybe I'll do that in a future version...
nevcairiel
16th April 2011, 18:04
Ah, guess that makes sense. Yes it was set to 8.
SamuriHL
16th April 2011, 18:05
Haha! Well, in the end you always pay when prefering other software over mine, hehe... :devil:
Ain't that the truth! You know how many times I recommend eac3to to people?? :) I find it *INVALUABLE* for many many tasks.
If you trust mkvtoolnix then you don't need Haali. Just do "eac3to source dest.*" to demux everything. eac3to will still remove the pulldown flags for you. You can then mux with mkvtoolnix. Have you tried some of the eac3to GUIs? I've heard ClownBD is supposed to be easy to use. Not sure if it handles HD DVDs, but I think it does.
The problem I had, and why I started using MakeMKV in the first place, is that I want MKV's of all my HD DVD/BD's. None of the eac3to gui's (at the time, however, I know Another EAC3TO GUI was working on this and may have added it by now) were able to put PGS subs into an MKV container. So I started using MakeMKV which is very simple and does what I want 99% of the time. For HD DVD, though, you're right. Laziness is costing me more effort than saving. Hence, I'm doing it right now. :) As for ClownBD, yes, I use it quite a bit, but, it doesn't output MKV's. He has no interest in updating it to do so, either. A shame cause I love that tool, but, I'm done with ISO images and m2ts/ts files. MKV is IMO a better container.
SamuriHL
16th April 2011, 18:10
Ah, man! I have to use mkvmerge anyway since eac3to only put the video back in the box. :D Alright, I should have just stripped the streams and had mkvmerge handle muxing instead of installing haali. See?!?! This is why I prefer to be lazy! I always manage to screw it up somehow. LOL! :D
nevcairiel
16th April 2011, 18:21
LAV CUVID Decoder 0.4
0.4 - 2011/04/16
- Frames flagged as progressive will not be doubled anymore (Fixes playback of streams with forced pull-down flags)
- Fixed an issue that could cause a crash in media type handling
Download: 32-bit (http://files.1f0.de/cuvid/LAVCUVID-0.4.zip)
Mostly because of the crash, which didn't happen to me as often as it should have, but hey, maybe i've been lucky.
While i was at it, i changed the frame doubler to skip frames that are marked progressive, which neatly fixes playing of those VC-1 HD DVD tracks. The media type will still say its playing at some high fps (probably 60p), but it will once again just send 24 frames per second. Note that i tested this against an actual .EVO File, not a MKV.
SamuriHL
16th April 2011, 18:22
SWEET! Look I can be lazy again! :D Thanks, Nev!!
Dogway
16th April 2011, 18:38
Nvidia 9600M GT - driver 266.58
Core2Duo 2.53 T9400 1066FSB. 4Gb DDR3 533Mhz
Laptop WinXP SP3 x86
testing with yesgrey's files:
NULL Renderer
avc
ffmpeg-mt 50dfps 585fps
lavcuvid 0.2 weave 19dfps 477.5fps
lavcuvid 0.4 weave 23dfps 806.4fps (DXVA OFF)
CoreAVC 2.5.1 weave 23dfps 453fps
wvc1
libavcodec 703dfps 3200fps
lavcuvid 0.2 weave 19.0dfps 52fps
lavcuvid 0.4 weave 28.5dfps 52.4fps (DXVA OFF)
yesgrey
16th April 2011, 18:53
VMR7 Renderer
You should use the Null renderer. The idea is measuring only the decoder performance.
Dogway
16th April 2011, 18:58
Yes, I started in Null, then I wondered if I needed a renderer for a real case scenario. Let me run tests again, and edit. Any hint for wvc1 through ffdshow?
nevcairiel
16th April 2011, 19:35
@Dogway:
The performance you're getting seems really low. Mabye update to 270.51 driver?
Dogway
16th April 2011, 19:43
I know, but 266.58 is the official last version, I think that 270.51 is only for vista/seven (http://www.nvidia.com/object/notebook-win7-winvista-270.51-beta-driver.html)
nevcairiel
16th April 2011, 19:45
http://www.nvidia.com/object/winxp-270.51-beta-driver.html
Yes, its marked as Beta, but overall it performs so much better for me then 266.58 did.
SamuriHL
16th April 2011, 19:46
http://www.nvidia.com/object/winxp-270.51-beta-driver.html
Yes, its marked as Beta, but overall it performs so much better for me then 266.58 did.
And what did you create for custom profiles? Cause I wasn't able to keep it in sync.
nevcairiel
16th April 2011, 19:47
I had my old profiles from the 266.58 install, didnt change a thing, and it still worked.
Profiles for 23.976, 50 and 59.94
My 23.976 profile is actually for 23.978, because that gives an actual refresh rate closer to 23.976 then entering 23.976 in the box .. go figure. <.<
(I get 23.9764... out of it, just 0.0004 away from the target!)
Also, it looks like there really are no 270.51 mobile drivers for XP, i linked the Desktop version. <.<
Dogway
16th April 2011, 19:47
Yes, its marked as Beta, but overall it performs so much better for me then 266.58 did.
Maybe that's the problem, thanks for the link but that's the desktop version of my card.
edit: Maybe I might run some tests on my desktop system to see if that's the cause...
yesgrey
16th April 2011, 19:47
Any hint for wvc1 through ffdshow?
You need to select "wmv9" as VC-1 decoder in ffdshow's Codecs tab.
SamuriHL
16th April 2011, 19:49
I had my old profiles from the 266.58 install, didnt change a thing, and it still worked.
Profiles for 23.976, 50 and 59.94
My 23.976 profile is actually for 23.978, because that gives an actual refresh rate closer to 23.976 then entering 23.976 in the box .. go figure. <.<
Also, it looks like there really are no 270.51 mobile drivers for XP, i linked the Desktop version. <.<
Guess I can try again tomorrow. If I manage to upset my wife we can always use the stand alone panasonic player to watch Glee. :D I would really like to get that working.
Dogway
16th April 2011, 19:49
You need to select "wmv9" as VC-1 decoder in ffdshow's Codecs tab.
that's what I tried, it just triggered an error: "cannot connect source to decoder"
roozhou
16th April 2011, 20:05
Found a bug when using PotPlayer 27623 + LAV CUVID 0.3 or 0.4
Steps:
1) Play a video file in PotPlayer using LAV CUVID
2) Click Stop
3) Click Play
The screen goes black. Seeking or re-opening the video do not solve the problem. If you open another file using LAV CUVID, the problem is gone.
My spec:
WinXP + GT240 + 270.51
nevcairiel
16th April 2011, 20:14
Works fine for me, using PotPlayer 26392, using madVR. Can't really be bothered to update to a new version right now. :d
mindbomb
16th April 2011, 22:34
lav cuvid .4 and madvr .56 are working great for me on 2/3 of my computers with nvidia graphics cards.
On one computer with windows 7 64 bit and an 8600gt, I'm getting very strange results.
madvr and cyberlink decoder in sw mode work great together
lavcuvid and evr cp work great together.
but when i try lavcuvid and madvr together, it's a slideshow.
I'm using 270.51 .
The strange thing is that i have a gtx 260 as well in another computer, and that is vp2 also, but playback is perfect on that.
Is it just a vram issue?
nevcairiel
16th April 2011, 22:43
The 8600GT only has 256mb ram, that can be a bit on the low-side for lav cuvid decoding and madvr.
My GPU memory usage goes up around ~185MB when running timeCodec without rendering, and ~364MB when LAV CUVID decoding with madVR. (Plus the 170mb that Aero seems to be constantly using)
I would recommend at least 512mb to everyone wanting to run this setup, maybe even 768 or 1gb for some headroom.
CruNcher
16th April 2011, 23:51
You could also try to disable DWM save the 170mb though lose the (window crash prevention, window system memory usage, faster bitblit) and return to the old 2D GUI (lower latency) :)
DXVA Interop also gives a nice Speed increase without Deinterlacing, results to follow :)
NVidia GeForce 9800GT G92 - 270.51 drivers - XP SP1 32
DiAVC
Test_clip_avc.1080i59.94.ac3.5.1 - dfps: 180.5
Arcsoft Video Decoder (couldn't test Cyberlinks Decoder in this environment)
Test_clip_wvc1.1080i59.94.flac.5.1 - dfps: 52.3
LAV CUVID 0.4 - WEAVE
Test_clip_avc.1080i59.94.ac3.5.1 - dfps: 46.4
Test_clip_wvc1.1080i59.94.flac.5.1 - dfps: 54.0
LAV CUVID 0.4 - WEAVE DXVA Interop
Test_clip_avc.1080i59.94.ac3.5.1 - dfps: 57.2
Test_clip_wvc1.1080i59.94.flac.5.1 - dfps: 72.5
LAV CUVID v0.4 - BOB
Test_clip_avc.1080i59.94.ac3.5.1 - dfps: 46.4
Test_clip_wvc1.1080i59.94.flac.5.1 - dfps: 54.3
LAV CUVID v0.4 - Adaptive
Test_clip_avc.1080i59.94.ac3.5.1 - dfps: 45.8
Test_clip_wvc1.1080i59.94.flac.5.1 - dfps: 53.6
LAV CUVID v0.4 - frame doubling - BOB
Test_clip_avc.1080i59.94.ac3.5.1 - dfps: 46.1
Test_clip_wvc1.1080i59.94.flac.5.1 - dfps: 53.6
LAV CUVID v0.4 - frame doubling - Adaptive
Test_clip_avc.1080i59.94.ac3.5.1 - dfps: 45.3
Test_clip_wvc1.1080i59.94.flac.5.1 - dfps: 49.0
LAV CUVID v0.4 DXVA - BOB
Test_clip_avc.1080i59.94.ac3.5.1 - dfps: 57.2
Test_clip_wvc1.1080i59.94.flac.5.1 - dfps: 68.6
LAV CUVID v0.4 DXVA - Adaptive
Test_clip_avc.1080i59.94.ac3.5.1 - dfps: 57.0
Test_clip_wvc1.1080i59.94.flac.5.1 - dfps: 58.7
LAV CUVID v0.4 DXVA - frame doubling - BOB
Test_clip_avc.1080i59.94.ac3.5.1 - dfps: 57.2
Test_clip_wvc1.1080i59.94.flac.5.1 - dfps: 57.5
LAV CUVID v0.4 DXVA - frame doubling - Adaptive
Test_clip_avc.1080i59.94.ac3.5.1 - dfps: 56.9
Test_clip_wvc1.1080i59.94.flac.5.1 - dfps: 49.9
Some VC-1 results surprise me though but i guess that has todo with the splitter decoder combination VC-1 in MKV :P
PS: Currently retesting 4 Girls Performance vs CoreAVC, will update the DXVA thread with the new Interop results, great work nev that Nvcuvid api based switch gives a nice performance improvement :)
Hmm DXVA Interop produces strange visual results (smear artifacts) on VMR here in the actual playback
http://img840.imageshack.us/img840/6585/dxvainteropvmrprogressi.png
trying to open another video produces just a black screen after this error on DXVA interop (have to close MPC-HC and reopen to open another video with the same error result in the end, looks like the VP2 connection is unstable after this problem occurs)
It looks like to propagate from a Reference Frame
http://img810.imageshack.us/img810/5606/referenceframesproblem.png
same on madvr
VC-1 shows other artifacts
Dogway
17th April 2011, 01:03
I updated my test (http://forum.doom9.org/showthread.php?p=1493357#post1493357)with CoreAVC performance, it is the same as CUVID so I think Im gonna wait for drivers update, or when I have a fresh Windows install. Thanks none the less for all the effort and improvement. I'll keep my eye on.
CruNcher
17th April 2011, 01:17
on VMR9 Renderless though DXVA Interop is a big improvement it blasts from 3 fps and stucky video to 50 fps and fast video just those artifacts that propagate allot of times and make watching impossible are a problem over here :(
Though there is a big improvement in Jitter and Performance visible even without DXVA Interop on VMR7 windowed compared to 0.2 :) beats CoreAVC on it :) It's as fast their now as it is with DGDecNV native :)
Though still the Performance on VMR9 Renderless is very bad better then before (1-2 fps) now with 3 fps but still much lower then CoreAVC (20 fps) and if this DXVA interop artifacts wouldn't be their it would be perfect even on VMR9 Renderless almost as fast as now on VMR7 windowed (52 fps (6ms jitter), CoreAVC 45 fps)
On MadVR DXVA Interop makes the playback as fast (6ms jitter) just those artifacts damnit :(
DXVA Interop (OFF) 9-10ms
http://img52.imageshack.us/img52/9984/nodxvainteropmadvr56.png
DXVA Interop (ON) 6-7ms
http://img405.imageshack.us/img405/4626/dxvainteropmadvr56.png
I updated my test (http://forum.doom9.org/showthread.php?p=1493357#post1493357)with CoreAVC performance, it is the same as CUVID so I think Im gonna wait for drivers update, or when I have a fresh Windows install. Thanks none the less for all the effort and improvement. I'll keep my eye on.
@Dogway
do you see these artifacts on 266.58 with your 9600M GT VP2 @ actual playback with DXVA Interop ?
roozhou
17th April 2011, 10:19
@nevcairiel
Another bug:
LAV CUVID cannot recognize aspect ratio of BBC HD. BBC HD 1440x1080 AVC have a DAR of 20:11 but all of them are played at 4:3 using LAV CUVID.
nevcairiel
17th April 2011, 10:25
It detects the AR encoded in the sequence header just fine.
If it doesn't, then its not coded properly in there. You can uncheck "Use Stream AR", which will make it use the AR the source filter specified. Also check if that option was active to begin with.
You could provide a sample file that shows the problem, but i don't think there is much i can do - the hardware decoder actually parses that information, and just tells me when it changed.
PS:
I actually have some BBC HD files here, they are all 1440x1080 at 16:9, which will cause them to be displayed as 1920x1080
Dogway
17th April 2011, 10:58
do you see these artifacts on 266.58 with your 9600M GT VP2 @ actual playback with DXVA Interop ?
Yes, I see kind of blocking...
roozhou
17th April 2011, 11:01
Checked "Use Stream AR" and now it's OK. Thanks.
BTW. BBC HD is actually played at 1964x1080.
Thanks for the update!
Stream switching still doesnīt work.
H.264 in DVBViewer works now (also it takes a bit longer than other decoders until first picture is shown), but when I switch the channel it happens that the computer freezes a few seconds, screen turns black, then it comes back with a message like "The kernel mode driver NVIDIA... was not responding and needed to be restored".
nevcairiel
17th April 2011, 14:00
I just played a BBC Earth documentary (BluRay, H264 1080i/60), with Adaptive, Double Framerate and DXVA on, and i didn't get a single framedrop on my GTS450. Maybe when madVR is running it puts the GPU in some higher performance mode, or something, but it worked just perfectly, even when Benchmarks claimed i can barely just reach 60fps. :)
The decoder queue was like 5-8/8 instead of the typical 7-8/8, which means its probably the maximum it can do, though.
Quality and Smoothness was so awesome. :)
Something i could previously only get with EVR and its hardware deint.
CruNcher
17th April 2011, 14:08
You might have to make "DXVA Interop" dynamic either based on the Card it fails on G92 VP2 and G94 VP3 or the OS 2 times it fails on XP SP3 32, not sure yet where the problem is with it. Would be nice if someone with Vista/7 and G92/G94 VP2/VP3 could post his experience with it
nevcairiel
17th April 2011, 14:10
Its probably XP and its DXVA1 shit. :p
CruNcher
17th April 2011, 14:19
Hmm does the API Documentation mentions anything about Vista/7 or DXVA2 only for the Interop option or something driver related ?
nevcairiel
17th April 2011, 14:21
No, but considering the limitations of DXVA on XP, it would only make sense.
CruNcher
17th April 2011, 14:26
yeah that artifacts are different to the used ones (to much reference frames) but they fit into the borkness off DXVA, though that this works in MadVR makes me wonder if that isn't actually DXVA now just not from the renderer side but the Decoder side forcing the renderer, the results are just amazing from 10ms to 6ms and almost drop free :P
It's so damn amazing because it even beats Cyberlinks DXVA on a DXVA surrface VMR7 windowed 6ms vs 10ms :)
Cyberlink DXVA VMR7 windowed = 10ms 0%* CPU
LAV CUVID (DXVA Interop) MadVR 056 (Default) = 6ms 4-8% CPU
Cyberlink DXVA VMR9 Renderless Bicubic Alternate Sync VMR9-Mixer Mode = 40ms 0%* CPU
Cyberlink DXVA VMR9 Renderless Billinear VMR9-Mixer Mode = 35ms 0%* CPU
*in the area of context switches not really measurable by most tools
Amazing results this is just Amazing beating VMR7 windowed with just a itzy tiny more amount of CPU, though i still wonder if the decoding errors have todo something with the transfer speedup in this case, theoreticaly though they should just be visual errors (decoding pipeline driver related) not having anything todo with the transfer path :)
This combination could easily replace every Renderer in MPC-HC by now if those artifacts wouldn't be there on XP :)
It would mean in words the flexibility of VMR9 Renderless with the speed of VMR7 windowed with just a tiny amount of CPU usage (Power Consumption) comes very close to the Overlay Mixer with DXVA in fluidity :)
This could be very well just a Preview of whats to come when MadVR gets DXVA support subjective experience is like its the Overlay Mixer with Shader support ;)
another step closer to Arcsoft,Cyberlink and Corel(Intervideo) :)
This definitely looks like the right way for XP just something minor is wrong :)
http://img715.imageshack.us/img715/3951/hmmstrangedxvainteroppr.png
pankov
17th April 2011, 17:49
Guys,
yesterday I found a very useful tool for NVidia users and especially the ones with multiple displays connected to one card or others that want to fine tune the clocks/voltages of their cards.
It's called NVIDIA Inspector and includes the "Multi Display Power Saver" which is able to downclock the cards running two different displays.
Here you can read more about it
http://blog.orbmu2k.de/tools/nvidia-inspector-tool
http://www.3dcenter.org/artikel/nvidia-inspector-bringt-komfortables-multi-display-power-saving
(it's in German and for those of us that German is not understandable we can use Google translate)
Now that I found this and especially after Nevcairiel's work on LAV CUVID Decoder :thanks: I can proudly say that I'm more than happy I've changed teams and moved from ATI/AMD to NVidia
:)
CruNcher
17th April 2011, 18:28
Though AMD/ATI has still the more efficient Hardware and with Cyberlink HAM (APP OVD) + MadVR practically the same should be possible under AMD/ATI Hardware and with less Power Consumption then on current Nvidia Hardware :)
AMD/ATI all the years just lacked on the Ecosystem and Software support but they realized that and since Fussion they throwing out a massive amount of Developer stuff to gain ground against Nvidias Developer Ecosystem, though Nvidia still owns practically Linux with VDPAU AMD/ATI support is still lacking their :)
Currently their is the trend rather in the different direction most move from Nvidia to AMD/ATI because of Price/Performance/Consumption, especialy Windows user :)
nevcairiel
17th April 2011, 18:56
Maybe the hardware is more efficient, but without proper drivers, its all good for nothing. Personally, i would never get ATI just because of their f'ing drivers.
Then there is also their broken DXVA, the horrible performance when copying data back from the GPU into system memory, and their questionable marketing tricks .. but thats all OT, and there are already lengthy discussions on this over at avsforum.
The only thing that would be nice to have would be 3 monitor support on one card, so that basically means display port support. The GTX590 was i think the first NVIDIA card to ever get a DisplayPort connector, can hope that it'll be ported down into the lower cards at some point. :)
CruNcher
17th April 2011, 19:02
For what DXVA anyways if we get so great MadVR results :) that what for us currently is LAV CUVID + MadVR is Cyberlink HAM + MadVR for AMD/ATI users and it works as efficient and with less Power Consumption on their Hardware :)
Though none of both will be able to beat a HD2000/3000 Sandy Bridge System currently anyways :P but even in those you need one of those 2 cards for at least 3D stuff ;) though Liano could do it and with the right Software support @ launch it would blast (therefore they released the whole APP Ecosystem including OVD) and adding another AMD/ATI Card you could have Crossfire though only possible under Vista/7 :)
Though i decided for Intel already, currently still Intel (CPU tasks only) + Nvidia (Video 3D tasks and General GPU acceleration (Browser HTML5 ect)) ;)
SamuriHL
17th April 2011, 19:04
I have both AMD and nVidia solutions. I can tell you I prefer the nVidia solution for video playback.
nevcairiel
17th April 2011, 19:06
I have both AMD and nVidia solutions. I can tell you I prefer the nVidia solution for video playback.
Speaking of, i today redid my custom resolutions, because my 60hz was actually 60hz and not 59.94 (doh), and i noticed that its really broken with 270.51
So, i just installed an older one, 260.99 i think (with "clean install"), setup the resolutions, and upgrade to 270.51 again - worked just peachy! :)
SamuriHL
17th April 2011, 19:08
Speaking of, i today redid my custom resolutions, because my 60hz was actually 60hz and not 59.94 (doh), and i noticed that its really broken with 270.51
So, i just installed an older one, 260.99 i think (with "clean install"), setup the resolutions, and upgrade to 270.51 again - worked just peachy! :)
What the??! :D I guess I can give that a try. I clean installed 260.whatever and that's what I'm using now. So if I set up custom resolutions and then upgrade to 270, maybe it'll stick this time and not give me sync problems. Even with 260 it's not flawless. I was watching Glee with my wife last night and the sync was mostly good but it would drift in and out. It was subtle and she didn't notice (thank God) but I did. Drove me nuts. I don't know why that machine refuses to stay stable at 23.976.
CruNcher
17th April 2011, 19:43
For XP now i had a lot of crashes with 270.51 Video wise (they work perfect 3D Performance wise) here on G92 VP2 that i cant explain system gone unstable when video was being tried to render not really render dependent @ all i guess they took place in nvcuvid stalling the system entirely. So i will try the official WHQL driver and some other pre 270.51 from the 268 branch maybe those are more stable under XP.
Ger
17th April 2011, 21:22
About the Cyberlink HAM thing; as soon as I switch the Cyberlink decoder from DXVA to either HAM or SW mode the deinterlacing quality plummets (ATI 5770), so that rules out HAM for me, unless there is a registry setting or some other trick to fix it. CPU usage with HAM mode is also noticeably higher than in DXVA mode, but of course lower than in SW mode.
CruNcher
17th April 2011, 21:25
Oh didn't knew HAM mode has higher CPU use how much higher does AMD/ATIs OVD sample application also introduces high cpu usage for you ?
Nev i checked with 266.58 WHQL now and something peeks into my eye with it Lavcuvid 0.4 is unstable closing and reloading a video on MadVR it stays black, when using Lav Cuvid 0.2 it doesn't it's always correctly loading it never fails.
I didn't tested that with 270.51 as i used mainly DXVA interop their and that always made the reload to fail with a black screen (i thought @ first that caused it). Seems the same happens without DXVA Interop at least on 266.58 too (have to close MPC-HC and reopen it) are you sure you destroy everything correctly in 0.4 compared to 0.2 ?
Im using File->Close in MPC-HC and Drag & Drop for loading
I retested all releases the behavior starts with 0.3 all 0.2 including the test releases (dxva interop,frame doubling) are still ok
SamuriHL
17th April 2011, 21:45
HAM mode isn't higher CPU on my machines. But, really it's offtopic for this thread. It completely depends on your hardware.
Ger
17th April 2011, 21:46
System wide CPU usage with the 1080i H264 NTSC cheese slice test:
Cyberlink DXVA: Around 10%.
Cyberlink HAM: Around 25%.
Cyberlink SW: Around 50%.
I only get vector adaptive deinterlacing with Cyberlink when DXVA mode is activated.
mindbomb
17th April 2011, 22:33
Though AMD/ATI has still the more efficient Hardware and with Cyberlink HAM (APP OVD) + MadVR practically the same should be possible under AMD/ATI Hardware and with less Power Consumption then on current Nvidia Hardware :)
It would be great if HAM actually worked with madvr, but for me atm, there is dropped frames despite relatively low cpu and gpu usage.
on my AMD machine im using HAM and evr cp with bicubic A=-1.00 and ffdshow raw video filter to do the HQ RGB conversion, and it looks okay i guess.
i would really advise ppl to buy nvidia cards atm, so they can use lav cuvid and madvr.
CruNcher
17th April 2011, 23:13
It would be great if HAM actually worked with madvr, but for me atm, there is dropped frames despite relatively low cpu and gpu usage.
on my AMD machine im using HAM and evr cp with bicubic A=-1.00 and ffdshow raw video filter to do the HQ RGB conversion, and it looks okay i guess.
i would really advise ppl to buy nvidia cards atm, so they can use lav cuvid and madvr.
How is the CPU usage of this http://download2-developer.amd.com/amd/Samples/OVDecodeRender.zip though it goes off topic you better post some benches of your speed and setup in the DXVA thread under Software Players there results are needed from different systems decoder and OS http://forum.doom9.org/showthread.php?t=159486 :)
SamuriHL
18th April 2011, 17:33
Brilliant. Thanks for that!
nevcairiel
18th April 2011, 19:18
I briefly did some performance tests with LAV CUVID, and it seems to be the same as 270.51 - what i expected, just wanted to be sure. ;)
One thing does puzzle me a bit though. In all these tests, why is double-framerate mode not yielding a higher overall fps? The decode engine does not have to do any extra work, its just the post-processors deinterlacing a second frame, and those are running in the 3D engine, which should have plenty power on my GTX 570.
I'll do some funny test and enable double-framerate for progressive/weave, and see whats happening!
nevcairiel
18th April 2011, 19:57
So, i did the tests with the GraphStudio Decoder Performance thing instead of timeCodec, and man, what day and night results!
Either timeCodec is flawed, or i dunno. Since this is more what i expected, i'll go with timeCodec is flawed.
Here is my complete bench again with GraphStudio (of course against Null Renderer), average of 3 passes
One obvious difference is of course that GraphStudio uses LAV Splitter (which gets the timestamps right), and timeCodec forces Haali, but if that makes a difference now?
GTX570, 270.61, Win7 x64, Core i7 2600K
LAV CUVID 0.4 - Weave
Test_clip_avc.1080i59.94.ac3.5.1 - fps: 67.0
Test_clip_wvc1.1080i59.94.flac.5.1 - fps: 71.9
LAV CUVID 0.4 - Adaptive
Test_clip_avc.1080i59.94.ac3.5.1 - fps: 66.9
Test_clip_wvc1.1080i59.94.flac.5.1 - fps: 71.9
LAV CUVID 0.4 - frame doubling - Adaptive
Test_clip_avc.1080i59.94.ac3.5.1 - fps: 134.0
Test_clip_wvc1.1080i59.94.flac.5.1 - fps: 143.7
LAV CUVID 0.4 DXVA - Adaptive
Test_clip_avc.1080i59.94.ac3.5.1 - fps: 64.2
Test_clip_wvc1.1080i59.94.flac.5.1 - fps: 70.2
LAV CUVID 0.4 DXVA - frame doubling - Adaptive
Test_clip_avc.1080i59.94.ac3.5.1 - fps: 128.6
Test_clip_wvc1.1080i59.94.flac.5.1 - fps: 140.4
GTS450, 270.51, Win7 x64, AMD Phenom II X4 955
LAV CUVID 0.4 - Weave
Test_clip_avc.1080i59.94.ac3.5.1 - fps: 66.7
Test_clip_wvc1.1080i59.94.flac.5.1 - fps: 71.6
LAV CUVID 0.4 - Adaptive
Test_clip_avc.1080i59.94.ac3.5.1 - fps: 66.6
Test_clip_wvc1.1080i59.94.flac.5.1 - fps: 71.6
LAV CUVID 0.4 - frame doubling - Adaptive
Test_clip_avc.1080i59.94.ac3.5.1 - fps: 132.7
Test_clip_wvc1.1080i59.94.flac.5.1 - fps: 142.4
LAV CUVID 0.4 DXVA - Adaptive
Test_clip_avc.1080i59.94.ac3.5.1 - fps: 62.0
Test_clip_wvc1.1080i59.94.flac.5.1 - fps: 67.6
LAV CUVID 0.4 DXVA - frame doubling - Adaptive
Test_clip_avc.1080i59.94.ac3.5.1 - fps: 108.9
Test_clip_wvc1.1080i59.94.flac.5.1 - fps: 120.7
This is more what i expected from double framerate mode. The deinterlacing and copying into system memory should be really fast on these cards.
Its also interesting how the GTS 450 seems to reach its performance limit when doing full quality deinterlacing in DXVA mode.
PS:
On my HTPC (second data batch), the test sometimes bugged out on me showing 0 fps if i tried to run the a test of the same file twice right after each other, alternating between AVC1 and VC-1 seemed to fix it .. don't ask me wtf that was about.
SamuriHL
18th April 2011, 20:17
Did you do a clean install of the driver? I am doing so and will set up custom resolutions. This should be fun. :D
CruNcher
18th April 2011, 20:20
PS:
On my HTPC (second data batch), the test sometimes bugged out on me showing 0 fps if i tried to run the a test of the same file twice right after each other, alternating between AVC1 and VC-1 seemed to fix it .. don't ask me wtf that was about.
Look above what i wrote about the blackscreen on load im sure it is related, also this happened for me with timecodec 2nd run or so and suddenly i got no results anymore i was like hmm strange restarted timecodec made some tests and boom again stoped working and then the black screen issues everything indicates something is wrong with the stability since some updates in 0.3 as all 0.2 builds where still acting stable on load/close reload conditions 0.4 isn't stable anymore ;).
I guess nobody realized really the silent change of the thread name and in your sign but that fits much better then "accelerated" though for VP2 as mine there is still some partial acceleration but overall it's Hardware Decode and for Vp3 and above there is 0 partial anymore :)
Btw it seems by now on every Next Generation Video Hardware from the top GPU Manufactures we have now own APIs that can be used apart from DXVA to gain access to the DSP output and also it's PostPro via Shaders and pretty much all of those are available to every developer without an NDA that need to be signed, great progress :)
Intel = Intel Media SDK (though only Vista/7 since 2.0) (the second one)
AMD/ATI = APP OVD (the last one)
NVIDIA = NVCUVID (the first one) also the pioneer in opening up their Video Encoder research (NVCUVENC)
And Nvidias is still the most used in the Wild as they where the first opening it up to the mass of Developers and pioneering here was Donald Graft and the Doom9 Community who helped to fix a lot of Nvcuvid bugs in the beginning for the Ecosystem and made this experience as stable as it is today for Millions of users Worldwide in it's 4th Generation :)
pankov
18th April 2011, 22:18
Did you do a clean install of the driver? I am doing so and will set up custom resolutions. This should be fun. :D
SamuriHL,
please, do share with us if they fixed the custom resolutions creation/editing/usage, cause I've just managed to trick it to work with 270.51 last night and I'm very reluctant to fight with the drivers again if the result is not certain.
nevcairiel
18th April 2011, 22:20
SamuriHL,
please, do share with us if they fixed the custom resolutions creation/editing/usage, cause I've just managed to trick it to work with 270.51 last night and I'm very reluctant to fight with the drivers again if the result is not certain.
I just installed a 260-series driver, setup the resolutions, and upgraded to 270.51 - worked just perfectly. No idea how they broke configuring them in 270 again. Didn't try with 270.61, didnt feel like breaking them.
SamuriHL
18th April 2011, 22:20
When I looked, 24 wasn't an option in the new driver. It's showing 23. And this is with a clean install. Sooooo, yea, I don't really know. Haven't had a chance to test sync yet. Stuck in a work meeting. Soon, though.
nevcairiel
18th April 2011, 22:21
23 is usually what you want, anyway. :p
CruNcher
18th April 2011, 22:32
Btw as thought Drivers before Cuda 3.2 so for example 258.96 (Cuda 3.1.1) wont work with LAV CUVID (filter wont register missing dependencies) though they work with CoreAVC Cuda :)
SamuriHL
18th April 2011, 22:38
23 is usually what you want, anyway. :p
Indeed. :) I just did a quick test with her Glee disc using MPC-HC, LAVF Splitter, LAV CUVID, madVR 0.57 with res changer....seemed to be in sync. Only thing I could ask for is title selection. HINT HINT. :) Then I would be in absolute heaven. But so far, yea, new driver and default profiles are working great. Maybe they finally figured out that "24" should really be "23" and removed it. :)
nevcairiel
18th April 2011, 22:41
Btw as thought Drivers before Cuda 3.2 so for example 258.96 (Cuda 3.1.1) wont work with LAV CUVID (filter wont register missing calls) though they work with CoreAVC Cuda :)
260 series drivers have been out so long, i really dont care about people stuck in a backwards world.
Rather work on new features then trying to support ancient drivers.
CruNcher
18th April 2011, 22:53
Yep understandable also 270.61 WHQL seems to be the default stable now GeForce 6, 7, 8, 9, 100, 200, 300, 400 and 500 so CUDA 4 SDK all the way to go for every Windows OS :D
That's what you just can love about Nvidias Dev environment it's just a pleasure to work in and the good UDA didn't died as they all feared when Vista came out :)
And already the 275 drivers are announced http://blogs.nvidia.com/2011/04/release-270-whql-certified-drivers-are-available-for-download/
Such a stable and efficient Driver Team will AMD/ATI still take some time to buildup :P
Though with all these External Update stuff coming into Windows Microsoft should slowly think of a API to bundle 3rd Party updates into 1 Place fast, there are so many update engines running on a Windows PC by now it's crazy every Software has their own way just a big pile of useless unmanaged code on the system (especially as we go again into the direction of 1000 different services running this time just for 3rd party updates) :D
yesgrey
18th April 2011, 23:02
SamuriHL,
please, do share with us if they fixed the custom resolutions creation/editing/usage, cause I've just managed to trick it to work with 270.51 last night and I'm very reluctant to fight with the drivers again if the result is not certain.
They're working again.
SamuriHL
18th April 2011, 23:34
Yes indeed. I didn't make custom ones because the default profiles are actually frighteningly useful now. Using madVR 0.57 and the auto res changer, I got perfect sync on my wife's Glee discs, so, I'm quite pleased. I haven't tried TMT5 to see if that's in sync. But so far so good.
pankov
18th April 2011, 23:57
SamuriHL,
do you mean that NVIDIA finally changed the default color mode to RGB FULL for HDMI connections or added an option for the user to select it, 'cause at the moment the only way to have the correct levels (0-255, not 16-235) was to use custom resolutions.
... or you guys know some other trick to do it ?!?!
I'm still new (only 2 weeks) to all this NVIDIA stuff so, please, bear with me
SamuriHL
19th April 2011, 00:02
Ah, that's a good question! I have that set to let the application deal with it at the moment. I have not had a chance to run through my black levels tests yet so I honestly don't know if they have that right or not.
mark0077
19th April 2011, 00:33
PankOv you can get full range rgb without custom
Resolutions. See quote below from Manuel g on nvidia forums.
Try the following:
Run the driver installation file to the point where the file contents are extracted. Then cancel the rest of the installation.
Go to the folder where the files contents were extracted to.
Search for the file nv_disp.inf and open it.
Search for the section [nv_miscBase_addreg__01]
Under this section add the registry value:
HKR,,SetDefaultFullRGBRangeOnHDMI,%REG_DWORD%,1
Repeat this step for [nv_miscBase_addreg__02] and [nv_miscBase_addreg__03] and so on until all [nv_miscBase_addreg__xx" have the above registry value.
Save this .inf with the changes.
Run the setup.exe file in this folder to install the driver with the modified .inf. Each time you reload a driver, you will need to repeat this process.
Also, the registry key above only address Vista and Windows 7 drivers.
yesgrey
19th April 2011, 01:08
Here are my results using GraphStudio:
NVidia GeForce GT 240 - 270.61 drivers - Win7 x64 SP1
LAV CUVID v0.4 - Weave
Test_clip_avc.1080i59.94.ac3.5.1 - dfps: 65.7
Test_clip_wvc1.1080i59.94.flac.5.1 - dfps: 68.5
LAV CUVID v0.4 - Adaptive
Test_clip_avc.1080i59.94.ac3.5.1 - dfps: 66.2
Test_clip_wvc1.1080i59.94.flac.5.1 - dfps: 68.5
LAV CUVID v0.4 - frame doubling - Adaptive
Test_clip_avc.1080i59.94.ac3.5.1 - dfps: 131.3
Test_clip_wvc1.1080i59.94.flac.5.1 - dfps: 136.6
LAV CUVID v0.4 DXVA - Adaptive
Test_clip_avc.1080i59.94.ac3.5.1 - dfps: 45.7
Test_clip_wvc1.1080i59.94.flac.5.1 - dfps: 49.4
LAV CUVID v0.4 DXVA - frame doubling - Adaptive
Test_clip_avc.1080i59.94.ac3.5.1 - dfps: 56.5
Test_clip_wvc1.1080i59.94.flac.5.1 - dfps: 58.9
I also have a big difference on the frame doubling tests. Now it seems that with a 10% overclock I might be able to use my GPU with the DXVA mode... Nice! :)
I will try and post the results...
One obvious difference is of course that GraphStudio uses LAV Splitter (which gets the timestamps right), and timeCodec forces Haali, but if that makes a difference now?
I think that's the difference. With LAV Splitter the frame rate is set correctly at 59.94, so graphstudio should be using that value as the reference, while timeCodec using Haali might be using the 29.97 as the frame reference, hence the difference. There is a 2:1 difference between both results. I got 28.4dfps and 29.7dfps with timeCodec for DXVA - frame doubling - Adaptive.
CruNcher
19th April 2011, 04:17
Hmm yet another issue with LAV CUVID + MadVR 0.57 i don't get that Video playback stable on VP2 http://bit.ly/faoAKb after @ 1:17 it starts to become so stuttery it's just painfull (dropping massively frames), doesn't look like a MadVR issue as with other input it works ok :(
Damnit it seems to be the same issue as the 12 second ok after extreme frame drops issue with most Decoder and VMR9 Renderless with 60 fps input only that it happens after 1:17 on this Video http://forum.doom9.org/showpost.php?p=1488268&postcount=6181 and again only Cyberlink DXVA shows no issues.
nevcairiel
19th April 2011, 06:43
VP2 hardware is just not fast enough for reliable 60p playback, deal with it. :p
Yes indeed. I didn't make custom ones because the default profiles are actually frighteningly useful now. Using madVR 0.57 and the auto res changer, I got perfect sync on my wife's Glee discs, so, I'm quite pleased. I haven't tried TMT5 to see if that's in sync. But so far so good.
Which actual refresh rate do you get at 24p? Mine would always be like 23.970 when using the built-in 23Hz setting, and with a custom resolution i can get 23.9764, which is so much closer to the perfect 23.9760.
Not that it matters that much, i don't bitstream and reclock can fix those issues for me. But i just like it as close to perfect as i can get... :D
I think that's the difference. With LAV Splitter the frame rate is set correctly at 59.94, so graphstudio should be using that value as the reference, while timeCodec using Haali might be using the 29.97 as the frame reference, hence the difference. There is a 2:1 difference between both results. I got 28.4dfps and 29.7dfps with timeCodec for DXVA - frame doubling - Adaptive.
Actually, the version of LAV Splitter that i use sets the frame rate to 29.97, the value defined in the Container, like Haali. I wouldn't think that a performance tool would look a the media type at all, just measure how many frames are coming out of the decoder.
It would be easy enough to test the same with Haali in GraphStudio, but shrug. These values just make more sense - deinterlacing is running in the 3D core, which is just super fast on my GTX570, so it would seem odd that double framerate would not give any increase at all. There is double the frames to deliver, without any extra decoding work (which does seem to be the limiting factor for me, on your card the full adaptive deinterlacing seems to be too much for the 3D engine)
jj666
19th April 2011, 07:06
LAV Filters / LAV CUVID / MADVR combination is certainly working fine with VP2 for regular untouched video Blu-ray remux playback (.TS container). Just tried some of my highest bitrate AVC/VC-1/MPEG-2 stuff and it is working without issues :-)
Given the graphics card is a couple of years old (9800GX2), quite happy with the performance here :-)
Cheers,
-jj-
SamuriHL
19th April 2011, 13:16
Which actual refresh rate do you get at 24p? Mine would always be like 23.970 when using the built-in 23Hz setting, and with a custom resolution i can get 23.9764, which is so much closer to the perfect 23.9760.
Not that it matters that much, i don't bitstream and reclock can fix those issues for me. But i just like it as close to perfect as i can get... :D
madVR tells me it's doing 23.971, so, yea it's off a bit. Maybe I'll try another custom res and see if I can get it as close as you have it. I DO bitstream so I really need it to be as close as possible. I guess I can mess with it tonight after I get home from work.
CruNcher
19th April 2011, 13:40
VP2 hardware is just not fast enough for reliable 60p playback, deal with it. :p
I can't deal with it though i guess you right slowly i think this problem is a combination of things including the missing faster Hardware memcopy in G92 and so CUDA is limited in it's Performance, though it's also not 100% logic as Cyberlinks DXVA works with these streams it must be a bottleneck in the decoders and applications that Cyberlinks Decoder just handles better in this situation :)
Might be though moving to 7 and WDM 1.1 all these issues will be history through the better GPU transfer Performance anyways.
But you really have to acknowledge what Cyberlink achieved here on XP, still wonder if this was by accident or coded for these cases but seeing how powerful their Transport Stream Demuxer is this is surely no accidental thing either but skill also seeing that no other ISV even the bests can cope with this (CoreCodec,Mainconcept), in this specific setup makes it even more awesome :)
Im pretty sure they had a user report about this and found a workaround maybe they do another way of memory copy that is more efficient.
nevcairiel
19th April 2011, 13:58
DXVA doesn't have to do memory copys, the decoded frame stays in the GPU and gets send to your screen from there, thats why DXVA will always be slightly more efficient, at the grand cost of flexibility.
As a quick note for the future: 60p reports for VP2 will just be ignored. It does not work, it will not work, its a done deal. The Hardware can barely keep up, and you will get dropped frames, so as a result, 60p on VP2 is not on the list of supported features.
Oh, btw, i'm really getting sick of your constant Cyberlink praises. Go buy their player, go use their stuff, just leave me alone with it. Thanks. They invest alot of money, and alot of developers in their stuff, and have done so for many years - the comparisons and expectations you show here are really getting annoying.
Good day.
yesgrey
19th April 2011, 14:24
I wouldn't think that a performance tool would look a the media type at all, just measure how many frames are coming out of the decoder.
OK. So, the only other option would be measuring differently the frames that are coming out of the decoder.
In LAV CUVID you only change the frame rate, or do you also mark each frame as a frame? Is there any internal variable that states if a frame is a frame or a field? If there is, maybe you will also have to change that variable and mark everything as frames?...
on your card the full adaptive deinterlacing seems to be too much for the 3D engine
Yes. I've tried the 10% overclocking and the numbers are better:
LAV CUVID v0.4 DXVA - frame doubling - Adaptive - 10% overclock
Test_clip_avc.1080i59.94.ac3.5.1 - dfps: 60.5
Test_clip_wvc1.1080i59.94.flac.5.1 - dfps: 62.7
With madVR I still have jerky playback. Obviously, because madVR is also consuming GPU resources, and with the overclocking the GPU would be able to just handle the decoding.
However, when I tried with EVR it worked! So, until I upgrade my GPU, I will have to use EVR for watching my 60i media. But it only works with the overclock. Without it, the video and audio simply lose sync. It seems that EVR never drops any frames, so if the decoder cannot feed him fast enough, the video simply starts lagging relative to audio.
Another interesting thing, is that when we activate the DXVA interop it actually connects with the renderers via DXVA.
nevcairiel
19th April 2011, 14:27
In LAV CUVID you only change the frame rate, or do you also mark each frame as a frame? Is there any internal variable that states if a frame is a frame or a field? If there is, maybe you will also have to change that variable and mark everything as frames?...
I just don't mark any outgoing frames as anything, which means they are all frames, not fields. I have not found a way to output single fields, the closest to original fields i can do is outputting a weaved frame. But then, i don't think there is any use for that anymore (and i really haven't looked that hard).
Another interesting thing, is that when we activate the DXVA interop it actually connects with the renderers via DXVA.
No it doesn't - well not in a way that i would call "connect". Its a plain NV12 connection, exactly the same as without DXVA mode.
For some reason MPC-HC shows the DXVA flag, but i'm not even sure how that one is being detected - its some dark magic that hooks into some code - possibly detecting any calls into the DXVA video renderer service. Sadly, there is no simple flag that just says "Hey, we're using DXVA"
CruNcher
19th April 2011, 15:17
DXVA doesn't have to do memory copys, the decoded frame stays in the GPU and gets send to your screen from there, thats why DXVA will always be slightly more efficient, at the grand cost of flexibility.
As a quick note for the future: 60p reports for VP2 will just be ignored. It does not work, it will not work, its a done deal. The Hardware can barely keep up, and you will get dropped frames, so as a result, 60p on VP2 is not on the list of supported features.
Oh, btw, i'm really getting sick of your constant Cyberlink praises. Go buy their player, go use their stuff, just leave me alone with it. Thanks. They invest alot of money, and alot of developers in their stuff, and have done so for many years - the comparisons and expectations you show here are really getting annoying.
Good day.
Yes but maybe they do the buffering handling different that was also one thing i suspected @ first though i hope CoreCodec is able to find the answer why Cyberlinks Decoder survives this well see :)
And im using Cyberllinks Products especially for Satellite Transmission DVB since years and made it also due to all those tests on VP2 my preferred H.264 Hardware Decoder and whenever possible i use their VC-1 Hardware Decoder in partial accelerated mode for VP2, i did a lot of testing on those parts.
60p works the clips i posted are not the 4 Girls clip that one indeed overloads the VP2 here but the Sony Wipeout Clip and now this Battelfield 3 Trailer (done with some Apple Encoder) surely doesn't they are relatively low in complexity. So the issue is to be searched somewhere else but i see you not interested in this and that's fine with me wont bother you anymore as i found a working solution for flawless playback of these streams without leaving the VP2 :)
yesgrey
19th April 2011, 15:40
For some reason MPC-HC shows the DXVA flag, but i'm not even sure how that one is being detected - its some dark magic that hooks into some code - possibly detecting any calls into the DXVA video renderer service.
That's why I have said that it was connecting through DXVA. Both ERV custom and EVR sync show [DXVA].
CruNcher
19th April 2011, 15:50
Yep and that boost performance heavily and that on every renderer but on XP at least creates heavy problems artifacts as seen in my post, though they also can change depending on the splitter so i guess somehow the bitstream is wrongly rendered out (wrong frame order that creates heavy problems,whyever) :(
jj666
19th April 2011, 19:21
Nev, you can add 1080p50 to the list of non working stuff on VP2 also, was testing some stuff on the C-200 today as part of beta testing there. Tried the following (Panasonic HDC-SD900 camcorder) footage:
General
ID : 0 (0x0)
Complete name : F:\michael\original.MTS
Format : BDAV
Format/Info : Blu-ray Video
File size : 133 MiB
Duration : 45s 791ms
Overall bit rate : 24.3 Mbps
Maximum Overall bit rate : 28.0 Mbps
Video
ID : 4113 (0x1011)
Menu ID : 1 (0x1)
Format : AVC
Format/Info : Advanced Video Codec
Format profile : High@L4.2
Format settings, CABAC : Yes
Format settings, ReFrames : 4 frames
Format settings, GOP : M=3, N=24
Codec ID : 27
Duration : 45s 240ms
Bit rate mode : Variable
Bit rate : 23.0 Mbps
Maximum bit rate : 26.0 Mbps
Width : 1 920 pixels
Height : 1 080 pixels
Display aspect ratio : 16:9
Frame rate : 50.000 fps
Color space : YUV
Chroma subsampling : 4:2:0
Bit depth : 8 bits
Scan type : Progressive
Bits/(Pixel*Frame) : 0.221
Stream size : 124 MiB (93%)
Audio
ID : 4352 (0x1100)
Menu ID : 1 (0x1)
Format : AC-3
Format/Info : Audio Coding 3
Mode extension : CM (complete main)
Codec ID : 129
Duration : 45s 280ms
Bit rate mode : Constant
Bit rate : 384 Kbps
Channel(s) : 6 channels
Channel positions : Front: L C R, Side: L R, LFE
Sampling rate : 48.0 KHz
Bit depth : 16 bits
Compression mode : Lossy
Delay relative to video : -40ms
Stream size : 2.07 MiB (2%)
Played back choppy as hell :-)
I might consider upgrading the graphics card soon, so will keep the clip hanging around.
Cheers,
-jj-
nevcairiel
19th April 2011, 19:54
50p depends on the file really. A low complexity file might just work, but yeah to guarantee smooth playback of 50p, a VP3 is required, for 60p its more or less VP4
This is also how NVIDIA classifys the performance of the decoder blocks.
CruNcher
19th April 2011, 20:06
50p depends on the file really. A low complexity file might just work, but yeah to guarantee smooth playback of 50p, a VP3 is required, for 60p its more or less VP4
This is also how NVIDIA classifys the performance of the decoder blocks.
And from where comes that information now ? and i would disagree it depends generally on complexity i can playback 60p as well as 50p on VMR7/9 windowed and Overlay Mixer fine only MadVR is problematic the more complexity you add the more problematic it gets and on some renderer many decoder entirely fail with 50p 60p on VP2. On Vmr9 Renderless (most flexible compared to MadVR) its really problematic their almost any Decoder fails with 60p H.264 content on the VP2 including LAV CUVID,CoreAVC CUDA, CUDA Video Decoder so basicly all Nvcuvid based decoder and only "name is forbidden to be mentioned here" works with 60p content in DXVA mode on VMR9 Renderless flawless.
Though this is only valid for XP
So generally Overlay based Renderer work ok (with every Decoder) only if you go into the direction of having Subtitle support and Shader so VMR9 Renderless (on a 3D surfface) it gets very problematic with VP2 and Higher complexity as VP2 cards are most of the time also Cards (except the IGPs) that doesn't have the Hardware Memory Copy improvements of the newer Generation Cards.
Not sure what for a Improvement Vista/7 bring here subjectively as well as measureably with its WDDM 1.0/1.1 though it could compensate this being entirely optimized for copying data from the GPU->Host and vice versa as Aero (Direct3D) needs it majorly and more and more General Purpose Apps moving over currently see the Browser Move (1 of the heaviest currently trying to get everything Html5 related GPU accelerated/decoded with best Performance possible).
And the 4 Girls Clip is a perfect clip to test Video Decoding Performance (especially comparing different VPx) as @ both nearest Hardware levels on VP2 and XP you can get up to 52 fps (Nvcuvid as well as DXVA windowed/overlaymixer) the absolute maximum i measured here which is -7.x fps what is needed to reach Realtime Playback and hell that stream is complex (though it still adheres to the max ref for DXVA "H.264 Level 4.1 spec" so no glitches @ playback).
jj666
19th April 2011, 21:08
Well both the 50p sample I mentioned and the 60p sample you posted Cruncher failed miserably, so would assume that's a VP2 limitation. It's not an issue at all here, as I'm setting up the system predominantly for watching untouched Blu-ray remuxes and it's played back all of the tested ones fine.
My mediaplayer failed recently, so needed a fall back solution for which all of Nev's new tools have worked magnificently for. It's been a huge benefit to be able to remove all codec packs and the bug ridden Haali splitter from the system -- everything here is now working fine without having to fiddle or mess around with anything.
Cheers,
-jj-
CruNcher
19th April 2011, 21:30
If you mean the Sony Wipeout Clip then your only chance would be LAV CUVID + Overlay Mixer if that cant play it then most probably nothing at least that i know of will (Hardware Decoded) and if you need VMR9 Renderless or even MadVR forget it @ least under XP though with Cyberlinks Decoder you can have luck on VMR9 Renderless but only if @ least Lav Cuvid works without playback issues on Overlay Mixer ;).
If you are on Vista or 7 though forget everything i say :)
Aleksoid1978
20th April 2011, 05:30
Some .avi(xvid) need to set Frame Time Correction is ON, but some - don't need. It's not good.
And other bug: VC-1 interlace - if start MPC-HC and open file play fine, but if already play any video and open file with VC-1 interlace video stream - playback is broken, black screen and no DXVA in MPC-HC stat.
nevcairiel
20th April 2011, 06:50
Some .avi(xvid) need to set Frame Time Correction is ON, but some - don't need. It's not good.
.avi has just unreliable and practically non-existent timestamps, there is nothing to be done.
And other bug: VC-1 interlace - if start MPC-HC and open file play fine, but if already play any video and open file with VC-1 interlace video stream - playback is broken, black screen and no DXVA in MPC-HC stat.
Known bug, i've been trying to track it down.
ranpha
20th April 2011, 07:33
.avi has just unreliable and practically non-existent timestamps, there is nothing to be done.
This can probably be mitigated if you can enable the 'Generate missing timestamps' in LAV splitter to .avi container too. Doing so to an .mkv video that has such problematic XviD files makes playback much better.
nevcairiel
20th April 2011, 08:33
This can probably be mitigated if you can enable the 'Generate missing timestamps' in LAV splitter to .avi container too. Doing so to an .mkv video that has such problematic XviD files makes playback much better.
That option will not work for .avi, mostly because .avi itself does not carry any useful timestamps to extrapolate the missing timestamps from.
But this is nothing the decoder should every worry about, and therefor OT for this thread.
roozhou
20th April 2011, 09:05
That option will not work for .avi, mostly because .avi itself does not carry any useful timestamps to extrapolate the missing timestamps from.
But this is nothing the decoder should every worry about, and therefor OT for this thread.
Timestamps in avi are actually reordered PTS if no packet-bframe hacking is used. All ffmpeg based decoders can handle them correctly.
nevcairiel
20th April 2011, 09:08
I have no influence on how the timestamps are handled, the hardware decoder processes and reorders them - blame them if it doesn't work properly. Personally, i don't care that much about AVI - it does not contain HD material (and if it does, it deserves to not work), and if you're having those issues, just turn off the MPEG4-ASP decoder and let your CPU do it - i don't think they still build CPUs too slow to decode a typical XVID AVI file. :p
Besides, it works fine for the AVI files i tried, so those files seem to be messed up in the first place.
kieranrk
21st April 2011, 00:57
Oh, btw, i'm really getting sick of your constant Cyberlink praises. Go buy their player, go use their stuff, just leave me alone with it. Thanks. They invest alot of money, and alot of developers in their stuff, and have done so for many years - the comparisons and expectations you show here are really getting annoying.
Good day.
Just ignore him. He spouts junk out all day every day.
mindbomb
21st April 2011, 02:41
question: my 9400m can't use double framerate with 1080p 30 fps interlaced material without dropped frames. Is this due to a limitation in shader power, or a limitation in vp3?
nevcairiel
21st April 2011, 07:05
If non-double framerate works fine, then the decoder is fast enough.
Double Framerate only requires 3D power and memory bandwidth, the decoder is not involved. I think even VP2 is fast enough to do 60i decoding (60 fields are about the same work as 30 full frames), the deinterlacing is then done by the 3D engine, and independent of the video decoder block.
n3w813
21st April 2011, 21:55
I'm having issues getting CUVID to load when playing a h264 mkv. I'm using MPC-HC 1.5.2.3045 and only LAVFSplitter 0.23, LAV CUVID 0.4, ffdshow audio decoder, and MadVR are in the external filters list.
When I try to play a mkv, it says it can't find a filter to connect to. If I add CoreAVC 2.0 to the external list, it works with CoreAVC 2.0 w/CUDA enabled.
I'm running Windows 7 64bit SP1, but everything else in the video chain are 32bit; MPC-HC, lavfsplitter, cuvid, ffdshow, etc.
The video card I'm using is a Quadro FX 3800 with the latest 270.61 drivers.
Any help would be greatly appreciated!!! :)
nevcairiel
21st April 2011, 22:13
Maybe something about Quadro cards is different that needs special handling. Sadly i do not have such a card, nor access to one, so that doesn't make things easier...
SamuriHL
21st April 2011, 22:15
I do. :) Built into my work laptop. What can I do that'd be useful? I don't have anything at all set up on my work laptop but I could if it'd help.
spartan711
21st April 2011, 22:26
Is there any benefit in using this combo on windows 7 vs XP?
LAVsplitter + CUVID + Arcsoft HD Audio + MadVR? (including reclock)
I know this isn't the forum for madVR, I will be posting in the madshi forum as well. The goal in this is that its a lot easier to make a stripped down install for xp than it is for 7. I envision a perfect playback system that I can take on my flash drive.
I got a Quadro card (with Fermi chip), I do not have any problems with LAV CUVID (except those that are listed as known issues, but they are not card specific).
nevcairiel
21st April 2011, 23:00
Adding it to the list never hurts, and as soon as you install other source filters, it'll be kinda required.
namaiki
22nd April 2011, 01:41
n3w813, could you please post a text copy of what cannot be connected on your computer? (might be similar to what I have posted below)
I'm having issues getting CUVID to load when playing a h264 mkv. I'm using MPC-HC 1.5.2.3045 and only LAVFSplitter 0.23, LAV CUVID 0.4, ffdshow audio decoder, and MadVR are in the external filters list.
When I try to play a mkv, it says it can't find a filter to connect to. If I add CoreAVC 2.0 to the external list, it works with CoreAVC 2.0 w/CUDA enabled.
I'm running Windows 7 64bit SP1, but everything else in the video chain are 32bit; MPC-HC, lavfsplitter, cuvid, ffdshow, etc.
The video card I'm using is a Quadro FX 3800 with the latest 270.61 drivers.
Any help would be greatly appreciated!!! :)
Are you sure that you are using lavfsplitter and not Haali Media Splitter with it's option for custom media type for H.264? (unless LAV CUVID already supports 'CCV1' which I admittedly cannot test)
Media Type 0:
--------------------------
Video: CCV1 1280x720 23.98fps
AM_MEDIA_TYPE:
majortype: MEDIATYPE_Video {73646976-0000-0010-8000-00AA00389B71}
subtype: Unknown GUID Name {31564343-0000-0010-8000-00AA00389B71}
formattype: FORMAT_MPEG2_VIDEO {E06D80E3-DB46-11CF-B4D1-00805F6CBBEA}
bFixedSizeSamples: 0
bTemporalCompression: 0
lSampleSize: 1
cbFormat: 172
VIDEOINFOHEADER:
rcSource: (0,0)-(0,0)
rcTarget: (0,0)-(0,0)
dwBitRate: 0
dwBitErrorRate: 0
AvgTimePerFrame: 417083
VIDEOINFOHEADER2:
dwInterlaceFlags: 0x00000000
dwCopyProtectFlags: 0x00000000
dwPictAspectRatioX: 1280
dwPictAspectRatioY: 720
dwControlFlags: 0x00000000
dwReserved2: 0x00000000
MPEG2VIDEOINFO:
dwStartTimeCode: 0
cbSequenceHeader: 40
dwProfile: 0x00000064
dwLevel: 0x00000033
dwFlags: 0x00000004
BITMAPINFOHEADER:
biSize: 40
biWidth: 1280
biHeight: 720
biPlanes: 1
biBitCount: 24
biCompression: CCV1
biSizeImage: 0
biXPelsPerMeter: 1
biYPelsPerMeter: 1
biClrUsed: 0
biClrImportant: 0
pbFormat:
0000: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0010: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0020: 00 00 00 00 00 00 00 00 3b 5d 06 00 00 00 00 00 ........;]......
0030: 00 00 00 00 00 00 00 00 00 05 00 00 d0 02 00 00 ............Ð...
0040: 00 00 00 00 00 00 00 00 28 00 00 00 00 05 00 00 ........(.......
0050: d0 02 00 00 01 00 18 00 43 43 56 31 00 00 00 00 Ð.......CCV1....
0060: 01 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 ................
0070: 00 00 00 00 28 00 00 00 64 00 00 00 33 00 00 00 ....(...d...3...
0080: 04 00 00 00|00 1e 67 64 00 33 ac 56 2c 05 00 5b ......gd.3ŽV,..[
0090: bf f0 00 10 00 11 00 00 03 03 e9 00 00 bb 80 8f ŋð........é..ŧ€
00a0: 18 31 8b 80 00 06 68 e8 ae 1b 2c 8b .1‹€..hčŪ.,‹
mindbomb
22nd April 2011, 03:11
i just noticed something quite strange, my 9400m has 256mb of video ram, as well as my 8600gt. However, when running lav cuvid and madvr, it appears that my 8600gt runs out of ram while my 9400m runs them comfortably.
So the conclusion I've drawn is that VP3 and VP4 cards just need 256mb for madvr and lav cuvid, while vp2 cards require more than 256mb.
Has anyone else noticed something similiar?
CruNcher
22nd April 2011, 04:54
Discreet and IGP work different Generally IGP Nvidia MCPs (ION,ION2) are more efficient (memory copy improvements) then the older Discreet Cards
Also one of the reasons it wont be possible to use a older Nvidia Discreet Card in a mulitplexed Vista/7 enviroment anymore (would be far to slow) :(
nevcairiel
22nd April 2011, 06:51
Are you sure that you are using lavfsplitter and not Haali Media Splitter with it's option for custom media type for H.264? (unless LAV CUVID already supports 'CCV1' which I admittedly cannot test)
It should support the Haali media type just fine.
yesgrey
22nd April 2011, 12:52
i just noticed something quite strange, my 9400m has 256mb of video ram, as well as my 8600gt. However, when running lav cuvid and madvr, it appears that my 8600gt runs out of ram while my 9400m runs them comfortably.
The onboard GPUs use your system RAM, so, probably it simply is using more than the 256MB. Try looking at the task manager to see the system memory usage...
Gleb Egorych
22nd April 2011, 13:55
Hi, nevcairiel!
In ffdshow thread I wrote about combing problem with DVB sources. Unfortunately, LAV CUVID decoder suffers from the same problem as well. Check the discussion here:
http://forum.doom9.org/showthread.php?p=1488062#post1488062
http://forum.doom9.org/showthread.php?p=1488151#post1488151
http://forum.doom9.org/showthread.php?p=1488173#post1488173
Could it be workarounded?
Ger
22nd April 2011, 16:16
As an ATI user (still), I can't comment on what LAV CUVID does, but I can elaborate on the ffdshow thing if you don't mind the off topic aspect.
FWIW, I just updated my post in that ffdshow discussion (Gleb's second link above) with some additional comments and a link to the sample I was referring to. Basically, I have to use "Force bob" in ffdshow's output tab (applies hw deint also to frames marked as progressive as I understand it) or there will be combing clearly visible with the initial bottle animation. This sample also has an extra problem with field order, so Top field first must also be forced in ffdshow or the picture will "shake". The ffdshow flagging code is here (http://ffdshow-tryout.svn.sourceforge.net/viewvc/ffdshow-tryout/trunk/src/TffdshowDecVideo.cpp?view=markup) currently around line 1339 and the next 60 lines or so.
While forcing these two options are OK for most of my DVB content, there will be problems with occasional bottom field first content, and also the fact that this force bob option triggers frame doubling even for fully progressive 23p files (as seen in MPC-HC's EVR-CP CTRL-J stats). I guess ffdshow profiles can help to some extent, but I didn't bother since I use ffdshow mostly for MPEG-2 anyway and other decoders for other stuff.
I'm also curious if VIDEOINFOHEADER2's dwInterlaceFlags has any effect at all. When I check the pin info, Microsoft, ffdshow seems to set it to 0x00000081 while CoreAVC uses 0x00000000 IIRC. This seems to determine if you see an I or a P in the first line in the EVR-CP stats.
BTW, that sample (and most other MPEG-2 samples I think) also shows a cosmetic issue with LAV Splitter 0.23 (see the video track in filters menu). Sorry, wrong thread again. I'll shut up now. ;)
n3w813
22nd April 2011, 19:21
This is the error I get when I try to play a mkv with MPC-HC with LAVSplitter and LAVCuvid....
"The following pin(s) failed to find a connectable filter:"
Media Type 0:
--------------------------
Video: MPEG4 Video (H264) 1920x1080 23.98fps
AM_MEDIA_TYPE:
majortype: MEDIATYPE_Video {73646976-0000-0010-8000-00AA00389B71}
subtype: Unknown GUID Name {31435641-0000-0010-8000-00AA00389B71}
formattype: FORMAT_MPEG2_VIDEO {E06D80E3-DB46-11CF-B4D1-00805F6CBBEA}
bFixedSizeSamples: 0
bTemporalCompression: 1
lSampleSize: 1
cbFormat: 166
VIDEOINFOHEADER:
rcSource: (0,0)-(1920,1080)
rcTarget: (0,0)-(1920,1080)
dwBitRate: 0
dwBitErrorRate: 0
AvgTimePerFrame: 417084
VIDEOINFOHEADER2:
dwInterlaceFlags: 0x00000000
dwCopyProtectFlags: 0x00000000
dwPictAspectRatioX: 1920
dwPictAspectRatioY: 1080
dwControlFlags: 0x00000000
dwReserved2: 0x00000000
MPEG2VIDEOINFO:
dwStartTimeCode: 0
cbSequenceHeader: 34
dwProfile: 0x00000064
dwLevel: 0x00000028
dwFlags: 0x00000004
BITMAPINFOHEADER:
biSize: 40
biWidth: 1920
biHeight: 1080
biPlanes: 1
biBitCount: 0
biCompression: AVC1
biSizeImage: 0
biXPelsPerMeter: 0
biYPelsPerMeter: 0
biClrUsed: 0
biClrImportant: 0
pbFormat:
0000: 00 00 00 00 00 00 00 00 80 07 00 00 38 04 00 00 ...........8...
0010: 00 00 00 00 00 00 00 00 80 07 00 00 38 04 00 00 ...........8...
0020: 00 00 00 00 00 00 00 00 3c 5d 06 00 00 00 00 00 ........<]......
0030: 00 00 00 00 00 00 00 00 80 07 00 00 38 04 00 00 ...........8...
0040: 00 00 00 00 00 00 00 00 28 00 00 00 80 07 00 00 ........(......
0050: 38 04 00 00 01 00 00 00 41 56 43 31 00 00 00 00 8.......AVC1....
0060: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0070: 00 00 00 00 22 00 00 00 64 00 00 00 28 00 00 00 ...."...d...(...
0080: 04 00 00 00|00 19 67 64 00 28 ac 34 e5 01 e0 08 ......gd.(Ž4å.ā.
0090: 9f 96 10 00 00 07 d0 00 01 76 a8 f1 83 19 60 00 ....Ð..vĻņ.`.
00a0: 05 68 ef b3 c8 f0 .hïģČð
nevcairiel
22nd April 2011, 20:25
Hi, nevcairiel!
In ffdshow thread I wrote about combing problem with DVB sources. Unfortunately, LAV CUVID decoder suffers from the same problem as well. Check the discussion here:
http://forum.doom9.org/showthread.php?p=1488062#post1488062
http://forum.doom9.org/showthread.php?p=1488151#post1488151
http://forum.doom9.org/showthread.php?p=1488173#post1488173
Could it be workarounded?
I only briefly skimmed the posts, but it sounds like you have field order problems, no?
If the field order is wrongly defined in the stream, there is no fix. But thats why there is a configuration option for you to configure the field order.
BTW, that sample (and most other MPEG-2 samples I think) also shows a cosmetic issue with LAV Splitter 0.23 (see the video track in filters menu). Sorry, wrong thread again. I'll shut up now. ;)
What cosmetic issue?
Says "mpeg2video main, yuv420p, 544x576, 15000 kb/s" for me.
You're probably referring to the resolution, because actual display resolution is 720x576? Well, that is the resolution of the encoded bitstream. If some forced aspect ratio makes the renderer scale the pixels - thats unimportant for the splitter really - and the splitter tells the video decoder, for them its unimportant too. They might actually rely on getting the correct (unscaled) values for decoding.
Gleb Egorych
22nd April 2011, 20:54
I only briefly skimmed the posts, but it sounds like you have field order problems, no?
If the field order is wrongly defined in the stream, there is no fix. But thats why there is a configuration option for you to configure the field order.
Yes, it's a field order problem, "Auto" algorithm often works wrong for PAL DVB streams. I consider it as a bug because, for example, with Cyberlink DXVA and InterVideo DXVA I've never had the problem. Ger wrote:
One problem with the current flagging algo (MatMaul's code IIRC) is that if force bob is used and field order can't be detected the auto field order falls back to bottom field first even for PAL content. Since PAL is nearly always top field first it should fall back to TFF for PAL IMHO.
nevcairiel
22nd April 2011, 21:26
The hardware decoder itself determines the field order of the content. There is nothing i can do.
There is really not much i can tweak. The NVIDIA driver offers a parser, which analyses the data and prepares it to be decoded. Then it decodes, and all i do is copy the data and send it to the renderer.
Its all a closed system - i get data from the source filter, i pipe data through hardware, i send data off to the renderer. I don't really touch the data unless absolutely necessary to get the hardware to like it.
Ger
22nd April 2011, 22:55
I will answer the cosmetic issue question in the LAV Filters thread in a sec.
Regarding Gleb's issue:
The combing is AFAIK not caused by field order, but by not deinterlacing (I assume badly flagged) frames tagged as progressive. Don't take my word for it, but this is what the ffdshow "Force bob" option does, at least according to its tooltip. The MPC-HC (software but with interlaced flags set) and Cyberlink (DXVA) decoders seems to always operate this way (but without the double frame rate with progressive content I assume), as there is no combing with hw deint and that clip and those decoders.
Combing is OTOH visible with a lot of MPEG-2 DVB content when ffdshow is in Auto/Auto mode and the same is true for the MS decoder and apparently for LAV CUVID. Force bob takes care of it in ffdshow, but introduces field order issues, and also double frame rate with progressive content (regular 23p avi/xvid played at 47.XX fps according to EVR-CP stats).
At least that's what it seems like to me, but I'm clueless and speculating. Maybe it's more complicated in reality.
There is no quality difference (apart from the combing as described above) between Force bob and Auto in ffdshow. Both are using ATI's vector adaptive. I think, for once, ATI and Nvidia behave the same in this regard (how they respond to different decoders and ffdshow flagging options).
The wrong field order issue is different. That causes a "shaky" picture, not combing. This can be seen with ffdshow set to "Force bob" and leaving the field order on auto or forcing bottom field first with that same sample and the bottle animation. In ffdshow only "Force bob" + "Top field first" makes that sample look "good", like Gleb described in his initial post in the ffdshow thread.
See the code I linked to in my last post in this thread or play with the ffdshow options on the output page with that sample (you can see different results immediately, no need to reload the video) if you're interested.
I don't know if the same flagging options are available with CUVID though. If you don't think they are, then you're probably right as usual. And of course (ATI) I haven't even tested how LAV CUVID works now.
Conclusion: Interlacing sucks. ;)
skingery
23rd April 2011, 04:39
I've been using Nev's splitter and decoder for a while and everything has been great. Telling newbies about them can get tricky because there are a lot of options in MPC-HC so I'm trying to gather together what people think are good options for the best picture quality.
Been lurking on the threads for a while and it seems if you have the processor and GPU horsepower, people are getting the best results with MPC-HC+MADVR+LAV Splitter+LAV Decoder. Is that about right?
So, if your system is struggling with that, what is the next step down? EVR CP and some resizer? And then the next step down?
I know there are other options like ffdshow and reclock but I'm trying to keep things simple for now.
There are many many hardware combinations out there but if we could get some simple best practices for where to start troubleshooting to get the best picture and performance I think it would be helpful.
Gleb Egorych
23rd April 2011, 06:21
Yes, it's rather not_deinterlacing, but ffdshow requires not only force interlaced flag but also field order to output properly. Sadly LAV CUVID manual settings don't help to workaround the problem. I tried different combinations of deinterlace options without success. So I guess the solution could require patching stream on the fly.
nevcairiel
23rd April 2011, 08:59
I can of course also add a flag to force deinterlacing of frames flagged progressive - that much control i do have, i just don't have any control of how those flags are determined.
yesgrey
23rd April 2011, 12:05
I can of course also add a flag to force deinterlacing of frames flagged progressive
Good idea.
Weirdo
23rd April 2011, 23:00
Thanks for this excellent decoder! Sorry if this has been addressed already. Does it work with DVD-Video? I can't seem to enable LAV CUVID when playing a VIDEO_TS folder (MPC-HC/EVR custom).
nevcairiel
23rd April 2011, 23:20
It only works when you directly open the .vob files, dvd navigation mode is currently not supported.
Weirdo
23rd April 2011, 23:40
It only works when you directly open the .vob files, dvd navigation mode is currently not supported.Thanks, I hope this could be fixed in the future, for both CUVID and madVR.
Volfield
25th April 2011, 14:27
Possible bug. I have black screen when play video like this:
Video
ID : 1
Format : AVC
Format/Info : Advanced Video Codec
Format profile : High@L5.1
Format settings, CABAC : Yes
Format settings, ReFrames : 16 frames
Codec ID : V_MPEG4/ISO/AVC
Duration : 23mn 25s
Nominal bit rate : 1 200 Kbps
Width : 640 pixels
Height : 480 pixels
Display aspect ratio : 4:3
Frame rate : 23.976 fps
Color space : YUV
Chroma subsampling : 4:2:0
Bit depth : 8 bits
Scan type : Progressive
Bits/(Pixel*Frame) : 0.163
Title : [Mendoi-SHS-KAA] Inukami! - 15
Writing library : x264 core 54 svn-628M
Encoding settings : cabac=1 / ref=16 / deblock=1:0:0 / analyse=0x3:0x133 / me=umh / subme=7 / brdo=1 / mixed_ref=0 / me_range=32 / chroma_me=1 / trellis=0 / 8x8dct=1 / cqm=0 / deadzone=21,11 / chroma_qp_offset=0 / threads=4 / nr=0 / decimate=1 / mbaff=0 / bframes=5 / b_pyramid=0 / b_adapt=1 / b_bias=0 / direct=1 / wpredb=1 / bime=0 / keyint=250 / keyint_min=25 / scenecut=40(pre) / rc=2pass / bitrate=1200 / ratetol=1.0 / rceq='blurCplx^(1-qComp)' / qcomp=0.60 / qpmin=10 / qpmax=51 / qpstep=1 / cplxblur=20.0 / qblur=0.5 / ip_ratio=1.40 / pb_ratio=1.30
Player: MPCHC, PotPlayer
Render: MADVR, EVR CP
Splitter: Haali, LAV
patul
25th April 2011, 23:42
I have jerky x264 playback (unwatchable) if the "Use DXVA Interop Mode" enabled (LAVCUVID v0.4), other than that it is fine.
GF 9500 GT, driver version 266.58.
Haali + LAV CUVID + madVR + PotPlayer
:thanks:
Edit: Updated to 270.61 WHQL Driver, but the problem is still there.
SamuriHL
26th April 2011, 04:24
I can't get lav cuvid to connect in mc16. Nev or jmone...have either of you tried it?
nevcairiel
26th April 2011, 06:11
I have jerky x264 playback (unwatchable) if the "Use DXVA Interop Mode" enabled (LAVCUVID v0.4), other than that it is fine.
Which OS are you on?
DXVA Interop is known to have issues on XP, but so far it worked fine on 7.
However, it also uses more performance then the "normal" mode, so if your card is nearly maxxed out, that would explain it as well.
I can't get lav cuvid to connect in mc16. Nev or jmone...have either of you tried it?
I didn't try, but there is no reason it wouldn't work.
patul
26th April 2011, 07:09
Which OS are you on?
DXVA Interop is known to have issues on XP, but so far it worked fine on 7.
However, it also uses more performance then the "normal" mode, so if your card is nearly maxxed out, that would explain it as well.
Sorry for being unclear at the first place, my OS is XP SP3. And sorry again for not reading two pages back. Should have read entire thread before posting.
:thanks:
SamuriHL
26th April 2011, 12:38
I didn't try, but there is no reason it wouldn't work.
Yea I realize it should work but it's not using lav cuvid even though I set it up in the settings. I can bring up the prop page in the configure options but when i play any video it connects to a different decoder. Can you give it a try when you get a chance? Thanks!
SamuriHL
27th April 2011, 01:20
Ok, update. I was able to get CUVID working finally. I've learned a few "oddities" about MC16. When configuring the directshow filters, I've found on my AMD machine and my nVidia machine that adding the video decoder first, then ffdshow audio, then ffdshow raw decoder works best. THEN, you must go into the configure page for EACH ONE. Only then does it seem to work for me. In any case, I now have it setup so I can open a blu-ray, as well. Man that is so SWEET! With LAV CUVID and MC16 on my nVidia machine, the CPU usage hovers around 40% which is right where it should be. Oh I am SO happy now! Thanks, Nev, for all your amazing work!
jmone
28th April 2011, 11:47
SamuriHL - Just back and tested on my MacBookAir (2010) running Win7 excluisvly with the lowly 320G GPU and I'm playing a Blu just fine (over wireless even) with LAVSplitter, LAV CUVID, FFDSHOW, madVR. No prob and all smooth with both cores running at around 50%. How good is that! + no issues for me with the config at all in MC16 - it all just worked immediatly.
jmone
28th April 2011, 12:11
SamuriHL - I can also load the FFDSHOW Subtitle Filter just fine (without it crashing MC) though it adds about 10% to the CPU Utlilisation. Oddly however, I'm back to the subtitles "not displaying" however after a say 30secs. As I updated FFDSHOW, madVR, LAV (all) I'm not sure what changed (and this will no doubt be the wrong thread anyway)!
SamuriHL
28th April 2011, 12:53
Glad it's working for you. I've had no further issue with lav cuvid since I got it working. Watched some recorded shows in MC last night with cuvid...flawless. the ffdshow suvpb filter crashes MC on both my htpc's if I add it.
joeydrunk
28th April 2011, 21:07
So I'm running Windows 64x, ffdshow 64x and mpchc 64. So will this work on w64? Will I just have to use the 32bit versions of mpc-hc and ffdshow to be able to use this?
nevcairiel
28th April 2011, 21:14
64-bit is currently not supported, so yes, if you want to use this, you need 32-bit versions of mpc-hc and ffdshow. In the future, there might be a 64-bit version available. I'm currently low on time and working on my other projects instead. :p
SamuriHL
28th April 2011, 21:42
Forget 64 bit. You're wanting to use madVR so you're stuck with 32 bit for a long, long time. :D
PeQuE
30th April 2011, 11:03
Anyone here tried LAV CUVID under MediaPortal? I gave it a try yesterday. All went well, smooth, good performance, but I can't play any file with AVC video stream inside... MediaPortal tells me there's no dshow filter available for this kind of content... On the other hand, HDTV (which video stream in fact is also H264) is working well (I'd say better than any other filter tried by me, included MS DTV and last PDVD11). Also I've tried to play that same file with Graphstudio and using LAV CUVID as video filter, no problem at all.
Thanks a lot!
nevcairiel
30th April 2011, 18:26
LAV CUVID Decoder 0.5
0.5 - 2011/04/30
- Added YV12 as an supported output format
- Refactored CUDA/CUVID initialization
- Deny connection if the source filter indicates an unsupported H264 profile
- Improvements to dynamic media type changing
Download: 32-bit (http://files.1f0.de/cuvid/LAVCUVID-0.5.zip)
Wewt! Man i have not written assembler for so long, that was really fun. Wrote some MMX function which helps in the NV12->YV12 conversion. I hope its actually faster then the C code, i couldn't really test it, for me the filter is limited by the hardware decoding performance... But it certainly wasn't slower. :)
With YV12 output, it is now possible to use LAV CUVID with DirectVobSub, if anyone would want to. I bet there is that occasional weird renderer that doesn't like NV12..
NV12 is still the preferred output, because it doesn't require conversion.
Anyhow, i hope this fixes the black screen bugs you sometimes got on startup, and might even work better for live tv with channel changes and such - although that feature is not heavily tested.
Have fun!
CruNcher
30th April 2011, 18:29
- Deny connection if the source filter indicates an unsupported H264 profile
Noooooo only H.264 ? whats about Mpeg-2 Studio Profile ?
nevcairiel
30th April 2011, 18:30
MPEG2 profiles are not usually exported in the media type.
CruNcher
30th April 2011, 18:32
but you could get it @ least from lav splitter directly :)
anyway if you find a workaround (fix) for this http://forum.doom9.org/showpost.php?p=1493989&postcount=369 i will change entirely from DXVA to Lav CUVID :D
except for WMV9 in .wmv which doesn't work yet with LAV CUVID ;)
Though im not sure why it happens for the Battlefield Bitstream after 1:17 so stays stable for so long 77 seconds instead of 12 seconds with the wipeout clip, though im also not sure if you even can fix this from outside or if Nvidia would have to look @ nvcuvid directly and change maybe the buffering for these cases and VP2 with 512 MB, though Cyberlink also found a way to prevent that from within DXVA.
SamuriHL
30th April 2011, 18:54
Thanks, Nev. I understand the reason for the colorspace conversion. :) It means I could now, if I wanted to, use DirectVobSub on my nVidia box at least. No Cyberlink BS on that machine. :)
Sebastiii
30th April 2011, 19:01
Thanks :) i really have to have a new card :)
Seb.
Tom Keller
30th April 2011, 19:09
With YV12 output, it is now possible to use LAV CUVID with DirectVobSub, if anyone would want to. I bet there is that occasional weird renderer that doesn't like NV12..
NV12 is still the preferred output, because it doesn't require conversion.
Thanks for that :) ! But would it be possible to add an option to the configuration dialog for forcing one specific output format manually (something like a selection between "Auto/NV12/YV12")?
CruNcher
30th April 2011, 19:17
New build brakes a Mpeg-2 sample :(
tried with both MPC-HC Splitter/Lav Splitter it worked with both and 0.4 it brakes with 0.5 it plays some frames and then freezes :(
It only brakes on VMR9 now with that sample works with others (VMR7,MadVR) with 0.4 it works on VMR9 :(
VFR maniac
30th April 2011, 19:43
0.5 build breaks resized playback.
For instance, when I seek somewhere, or reach the end of a movie and play it as repeating, then display size is reverted to original size.
nevcairiel
30th April 2011, 19:44
0.5 build breaks resized playback.
For instance, when I seek somewhere, or reach the end of a movie and play it as repeating, then display size is reverted to original size.
previous versions also did that. :p
CruNcher
30th April 2011, 19:47
another one bites the dust no connection anymore :(
VFR maniac
30th April 2011, 19:55
previous versions also did that. :p
What!?
Certainly oldest versions also reproduced that but 0.4 didn't at least in my environment.
CruNcher
30th April 2011, 20:01
So finaly 3 streams broke with 0.5 in some way :(
The High10 and High 4:2:2 fallback works marvelous :)
and it is stable again in terms of reloading as before 0.4 :)
The disconnection of 1 of the 3 streams seems to be an issue with the new fallback for non supported streams though that stream works without any issues on 0.4 and is baseline even, yep it fallsback i really wonder why :P
Here is the stream that fallsback but wouldn't need to http://www.mediafire.com/download.php?3xjrymbaigi9mpl its a old one that also made problems with lav splitter some revs ago ;)
So 2 streams are actually really problematic because it's a renderer dependent issue in 0.5 now (VMR9) :(
nevcairiel
30th April 2011, 20:18
The disconnection of 1 of the 3 streams seems to be an issue with the new fallback for non supported streams though that stream works without any issues on 0.4 and is baseline even, yep it fallsback :P
So what does the media type say?
Any profile > 100 (0x64) will be declined - thats the only check happening.
CruNcher
30th April 2011, 20:55
profile_idc is 66 baseline
its dwProfile: 0x00000242
here are the streams that fail on VMR9 with 0.5 now (work perfect with 0.4 and before triple checked)
http://www.mediafire.com/download.php?jp43ralx7i8bi29
nevcairiel
30th April 2011, 22:15
its dwProfile: 0x00000242
242? that doesn't look right, not right at all. Of course it would fail with that.
http://www.mediafire.com/download.php?jp43ralx7i8bi29
I can reproduce the problem with VMR9 renderless, although i'm not doing anything i'm not supposed to do, the renderer must just be stupid.
It just sends a new media type, which it is supposed to do. Like, if the aspect ratio changes or something, we have to send a new type - if then the video freezes .. well, broken renderer. :P
nevcairiel
1st May 2011, 00:15
LAV CUVID Decoder 0.6
0.6 - 2011/05/01
- New Media Types will only be generated when attributes actually changed
- The size changed event will only be triggered when size or aspect ratio changed
Download: 32-bit (http://files.1f0.de/cuvid/LAVCUVID-0.6.zip)
These two changes fix playback with VMR-9, which is apparently an extra stupid renderer that just freezes when you send it a new media type. Silly thing.
Additionally, the size of the player should only change when the stream changes - that is the AR in the stream changes, or the video size itself. Dunno if the size can change, but the AR can certainly change mid-stream. :)
Good Night! :p
SamuriHL
1st May 2011, 00:24
Thanks, Nev! I'll try this out tonight.
CruNcher
1st May 2011, 00:49
LAV CUVID Decoder 0.6
0.6 - 2011/05/01
- New Media Types will only be generated when attributes actually changed
- The size changed event will only be triggered when size or aspect ratio changed
Download: 32-bit (http://files.1f0.de/cuvid/LAVCUVID-0.6.zip)
These two changes fix playback with VMR-9, which is apparently an extra stupid renderer that just freezes when you send it a new media type. Silly thing.
Additionally, the size of the player should only change when the stream changes - that is the AR in the stream changes, or the video size itself. Dunno if the size can change, but the AR can certainly change mid-stream. :)
Good Night! :p
Perfect fixed, and yes its not really normal that it freezes VMR9 AR switching works fine in other decoders :)
Tom Keller
1st May 2011, 09:16
I just wanna ask again:
Would it be possible to add an option to the configuration dialog for forcing one specific output format manually (like a selection between "Auto/NV12/YV12")? Pleeaase :o !? For me most video renderers have performance issues with the NV12 colorspace (and i simply don't know the reason :confused: ) - so this would solve the problem.
:thanks: in advance!
nevcairiel
1st May 2011, 09:20
That would be possible, but would require me rewriting quite alot of code. :(
I'll probably do it someday..
Tom Keller
1st May 2011, 10:44
A definitely "maybe" is more than i'd hoped for :) . Thanks anyway!
Please ask clsid to add support for LAV CUVID and LAV Splitter/Audio in his Win7DSFilterTweaker. Many thanks!
Anyone here tried LAV CUVID under MediaPortal? I gave it a try yesterday. All went well, smooth, good performance, but I can't play any file with AVC video stream inside... MediaPortal tells me there's no dshow filter available for this kind of content... On the other hand, HDTV (which video stream in fact is also H264) is working well (I'd say better than any other filter tried by me, included MS DTV and last PDVD11). Also I've tried to play that same file with Graphstudio and using LAV CUVID as video filter, no problem at all.
Thanks a lot!
Ok. LAV CUVID 0.6 is working! :)
Thanks a lot.
CruNcher
1st May 2011, 18:05
A small compare for XP SP3 and VP2 VMR9 renderless :)
http://mirror05.x264.nl/CruNcher/pperf/#cyberlink <- Cyberlink DXVA
http://mirror05.x264.nl/CruNcher/pperf/#lavcuvid <- LAV CUVID
http://mirror05.x264.nl/CruNcher/pperf/#both <- Both head start for LAV CUVID, just for fun it overloads the VP2 ;)
Recording was done directly into X264, glitches come from the screen capture demands (also Process explorer fast updating causes some drops 0.5ms dont try that @ home ;) ) not the encoding or VP2 problems, except for LAV CUVID and many other Decoder their it's uknown why Cyberlink handles that (seperate encodings) ;)
This actually shows this http://forum.doom9.org/showpost.php?p=1493989&postcount=369 problem as you can see upto 0:12 LAV CUVID stays stable ;)
@Cruncher: I've just bought a GTS450, for now all problems I had with hardware H264 playback are gone and I can play 1080p/60fps just fine. I think it's time to let go of your VP2 card if you want something more. Man I hate nvidia for this.
nevcairiel
2nd May 2011, 06:54
You hate NVIDIA because their first real hardware decoder block isn't super fast?
Thats like saying you hate NVIDIA because you cannot play Crysis on your Geforce2. :p
Besides, the GTS 450 isn't exactly pricy, and the card is great.
Well I was bitter about the fact that I have to buy something new although it's not ultimately necessary, I don't game much. Also I had some problem with hardware playback on my previous 9800GT that Cruncher don't have. I was thinking it has something to do with Gigabyte pre-oc the card, but I can put them all to rest, now. I only had to spend 35USD for the new card as I'm selling my old stuffs, so it's not too bad I guess :D.
CruNcher
2nd May 2011, 12:45
The VP2 is still fine as you can see with most normal 1080 60p content it's just problematic with what i would call "over the top content" (most bad encoded x264) like the 4 Girl clip those get problematic and still it's not yet proven that VP2 Playback maybe becomes a tad more efficient under DXVA2 on Vista/7 (less bottlenecks, better driver gpu optimization) so it might be able to reach the 60 fps only their but that's still pure speculation as no one showed any result of that :)
And yeah i thought about a GT450 for a long time as it's the only Card with a 1 Power Plug though now also the GTX 550 joins that (but the small performance improvement and resulting higher power consumption seems not worth the price really) :)
Also seeing that Nvidia is going to release Synergy for free to Motherboard makers is something which also let me belive it's the right time to switch over to Vista/7 now ;) especially with all these wasted GPU and partly CPU compute power that can be ready on demand and currently just gets lost on a XP Desktop.
nevcairiel
2nd May 2011, 12:51
All the time you use to complain and whine about stuff being broken with your ancient card (VP2 was released in early 2007, thats 4 years ago, thats like 2 centurys in computer years), you could've spent working, and earning enough money to buy a card easily twice as fast as yours. :p
You would be surprised how much better recent hardware and a recent OS works. :p
CruNcher
2nd May 2011, 13:14
Im a guy who still learned to Never touch a running system except when it comes to security related issues (also doesn't exclude optimization and exploitation of it ;) ), and to utilize a given product till the end i generally don't update as often as most do though yeah 4 years is a pretty good amortizing time (Software had time to mature, especially in the GPU context), i just recently made the switch to Sandy Bridge (which also gave me a heavy GPU boost, based on the memory bandwith perf impact see http://www.realworldtech.com/page.cfm?ArticleID=RWT042611035931) and yeah i see myself that i lose efficiency fast now still being on XP, though it doesn't change anything about the fact that Cyberlink is doing something more efficient where others fail currently ;)
Twice as fast in Games sure nev but Video im not sure if i could agree with 2x as fast here ;)
Well I wasn't able to play 1080p/24fps smoothly on my system and I got other problems with madVR, so I'd say 35$ well spent. The thing I hate is how specific computer caused problem (mine) and cruncher's system didn't. I have been using computer from middle school, went to university in computer science, graduated and now working there as junior researcher and I still hate how certain aspects of computer aren't just work.
CruNcher
2nd May 2011, 13:46
Yes the madVR issue might be explainable by the improved memory copy hardware wise MadVR also gives me the kicks though i wait for Madshi to implement DXVA and see how that turns out :)
Btw what for Madnv12test results you now getting thuan compared to your 9800GT ?
SamuriHL
2nd May 2011, 14:39
First off, to say you bought a card when you really didn't need it isn't exactly accurate. ;) Now you have a card that's capable of doing everything you want to do with video. Trust me, I have a 450, and I'm well aware of what it can do, especially on a machine with an older CPU. Second, sticking with XP is foolish when it comes to modern video IMO. W7 has made quite a bit of improvements in architecture for video playback. Nonetheless, for those that insist on sticking with old hardware/software, then you are also forced to deal with the limits of such things. To say Cyberlink does it better so everyone should waste their time making their stuff work on ancient hardware for the 1/2% use case is entirely ridiculous. Nev has far better things to do. :) In any case, my advice is to upgrade. Barring that, live with whatever limitations come from not upgrading.
ashlar42
2nd May 2011, 15:37
Quick question: with a GTX 460 and a Core 2 Duo 3.6 GHz (Windows 7) should I be able to play back my BBC Life VC-1 1080i50 BD rips?
I tried everything in the past with no luck... and resorted to recompressing them to x264. But I'd like to have them in their original pristine form if at all possible, for HTPC use.
Thanks :)
nevcairiel
2nd May 2011, 15:38
I dunno about your rips, but i can play my original Blu-rays just perfectly with a GTS 450, so i figure the 460 can only do better.
ashlar42
2nd May 2011, 15:42
I dunno about your rips, but i can play my original Blu-rays just perfectly with a GTS 450, so i figure the 460 can only do better.You refer to BBC Life VC-1 interlaced content? :)
nevcairiel
2nd May 2011, 15:43
Well, BBC Earth, actually. "Wild China", "Galapagos", "Natures Great Events", and "South Pacific" - those play fine. All VC-1 interlaced.
ashlar42
2nd May 2011, 15:50
Well, BBC Earth, actually. "Wild China", "Galapagos", "Natures Great Events", and "South Pacific" - those play fine. All VC-1 interlaced.:eek:
Can't wait to try it first hand.
You're gonna be my new personal hero for a good while. Thank you!!!
nevcairiel
2nd May 2011, 15:53
Make sure to go for maximum quality settings, i think i made them default though. Adaptive Deinterlacing, Double Framerate, DXVA Interop mode
CruNcher
2nd May 2011, 15:55
First off, to say you bought a card when you really didn't need it isn't exactly accurate. ;) Now you have a card that's capable of doing everything you want to do with video. Trust me, I have a 450, and I'm well aware of what it can do, especially on a machine with an older CPU. Second, sticking with XP is foolish when it comes to modern video IMO. W7 has made quite a bit of improvements in architecture for video playback. Nonetheless, for those that insist on sticking with old hardware/software, then you are also forced to deal with the limits of such things. To say Cyberlink does it better so everyone should waste their time making their stuff work on ancient hardware for the 1/2% use case is entirely ridiculous. Nev has far better things to do. :) In any case, my advice is to upgrade. Barring that, live with whatever limitations come from not upgrading.
And exactly that isn't proven that it is a limitation and that Cyberlink found a clever workaround for it might be even a bug, that 99% of ISVs seems to share then, though seein that also currently all Nvcuvid based stuff shares the same problem makes it even more mysterious ;)
nevcairiel
2nd May 2011, 16:07
I still think they just cheat on 60p material and use the CPU to help.
Anyhow, this is not a thread about Cyberlink.
I will never spent alot of time on edge cases like that, like SamuriHL said, i have better things to do with my time. Rather have it working for 99% of the people, then trying to go for the last percent and not being able to work on anything else.
You are free to pay me full time however, and i'll code you whatever you want! (My usual consulting rates are 100€/hr, and thats in my professional capacity as Java Web Developer .. i'm sure i could squeeze some more out for video decoder development. :D)
SamuriHL
2nd May 2011, 16:09
And exactly that isn't proven that it is a limitation and that Cyberlink found a clever workaround for it might be even a bug, that 99% of ISVs seems to share then, though seein that also currently all Nvcuvid based stuff shares the same problem makes it even more mysterious ;)
Ok, let's say that's true and that Cyberlink found a clever workaround for a bug. The bug isn't in Nev's hands to fix. Nor should development resources be applied to a platform that's literally 4 years old at this point. Things don't move backwards in the computing world...only forward. Time shouldn't be spent on trying to recreate some workaround that a company with far more resources may or may not have found. :)
CruNcher
2nd May 2011, 16:10
I still think they just cheat on 60p material and use the CPU to help.
Anyhow, this is not a thread about Cyberlink.
I will never spent alot of time on edge cases like that, like SamuriHL said, i have better things to do with my time. Rather have it working for 99% of the people, then trying to go for the last percent and not being able to work on anything else.
You are free to pay me full time however, and i'll code you whatever you want! (My usual consulting rates are 100€/hr, and thats in my professional capacity as Java Web Developer .. i'm sure i could squeeze some more out for video decoder development. :D)
I can disprove that http://mirror05.x264.nl/CruNcher/pperf/#cyberlink if you think small amount of cpu cycle can fix this sure might be then ;)
I understand that no problem i just made you aware of it, so in the future if this should be coming up again you can give users this direction to look into and even show them a fix more or less (buying a new card, or using another decoder) ;)
Though i will keep you anyways updated when i moved to 7 what happened here with many of these issues, (im excited myself to find out) as you can guess ;)
SamuriHL
2nd May 2011, 16:10
I still think they just cheat on 60p material and use the CPU to help.
Anyhow, this is not a thread about Cyberlink.
I will never spent alot of time on edge cases like that, like SamuriHL said, i have better things to do with my time. Rather have it working for 99% of the people, then trying to go for the last percent and not being able to work on anything else.
You are free to pay me full time however, and i'll code you whatever you want! (My usual consulting rates are 100/hr, and thats in my professional capacity as Java Web Developer .. i'm sure i could squeeze some more out for video decoder development. :D)
If I were going to pay you for your time, it sure as hell wouldn't be to develop for ancient hardware! It'd be to develop an AMD decoder. :D :p
nevcairiel
2nd May 2011, 16:15
If I were going to pay you for your time, it sure as hell wouldn't be to develop for ancient hardware! It'd be to develop an AMD decoder. :D :p
That really wouldn't be that hard, the OpenVideoDecode API that AMD invented is pretty straight forward. It is however limited to H264.
There is just one problem, i have no ATI/AMD hardware, and no intention to buy any. :p
Would probably be easier to write some smart filter that can download the frames from a D3D texture and sit between DXVA decoder and renderer, or hope for DXVA support in madVR .. one day.
SamuriHL
2nd May 2011, 16:19
That really wouldn't be that hard, the OpenVideoDecode API that AMD invented is pretty straight forward. It is however limited to H264.
There is just one problem, i have no ATI/AMD hardware, and no intention to buy any. :p
I really don't blame you. And the limitation to h.264 makes it useless anyway. VC-1 is where we really need a decoder. The ffmpeg mt decoder isn't bad for h.264. I've even been testing it on my laptop to see if it can handle it and so far yea. I need something to replace Cyberlink decoder at some point. It does do a decent job, but, the fact that it doesn't like to work with DirectVobSub kinda blows.
yesgrey
2nd May 2011, 16:19
now also the GTX 550 joins that (but the small performance improvement and resulting higher power consumption seems not worth the price really) :)
Well, you can always create some profiles to lower the clocks and save some power. The GTX550 is more powerful and efficient than the GTS 450, so you will be better served with it. You can create a special profile for video with clocks high enough to play your video smoothly, and simply increase the clocks if any new feature would require more power. That's what I will do if I ever buy one... ;)
nevcairiel
2nd May 2011, 16:20
DirectVobSub kinda blows.
You got that right. :)
Even simple text subtitles are rendered to inefficiently that it can cripple playback. Funny thing is, bitmap subtitles don't suffer from that problem, so PGS is fine. :p
SamuriHL
2nd May 2011, 16:22
You got that right. :)
Even simple text subtitles are rendered to inefficiently that it can cripple playback. Funny thing is, bitmap subtitles don't suffer from that problem, so PGS is fine. :p
ROFLMAO! I feel that perhaps some of my context might have been lost there. :D ffdshow sub renderer is ok I guess. It's what I'm using now and at least the forced sub stuff works with it now.
CruNcher
2nd May 2011, 16:33
Well, you can always create some profiles to lower the clocks and save some power. The GTX550 is more powerful and efficient than the GTS 450, so you will be better served with it. You can create a special profile for video with clocks high enough to play your video smoothly, and simply increase the clocks if any new feature would require more power. That's what I will do if I ever buy one... ;)
Yes but as soon as i moved to 7 i will look deeply into my Sandy Bridge capabilities and with Synergy then combine both and put the 550 into deep idle state anyways for most of the times and in that state it is also more efficient then the 450 ;)
Depending though on how Intel survives vs Nvidias algorithms ;)
PS: For those who dont want to use Cyberlinks HAM Decoder their is a solution for Vista/7 http://forum.doom9.org/showpost.php?p=1497175&postcount=6334 Potplayer has this special DXVA rendering mode which according to those that use it works quiet well with MadVR no idea though how this really works but seems PotPlayer is the only one implementing this currently, could be maybe a framegrabber mode on the Decoder side like roozhou experiments with.
ashlar42
2nd May 2011, 16:55
Make sure to go for maximum quality settings, i think i made them default though. Adaptive Deinterlacing, Double Framerate, DXVA Interop modeIs there an explanation of what exactly double framerate does? I'm afraid this sounds like a seriously noob question but it's referred directly to in the original post, with no further explanation.
nevcairiel
2nd May 2011, 16:58
Is there an explanation of what exactly double framerate does? I'm afraid this sounds like a seriously noob question but it's referred directly to in the original post, with no further explanation.
Interlaced video like this is usually actually filmed in 60i, but "normal" deinterlacing will produce 30 full pictures out of it. Activating double framerate will then properly generate all 60 full, progressive frames.
The name is not really that obvious to what it does, because it doesn't simply double the frame rate, but actually produce 60 distinct pictures (so not every picture twice or stuff like that), but i think thats how its called around knowledgeable people.
Potplayer has this special DXVA rendering mode which according to those that use it works quiet well with MadVR no idea though how this really works but seems PotPlayer is the only one implementing this currently, could be maybe a framegrabber mode on the Decoder side like roozhou experiments with.
Its nothing new, its the same way non-directshow players use DXVA, like VLC. Its also relatively easy to do, someone just has to. :p
SamuriHL
2nd May 2011, 17:00
I need to turn DXVA interop back on. I was getting some issues with performance and thought it might help. Turned out I still had the D3D11 mode turned on with that machine in madVR.
mark0077
2nd May 2011, 17:05
nev, I'm delighted to report performance is excellent in your newer versions of splitter / decoder. 0 dropped frames now. Just one question. I was experimenting with the de-interlacing feature in the decoder today, to see how it behaves on some of my PAL DVDs which are all badly marked as coming from interlaced sources. I was hoping to test whether the double frame rate de-interlacer would kick in or not as I would hope these particular DVDs to come out at 25p, rather than 50p.
I hit a snag though. mpeg-2 within mkv playes fine but when I play mpeg2 through video_ts.ifo, your splitter and renderer don't kick in. I get reverted back to mpc-hc's mpeg2 decoder. Is this expected or should your splitter / renderer kick in?
nevcairiel
2nd May 2011, 17:08
The splitter most definately not. IFO files are for a DVD navigator, and LAV Splitter will never support that.
In theory the decoder should get used, but in practice its not compatible with the DVD Navigator yet. Thats up for future endavours.
BTW, if you have "Double Framerate" checked, all interlaced material gets doubled, there is no way to detect if the content was filmed in 50i or interlaced from 25p...
For testing just open the .vob, that will use LAV Splitter. :)
madshi
2nd May 2011, 17:20
The name is not really that obvious to what it does, because it doesn't simply double the frame rate, but actually produce 60 distinct pictures (so not every picture twice or stuff like that), but i think thats how its called around knowledgeable people.
I don't think so. I've never heard of "double frame rate" outside of the HTPC world. IMHO the proper solution would be to offer a switch for "video mode" vs "film mode" deinterlacing. That's how it's usually called in the CE world, IIRC. Years ago some hardware deinterlacers advertized the ability to have a "film mode" for deinterlacing, while "video mode" deinterlacing was the default. Ideally deinterlacing should always produce either 60p or 24p. From a theoretical point of view I don't really see any sense in 30p deinterlacing output. However, for movies 30p is good enough and it saves rendering performance, so in contrast to what I just said, in practical life 30p deinterlacing output does make sense in the HTPC world to save rendering power (only for movies, of course).
So again in short: I'd suggest an option named "deinterlacing mode" with the values: "film mode" and "video mode". You could also add the frame rates to the option names, to make things clearer, e.g. "film mode (25p/30p)" and "video mode (50p/60p)". Default should be "video mode", I guess, because it also works acceptably for film sources, while the film mode does not work well for true video sources.
Alternatively it might make sense to not talk about film vs video because the option will not turn on/off IVTC, anyway, nor will it in any way influence what the NVidia hardware deinterlacer does. Practically it just changes the output framerate. So you could name the option "output frame rate" and offer the options "25p/30p" vs "50p/60p". Maybe you could add the content type, like "25p/30p (film)" vs "50p/60p (video)".
Not sure what's better...
nevcairiel
2nd May 2011, 17:22
I don't think so. I've never heard of "double frame rate" outside of the HTPC world. I
All i know about interlacing is in the context of HTPCs, i never really got into it before in CE devices. :)
I however like your suggested option, and will change it to that. It might one day be 24p/25p and 50/60, i dont think naming it film and video hurts anything..
CruNcher
2nd May 2011, 17:28
Interlaced video like this is usually actually filmed in 60i, but "normal" deinterlacing will produce 30 full pictures out of it. Activating double framerate will then properly generate all 60 full, progressive frames.
The name is not really that obvious to what it does, because it doesn't simply double the frame rate, but actually produce 60 distinct pictures (so not every picture twice or stuff like that), but i think thats how its called around knowledgeable people.
Its nothing new, its the same way non-directshow players use DXVA, like VLC. Its also relatively easy to do, someone just has to. :p
Sad though that it didn't found it's way yet upstream to MPC-HC but they guy doesn't seem to care about GPL anyways (his skin engine work though is nice OSD and a lot of the other changes very well executed)
madshi
2nd May 2011, 17:28
Well, a couple of years ago I wasn't using HTPCs at all and instead had a lot of knowledge about external deinterlacers / video processors. Owned several of them, various different iScan and Lumagen video processors.
mark0077
2nd May 2011, 17:48
The splitter most definately not. IFO files are for a DVD navigator, and LAV Splitter will never support that.
In theory the decoder should get used, but in practice its not compatible with the DVD Navigator yet. Thats up for future endavours.
BTW, if you have "Double Framerate" checked, all interlaced material gets doubled, there is no way to detect if the content was filmed in 50i or interlaced from 25p...
For testing just open the .vob, that will use LAV Splitter. :)
Great cheers. Well performance is great, keep up the good work, although the lav splitter shows up as using the most cpu % as anything else in the filter chain (using process explorer) during m2ts 1080p playback :) Using about 6-7 % of core i7 @3.7, maybe thats expected but I thought it was quite high. I'm off to play with the vobs.
HeadlessCow
2nd May 2011, 19:56
You got that right. :)
Even simple text subtitles are rendered to inefficiently that it can cripple playback. Funny thing is, bitmap subtitles don't suffer from that problem, so PGS is fine. :p
If you're gonna replace DirectVobSub, it would probably be best to start with something based on libass as it is more performant and nearly entirely compatible already.
As an example, see the AssRender filter for Avisynth.
http://forum.doom9.org/showthread.php?t=148926
HeadlessCow
2nd May 2011, 21:32
I really don't blame you. And the limitation to h.264 makes it useless anyway. VC-1 is where we really need a decoder. The ffmpeg mt decoder isn't bad for h.264. I've even been testing it on my laptop to see if it can handle it and so far yea. I need something to replace Cyberlink decoder at some point. It does do a decent job, but, the fact that it doesn't like to work with DirectVobSub kinda blows.
The intro claims that it only supports H264, but the actual documentation has flags for decoding all the H264 profiles as well as the 3 VC-1 profiles so unless they've just documented it for future support, it might support what you're looking for already :)
See: http://developer.amd.com/gpu/AMDAPPSDK/assets/OpenVideo_Decode_API.PDF
SamuriHL
2nd May 2011, 21:34
So Nev can code it blind and I'll do all the testing. Sounds good to me! :D
HeadlessCow
2nd May 2011, 21:55
If it weren't for the inconvenience of him being in Germany, I'd just mail him the extra card I have sitting around :)
nevcairiel
2nd May 2011, 21:57
If i ever get terribly bored, i might just buy a 5450 or some other very cheap model. But me getting bored, right, thats going to happen. :devil:
HeadlessCow
2nd May 2011, 22:03
So if SamuriHL stops testing your other filters you'll write the ATI one for him? :thanks:
SamuriHL
2nd May 2011, 22:06
ROFLMAO! I think I have a better chance of replacing my 5870 with a high end nVidia card than getting a new AMD video decoder. :D
mark0077
3rd May 2011, 19:28
nav Maybe if its possible, it might be a tweak to internally disable dxva interop mode if de-interlacing isn't needed for a particular clip. I'm sure that has been discussed already..
hoborg
3rd May 2011, 19:48
If i ever get terribly bored, i might just buy a 5450 or some other very cheap model. But me getting bored, right, thats going to happen. :devil:
He,he :D
If you do, get 6450, it have UVD 3.0, it is already available with nerly the same price as 5450 :)
Hi,
Why doesn't this decoder work with Haali Renderer? I prefer Haali coz I do lots of screen capping when I watch movies or TV shows & for that I've to use framestep regularly to capture a perfect frame & Haali is the only renderer that works smoothly. All other renderers either get stuck or mess up the frames when using framestep back. So is there a way to make it work with Haali renderer?
AFAIK, the Haali renderer only accepts YUY2 and RGB32. LAV CUVID outputs NV12 or YV12. So no match.
I guess you could use ffdshow raw or something like that between the decoder and the renderer to convert to a different colorspace. I don't use it or know what the potential downsides are though.
nevcairiel
3rd May 2011, 21:07
YUY2 is a 4:2:2 pixel format, converting to that, if not done right, will seriously degrade your quality. Your best bet would be using ffdshows HQ RGB32 conversion..
SamuriHL
3rd May 2011, 21:12
Yes, otherwise you can find serious banding issues and other nasty problems. Make sure you use dithering if you go the RGB32 route.
BeNooL
3rd May 2011, 21:34
If I get the documentation correctly, this should work on a 8600 GTS card, right?
Anyone managed to get it to work? on XP SP3?
I tried and while I can get to the configuration screen, loading a file in MPC-HC I have no video displayed at all (after disabling FFDShow, current decoder).
My setup is maybe particular as I have the GeForce card as secondary card just for CUDA crunching in BOINC, the main card being a AMD 4550 card and that's where my displays are connected.
nevcairiel
3rd May 2011, 21:36
Hm, only a secondary card without a connected display? That might cause it to break .. i really cannot say with that setup, though.
If I get the documentation correctly, this should work on a 8600 GTS card, right?
Anyone managed to get it to work? on XP SP3?
worked fine for me when i was on xp, never have any issues using the old 8600gt, plays every thing great :)
BeNooL
3rd May 2011, 22:02
Hm, only a secondary card without a connected display? That might cause it to break .. i really cannot say with that setup, though.
Yes there is no physical screen connected to the GeForce card still in windows I activated the attached option to have a 'default monitor' showing otherwise the card becomes unavailable for CUDA work.
Aleksoid1978
3rd May 2011, 23:34
Bad Deinterlacing on this sample - http://aleksoid.tosei.ru/Test/Sample/LUXE%20TV%20HD.ts.
With internal MPC-HC DXVA Decoder look much better.
HeadlessCow
4th May 2011, 05:22
DGIndexNV works perfectly fine using CUVID on a second card with no monitor attached, so I would assume this works fine as well.
nevcairiel
4th May 2011, 06:46
Bad Deinterlacing on this sample - http://aleksoid.tosei.ru/Test/Sample/LUXE%20TV%20HD.ts.
With internal MPC-HC DXVA Decoder look much better.
The DXVA decoder does not do any deinterlacing.
In any case, its the hardware doing deinterlacing, you want to whine, whine at NVIDIA. :p
Aleksoid1978
4th May 2011, 08:15
The DXVA decoder does not do any deinterlacing.
In any case, its the hardware doing deinterlacing, you want to whine, whine at NVIDIA. :p
But with MPC-HC DXVA Decoder all look fine.
nevcairiel
4th May 2011, 08:31
Because the renderer deinterlaces then.
But anyway, i don't care how other decoders look. I cannot control how deinterlacing looks, except with the options i already have. If it fails do deinterlace some stream, its a NVIDIA problem.
tetsuo55
4th May 2011, 09:36
iirc it has to do with the output colorspace.
If you output nv12 and keep the interlace flags nvidia drivers should take it from there?
Ok! Thanks guys, will try ffdshows HQ RGB32 conversion!
ashlar42
4th May 2011, 21:11
Tried with BBC Life BD rips (VC-1 1080i50). Works great!
There's a strange interaction with the double frame rate setting. MadVR reports dropped frames like there's no tomorrow... But it's a lie, as everything is silky smooth. The same doesn't happen with MPEG2 interlaced material.
nevcairiel
4th May 2011, 21:53
if madVR reports dropped frames, there are dropped frames. My guess is that you're running on a lower refresh rate then 50Hz, then it has to drop frames to make it fit without you really seeing any stuttering.
ashlar42
5th May 2011, 08:23
Honestly, I'd say no. The lost frames start to be reported only when MadVR is playing in exclusive mode. As soon as I activate a menu in MPC-HC, MadVR switches to windowed mode and the lost frames stop to be reported. After three seconds, MadVR goes back to exclusive mode and lost frames are reported again.
Now, during the switch, there really is no change in playback smoothness. After six years of HTPC use I would most definitely notice if frames were lost by the hundreds. Heck, I get annoyed by a single glitch...
MadVR reports refresh rate as 50.000xxxx. Reclock reports refresh rate as 50.000. My Pioneer Kuro reports refresh as 50Hz. The refresh doesn't change when switching in and out of exclusive mode (the TV would indicate that happening).
I'm ready to provide whatever logs are needed to debug/evaluate this. But could you be so kind as to point me out how to activate debug logs or stuff like that in MPC-HC (I'm mainly a XBMC user).
Thanks!
nevcairiel
5th May 2011, 08:24
madVR has a debug logging feature, but thats somethign you should bring up in the madVR thread.
mark0077
5th May 2011, 20:11
nev, using the latest version of your filter and decoder, I tried playing the 25fps avi file from the following web page to test audio / video desync.
http://editorsean.com/blog/49-audiovideosynctest
I get no video when your video decoder kicks in. This is the info from the clip. I hope this helps. Its a GTX295, Windows 7 64bit.
Filter : LAV CUVID Decoder - CLSID : {62D767FE-4F1B-478B-B350-8ACE9E4DB00E}
- Connected to:
CLSID: {CEA8DEFF-0AF7-4DB9-9A38-FB3C3AEFC0DE}
Filter: C:\Users\Mark\Downloads\sound_in_sync_test.avi
Pin: Video 0
- Connection media type:
Video: Xvid 320x288 25.00fps 57kbps
AM_MEDIA_TYPE:
majortype: MEDIATYPE_Video {73646976-0000-0010-8000-00AA00389B71}
subtype: Unknown GUID Name {44495658-0000-0010-8000-00AA00389B71}
formattype: FORMAT_VideoInfo {05589F80-C356-11CE-BF01-00AA0055595A}
bFixedSizeSamples: 1
bTemporalCompression: 0
lSampleSize: 368640
cbFormat: 88
VIDEOINFOHEADER:
rcSource: (0,0)-(0,0)
rcTarget: (0,0)-(0,0)
dwBitRate: 57750
dwBitErrorRate: 0
AvgTimePerFrame: 400000
BITMAPINFOHEADER:
biSize: 40
biWidth: 320
biHeight: 288
biPlanes: 0
biBitCount: 24
biCompression: XVID
biSizeImage: 276480
biXPelsPerMeter: 0
biYPelsPerMeter: 0
biClrUsed: 0
biClrImportant: 0
pbFormat:
0000: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0010: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0020: 96 e1 00 00 00 00 00 00 80 1a 06 00 00 00 00 00 –á......€.......
0030: 28 00 00 00 40 01 00 00 20 01 00 00 00 00 18 00 (...@... .......
0040: 58 56 49 44 00 38 04 00 00 00 00 00 00 00 00 00 XVID.8..........
0050: 00 00 00 00 00 00 00 00 ........
Also with your audio decoder, I get no sound after 1 or 2 seeks. Please let me know if you can reproduce or I can provide any more info etc. Thanks!
nevcairiel
5th May 2011, 20:17
The GTX295 does not support XVID decoding.
mark0077
5th May 2011, 20:19
Cool, so should the decoder reject so that something like ffdshow in my filter chain can take over? Is your filter currently able to check what the gpu supports like this or is it something that might be possible in a future version?
nevcairiel
5th May 2011, 20:30
I wish it would be easy to detect whats supported, but its not. :(
Some future version might do it.
Just untick the checkbox in the config.
mark0077
5th May 2011, 20:33
Thanks! Any ideas what might be up with the audio problem on seek. I'll see can I reproduce with other clips too.
mindbomb
5th May 2011, 20:44
gtx 295 doesnt support mpeg 4 asp hardware decoding
edit: wow, i was late on this one lol
Aleksoid1978
7th May 2011, 11:44
Crash at this sample https://rapidshare.com/files/460405805/Vier-001.mkv
Cyberlink and MPC-HC(rev. 3090) decoder play fine
nevcairiel
7th May 2011, 11:44
I told you before, crashes are in NVIDIAs code.
Aleksoid1978
7th May 2011, 13:59
I told you before, crashes are in NVIDIAs code.
But - we can skip the broken section, and continue playback.
yesgrey
9th May 2011, 16:41
Any possibility of adding an option to force deinterlacing on all sources independently of the interlaced flags state? For example an auto/force? If a file is bad flagged it's not possible to deinterlace it...
mark0077
9th May 2011, 16:49
I second this request :) Most of my PAL DVDs are badly flagged and end up being incorrectly deinterlaced to 50fps when they are 100% perfect in their original form at 25fps.
I actually have compiled a text file list of video files on my machine that really do need de-interlacing, and use a small script to set the ffdshow de-interlace registry option on / off before playback depending on whether I have the file listed. I'm now going to use lavcuvid for all of my decoding and will take advantage of the fact that it can use the hardware deinterlacers so an option to force on / force off would be fantastic. I'll set this on/off via registry before playback if possible... :)
nevcairiel
9th May 2011, 17:18
Any possibility of adding an option to force deinterlacing on all sources independently of the interlaced flags state? For example an auto/force? If a file is bad flagged it's not possible to deinterlace it...
I'm not sure i get it. Is there a way to have interlaced fields in a bitstream and make the decoder think its actually a full frame? Thats possible? I always thought fields and frames would be encoded differently
Anyhow, do you happen to have a sample file i can use to see if its actually possible to force deinterlacing?
madshi
9th May 2011, 17:35
You can encode interlaced content one field at a time, or you can encode it as frames. When it's encoded as frames, you can still mark the frames as being interlaced. I think you can also encode as frames without marking the frames as interlaced, even if they're interlaced. It's all pretty much a mess. E.g. let's talk about h264:
If "sequence_header.frame_mbs_only_flag" is set to 1 that means that all frames are progressive. If it's set to 0 then we basically don't know whether the content is progressive or interlaced. If "slice_header.field_pic_flag" is set to 1 then we have an interlaced field. If it's 0, it can be a progressive frame or an interlaced frame (interlaced frame = 2 interlaced fields weaved together and encoded as a frame). Then we have "picture_timing_SEI.pic_struct" which can mark a field/frame as one of {frame, top field, bottom field, tf+bf, bf+tf, tf+bf+tf, bf+tf+bf, frame doubling, frame tripling}. If the frame is marked as e.g. "tf+bf" you still don't know if it's film content marked for interlacing after decoding, or whether it's natively interlaced content. Then we have "picture_timing_SEI.ct_type" which can indicate native progressive, native interlaced or unknown content.
IMHO, for h264, if "sequence_header.frame_mbs_only_flag" is set to 1 you should not offer/do deinterlacing, because the video track should be truely progressive. And if "picture_timing_SEI.ct_type" indicates "progressive" or "interlaced" then you should probably trust that, too - although it can change from one frame to the next. But in all other cases it's probably not clear whether the source is progressive or interlaced. So you may want to offer the option to deinterlace. I don't really know, though, whether you can force CUVID to deinterlace, if it thinks it's not necessary...
yesgrey
9th May 2011, 18:30
Anyhow, do you happen to have a sample file i can use to see if its actually possible to force deinterlacing?
It's strange... Yesterday I thought the deinterlacing was not being done, but today I've tried and it seems to be working OK with the file I mentioned...
However, after cutting a small sample (http://www.megaupload.com/?d=0TUSOTHL) with mkvtoolnix (latest release) to upload to you, a new strange thing happened...
With the original file (backup from original DVD to mkv file using eac3to) the LAV CUVID says 59.94 fps, but with the cut sample it says 29.97fps. It seems mkvtoolnix broke something...
Dogway
9th May 2011, 18:39
Nvidia 9600M GT - driver 266.58
Core2Duo 2.53 T9400 1066FSB. 4Gb DDR3 533Mhz
Laptop WinXP SP3 x86
Just a little up to date of my post (http://forum.doom9.org/showthread.php?p=1493357#post1493357) of decoding speeds for different decoders.
Using the AVC sample of yesgrey's post (http://forum.doom9.org/showthread.php?p=1493275#post1493275). This time using graphstudio, and LAVSplitter 0.25.
All in weave.
ffdshow ffmpeg-mt 50.9 fps
Cyberlink PDVD10 47.2 fps
ffdshow libavcodec 31.8 fps
CoreAVC 2.5.5 22.8 fps
LAVCUVID 0.6 22.7 fps
edit: can LAVCUVID bypass decoding ASP if card doesn't support it? I tried playing a divx5 and screen was black.
nevcairiel
9th May 2011, 18:47
edit: can LAVCUVID bypass decoding ASP if card doesn't support it? I tried playing a divx5 and screen was black.
Currently not automatically. You can disable it on the properties page, however.
mindbomb
9th May 2011, 23:48
hey everyone.
I've been recommending this decoder to alot of ppl, and a small fraction of them have trouble installing it, despite having the latest vc runtime installed.
Any possible ideas why?
SamuriHL
9th May 2011, 23:51
UAC issues possibly.
nevcairiel
10th May 2011, 06:52
hey everyone.
I've been recommending this decoder to alot of ppl, and a small fraction of them have trouble installing it, despite having the latest vc runtime installed.
Any possible ideas why?
They also need a fairly recent NVIDIA driver, 260 series at least (CUDA 3.2 support).
Installation is otherwise pretty straight forward:
- Unpack
- Right-click install.bat -> Run as Administrator
- Done!
I'll create a installer at some point, should be trivial for this small filter.
I also have some plans to possibly ease up on the NVIDIA driver requirement, and detect at runtime which version of the APIs i can use.
oddball
11th May 2011, 08:09
I've got an issue wuth CUVID whcih I am not sure is an issue or not. If I put CUVID before ffdshow in MPC externals filters section. 25FPS and 29.97FPS material (well DVD remuxes actually) get frame doubled and messes with ReClock. I use ReClock for PAL speedown and I have to forcefully tell ReClock that it's 25FPS. If however I put it after ffdshow ReClock works as expected. Not sure if that's right though. I've not noticed any problems running it this way. I do not notice any interlacing issues either using both methods.
nevcairiel
11th May 2011, 09:10
If you put it after ffdshow, i'm sure ffdshow is actually doing the decoding.
Anyhow, it would seem like your DVDs are either interlaced, or the frames are at least marked as interlaced, and therefor the double framerate mode activates. In case you didn't notice, you can actually disable that option in the LAV CUVID settings.
oddball
11th May 2011, 09:39
Nope! CUVID is definitely the decoder. I know this because I have ffdshow's codecs disabled and when I right click on MPC in filters it shows CUVID there. Plus the CPU load is a lot less too. Yes I know you can turn off framerate doubling in CUVID but that does not answer my question. Why is it playing 25FPS after ffdshow in MPC and 50FPS before it? It makes no difference to playback from what I can see other than messing with ReClock if it's before ffdshow.
pankov
11th May 2011, 10:53
oddball, I apologize for intruding in your conversation with Nevcairiel but I don't understand what do you mean by "ffdshow is before CUVID" and still not decoding. How do you know it's "before"? Do you see it in GraphEdit/GraphStudio? Can you post the input and output pins properties of both filters?
oddball
11th May 2011, 11:40
I use ffdshow in the chain for deband, sharpening etc and yes I have tested to make sure ffdshow filters are actually working and it's not being bypassed when set in a different order in MPC external filters.
- Connected to:
CLSID: {62D767FE-4F1B-478B-B350-8ACE9E4DB00E}
Filter: LAV CUVID Decoder
Pin: XForm In
- Connection media type:
Video: MPEG4 Video (H264) 1280x720 23.81fps
AM_MEDIA_TYPE:
majortype: MEDIATYPE_Video {73646976-0000-0010-8000-00AA00389B71}
subtype: Unknown GUID Name {31435641-0000-0010-8000-00AA00389B71}
formattype: FORMAT_MPEG2_VIDEO {E06D80E3-DB46-11CF-B4D1-00805F6CBBEA}
bFixedSizeSamples: 1
bTemporalCompression: 0
lSampleSize: 1
cbFormat: 167
VIDEOINFOHEADER:
rcSource: (0,0)-(0,0)
rcTarget: (0,0)-(0,0)
dwBitRate: 0
dwBitErrorRate: 0
AvgTimePerFrame: 419999
VIDEOINFOHEADER2:
dwInterlaceFlags: 0x00000000
dwCopyProtectFlags: 0x00000000
dwPictAspectRatioX: 1280
dwPictAspectRatioY: 720
dwControlFlags: 0x00000000
dwReserved2: 0x00000000
MPEG2VIDEOINFO:
dwStartTimeCode: 0
cbSequenceHeader: 35
dwProfile: 0x00000064
dwLevel: 0x00000028
dwFlags: 0x00000004
BITMAPINFOHEADER:
biSize: 40
biWidth: 1280
biHeight: 720
biPlanes: 1
biBitCount: 24
biCompression: AVC1
biSizeImage: 0
biXPelsPerMeter: 0
biYPelsPerMeter: 0
biClrUsed: 0
biClrImportant: 0
pbFormat:
0000: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0010: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0020: 00 00 00 00 00 00 00 00 9f 68 06 00 00 00 00 00 ........Ÿh......
0030: 00 00 00 00 00 00 00 00 00 05 00 00 d0 02 00 00 ............Ð...
0040: 00 00 00 00 00 00 00 00 28 00 00 00 00 05 00 00 ........(.......
0050: d0 02 00 00 01 00 18 00 41 56 43 31 00 00 00 00 Ð.......AVC1....
0060: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0070: 00 00 00 00 23 00 00 00 64 00 00 00 28 00 00 00 ....#...d...(...
0080: 04 00 00 00|00 19 67 64 00 28 ac 34 e2 40 50 05 ......gd.(Ž4â@P.
0090: bb 01 10 00 00 07 d0 00 01 76 a8 f1 83 18 98 00 ŧ.....Ð..vĻņƒ.˜.
00a0: 06 68 e8 8a cb 22 c0 .hčŠË"Ā
- Enumerated media type 0:
Set as the current media type
Actually I don't know how to show the info for where each portion starts and ends in the chain. All I know is that if I put CUVID above ffdshow in external filters it outputs 25FPS as 50FPS and if I put it below it outputs 25FPS correctly (As in ReClock see's it as 25FPS not 50).
nevcairiel
11th May 2011, 12:17
Like i said before, LAV CUVID does not care at all about any other components in the graph, or any other external factors. If it gets interlaced frames (or at least something marked as interlaced), it'll go and deinterlace them, doubling framerate in the process if enabled.
Whatever issues you're having, they are something specific to your setup, and not a problem in LAV CUVID.
PS:
The media type of that movie is extra weird. A frametime of 420000 is no standard frame rate in any universe - 25fps would be 400000, 24p either 416666 or 417083 (24fps and 23.976 fps)
jazzysmooth
14th May 2011, 07:50
It registers successfully, and I can use LAV Splitter and Audio decoder with no problem, but for the life of me I can't get LAV CUVID to be used.
Running NVidia 9300 onboard (Zotac motherboard) with 512 mb memory assigned in the bios and using the latest drivers (270.61). I've tried disabling all internal filters in MPC-HC (version 1.5.2.3104) and loading LAV CUVID in the external list and setting it to prefer, as well as blocking those decoders that get loaded in its place (MPC-Video Decoder, then Microsoft DTV-DVD Video Decoder). After those are both disabled, I typically get audio only when playing back files. Testing with MKV of Casino Royale (VC-1), and several others.
If I manually attempt to add LAV CUVID in GraphStudio, I'm unable to connect the pin.
Running Win7 32bit. Anybody have any suggestions?
e-t172
14th May 2011, 19:30
I installed LAV CUVID on an HTPC (GeForce 9400, HDMI, Windows 7), and it seems to exhibit strange behavior when it comes to video levels (16-235/0-255).
When displaying the Windows desktop, the NVidia card compresses 0-255 into 16-235 before sending it to the TV. That's exactly what I want it to do, since the HTPC is also used for non-video applications (e.g. viewing photos).
When playing videos using madVR, it still compresses the whole thing to 16-235 ; to compensate for that, I set madVR to expand video levels to 0-255. Up to this point, everything's normal and expected.
However, everything changes when I play 1080p videos using LAV CUVID. When I do this, the output is not compressed anymore. In other words, the card doesn't do anything to the signal anymore, and the original signal is sent directly to the HDTV. It does this only when the video is playing, and even in windowed mode (which makes it obvious when testing, the white level of a nearby Explorer window changes dramatically). If I stop the video, everything returns to the way they were.
It looks like the NVidia driver is trying to be "smart" and disables video levels conversion when playing CUVID-accelerated 1080p videos via HDMI. At first I was like, "Cool! This way I can simply set madVR to output untouched 16-235 and even preserve blacker-than-black/whiter-than-white information! Great!".
Well, not so great, because, as I just said, two conditions must be met for this to happen: LAV CUVID must be in used, and... the video has to be 1080p! The card will NOT do this when playing other resolution content (like 720p)...
This is a nightmare for me, because it means that either I configure madVR to leave the signal untouched and I have correct levels for 1080p only, or I configure madVR to expand and I have correct levels for everything except 1080p! Considering that this HTPC is used to watch 1080p and 720p content, this means that there is no good, definitive configuration possible...
So I stopped using LAV CUVID and reverted to ffdshow software decoding for the time being. What a waste. Is there any way I can stop the driver from "trying to be smart", or better yet, make it switch to "untouched output" for everything, not just 1080p?
(Remember that I still want correct levels for the Windows desktop and applications)
nevcairiel
14th May 2011, 19:35
Try turning off the DXVA Interop mode, otherwise - no idea. I use Full RGB on all my systems, and there is no option in the decoder API for this.
Can also try to play with the options in the NVIDIA Control panel for video level, if you dont have those set to RGB Limited already.
e-t172
14th May 2011, 20:15
Tried both, nothing changed :(
madshi
14th May 2011, 21:00
I don't really see how LAV CUVID can affect the output range. I mean, @nevcairiel, you're simply transporting the NV12 data back from the GPU to System RAM, without modifying anything, right?
@e-t172, are you using madVR's automatic display modes changer? Is it possible that when using LAV CUVID you're getting 1080p60 and thus madVR switches to 1080p60? And when using ffdshow, maybe you're using a different mode? Normally the standard NVidia TV modes all compress to 16-235, while all "custom resolutions" stay at 0-255. So my best guess is that when you get 0-255, you're running a custom resolution.
The best solution for NVidia users is IMHO to create custom resolutions for all output modes you need. This way you always get 0-255.
nevcairiel
14th May 2011, 21:25
I don't really see how LAV CUVID can affect the output range. I mean, @nevcairiel, you're simply transporting the NV12 data back from the GPU to System RAM, without modifying anything, right?
Right, not doing anything to the data, except pressing it into a DirectShow form.
He says his graphics output itself changes to full RGB, as evidenced by his desktop changing, so its definitely not anything i do.
jazzysmooth
14th May 2011, 22:19
Just to follow up, LAV CUVID loads and works fine on my 8600 GT in another system. @Nev, does the decoder perform some sort of lookup to determine that a valid Nvidia chipset is in place? Has anyone else successfully used this with a onboard NVidia GPU? Just wondering if the onboards do something differently that perhaps isn't being picked up by the decoder.
I know I'm reaching, just don't want to perform a clean install on the HTPC (ZOTAC GF9300-G-E LGA 775 NVIDIA GeForce 9300 ) without knowing its going to make a difference.
e-t172
14th May 2011, 23:04
@e-t172, are you using madVR's automatic display modes changer? Is it possible that when using LAV CUVID you're getting 1080p60 and thus madVR switches to 1080p60? And when using ffdshow, maybe you're using a different mode? Normally the standard NVidia TV modes all compress to 16-235, while all "custom resolutions" stay at 0-255. So my best guess is that when you get 0-255, you're running a custom resolution.
No. I mean, I looked at it every way I could, and the conclusions are clear:
If LAV CUVID starts decoding a 1080p video, then the output immediately switches to FULL RGB mode, and stays that way until the filter is closed.
And I mean it. Even with this:
http://uppix.net/7/1/c/e2e58a222a02fdbced9b1fe58bc26.png (http://uppix.net/7/1/c/e2e58a222a02fdbced9b1fe58bc26.html)
Even with this graph, as soon as I click play (in GraphStudio), the entire display switches to FULL RGB. If I remove the filter, the display switches back to limited mode. It is absolutely certain LAV CUVID is causing this (meaning, CUVID is causing this).
If I play a 720p file using the very same graph, nothing happens.
From what I'm seeing, I'm convinced that when CUVID is used with 1080p video, the driver is "trying to be smart" and will "optimize" the output level. I'm guessing this is aimed at software Blu-ray players. Too bad it doesn't apply to non-1080p content...
@nevcairiel: thanks for your answer. I understand that this isn't under your control, but I was wondering, maybe you could come up with a workaround? For example, when playing non-1080p content, open a second, bogus CUVID "decoding session" (or whatever it is called) with 1080p parameters, without using it, just to trick the driver into thinking 1080p content is being played? This "second session" would just stand there doing nothing and the first session would decode the actual content. Is this even possible? Of course I'm thinking about something which could be enabled/disabled using a checkbox "Trick CUVID into thinking it is decoding 1080p content".
madshi
15th May 2011, 06:56
@e-t172, why don't you simply create custom resolutions for all needed display modes and refresh rates? That would nicely take care of the problem, as long as you can switch or calibrator your display into working with 0-255 content correctly.
ianken
15th May 2011, 07:24
@e-t172: glad to see I'm not the only one fighting with nvidia HDMI shenanigans.:)
As is you get two color-space conversions if your display is calibrated to TV levels. Since photos and what not don't matter for me I want full RGB output without scaling to 16-235 for the desktop or anything else.
madshi
15th May 2011, 07:38
As is you get two color-space conversions if your display is calibrated to TV levels. Since photos and what not don't matter for me I want full RGB output without scaling to 16-235 for the desktop or anything else.
If you output the desktop in 16-235 you are likely to get banding problems. Windows always renders the desktop in 0-255. If the GPU condenses that to 16-235 you're practically losing a few steps of information. Same applies to games and photos.
e-t172
15th May 2011, 09:30
@e-t172, why don't you simply create custom resolutions for all needed display modes and refresh rates? That would nicely take care of the problem, as long as you can switch or calibrator your display into working with 0-255 content correctly.
Could you elaborate? Sure I could create custom resolutions for 24p and 25p (assuming they would take precedence over the predefined 24Hz/50Hz refresh rates… would they?), but what about NTSC content? If I use a custom resolution for 60Hz, then the levels for Windows applications will be wrong… Or maybe I can do something more clever, like defining a 59Hz custom resolution while leaving 60Hz untouched? This way I'll be using 60Hz for the desktop and 59Hz for video?
Having the video player switch output levels makes much more sense to me, IMO. When not playing video, you get limited RGB ; when playing video, you get full RGB. Makes perfect sense! Probably NVidia thought the same, too; too bad they only implemented the idea for 1080p content… That's why I would love to see this fixed in LAV CUVID, as it would make the whole video levels management issue nicely disappear! I would even try to hack it in the LAV CUVID source code myself, if I had access to it…
If you output the desktop in 16-235 you are likely to get banding problems.
Well, I don't have much of a choice, do I? If I want correct levels for photos on a HDTV then I need to compress them to 16-235. Sure there will be banding, but it's much preferable to having horrible black/white levels. BTW, are you sure video cards aren't dithering to avoid this issue?
I'm also investigating solutions involving switching ICC profiles automatically. So I could use a ICC profile to compress the desktop to 16-235, and switch to another ICC profile when playing video. This way I'll be "emulating" the limited range feature of the NVidia card using ICC profiles. Then again, this seems complicated and ugly compared to switching levels automagically in the video player. I suppose the video card doesn't dither when applying ICC profiles, does it?
CruNcher
15th May 2011, 11:18
Does for someone else MPC-HC crashes (msvcrt.dll) when ffdshows raw decoding is active in its chain with LAV CUVID,CoreAVC CUDA under Winxp SP3 ?
http://img703.imageshack.us/img703/9963/mpccrashxpsp3.png
oha
VMR7 windowed = crash
VMR9 windowed = crash
Overlay Mixer = crash
VMR9 renderless = crash
VMR7 renderless = crash
Haalis Renderer = OK
MadVR = doesn't crash strange gray-scale halved colored (green) output playback result though
PS: The crash VMR7/9 Overlay only happens with ffdshow colorspace NV12 (YUY2,RGB32 are fine)
Lav Cuvid + ffdshow + Madvr (YV12(NV12)->NV12->NV12)
http://imageshack.us/m/220/6730/mpchcmadvrffdshowlavcuv.png
also seeing this 1920 to 2048x looks strange
Lav Cuvid + ffdshow + Haali (YV12(NV12)->NV12(RGB32)->RGB32) (forcing YUY2 also works with Haali)
http://imageshack.us/m/857/5816/mpchchaaliffdshowlavcuv.png
Interoperability problem (rounding differences) between Decoder (NV12)->ffdshow (NV12)->Renderer (NV12) ?
maybe a compile bug i gonna try different ffdshow builds, for now i would say the issue is ffdshows NV12 very clearly
Ok i take that clearly back (now its unsure where this crash is originating from, though it seems it has todo with NV12 going through without being converted the problem only appears in a straight colorspace untempered data chain beginning from the decoder (LAV CUVID,CoreAVC CUDA))
Cyberlink ->ffdshow->VMR9 Renderless (YUY2->YUY2(NV12)->NV12)
http://imageshack.us/m/51/2002/cyberlinknv12ffdshowok.png
Cyberlink ->ffdshow->MadVR (YUY2->YUY2(NV12)->NV12)
http://imageshack.us/m/52/135/cyberlinknv12ffdshowokm.png
Final result to prove this bug thesis of the NV12 chain :)
Lav Cuvid + ffdshow + VMR9 Renderless (YV12(NV12)->NV12(RGB32)->RGB32) No crash
http://imageshack.us/m/812/9825/lavcuvidffdshowrgb32vmr.png
Possible Bug vectors (10% Lav Cuvid,CoreAVC CUDA,10% Nvidia Driver,80% ffdshow)
madshi
15th May 2011, 15:33
@e-t172, can you switch your display between 0-255 and 16-235? If not, can you adjust brightness and contrast so that 0-255 has correct black and white levels?
And yes, I'm pretty sure that the video cards don't do dithering when stretching 0-255 to 16-235. At least mine don't (ATI + NVidia).
e-t172
15th May 2011, 16:39
@e-t172, can you switch your display between 0-255 and 16-235?
Aside from the registry hack to put everything to 0-255 (which I haven't actually tried), no.
If not, can you adjust brightness and contrast so that 0-255 has correct black and white levels?
Not sure what you mean by that (which settings? on the display itself? on the driver?). I don't think this will solve anything: no matter what settings I set, there's no way they will be correct for all three situations (Windows desktop, 1080p video with LAV CUVID, 720p video with LAV CUVID). Besides, modifying brightness/contrast settings leaves an opportunity for banding just like levels conversion.
madshi
15th May 2011, 17:37
Aside from the registry hack to put everything to 0-255 (which I haven't actually tried), no.
Not sure what you mean by that (which settings? on the display itself? on the driver?).
I'm talking about your DISPLAY (computer monitor, projector, plasma, whatever). Can you switch your DISPLAY between 0-255 and 16-235? If not, can you adjust brightness and contrast on your DISPLAY so that a PC sending 0-255 content is shown with correct black and white levels on your display? I'm talking about DISPLAY controls, only, not about any settings on PC. If you don't answer these questions then I can not help you.
e-t172
15th May 2011, 18:43
Yes, I can switch the display between 16-235 and 0-255 (it's a Sony KDL-46W4000 HDTV). But I won't, because there are other sources connected to this HDTV (most notably a TV box) which will only output 16-235. Besides, this would mean doing a video levels conversion inside the HDTV instead of inside the video card. I'm not sure that's better, and I still don't understand how that would help me get consistent black/white levels.
Let me summarize:
- I won't change my HDTV's settings because the HTPC is not the only source connected to it
- I won't switch my Windows desktop to 0-255 because it's not only used for video
- I want to prevent banding in videos, and preserve BTB/WTW - which means the decoded frames must be sent to the HDTV untouched, without any levels conversion
- I want everything to be consistent between 1080p and non-1080p content
The behavior of CUVID on my system regarding video levels is strange, but in a positive way, because it puts me closer to my goal. Unfortunately, it only switches to full RGB for 1080p content, which is incompatible with the last point.
I asked nevcairiel if it is possible to implement a workaround for this, or if I can try implementing it myself. If the workaround works, then I get the perfect system: correct video levels for all Windows applications, and maximum quality for video content which stays untouched and sent as-is to the HDTV, as it should be.
I'm sorry if I'm not making myself clear - please bear in mind that English is not my native language.
madshi
15th May 2011, 18:55
Yes, I can switch the display between 16-235 and 0-255 (it's a Sony KDL-46W4000 HDTV). But I won't, because there are other sources connected to this HDTV (most notably a TV box) which will only output 16-235.
Usually settings like this are per input port. Are the other sources connected through the same HDMI port?
e-t172
15th May 2011, 19:02
Yes, everything is connected to a Marantz SR5003 receiver which is itself connected to the HDTV. The receiver doesn't allow me to switch levels per input port. So that's a dead end.
I still don't understand why you seem to think that switching to 0-255 mode in the HDTV would make any difference to my situation. It would just be choosing between two equal evils, moving the destructive process from the HTPC to the HDTV.
madshi
15th May 2011, 19:29
So that's a dead end.
Yes, unfortunately.
It would just be choosing between two equal evils, moving the destructive process from the HTPC to the HDTV.
No, but anyway, dead end, so no use discussing it.
ryrynz
16th May 2011, 01:59
Yes, I can switch the display between 16-235 and 0-255 (it's a Sony KDL-46W4000 HDTV). But I won't, because there are other sources connected to this HDTV (most notably a TV box) which will only output 16-235.
When you change the black levels on a TV it's only for the currently selected input, so you can have one source at 16-235 and another at 0-255.
nevcairiel
16th May 2011, 07:22
As he said, the TV only has one source. The devices are connected to his receiver.
ryrynz
16th May 2011, 09:34
Figured the best solution be to connect one of his other devices directly to the TV and change the black level, but oh well.
nevcairiel
16th May 2011, 09:35
And not use the speakers connected to the receiver? :p
ryrynz
16th May 2011, 10:40
:) S/PDIF or Coax in perhaps?
Carpo
16th May 2011, 11:07
:) S/PDIF or Coax in perhaps?
depends on the distance, for short distance coax is a good idea, for longer runs spdif is better
Weirdo
16th May 2011, 11:39
Is it possible (or maybe in a future version) to alter brightness/contrast/saturation through the decoder, like CoreAVC for example? I tried through Nvidia's control panel settings, but they have no effect (CUVID/madVR combination).
madshi
16th May 2011, 12:44
Changing brightness/contrast/saturation is a task for the video renderer, not for the decoder. madVR will allow such changes in a future version.
andyvt
16th May 2011, 14:24
Yes, everything is connected to a Marantz SR5003 receiver which is itself connected to the HDTV. The receiver doesn't allow me to switch levels per input port. So that's a dead end.
You could put an HDMI splitter b/w the AVR and the TV.
e-t172
16th May 2011, 17:31
I must admit, I really don't understand why everyone is giving me hardware-related advice for a purely software issue. Whey I say "A isn't doing its job properly", everyone is telling me to work around it by altering some connected device B, without even mentioning A. I'm a little confused here.
When you have a compatibility issue such as this, the first thing you do is try to fix the root cause (in my case, the HTPC). So, first of all, I'm trying to make the HTPC comply with consumer video standards (that is, 16-235, BTB/WTW preservation, etc.). That's why I'm asking nevcairiel for a workaround. If this isn't possible, then I guess I'll take a trip to ICC profiles land. And if that doesn't work, THEN, and only THEN, I will consider working around the issue outside the HTPC.
When I'm trying to solve a problem, I usually consider solutions in order, ranging from "clean fix" to "ugly hack". Here, the clean fix is getting NVidia to fix CUVID and having the video renderer switch levels automagically, but we all know this isn't gonna happen soon. The other solutions are all workarounds. A local workaround, closer to the root cause, is always better, because there will be less side effects and less incompatibilities. Here, a workaround in LAV CUVID is best (local to the video player). Then comes a workaround based on clever ICC profiles (local to the HTPC). Then, and only then, come workarounds in the rest of the chain, which are in the "ugly hack" end of the spectrum.
Also, solutions which cost me money (like andyvt's) will obviously always come last.
ranpha
16th May 2011, 17:44
When I'm trying to solve a problem, I usually consider solutions in order, ranging from "clean fix" to "ugly hack". Here, the clean fix is getting NVidia to fix CUVID and having the video renderer switch levels automagically, but we all know this isn't gonna happen soon. The other solutions are all workarounds. A local workaround, closer to the root cause, is always better, because there will be less side effects and less incompatibilities. Here, a workaround in LAV CUVID is best (local to the video player). Then comes a workaround based on clever ICC profiles (local to the HTPC). Then, and only then, come workarounds in the rest of the chain, which are in the "ugly hack" end of the spectrum.
Let me tell you, you don't want this to happen. This shenanigan is what ATI used to pull in the past with their drivers, and it wasn't pretty.
Have you already set up your device drivers to pass video data over HDMI using YCbCr instead of RGB?
e-t172
16th May 2011, 17:50
Let me tell you, you don't want this to happen. This shenanigan is what ATI used to pull in the past with their drivers, and it wasn't pretty.
Well, in a perfect world, NVidia and ATI would expose a well-defined and documented API for switching output levels. Then video renderers like madVR would just use the API to set whatever levels are appropriate. But I'm dreaming out loud here. It's not like NVidia/ATI are actually listening to their consumers.
Although with NVidia there's a way to "emulate" this hypothetical API: just open a dummy CUDA video decoder with 1080p frame parameters and it'll instantly switch the HDMI output to full RGB!
Have you already set up your device drivers to pass video data over HDMI using YCbCr instead of RGB?
Haven't tried it, I will. Unfortunately I won't have access to the system until May 27th, so I'll get back to you on this one. However, won't this result in quality degradation due to the multiple colorspace conversions (RGB -> YCbCR -> RGB)?
madshi
16th May 2011, 17:51
I must admit, I really don't understand why everyone is giving me hardware-related advice for a purely software issue.
Most of us here aim for perfection. We're trying to optimize your hardware setup because that's the best way to get max quality from all aspects of your HTPC, including video playback, games, photos and the Windows desktop / applications. If you can't optimize the hardware the way we're suggesting, you have to live with compromises. IMHO your hardware setup is fundamentally flawed, because a PC has historically always been outputting 0-255 and you simply can't get perfect image quality if you let the GPU stretch that to 16-235 behind the back of the photo application, the games, the video renderer and Windows itself. Of course that's only my personal opinion. Maybe the latest hardware and drivers from ATI/NVidia now suddenly do the stretching in perfect quality, making me eat my hat. I don't think so, unfortunately.
If you do have to live with compromises then I can't help you because that's not an area I have much knowledge in... :p
andyvt
16th May 2011, 17:51
I must admit, I really don't understand why everyone is giving me hardware-related advice for a purely software issue. Whey I say "A isn't doing its job properly", everyone is telling me to work around it by altering some connected device B, without even mentioning A. I'm a little confused here.
When you have a compatibility issue such as this, the first thing you do is try to fix the root cause (in my case, the HTPC). So, first of all, I'm trying to make the HTPC comply with consumer video standards (that is, 16-235, BTB/WTW preservation, etc.). That's why I'm asking nevcairiel for a workaround. If this isn't possible, then I guess I'll take a trip to ICC profiles land. And if that doesn't work, THEN, and only THEN, I will consider working around the issue outside the HTPC.
When I'm trying to solve a problem, I usually consider solutions in order, ranging from "clean fix" to "ugly hack". Here, the clean fix is getting NVidia to fix CUVID and having the video renderer switch levels automagically, but we all know this isn't gonna happen soon. The other solutions are all workarounds. A local workaround, closer to the root cause, is always better, because there will be less side effects and less incompatibilities. Here, a workaround in LAV CUVID is best (local to the video player). Then comes a workaround based on clever ICC profiles (local to the HTPC). Then, and only then, come workarounds in the rest of the chain, which are in the "ugly hack" end of the spectrum.
Given the choice b/w countless hours chasing a fix or implementing a relatively cheap workaround (the HDMI splitter I used for testing cost $40), even if temporary, when the end result is roughly equivalent and you net the saved time/frustration ...
Also, solutions which cost me money (like andyvt's) will obviously always come last.
To be fair, you said it was a "dead end" I was pointing out that it was not. Implementing it, is of course up to you. Also, using a splitter b/w the AVR and TV is a common technique for dealing with devices that require specific calibration; not just in the HTPC space. In this case, even if the root cause was identified and addressed at a "palatable" layer in the chain, you may want to use this approach to get the best (http://www.avsforum.com/avs-vb/showthread.php?p=20347814#post20347814) output available.
madshi
16th May 2011, 17:53
Well, in a perfect world, NVidia and ATI would expose a well-defined and documented API for switching output levels. Then video renderers like madVR would just use the API to set whatever levels are appropriate. But I'm dreaming out loud here. It's not like NVidia/ATI are actually listening to their consumers.
100% agreed.
The funny thing is, both ATI and NVidia publically offer SDKs which do these kinds of things. Unfortunately NVidia is missing a "set output levels" API. ATI offers such an API, but it doesn't work reliably, unfortunately.
madshi
16th May 2011, 17:56
Given the choice b/w countless hours chasing a fix or implementing a relatively cheap workaround (the HDMI splitter I used for testing cost $40), even if temporary, when the end result is roughly equivalent and you net the saved time/frustration ...
Actually, the end result would be even better because with your suggestion (if it works as expected) e-t172 would get banding free quality with photos, games and Windows desktop/applications, too.
ranpha
16th May 2011, 17:59
Haven't tried it, I will. Unfortunately I won't have access to the system until May 27th, so I'll get back to you on this one. However, won't this result in quality degradation due to the multiple colorspace conversions (RGB -> YCbCR -> RGB)?
If you use madVR, you don't have to worry about this. That could be good for you, or bad. madVR is after all the equivalent version of WASAPI exclusive mode for video.
madshi
16th May 2011, 18:05
If you use madVR, you don't have to worry about this. That could be good for you, or bad. madVR is after all the equivalent version of WASAPI exclusive mode for video.
Well, if you ask your GPU to output YCbCr then your GPU drivers convert madVR's rendering output (which is always RGB) to YCbCr. There's no guarantee that the GPU drivers are doing that correctly. There's even a relatively high danger that the GPU drivers are converting madVR's 8bit RGB output to 8bit YCbCr, without using dithering, which would again eventually add some banding, because the RGB -> YCbCr conversion results in floating point numbers. Rounding them down to 8bit is no good.
e-t172
16th May 2011, 18:12
Most of us here aim for perfection.
Oh, me too, actually. The difference is, I have constraints I have to live with. Actually the system we're talking about is not mine, so the aforementioned constraints come from the actual owner/user of the system. I just don't have a choice here.
We're trying to optimize your hardware setup because that's the best way to get max quality from all aspects of your HTPC, including video playback, games, photos and the Windows desktop / applications. If you can't optimize the hardware the way we're suggesting, you have to live with compromises. IMHO your hardware setup is fundamentally flawed, because a PC has historically always been outputting 0-255 and you simply can't get perfect image quality if you let the GPU stretch that to 16-235 behind the back of the photo application, the games, the video renderer and Windows itself.
Well, to be fair, I don't really mind having suboptimal quality for Windows applications. The HTPC is primarily used for video, not for photos. So I only want perfect image quality for video. The workaround I'm proposing would allow me to achieve exactly that: switch to full RGB only when video is playing, so that the frames go untouched from madVR to the HDTV with no conversion whatsoever and pristine quality.
You proposed working in the 0-255 range at the display level. If I'm understanding your posts correctly (especially #582 (http://forum.doom9.org/showthread.php?p=1501457#post1501457)), you claim this would allow me to get perfect quality for Windows applications AND video. I just don't see how is that possible. Working in 0-255 means that I'll have to convert video from 16-235 to 0-255. IMO, there are two issues with this: first I'm losing BTB/WTW information, and second there is a very good chance that the HDTV is not optimized for 0-255 input and will convert to 16-235 internally with a crappy conversion.
Well, if you ask your GPU to output YCbCr then your GPU drivers convert madVR's rendering output (which is always RGB) to YCbCr. There's no guarantee that the GPU drivers are doing that correctly. There's even a relatively high danger that the GPU drivers are converting madVR's 8bit RGB output to 8bit YCbCr, without using dithering, which would again eventually add some banding, because the RGB -> YCbCr conversion results in floating point numbers. Rounding them down to 8bit is no good.
That's exactly what I was worried about :(
madshi
16th May 2011, 18:27
Well, to be fair, I don't really mind having suboptimal quality for Windows applications. The HTPC is primarily used for video, not for photos. So I only want perfect image quality for video. The workaround I'm proposing would allow me to achieve exactly that: switch to full RGB only when video is playing, so that the frames go untouched from madVR to the HDTV with no conversion whatsoever and pristine quality.
Ok.
The problem with your proposed workaround is that you wouldn't need it if you created custom resolutions to force NVidia to output 0-255 all the time. Which is a solution many people are using. So your proposed workaround is probably only for a minority of users, and it's not guaranteed that it will work, and if it works it might only work with some NVidia cards, some OSs and some driver versions. Furthermore it would cost several hours of programming time. So that are all very good reasons against implementing your workaround. Besides, it's extremely ugly, too... :p
You proposed working in the 0-255 range at the display level. If I'm understanding your posts correctly (especially #582 (http://forum.doom9.org/showthread.php?p=1501457#post1501457)), you claim this would allow me to get perfect quality for Windows applications AND video. I just don't see how is that possible. Working in 0-255 means that I'll have to convert video from 16-235 to 0-255. IMO, there are two issues with this: first I'm losing BTB/WTW information, and second there is a very good chance that the HDTV is not optimized for 0-255 input and will convert to 16-235 internally with a crappy conversion.
The HDTV also has to support brightness and contrast adjustments (which every TV has built in) without introducing banding. So it's likely that it can do such adjustments without introducing banding. Switching from 16-235 to 0-255 is not much different from changing brightness + contrast. Of course the only way to be sure is to test it. But from my (limited) experience, most displays handle a 0-255 <-> 16-235 switch just fine, without introducing banding.
andyvt
16th May 2011, 18:33
I'm losing BTB/WTW information
BTB/WTW should only exist in calibration material. That said, there is some evidence that WTW does exist in real content but clipping won't have a large (http://www.upsilonsoftware.com/blog/5-blog/15-where-were-at-with-wtw.html) impact.
madshi
16th May 2011, 18:46
BTB/WTW should only exist in calibration material. That said, there is some evidence that WTW does exist in real content but clipping won't have a large (http://www.upsilonsoftware.com/blog/5-blog/15-where-were-at-with-wtw.html) impact.
True. Furthermore that AVSForum thread discussing whether WTW content exists came to no clear conclusions. A lot of WTW pixels appear to come from scaling artifacts (ringing) or chroma upsampling effects. Anyway, a future madVR version might offer an option to keep some parts of the WTW range, when using 0-255.
e-t172
16th May 2011, 18:51
Thanks for the heads up. I read that AVSForum thread long ago, and since it reached no conclusion, I figured it was probably better to err on the safe side and assume BTB/WTW must be preserved. Seems like I don't have to worry too much about it anymore, which is great.
jazzysmooth
17th May 2011, 05:51
So I figured I'd try a clean install (win7 SP1 32bit) to see if it would clear up my issue with the CUVID filter not loading in MPC-HC. Much to my surprise, even with a clean environment, it still wouldn't appear when playing a movie.
I then went through all the versions and discovered the following:
versions 1 and 3 will appear in the filter list when I play a movie, but the movie doesn't play. MPC-HC doesn't crash, and I can seek, but all I see is the black screen, as if it was paused. Doesn't seem to matter what renderer or audio decoder I use, I get the same result.
Versions 2, and 4-6 simply won't appear in the filter list. As mentioned in a previous post, if I block MPC-video decoder and Microsoft DTV decoder, I'll get audio but no video. Using a Zotac 93000-I-E motherboard with onboard Geforce 9300 video. Near as I can tell it supports VDPAU feature set B, so I'm confused as to why this isn't working. I also tried turning off the "Stream aspect ratio", DXVA and deinterlacing options, but made no difference.
Has anyone gotten this to work with a 9300 series chipset? Nev, any ideas what I should try? What other info can I provide?
Thanks!
mindbomb
17th May 2011, 06:22
i have a 9400m, which is similiar to what you are using.
all i can say is, make sure you have the vc runtime installed, run the install as admin, and update your video card drivers.
yesgrey
17th May 2011, 09:04
I read that AVSForum thread long ago, and since it reached no conclusion, I figured it was probably better to err on the safe side and assume BTB/WTW must be preserved.
Not keeping BTB is already considered to be the right choice. The question that still remains open is if we should keep WTW or not. In my case I don't keep WTW, and I don't miss it.;)
CruNcher
17th May 2011, 12:58
Nvidia released the 275.27 Beta drivers Scaling was completely overworked :)
http://www.nvidia.com/Download/Find.aspx?lang=en-us
http://de.download.nvidia.com/Windows/275.27/275.27-WinXP-Desktop-Release-Notes.pdf
http://de.download.nvidia.com/Windows/275.27/275.27-Win7-WinVista-Desktop-Release-Notes.pdf
Added support for CUDA 4.1 on GeForce 400 series and later GPUs.
Not sure though if they where any Nvcuvid changes doesn't seems so
Oh new Designed developer Zone :) http://developer.nvidia.com/
Hmm http://developer.nvidia.com/digital-video-pipeline <- empty ?
exactly 1 month after like they announced (no blog entry about them yet) :P
http://forum.doom9.org/showpost.php?p=1493926&postcount=362
jazzysmooth
17th May 2011, 15:00
i have a 9400m, which is similiar to what you are using.
all i can say is, make sure you have the vc runtime installed, run the install as admin, and update your video card drivers.
Thanks Mindbomb, I appreciate the response. I'll try the drivers Cruncher linked to, the other 2 suggestions I have done.
Am also curious as to why it will use versions 1 and 3 of the decoder, but none of the others...
CruNcher
18th May 2011, 03:15
Can someone reproduce this ? http://forum.doom9.org/showthread.php?p=1501824#post1501824
jazzysmooth
18th May 2011, 06:26
Thanks Mindbomb, I appreciate the response. I'll try the drivers Cruncher linked to, the other 2 suggestions I have done.
Am also curious as to why it will use versions 1 and 3 of the decoder, but none of the others...
Turns out it was a Nvidia driver issue, I had to go to a previous version (270.51) to get it working properly. 270.61 and 275.27 both cause the issues mentioned earlier.
VincAlastor
18th May 2011, 07:42
LAV CUVID with intel igpu and nv 9800gt dgpu
with new hardware config (win7 x64, hdmi over intel igpu 3000 (means primary gpu), discrete nv 9800 gt (270.51) and lucid virtu enabled) mpc-hc (32bit) doen't use the LAV CUVID even if i set LAV CUVID forced in mpc-hc.
internal filters are all disabled, ffdshow is blocked, but every time ffdshow will decode h.264 videos in mkv.
Could someone help me, please?
of course there is no reason to use the gpu to decode videos with an intel core ix 2xxx but i want to use LAV CUVID in avisynth with directshowsource(), so that i have to be sure that dss() use LAV CUVID... sorry for my bad english.
edit:
the same mkv in graphedit/graphstudio (32bit) will be decoded by (LAV filters) ---> microsoft DTV-DVD video decoder
...very confusing that graphedit doesn't load ffdshow like mpc-hc :/
nevcairiel
18th May 2011, 07:49
You would have to force that virtu thing to use the NVIDIA card when running MPC-HC. Not sure if that helps, such setups are weird anyway.
VincAlastor
18th May 2011, 07:56
You would have to force that virtu thing to use the NVIDIA card when running MPC-HC. Not sure if that helps, such setups are weird anyway.
thank you... i thought that too, but if i add mpc-hc.exe to the games list in lucid virtu mad-vr will be striking and say: "could not render dx9..."
VincAlastor
18th May 2011, 08:04
staxrip.exe runs in lucid virtu discrede mode, but i'm not sure if dss() is using LAV CUVID. please, could you integrate a info symbol for the windows taskbar for LAV CUVID like mad-vr and ffdshow do?
nevcairiel
18th May 2011, 08:08
Just to see if its being used? No.
You can always check with stuff like ProcessExplorer and see which modules it loaded.
Or just check your GPU usage with GPU-Z, if its 0, its not being used.
VincAlastor
18th May 2011, 08:26
Just to see if its being used? No.
You can always check with stuff like ProcessExplorer and see which modules it loaded.
Or just check your GPU usage with GPU-Z, if its 0, its not being used.
oh great, than i will install the micosoft ProcessExplorer. is it normal that graphedit and graphstudio everytime load the dtv-dvd decoder?
nevcairiel
18th May 2011, 08:36
If you let GraphStudio construct the graph on its own, it will prefer the filters marked as "preferred" in the registry, which is the MS decoder.
You can manually add filters to the graph and test like that, though.
nevcairiel
18th May 2011, 13:25
The source of LAV CUVID is now available in my Git Repository (http://git.1f0.de/gitweb?p=lavcuvid.git;a=summary), if anyone is interested.
SamuriHL
18th May 2011, 13:33
Sweet! Thanks for that. :)
SamuriHL
18th May 2011, 13:40
Uhhh, stupid question time. This can only be built on a machine that actually has an nVidia card? :( There's no way to install the CUDA API without having the nVidia hardware? Or am I missing something. I'd like to build it on my laptop which has an AMD card, but...
nevcairiel
18th May 2011, 13:41
No idea if you can install the CUDA SDK without the appropriate hardware. As you know, i only have NVIDIA. :p
SamuriHL
18th May 2011, 13:43
Is it just the cudatoolkit that I need?
nevcairiel
18th May 2011, 13:45
http://developer.nvidia.com/cuda-toolkit-32-downloads
This is the one i build against.
"CUDA Toolkit" 32-bit from the long list of things down there, yes.
SamuriHL
18th May 2011, 13:48
Yea, ok, I got that installed. It's just not finding cuda.h when I build. How does the solution look for the CUDA API? As in where is it looking for it? I have it in:
C:\Program Files (x86)\NVIDIA GPU Computing Toolkit\CUDA\v3.2
nevcairiel
18th May 2011, 13:58
I forgot, i may have added that to the global (system) path, or in the source path in visual studio, somewhere in the settings.
CruNcher
18th May 2011, 14:06
The source of LAV CUVID is now available in my Git Repository (http://git.1f0.de/gitweb?p=lavcuvid.git;a=summary), if anyone is interested.
:)
Thanks Mindbomb, I appreciate the response. I'll try the drivers Cruncher linked to, the other 2 suggestions I have done.
Am also curious as to why it will use versions 1 and 3 of the decoder, but none of the others...
you could try something fuzzy ;) copy the nvcuvid.dll from your current driver installation install the new driver and put the old nvcuvid.dll in the folder you registered lav cuvid from ;)
This way you maybe still can use the optimized 3D part without compromising your Hardware Video Decode :)
Though when Cuda Versions differ between the Driver it could fail
SamuriHL
18th May 2011, 14:15
I forgot, i may have added that to the global (system) path, or in the source path in visual studio, somewhere in the settings.
Yea, I'll figure it out. CUDA adds a bunch of vars to the system env:
CUDA_INC_PATH
CUDA_LIB_PATH
Still trying to figure out how to add them.
SamuriHL
18th May 2011, 14:24
2>Build succeeded.
2>
2>Time Elapsed 00:00:06.56
========== Rebuild All: 2 succeeded, 0 failed, 0 skipped ==========
WOO HOO! Thanks, Nev!
Sebastiii
18th May 2011, 16:31
The source of LAV CUVID is now available in my Git Repository (http://git.1f0.de/gitweb?p=lavcuvid.git;a=summary), if anyone is interested.
Nice :) thanks.
hawkson
21st May 2011, 10:15
fter install, just load up your DirectShow player of choice and start playing a movie.
Depending on your choice of player, you might need to configure the LAV CUVID Decoder as a preferred filter
for the formats you want it to decode.
I want to use MPC HC. How can I verify I am using the Lav Cuvid? I have installed the 64 bit version of Cuda Toolkit.
I also installed the CoreAVC. Should I uninstall CoreAVC now because i have Lav Cuvid?
nevcairiel
21st May 2011, 10:16
LAV CUVID does currently not work on 64-bit.
Anyhow, in MPC-HC just right click the movie, navigate to Filters, and in the list of filters should be LAV CUVID if its active.
Selur
21st May 2011, 11:05
due to a limitation in the CUDA SDK 3.2, currently only 32-bit is available
any news on a 64bit Version of the filter?
nevcairiel
21st May 2011, 11:10
64-bit is overrated.
I'm not even working on this, so no news.
Selur
21st May 2011, 12:57
Okay, thanks for letting us know. :)
Virtual_ManPL
21st May 2011, 13:26
64-bit is overrated.
Wrong.
99% of calculations is just data movement from register A to register B.
32bit (x86) has 8 registers and 64bit (x86-64) has 16 registers.
So in perfect world, performance should be at least 50-75% (100% in dream mode) better, same like in SLI looking on GPUs.
Also don't forget that now new CPUs are capable of 128bit or even 256bit operations through SIMDs extensions :p
I'm not even working on this, so no news.
But when nVidia will release official support for 64bit in SDK 4.0 are you planing to do the same with this decoder ? :p
nevcairiel
21st May 2011, 13:28
So in perfect world, performance should be at least 50-75% (100% in dream mode) better, same like in SLI looking on GPUs.
Like i said, overrated. You produce some artificial stats, without any real impact, and think its magically better,
In the real world, performance is usually even less then a x86 build, because data types are bigger (adresses are 64-bit, default integer types might suddenly be 64-bit, depending on compiler, etc)
Moving data between registers around is not what takes up the time in an algorithm. More registers surely helps, but its not the key to performance. It only avoids a cache hit now or then, but L1 caches are insanely fast.
The actual calculations, on the data in the registers, thats what takes time.
If doubling registers doubles performance, why didn't they add many more when building the x64 arch back in the day?
Oh and btw, the SIMD extensions can be used without x64.
I actually have some optimizations using MMX, which would stop working on x64. :p
But when nVidia will release official support for 64bit in SDK 4.0 are you planing to do the same with this decoder ? :p
Probably not.
Unless there are real advantages (x64 is not one of them), i won't be upgrading the SDK, as every new SDK requires a newer driver to be used, and i would like to keep the requirements low.
Maybe one day if there is MVC decoding support in a SDK, i might upgrade again.
Adding support for x64 is more then just compiling it differently. Like i outlined above, my MMX code wouldn't work, and a new SDK causes all other sorts of things to be considered.
Also, i just don't think its worth it. I specifically targeted this decoder at madVR, and its only 32-bit as well, so there you go! With other renderers, you are free to use a DXVA decoder, which offers the same quality.
hawkson
21st May 2011, 16:49
CI downloaded and installed Lav Cuvid according to the read me. How can I tell if its working? How do I select it in MPC-HC?
CruNcher
21st May 2011, 17:00
@nev
Fix : MPEG2 DXVA Decoder can decode video only with 4:2:0 chroma format. ;)
Hehe the free ones are the first again (after Mainconcept) i wonder when Cyberlink and the others react though they have no 4:2:2 support @ all yet :D
BTW it should be rather easy to detect this as the DXVA decoder get it from the splitter it's changes its Subtype Mode from the default Mpeg-2 and by that they cancel DXVA and switch into Software Decoding. Lav splitter supports it but so far Lav Cuvid doesn't seem to detect it, so instead of the others using this subtype change to disable DXVA i guess you could cancel the Mpeg-2 Decoder connection and falll back to the dshow chain.
Virtual_ManPL
21st May 2011, 20:04
@ nevcairiel
No artificial stats, just look on archivers, encoders, CADs or even some decoders and browsers, boost in speed looks impressive :cool:
but you code need to be "well-written"
why no more registers, dunno, maybe some problems with patents, don't forget that Intel want to ban AMD from producing x86 CPUs when AMD will not "share" 86x-64 specification
when you use MMX, don't forget that it will be unusable on Tegras (AMR architecture). In near future these low power eaters with high performance will be probably dominant in mobile field. Even Windows 8 will be on it. nVidia also started Project Denver, which will create high performance 64bit AMR processor (comatible with 32bit) for mobiles, PCs, servers or even supercomputers
Change is coming so it's bad idea to limit your software only to 32bit because of MadVR :p
nevcairiel
21st May 2011, 20:06
LAV CUVID is a DirectShow filter, for Windows, on x86. Why would i care about about any other architecture like ARM?
Also, i don't care about other applications. CAD, for example, will use massive amounts of RAM, of course x64 is preferable there. But thats the only solid advantage it has.
You don't make any sense, none whatsoever. I'll start ignoring now.
I actually know what i'm talking about, i get the impression that you're just a 64-bit fanboi.
There will be *NO* x64 support in the foreseeable future.
I don't care about any arguments you make up. All *solid* statistics for any DirectShow components i have seen usually point to stuff even running *slower*.
LAV CUVID decodes in hardware, is does not benefit from x64 *at all*, because it does not use the CPU much. Heck, it would probably be slower on x64 because my MMX code won't work there.
The source is now freely available, you're free to make it work on x64 for your own pleasure. My time is too valuable for that.
andyvt
21st May 2011, 20:08
No artificial stats, just look on archivers, encoders, CADs or even some decoders and browsers, boost in speed looks impressive :cool:
but you code need to be "well-written"
Can you point to a benchmark (or series of) that demonstrates this? Are you a software developer?
madshi
21st May 2011, 21:30
I think we have another case here of a non-developer thinking he knows more than the developers do.
andyvt
21st May 2011, 21:33
I think we have another case here of a non-developer thinking he knows more than the developers do.
He must be a Project Manager :)
madshi
21st May 2011, 21:43
Haha! Yeah, probably... :D
He must be a Project Manager :)
Hey now, some of us actually have a background to support our unreasonable demands. Some of us don't. (http://en.wikipedia.org/wiki/The_Peter_Principle)
;)
Virtual_ManPL
21st May 2011, 22:24
Implying sometimes developers aren't close minded to tech news and always know the best...
If you looking about tests, just go to some hardware site and look for CPU tests... or do it in your PC, this will be the most reliable
@ nevcairiel - I'm not 64bit fanboy, but I can look like one in here between people's own adoration
I was only thinking it will be a good idea to port this decoder on AMR architecture when Windows 8 will be coming and nVidia also joining the "CPU" war. Could be a big hit.
No offense here, I respect you hard work and this that you don't waste your time on things which isn't your priority.
nevcairiel
21st May 2011, 22:27
If anyone knows how code works on different CPUs, then developers. Who else would? Developers, and the engineers that build the CPUs. You don't strike me as either.
You don't even know if ARM Windows8 will still have DirectShow. They have a clean break there, no legacy x86 filters work anyway, it would make sense to drop DirectShow in the process.
The Tegra SoCs also don't support CUDA/CUVID, they have their own interface to the video decoder. You don't just "port" stuff to that, you have to rewrite it.
Its pretty clear that you're no developer, and that you also have no insight into the technology involved.
You're free to state your opinion of course, but your tech facts are just false.
Virtual_ManPL
21st May 2011, 22:41
I stated many times that I'm not software developer, so you can laugh at me guys.
But thanks that some will correct me about it.
Windows 8 won't have DirectShow. It will be completely replaced by Media Foundation, based on what I read on M$ TechNet and some other sites.
EDIT:
If we joking, have same more :p
http://www.businessballs.com/images/treeswing/treeswing-copy-softwarebook.jpg
nevcairiel
21st May 2011, 22:51
Here is a more modern version. :p
http://alonsorobles.com/wp-content/uploads/2011/01/tree_swing_development_requirements.jpg
We have that hanging in the office at the wall somewhere. :p
andyvt
21st May 2011, 23:03
If you looking about tests, just go to some hardware site and look for CPU tests... or do it in your PC, this will be the most reliable
Simple test on my dev PC
static void Main(string[] args)
{
DateTime startTime = DateTime.Now;
int i = 0;
for (int yo = 0; yo < Int32.MaxValue; yo++)
i++;
TimeSpan tsTake = DateTime.Now - startTime;
Console.WriteLine("{2} Iterations Took:{0} Platform: {1}", tsTake, (IntPtr.Size == 8 ? "x64" : "x86"), Int32.MaxValue);
}
2147483647 Iterations Took:00:00:04.2972458 Platform: x86
2147483647 Iterations Took:00:00:05.2703014 Platform: x64
andyvt
21st May 2011, 23:10
Windows 8 won't have DirectShow. It will be completely replaced by Media Foundation, based on what I read on M$ TechNet and some other sites.
When MS removes VFW you might be able to make that argument.
Virtual_ManPL
21st May 2011, 23:49
CPUIDMP
Phenom Phenom
3.0 GHz 3.0 GHz
32 bit 64 bit
Separate Tests
32 bit SSE MFLOPS 11981 12013
32 bit Integer MIPS 9015 8279
Two Threads
32 bit SSE MFLOPS 12012 12042
32 bit Integer MIPS 9027 8265
Four Threads
32 bit SSE MFLOPS 12005 11996
32 bit Integer MIPS 9029 8265
32 bit SSE MFLOPS 11991 12004
32 bit Integer MIPS 8270 9030
WhetsMP
Phenom 3.0 GHz 32 bit compilation
MFLOPS Vax MWIPS MFLOPS MFLOPS MFLOPS Cos Exp Fixpt If Equal
Gmean MIPS 1 2 3 MOPS MOPS MOPS MOPS MOPS
1675 25786 6353 1818 1780 1453 138 95 4986 5385 5109
Thread 1 900 870 721 69 47 2512 2898 3995
Thread 2 918 910 732 68 48 2473 2487 1113
Phenom 3.0 GHz 64 bit compilation
1486 34935 6892 1808 1451 1252 199 93 4964 5804 11837
Thread 1 900 724 751 100 46 2482 2893 10625
Thread 2 908 727 501 99 47 2483 2912 1211
BusMP
Speed In MBytes/Second
Phenom 3 GHz DDR3 Phenom 3 GHz DDR3
32 Bit 64 Bit
CPUs Inc64B RdAll SSE2 Inc64B RdAll SSE2
L1 6KB
1 14041 13617 23847 23804 24340 23800
2 18754 25133 47214 22114 29916 47175
% 134 185 198 93 123 198
L2 96KB
1 1496 12878 23879 2986 21594 23822
2 2974 25520 47516 5676 27000 47542
% 199 198 199 190 125 200
L3
1 841 10107 13311 1499 11256 11967
2 1492 18736 25895 2788 15690 22640
% 177 185 195 186 139 189
RAM 128MB
1 454 5212 7289 897 5792 7372
2 760 8959 12146 1477 8734 12124
% 167 172 167 165 151 164
Now run some programs like I said above instead of testing synthetic "benchmarks"
Play with AutoCAD 2012 or Blender (even cold start loading is faster), comperes sth with archiver, encode/convert some audio or video stream or even recompile e.g. new kerner in Linux
andyvt
22nd May 2011, 00:36
Now run some programs like I said above instead of testing synthetic "benchmarks"
Play with AutoCAD 2012 or Blender (even cold start loading is faster), comperes sth with archiver, encode/convert some audio or video stream or even recompile e.g. new kerner in Linux
I don't think anyone said that x86 is always faster than x64. There are certainly scenarios where x64 is quite a bit faster (mostly limited to applications that need to work with large amounts of memory or that can take advantage of x64 only CPU instructions).
Where your assertion (http://forum.doom9.org/showpost.php?p=1502625&postcount=620), or at least how I read it, was that x64 is always faster and that I just needed to test it on my PC (http://forum.doom9.org/showpost.php?p=1502745&postcount=631) - which simply isn't true (http://forum.doom9.org/showpost.php?p=1502757&postcount=635).
madshi
22nd May 2011, 09:21
I stated many times that I'm not software developer, so you can laugh at me guys.
We do, thanks.
Virtual_ManPL
22nd May 2011, 11:15
@ andyvt - you miss "perfect world" and "dream mode", I not stated anywhere that 64bit is always faster
@ madshi - same here, when I hear 32>64
OK, end of offtop... looks like army defending the 32bit base it to strong here... ;)
nevcairiel
22nd May 2011, 11:36
In the long run, 64-bit will be better, and its the future. But in the here and now, there is just no advantage in using it, and the time needed to make everything work on 64-bit is better spend on other things.
We aren't strictly defending 32-bit, we are just pointing out the obvious flaws and errors in your arguments for 64-bit.
Didée
22nd May 2011, 16:17
Looking at x264 as a practical example - - i think the over-the-thumb number is that x264_64 is roughly ~15% faster, isn't it?
15% faster is a worthwile improvement. But it isn't exactly earthshattering, either. If in the context of a (much less complex) decoder there would be a 10% speed gain, well .... nice to have, but anything but critical.
@ Virtual_ManPL:
if you're in need of a x64-GPU-decoder so urgently - nobody forbids you to write one! Go ahead! :)
SamuriHL
22nd May 2011, 16:28
64 bit makes sense in my world....the world of video editing. It eats memory like there's no tomorrow. Besides, your theoretical 15% gain comes from _CPU_ decoding, *NOT* GPU decoding as Nev has already mentioned. I'd be willing to bet that Nev is quite correct that GPU decoding isn't going to benefit at all from 64 bit. And if the decoder isn't benefiting from 64 bit, the rest of your architecture doesn't make sense, either. A renderer isn't going to benefit from it. The player in theory might, but, without a decoder or renderer, that's wasted. So, the reality is you really need the entire architecture to move to 64 bit, and today, there's not really a benefit to doing that. On the contrary, if we ask madshi to make a 64 bit madVR, and Nev to make a 64 bit decoder, then they're taking time away from other useful features that could be done. madshi has always said the minute someone comes to him with a CLEAR and CONCISE reason to move to 64 bit that isn't based upon speculation and opinion, that he'd at least consider the time and effort. Until then, good luck with that. So argue away on this all you want. The fact is you have the job of convincing the developers to change their minds. And to do that is going to take actual *FACT* with solid evidence.
roozhou
22nd May 2011, 17:13
Looking at x264 as a practical example - - i think the over-the-thumb number is that x264_64 is roughly ~15% faster, isn't it?
Where did you get that 15%?
To say a few words about x64 support. For my tests with the CUDA video encoder I get a significant higher performance with the x64 build than with the x86 build (on a x64 system, the x86 build on a x86 system is quiet as fast the x64 build on a x64 system) with the same code (250 to 350 fps for a 720x576 video).
Beside the performance (at least on the encoder side, but as much I have seen a lot of CUDA code is faster with native x64) there is an argument for a x64 build. x86 path on a x64 system is completely seperated from the x64 path. All codecs (VfW als well as DirectShow, MTF or ActiveX elements) have to be present twice. x86 software can not see the x64 components (on process level).
I had no problem to compile a x64 version from the GIT repository. The only thing I had to do is to deactivate the SSE YV12 conversion (to have no or slow YV12 conversion is no drawback for me).
nevcairiel
23rd May 2011, 16:52
Speed enhancements in *encoding* are totally unrelated to decoding. LAV CUVID also doesn't use CUDA, it just sends the video frame to the hardware, and that does its mojo then. I doubt its *any* faster on x64, as the decoding hardware is the bottleneck, not my wrapper around it.
Like i said earlier, if you desperately want x64, the source is available, get a SDK with x64 compat, and go nuts.
HeadlessCow
23rd May 2011, 18:32
There's an x64 version of DGIndexNV (Donald Graft's CUVID decoder app/avisynth filter), so you can check it yourself if you have a license to it or I will check it when I get home and then we can end this sidetrack into x64 performance.
BeNooL
24th May 2011, 18:36
So I now moved to Windows 7 x64 and gave this filter a new try...unfortunately I still can't get it to work.
I'm using all 32bits Direct Show components (MPC, ffdshow, etc); installed the VC++2010 redist libs, registered the filter (with regsvr32 from SysWOW64); forced CUVID as preferred in MPC-HC External filter........and it is still ffdshow that's gets loaded.
Any idea what I could be missing?
Hardware is a 8600 GTS so a VP2 with Feature Set A according to wiki. 266.58 Nvidia drivers installed (and CUDA working fine with BOINC for example)
nevcairiel
24th May 2011, 18:56
Didn't you have the NVIDIA card just as a secondary card without screen connected?
Thats probably causing it. :p
I'll add some debug output at some point to maybe get an idea of whats going on. Won't be that soon however, i have other things to work on right now.
BeNooL
24th May 2011, 19:02
yes that's it, the main card is an ATI and has the screens connected to it.
mindbomb
24th May 2011, 19:30
does anyone know what happens if you try to use this on a laptop with switchable graphics?
does it automatically switch to the nvidia card and all is good?
nevcairiel
24th May 2011, 19:31
You'll probably have to force usage of the NVIDIA card.
jakmal
24th May 2011, 19:35
Sorry for the noobish questions:
1. I noticed that LAV CUVID makes use of the GPU for deinterlacing. Will the deinterlacing algorithms still be effective if the Deinterlacing option is turned off in the NVIDIA Control Panel?
2. If I use LAV CUVID in MPC-HC with EVR Custom Pres., are the post processing options such as Edge Detection / Sharpening / Dynamic Contrast set in the NVIDIA Control Panel effective?
nevcairiel
24th May 2011, 19:37
1. I noticed that LAV CUVID makes use of the GPU for deinterlacing. Will the deinterlacing algorithms still be effective if the Deinterlacing option is turned off in the NVIDIA Control Panel?
Easy enough to test, but i want to say "yes"
2. If I use LAV CUVID in MPC-HC with EVR Custom Pres., are the post processing options such as Edge Detection / Sharpening / Dynamic Contrast set in the NVIDIA Control Panle effective?
I'm quite positive they are, as thats (hopefully) independent of the source of the video. To the renderer, LAV CUVID looks like a "normal" decoder, nothing special. Unless those options are limited to DXVA, and do not work in general for any other decoders..
Edit:
Quick test shows that Sharpening and Noise Reduction work, as does the output color range. Personally, i cannot see a difference between color enhancement and dynamic contrast on/off, but maybe thats just me or the file i tried..
How do you even turn off deinterlacing? :p
LordMerlin
25th May 2011, 12:46
Good morning.
Please tell me whether the ability to change the output color format with NV12 such as YUY2 or YV12.
If not, then tell me how to configure ffdshow, which will be located in the column after LAVCUVID, that those people were of normal color and not blue?
nevcairiel
25th May 2011, 12:50
Since LAV CUVID can only output 4:2:0, YUY2 is crap. It can output YV12 however.
Its a bug in ffdshow, so you should really bring this up with the ffdshow folks.
Anyhow, just configure the ffdshow raw decoder to only accept YV12, and not any other formats, that will force LAV CUVID to output YV12.
In a future version, you'll also be able to force a pixel format in LAV CUVID.
LordMerlin
25th May 2011, 15:07
Thenk's for you. I will try this tonight.
HeadlessCow
26th May 2011, 04:05
This took a couple days longer than I meant for it to, but here are the results of 64-bit CUVID vs 32-bit CUVID (using the two sample videos from the DGDecNV benchmark thread).
Ratatouille Segment:
32bit - FPS: 64.34
64bit - FPS: 64.38
Clash of the Titans Trailer:
32bit - FPS: 110.41
64bit - FPS: 110.40
No performance difference at all (as expected).
mark0077
26th May 2011, 22:08
Use 64bit versions of avisynth / ffdshow and run some frame interpolation scripts that are very hefty on memory usage and take advantage of 64bits. See the difference then ;) 64bit has no real advantage as far as I can see other than when people push their HTPC's to the max where 64bit of certain pieces of software can yield significant performance boosts or take advantage of the +3gb memory limit. It could be the difference between you reaching your target interpolated frame rate or not, ie playable or not.. Not many people need this though but good to have it its not a huge task to add 64bit versions of software.
HeadlessCow
26th May 2011, 22:39
But that's not relevant to whether or not nev should spend time fixing issues that are preventing LAV CUVID from being ported to x64. For what you can use it for, there's no difference in speed at all.
mark0077
26th May 2011, 23:40
true true, nev can do what he likes as can any developer. All I'm sayin is no matter how many paragraphs people write on forums that 64bit has no benefit, its not strictly true and some people, although probably a very tiny majority, will benefit from it.. keyword, tiny :)
SamuriHL
26th May 2011, 23:49
Yea, well, even my assumption that it'd benefit me doing video editing was proven wrong. I asked the VRD devs about it and they showed me why video decoding/encoding won't benefit from 64 bit at all. The memory usage for even a few frames of video is very small. They require raw CPU/GPU power, not memory. The numbers they showed didn't see any significant difference between 32 and 64 bit as far as video encoding or decoding is concerned. In short they have absolutely no plans to move to 64 bit.
SamuriHL
27th May 2011, 00:13
Is there any benefit to building against this?
namaiki
27th May 2011, 02:21
does anyone know what happens if you try to use this on a laptop with switchable graphics?
does it automatically switch to the nvidia card and all is good?
Do you mean the old manual switching nVIDIA Hybrid Graphics, or the newer and software driven nVIDIA Optimus?
mindbomb
27th May 2011, 04:25
nvidia optimus
namaiki
27th May 2011, 05:21
Oh, it's CUDA so I think it should automatically call for usage of the nVIDIA GPU.
It would work, but it would also eat up battery life.
nevcairiel
27th May 2011, 06:59
Is there any benefit to building against this?
It offers x64 support again, afaik, other then that, the only difference is a higher driver requirement. (for this use-case)
e-t172
27th May 2011, 07:37
Use 64bit versions of avisynth / ffdshow and run some frame interpolation scripts that are very hefty on memory usage and take advantage of 64bits. See the difference then ;) 64bit has no real advantage as far as I can see other than when people push their HTPC's to the max where 64bit of certain pieces of software can yield significant performance boosts or take advantage of the +3gb memory limit. It could be the difference between you reaching your target interpolated frame rate or not, ie playable or not.. Not many people need this though but good to have it its not a huge task to add 64bit versions of software.
But that's not relevant to whether or not nev should spend time fixing issues that are preventing LAV CUVID from being ported to x64.
Actually, it is. If LAV CUVID is restricted to 32-bits, it means all other filters are restricted to 32-bit. Which means an ffdshow video filter would be restricted to 32-bit. Which means the Avisynth plugin in ffdshow would be restricted to 32-bit. Which means Avisynth would be restricted to 32-bit. Which means mark0077's frame interpolation filter is restricted to 32-bit. So in the end, mark0077's cannot benefit from the advantages of 64-bit for its frame interpolation filter.
The main problem with the whole 32/64 bit issue is not about the offending filter itself. The main problem is, if a filter is only available in 32-bit, you can't connect it (directly or indirectly) to any 64-bit filter. Thus the 32-bit only filter "contaminates" the whole playback chain. This could make a difference if you're using CPU-intensive, memory-hungry filters in said chain like mark0077 does.
robpdotcom
27th May 2011, 07:58
I think some people should be more appreciative of the work the developers are doing - which they are doing for free - and not bug them with requests that they have already made clear they are not interested in implementing.
Developers like madshi and nevcairiel could very easily develop these splitters/decoders/renderers/etc., and just keep them all to themselves for their own personal use. Is it not enough that they share their work with us, work out bugs that probably would never affect them, and give us nice GUI's that most of us would be totally lost without?
I think there should be a lot less bugging, and a lot more butt kissing.
I'm not directing this any anyone personally, and I'm not interested in getting in some web argument over it, but it just seems to me that there isn't near enough appreciation for the work these guys do.
ppp0941
27th May 2011, 08:39
using this decoder,I got a serious problem
The motion of music video (XVID) I played become not smooth
(using default setting or "no DXVA interpo and Double Framing")
At the first time, I thought it was a problem because of not using reclock
But later, I find that was a problem caused by LAV CUVID DECODER
And I'm 100% sure about this
And there's also one thing I don't understand
why the output aspect will be 1.98:1 instead of 1.77:1 when playing 16:9 movies using CUVID?
madvr pin info:
- Connection media type:
Video: NV12 2048x810 (16:9) 29.97fps
but the movie is 1440x810
LordMerlin
27th May 2011, 09:04
Hi all.
The question arose, if my motherboard has built-in Nvidia 9400 and still have a discrete 430 then can we unite as a power. Or for example to choose to what specific device will be decoding?
nevcairiel
27th May 2011, 09:13
Its currently not possible to choose which card does the decoding, it'll pick the first one it finds thats CUDA compatible.
It may be possible to add this in the future.
And there's also one thing I don't understand
why the output aspect will be 1.98:1 instead of 1.77:1 when playing 16:9 movies using CUVID?
madvr pin info:
- Connection media type:
Video: NV12 2048x810 (16:9) 29.97fps
but the movie is 1440x810
Don't worry about this. The renderer requests a certain stride, so the video frame is extended to 2048 pixels, but it still only contains 1440 pixels. In the Media Type, you can see the actual size in the rcSource/rcTarget elements.
As you can see in the line you posted, the Aspect Ratio of 16:9 is also not lost.
ney2x
27th May 2011, 11:13
using this decoder,I got a serious problem
The motion of music video (XVID) I played become not smooth
(using default setting or "no DXVA interpo and Double Framing")
At the first time, I thought it was a problem because of not using reclock
But later, I find that was a problem caused by LAV CUVID DECODER
And I'm 100% sure about this
Same here, avi's (DivX) doesn't play smoothly but H.264 videos are smooth. Using GTX 560 Ti, latest MPC-HC, LAV Filters, madvr/EVR, Reclock. The reason I am reporting avi problems is because I got rid of other codecs installed in my system and I'll be using LAV CUVID as my main decoder.
ppp0941
27th May 2011, 11:48
Using GTX 560 Ti, latest MPC-HC, LAV Filters, madvr/EVR, Reclock.
I've just found that reclock can't work with LAV CUVID DECODER
The clock never show green since using CUVID
(oh yes..wrong setting..sorry:stupid:)
nevcairiel
27th May 2011, 12:06
I've just found that reclock can't work with LAV CUVID DECODER
The clock never show green since using CUVID
Then you're using it wrong.
Its working just perfectly for me in conjunction with ReClock.
HeadlessCow
27th May 2011, 16:14
yes that's it, the main card is an ATI and has the screens connected to it.
If you try to insert LAV CUVID into the filter graph using GraphEdit, do you get this error?
---------------------------
GraphEdit
---------------------------
These filters cannot agree on a connection. Verify type compatibility of input pin and output pin.
No combination of intermediate filters could be found to make the connection. (Return code: 0x80040217)
---------------------------
OK
---------------------------
I've got a GF 240 as a secondary card that I use for other CUDA/CUVID stuff, but I'm having trouble getting LAV CUVID to work and was wondering if I was having the same issue as you :)
kennae
27th May 2011, 17:54
I myself use CUVID for everything else than xvid since it doesnt seem to work for me. Just a black screen.
I use madvr, lav filters, ffdshow (for sharpen and deband), lav cuvid and ac3filter. This isn't really a problem since I can use ffdshow video for xvid, but would be nice to let CUVID do all the decoding.
nevcairiel
27th May 2011, 18:00
Sounds like your hardware just doesnt support it.
H264, VC1 and H264 will work on all cards that are at least VP2. They'll use partial or full acceleration, depending how its available.
MPEG-4 ASP (XVID) is only supported on VP4 cards, thats all 4xx/5xx, and a few 2xx cards, like the 240.
I do plan to detect this automatically in the future, so that it will refuse XVID decoding if its not supported.
ney2x
27th May 2011, 18:37
@nevcairiel
Avi (XviD) doesn't play smoothly (stutter) on my setup. I have GTX 560 Ti and using latest MPC-HC v.1.5.2.3154. In the chains are: LAV Splitter --> LAV CUVID --> madvr --> LAV Audio --> Reclock. Already tried to removed reclock, same result and replaced madvr with EVR, same result. What do you think is the culprit?
nevcairiel
27th May 2011, 18:42
Repeating your problem will not magically solve it.
AVI files are just crap, they don't have proper timestamps, and as soon as you have a format with B-Frames, all hell breaks lose. Maybe this can be improved at some point, but if you suffer from the issue, i recommend using another decoder.
kennae
27th May 2011, 20:45
Sounds like your hardware just doesnt support it.
H264, VC1 and H264 will work on all cards that are at least VP2. They'll use partial or full acceleration, depending how its available.
MPEG-4 ASP (XVID) is only supported on VP4 cards, thats all 4xx/5xx, and a few 2xx cards, like the 240.
I do plan to detect this automatically in the future, so that it will refuse XVID decoding if its not supported.
Thanks for clearing this up. I have GTX 260.
nevcairiel
27th May 2011, 20:50
Yes, the 260 only is VP2, no XVID support there.
Nevilne
27th May 2011, 22:00
Love this decoder, but can't quite set it as default because:
-Crashes on vfr content
-Seeking multiple times locks the player
And my video card is too slow for 60fps or 1080p content, would it be possible to make it fallback to other decoders as a preset/rule?
nevcairiel
27th May 2011, 23:15
If you hand off 1080p decoding to a software decoder again, you could just use that software decoder for all your content. I see no point in using this.
ney2x
28th May 2011, 04:02
Repeating your problem will not magically solve it.
AVI files are just crap, they don't have proper timestamps, and as soon as you have a format with B-Frames, all hell breaks lose. Maybe this can be improved at some point, but if you suffer from the issue, i recommend using another decoder.
Thanks for the explanation regarding avi files... Hope to see an improvement regarding this.:helpful:
sparksab
28th May 2011, 16:31
AVI files are just crap, they don't have proper timestamps, and as soon as you have a format with B-Frames, all hell breaks lose.
What about remux to MKV to resolve this problem ?
Cyber-Mav
28th May 2011, 23:38
Love this decoder, but can't quite set it as default because:
-Crashes on vfr content
-Seeking multiple times locks the player
And my video card is too slow for 60fps or 1080p content, would it be possible to make it fallback to other decoders as a preset/rule?
what card do you have?
roozhou
29th May 2011, 02:52
Repeating your problem will not magically solve it.
AVI files are just crap, they don't have proper timestamps, and as soon as you have a format with B-Frames, all hell breaks lose. Maybe this can be improved at some point, but if you suffer from the issue, i recommend using another decoder.
H264 in AVI is actually AnnexB in AVI. If you cannot handle H264 in AVI correcly, you probably cannot handle elementary stream either.
nevcairiel
29th May 2011, 09:29
I thought we were talking about XVID. :p
ney2x
29th May 2011, 12:10
I thought we were talking about XVID. :p
Just want to say that Im talking about XVID not H264 in AVI.
Anyways, I finally managed to smoothly play AVI's using LAV CUVID, but, ffdshow is in the chain (ffdshow raw video).
External Filters in MPC-HC are as follows:
1. File Source (ASync.)
2. LAV Splitter
3. LAV CUVID Decoder
4. ffdshow Video Decoder
5. LAV Audio Decoder
* all prefer under merit
CruNcher
29th May 2011, 15:04
Just want to say that Im talking about XVID not H264 in AVI.
Anyways, I finally managed to smoothly play AVI's using LAV CUVID, but, ffdshow is in the chain (ffdshow raw video).
External Filters in MPC-HC are as follows:
1. File Source (ASync.)
2. LAV Splitter
3. LAV CUVID Decoder
4. ffdshow Video Decoder
5. LAV Audio Decoder
* all prefer under merit
hmm is your renderer output NV12 or YV12 ?
could you please try to reproduce this http://forum.doom9.org/showpost.php?p=1501021&postcount=559 with your Vista/7 Aero setup ?
ney2x
29th May 2011, 16:12
@CruNcher
I read somewhere in ffdshow thread that NV12 has bug that's why I ticked/used only YV12, and it's the best colorspace for madvr.
CruNcher
29th May 2011, 16:21
yeah i guess no further testing is needed and it's indeed the NV12 code (also tests with other colorspace converter show this) but it would be good to be absolutely sure :) so thick NV12 and if you get the same gray scale half green output like show in the screenshot in my post then we would have another hit (madvr) also i would like to know if EVR crashes like VMR does on XP :)
adam777
29th May 2011, 16:30
@CruNcher
I read somewhere in ffdshow thread that NV12 has bug that's why I ticked/used only YV12, and it's the best colorspace for madvr.
There WAS a bug, already fixed :)
ney2x
29th May 2011, 17:16
There is a half-green output here when I tick NV12, using the filters in my last post and using madvr. But, EVR-CP has no green output (perfect output).
Config 1 = half green
Windows 7 x64 Ultimate (Aero On), LAV Filters 0.28, LAV CUVID 0.6, ffdshow rev.3861 (NV12), Reclock 1.8.7.5, MPC-HC 1.5.2.3158, madvr 0.61
Config 2 = smooth (no half green or whatsoever)
same as above except renderer, EVR-CP
SamuriHL
29th May 2011, 17:23
I've seen that, as well.
nevcairiel
29th May 2011, 17:31
Known problem in ffdshow raw and NV12. And no, it was not fixed.
markanini
29th May 2011, 19:48
Known problem in ffdshow raw and NV12. And no, it was not fixed.
That clears up the issues I had.
betaking
30th May 2011, 04:29
TO:nevcairel can you make no longer required to be installed VC2010 runtime a new build ?like lav filters?
ranpha
30th May 2011, 06:42
TO:nevcairel can you make no longer required to be installed VC2010 runtime a new build ?like lav filters?
If you build LAV CUVID Decoder from the source, the requirement isn't needed anymore.
nevcairiel
30th May 2011, 07:19
Indeed, its already been changed, and the next version wont require it anymore.
Indeed, its already been changed, and the next version wont require it anymore.
How long will be the next version come out?
or would you build it for us?
I have vc2008...:eek:
roozhou
30th May 2011, 14:28
How long will be the next version come out?
or would you build it for us?
I have vc2008...:eek:
My build:
http://www.mediafire.com/?lg67wlbe6ptklmn
My build:
http://www.mediafire.com/?lg67wlbe6ptklmn
:helpful:
3Q!
ney2x
1st June 2011, 18:16
My problem with AVI (DivX/XviD) solved with 275.33 driver. It's time to get rid of ffdshow now.
Question: Regarding H.264 videos, does ffdshow filters like deinterlacing, deband, sharpen, etc. works when LAV CUVID is in used and ffdshow (raw) in chain? Cause I don't notice any difference :)
nevcairiel
1st June 2011, 18:17
Interesting that they fixed the timing issues with the driver update. :)
ffdshow should work, just make sure to force ffdshow to only accept YV12 input, as NV12 is broken in ffdshow.
ney2x
1st June 2011, 18:18
Interesting that they fixed the timing issues with the driver update. :)
ffdshow should work, just make sure to force ffdshow to only accept YV12 input, as NV12 is broken in ffdshow.
Thanks for your quick reply! I better sleep now, tomorrow will be movie marathon... :thanks:
jazzysmooth
1st June 2011, 22:17
Still can't use cuvid with any driver higher than 270.51 with my onboard GF9300. Oh well...
Blue_MiSfit
2nd June 2011, 03:50
Will this decoder work if I'm connected to the system via RDP?
DGDecNV does not, so I'm not expecting this to either, but I figured it was worth a shot :)
I don't currently have a system available via RDP that has the correct hardware, otherwise I'd just test. Actually... I will test when I get home :devil:
Derek
SamuriHL
2nd June 2011, 03:53
No. RDP uses its own virtual video driver. Doesn't work with AMD, nVidia, or any other hardware that I'm aware of.
nevcairiel
2nd June 2011, 14:32
LAV CUVID Decoder 0.7
0.7 - 2011/06/02
- x64 support
- The VC2010 runtime is no longer required
- New SSE2 NV12->YV12 conversion
- Improved CUDA GPU detection
Download: 32-bit (CUDA 4.0+) (http://files.1f0.de/cuvid/LAVCUVID-0.7.zip) - 64-bit (CUDA 4.0+) (http://files.1f0.de/cuvid/LAVCUVID-0.7-x64.zip) -- 32-bit (Older CUDA) (http://files.1f0.de/cuvid/LAVCUVID-0.7-LegacyCUDA.zip)
So, finally a new version. I still have some more changes planned for the near future, but felt like releasing this today.
First, on the different version:
- The "normal" 32-bit (and 64-bit) require a CUDA 4.0 Driver now (270 series)
- The "Old CUDA" build was compiled against an old CUDA API, and should work with a whole load of older drivers, at least in theory. This is not available for x64 at this time, because of recent changes in the 64-bit CUDA APIs.
For proper support, i rewrote the NV12->YV12 conversion using SSE2 intrinsics, so that the x64 folks don't have to use the slow pure C conversion. This of course means that SSE2 is now required, but seriously, invest in an upgrade if you don't have SSE2 support.
Oh, and hopefully LAV CUVID should now also work with cards that are not connected to a display.
SamuriHL
2nd June 2011, 14:35
Nice! Thanks, Nev!
ney2x
2nd June 2011, 15:13
You're the best Nev! I think you have the right to ask for donations for your effort!
LAV CUVID = free and updates once, twice and even thrice a month!
CoreAVC = $12.95 and update once a year! :(
*** There's no flame here, I just want to be honest! :D
Carpo
2nd June 2011, 17:20
now all we need is madVR x64 :p testing new LAV CUVID now
edit: xvid also working for me now :)
CruNcher
2nd June 2011, 17:37
http://mirror05.x264.nl/CruNcher/pperf/ <- no improvement yet (the low performance 60fps issue after xx seconds is still their with Lav Cuvid)
nevcairiel
2nd June 2011, 17:38
Where did it say its faster now? Your hardware is just too slow. :p
Carpo
2nd June 2011, 17:38
you got a link to that file?
SamuriHL
2nd June 2011, 17:41
Nev, for some reason the x64 build isn't finding the cuda libs for me. I do have both 32 and 64 bit versions of the 4.0 toolkit installed. I'm not feeling all that well right now so I haven't looked into it too much. Just thought I'd mention it. 32 bit version builds fine for me.
nevcairiel
2nd June 2011, 17:42
You need to make sure the CUDA_PATH environment variable points at the x64 version. Also, you only need to install the x64 version, it includes the 32-bit libs as well. (and i only tested with the 4.0 SDK, 3.2 is known to be broken for x64, older version i dont know)
SamuriHL
2nd June 2011, 17:45
Ah, kuel. I didn't know that. I'll remove the 32 bit version and point it to the 64 bit version. Thanks!
Yup, that worked. Awesome!
CruNcher
2nd June 2011, 17:59
Carpo:
http://e.dl.playstation.net/e/wipeouthd/assets/WipEoutHD_EN_1080p.zip
another one failing
http://www.fileplanet.com/219665/210000/fileinfo/Battlefield-3-%27Fault-Line%27-Complete-12-Minute-HD-Gameplay-Footage
though 60 fps Full HD H.264 Inet content is still rare (mostly used for PC/Console Game marketing) ;)
Nope my Hardware isn't to slow see Cyberlinks Decoder and CPU usage (you would like it to be i know, @ least the VP2 can't be the culprit here, i agree that it could be the Nvcuvid API under XP as all Nvcuvid API based decoder show this performance issue, though other DXVA1 decoder also fail so it's not really that issue either) ;)
Carpo
2nd June 2011, 18:07
i will have to grab the Battlefield demo later, in the ISP's capping zone atm :(
edit: playstation link is slow as hell, 20K :( might be able to get the other one when this one finishes :D
ney2x
2nd June 2011, 18:20
http://mirror05.x264.nl/CruNcher/pperf/ <- no improvement yet (the low performance 60fps issue after xx seconds is still their with Lav Cuvid)
@CruNcher, What is you GPU? I think it's time for you to upgrade OS and especially hardware (affordable GTX 460, GTS 450 or GTX 550)
Maybe hardware limitations.
Tested:
Windows 7 and Windows XP / GTX 260 = smooth and sailing :)
Windows 7 and Windows XP / GTX 560 Ti = smooth and sailing :)
Didée
2nd June 2011, 18:24
@ CruNcher - is it sure that Cyberlink is decoding all frames? It's bit hard to tell from your screen-recording, but it seems to me that Cyberlinks decoder isn't fluid, but is dropping frames. In that case, the riddle's solution could be that Cyberlink's decoder is using a smarter workaround-strategy (skipping B-frames, maybe?), and LAVCUVID simply tries to decode everything, and when the decoder can't keep up anymore, it gets into re-syncing issues ...
Bottom line: I think VP2 is too weak for high-bitrate 1080p60. :)
(This would be conform with results from the "DGDecodeNV benchmark thread", where VP2 cards IIRC are ~around~ 60fps (often below that) for 1080 content.)
nevcairiel
2nd June 2011, 18:37
I've been trying to tell him that for ages. The Cyberlink decoder is the only decoder that manages to play 60p streams on his hardware, all others fail.
Its still my opinion that the Cyberlink Decoder does something special to get fluid playback, dropping some frames internally is of course one option.
VP2 is not fast enough to reliably decode 60p, and that'll never change.
CruNcher you can stop annoying everyone with your posts now, it'll never ever be fixed.
CruNcher
2nd June 2011, 18:38
Yes, that dropping is because of the x264 recording overhead (actually even not entirely also the capture is complex on XP) , im working on better 60 fps recording results but you can guess it's not easy, especially when you have additionally stuff like process explorer running with high precision timing ;) And nope lossless would be to easy ;)
also Didée it depends on the complexity of the bitstream those 2 aren't very complex the 2 Girls bitstream for example is much more complex (x264) http://forum.doom9.org/showthread.php?p=1490026#post1490026 and their i would agree VP2 being to weak but also only a tad (though re-syncing drops happens anyways as you said with it) :)
The problem is also only visible with VMR9 Renderless DXVA1, only Cyberlinks Decoder manages it so far with excellent jitter results CoreAVC DXVA avoids it now by switching into Software Decoding :)
see current situation http://forum.doom9.org/showthread.php?p=1488268&post1488268
And yeah i guess this Cyberlink Decoder behavior will stay a mystery, (my guess is excellent tuning maybe with NDA knowledge) :)
nevcairiel
2nd June 2011, 21:20
Request for samples
I'm looking to implement IVTC decimation in LAV CUVID, but to get this to work reliably, i could really need alot of samples, preferably of different video codecs, to test against.
All i have right now is a NTSC DVD Set, but i realize that broadcasts are probably much harder to deal with then DVDs, so i'm looking for all sorts of TC'ed material to test with.
To summarize, i'm looking for NTSC Telecined samples - that is 24p content telecined to 30p/60i.
The samples should be at least 30s long so i can test the detection properly. Cool would be samples of all relevant video codecs, mostly H264 and MPEG-2, i guess. Different resolutions welcome.
I can provide upload space on my FTP if anyone has a large collection of samples, and wants to help.
I'll offer more technical/implementation details as the code progresses, in case anyone is interested.
SamuriHL
2nd June 2011, 21:44
I don't think I have any content like that in my collection. I can look and see what I can find though. Maybe some of my obscure NTSC DVD's might be screwy like that. :)
lsarver
2nd June 2011, 22:56
Request for samples
To summarize, i'm looking for NTSC Telecined samples - that is 24p content telecined to 30p/60i.
The samples should be at least 30s long so i can test the detection properly. Cool would be samples of all relevant video codecs, mostly H264 and MPEG-2, i guess. Different resolutions welcome.
I can provide upload space on my FTP if anyone has a large collection of samples, and wants to help.
I have loads of movies captured from US cable via TiVo S3 and edited in VideoReDo. All are MPEG-2/AC3, 720p or 1080i, 29.97fps. Between my edit points, the cadences should be intact. (I considered IVTCing them with DGwhatever, but gave up: waaay over my head.)
I also have lots of movies captured from Dish Network (Russian cable channels), also edited in VRD. They are MPEG-2/MP2, 480i, 29.97pfs. They also have long GOPs and have been converted D>A>D during capture, so may not be good candidates for IVTC.
Edit: Forgot to mention that all are in .mpg container.
e-t172
2nd June 2011, 23:37
I'm looking to implement IVTC decimation in LAV CUVID
Is this something CUDA offers or are you implementing the IVTC algorithms yourself?
Anakunda
3rd June 2011, 02:02
I must say it doesnot work on my machine. I have nvidia card with CUDA but if I assign in KMPlayer external encoder for Xvid to LAV CUVID, the playback starts but black screen, in filter info I see LAV CUVID is in effect so it must be it...
namaiki
3rd June 2011, 02:05
I must say it doesnot work on my machine. I have nvidia card with CUDA but if I assign in KMPlayer external encoder for Xvid to LAV CUVID, the playback starts but black screen, in filter info I see LAV CUVID is in effect so it must be it...
What is your GPU model and version of Windows?
Anakunda
3rd June 2011, 02:10
What is your GPU model and version of Windows?
It's Windows7, GPU G102M i think.
namaiki
3rd June 2011, 02:19
It's Windows7, GPU G102M i think.
nVIDIA GPU with VP3 does not support DivX decode, only the next generations.
roozhou
3rd June 2011, 04:20
Hi nevcairiel,
I have a large collection of telecined clips, most of which were uploaded by D9 users. Some of them are very difficult to deal with.
I added an IVTC filter to x264. It's working fine with most "regular" telecined materials. I will be happy to give help if you are going to implement an IVTC algorithm in your decoder.
nevcairiel
3rd June 2011, 06:42
I'll let the NVIDIA hardware do the actual IVTC, all i plan to do is remove the duplicate frame that results from this, decimating from 30p to 24p.
I already wrote some code to compare frames, and as long as there is at least some motion in the picture, detecting the duplicate seems straight forward, i can clearly see the cadence in my comparison output (4 good frames, one near-duplicate, on a perfectly regular pattern). Just looking for more samples for comparison and testing.
roozhou
3rd June 2011, 07:02
I'll let the NVIDIA hardware do the actual IVTC, all i plan to do is remove the duplicate frame that results from this, decimating from 30p to 24p.
I already wrote some code to compare frames, and as long as there is at least some motion in the picture, detecting the duplicate seems straight forward, i can clearly see the cadence in my comparison output (4 good frames, one near-duplicate, on a perfectly regular pattern). Just looking for more samples for comparison and testing.
Yes I use SAD to detect near-duplicate frames. You also need to modify timestamps of following frames after decimation.
Anakunda
3rd June 2011, 07:11
nVIDIA GPU with VP3 does not support DivX decode, only the next generations.
Hi does this lowend GPU support decoding AVC via CUDA? I've seen CoreAVC is playing, just dont know if with CUDA support. But anyway the CPU load is noticeably lower than when using conventional codec. What do you recommend in this case, CoreAVC or LAV CUVID?
nevcairiel
3rd June 2011, 07:13
A VP3 GPU should work fine for AVC/H264 movies, only deinterlacing may be a bit too slow on your card.
FWIW, the next version will also contain a black/white list, only enabling XVID decoding on VP4 cards.
All other codecs are supported on VP2/VP3, even if only with partial acceleration.
madshi
3rd June 2011, 07:28
I'll let the NVIDIA hardware do the actual IVTC, all i plan to do is remove the duplicate frame that results from this, decimating from 30p to 24p.
Haha, great minds think alike, I guess... :p I'm a bit worried, though, if this will really work perfectly. E.g. what happens if the hardware deinterlacer thinks that some parts of the image are "video" content? In that case a few pixels of the "duplicate frame" will still be different. No problem if the output stays 30p. But if you try to throw away duplicate frames, this might become problematic. Especially if you want to really change output to 24p "officially" via media type information etc. In that case you're forced to throw away frames at a regular basis. What if the hardware deinterlacer isn't clear about which frames are duplicates and which are not? Of course you could pick the frames with the smallest differences to throw away. But what if there's e.g. an advertising break in a broadcast? Ads are often video mode, I think. Will you switch output to video mode then for the duration of the ad? Or what if there's a video mode scrolling text over the movie (end credits) for movies made for TV? I'm not sure about all this myself...
But I guess for many cases a rather "simple" solution like this will probably work just fine.
nevcairiel
3rd June 2011, 07:29
Let me guess, you did that in madVR for the next version? :p
madshi
3rd June 2011, 07:36
Let me guess, you did that in madVR for the next version? :p
No, I've not worked on deinterlacing for madVR yet. But of course I'm sometimes thinking ahead of how to do something, and I had the same idea you had... :)
But please look at the edit in my previous comment for some worries I'm having about this solution.
nevcairiel
3rd June 2011, 07:43
For one, i won't force IVTC, the user has to actively enable it, the default will remain video-mode deinterlacing.
I'm unsure how to handle mixed content. I think i would just stop dropping frames if the cadence is missing for a period of time (it switched to video content).
I could of course generate a new media type then, but to what end? Switching refresh-rate mid-playback seems really annoying, as it causes a 1-2 second black screen, at least on my hardware.
For "video" on top of "film"- if its really something moving, then the comparison algorithm will detect it as video content, and stop decimating - at least when the limits are set right. If its not moving enough for the comparison to pick it up, well, i would wager you don't notice that i dropped a few frames of it. :p
robpdotcom
3rd June 2011, 08:23
I can get you a bunch of samples with mixed content - I'll post some later today.
e-t172
3rd June 2011, 09:41
2 years ago I developed an IVTC filter inside ffdshow. It worked quite well except is was crashing sometimes. Unfortunately, I never got around to fixing and releasing it, as I stopped watching telecined content (I'm watching TV shows from iTunes now - much better quality than US broadcasts in my opinion).
The interesting thing is, I managed to develop a filter which was both much, much faster (something like 5x-10x faster if I remember correctly) than Decomb and other IVTC filters I tested, and yet was making less "mistakes" (it was very close to perfection, in fact, and even achieved it for most captures I had), even in scenes with very few motion, or scenes with interfering video content (such as animated banners at the bottom of the image). At the time I had a Core 2 Duo E6600 and my filter would IVTC (near-perfect) 1080i30 content with very small CPU consumption (something like 15%), whereas other filters like Decomb were just barely making it to realtime and making mistakes.
In order to achieve this performance, my filter relies heavily on context information: it would use measurements from the last N frames and M buffered future frames. N and M were quite big (15, 30, something like that), so it had a lot of context to use for making decisions. Big N was not really a problem since the filter only saved measurements instead of entire frames ; however, increasing M meant buffering more frames and thus using more memory.
Basically, what made the algorithm so reliable is that it has access to all this context information: it knows what the measurements are not only for the current pattern, but also for last N/5 patterns and the next M/5 patterns. So, for example, if it sees a sequence like this (numbers are measured IVTC pattern positions within 5-frame batches): 3 - 3 - 4 - 3 - 5 - 3 - 3 -3, it knows that there is a very high chance that 3 is the right cadence and 4 and 5 are just "mistakes" from the measurements. Indeed, it took advantage of the fact that 99% of the time, the IVTC cadence is stable and predictable.
Actually the filter was a little smarter than that: if it sees, for example, 3 - 3 - 3 - 3 - 3 - 5 - 5 - 5 - 5, it is able to detect that the IVTC cadence is changing, and will use pattern position 3 for the first 5 batches and pattern position 5 for the last 4 batches, resulting in perfect IVTC. Obviously you need to have a big enough M for this to work properly (but we have so much RAM nowadays, why not use it?). The only corner case where this doesn't work is if the IVTC cadence is changing very frequently (every second or so) but I don't think such problematic content exist (and if it does, shoot the engineer...).
The thing is, this context-aware algorithm is so reliable that even when measuring with heavy subsampling it still manages to avoid mistakes. For example I did some tests with extreme subsampling (using 1% or less of all pixels, resulting in extremely fast measurements), and still got near-perfect playback provided N and M are big enough. In the end it's all about memory (M) VS CPU(subsampling), although the filter is still able to produce very acceptable results only using past measurements (M = 0). My filter took advantage of the fact that when discussing IVTC we have much more memory than CPU in our machines.
Another advantage of being a context-aware filter: most of the time when there is a big, animated banner at the bottom of the screen from the TV network, my filter still manages to IVTC the original, 24p content behind it, whereas other filters get completely confused and make mistakes because of interference from the animation. In other words, it shows very good resistance to noise and interference.
I don't think I'll ever get the motivation to finish my filter (especially now that the code is 2 years old). I'm sharing my findings here so that all this won't be in vain. nevcairiel, this could be useful for decimation (but it is even more useful for someone implementing complete IVTC including decombing). If anyone is interested, I still have my code from 2 years ago (it's a patch to ffdshow-tryouts). I even think I could build it and distribute a "demo" ffdshow.ax, provided my toolchain is still able to compile a two year old ffdshow codebase.
Also, to anyone developing an IVTC filter, some pieces of advice from my own experience with IVTC filter development:
- Don't trust chroma. Only use luma. On most TV broadcasts I've seen chroma is unusable for IVTC because of crosstalk. I don't remember the exact reasons (again, it was 2 years ago), but I remember it was most problematic when the pattern is positioned at the same time as a camera angle change. (chroma is usable for decimating 60p content, however)
- Some telecined content out there is seriously fucked up. At the time I had 1080i captures from a TV show called "The Unit" on CBS. Guess what: sometimes the content was jumping back and forth between soft telecine and hard telecine... several times per minute! Fortunately soft telecine is easy to handle (just average the frame durations), but I had to tweak my filter so that the soft/hard transitions stayed smooth, which was quite "acrobatic". If I remember correctly, other broadcasts from CBS exhibited the same insane behavior.
- As I said above, don't put too much trust on measurements. No matter what measurement algorithm you use, it will be wrong quite often because of noise, compression artefacts and mixed video content. Use context.
- I found that Decomb's measurement method (apply SAD for each 16x16 block and take the maximum of all blocks) gives the best results.
- To further avoid interference from animated banners, add an option to ignore some bottom portion of the image in the measurements.
madshi
3rd June 2011, 10:09
I'm unsure how to handle mixed content. I think i would just stop dropping frames if the cadence is missing for a period of time (it switched to video content).
But is that a good thing if the user sets IVTC to "on"? In that case the display probably runs at 24Hz. Ok, a good video renderer will then do the dropping for you, so I guess it'd be ok. The question is who's in a better position to decide which frames to drop: The video renderer or you? Maybe, if IVTC is activated, you should simply drop the frames with the smallest differences? The renderer will not look at frame differences when dropping frames...
Not sure, just thinking "aloud".
madshi
3rd June 2011, 10:12
@e-t172, why don't you publish your source code? It might be useful, or maybe not. But in any case it's better to publish it than to let it rot without use... :) If you do publish it, please decide on the license (public domain or GPL or [...]). Thx.
e-t172
3rd June 2011, 10:23
You're right. I'll try to compile it and do some basic tests to make sure it at least somewhat works so it can be used as a "demo" for my algorithm, but I don't promise anything. If I remember correctly, I got the algorithm working perfectly but the filter sometimes crashes in certain situations, or just randomly. However, if I'm not mistaken, it at least works for 5-10 minutes before the first crash, so it is still usable as a demo. I'll do my thing and get back to you.
nevcairiel
3rd June 2011, 10:32
I'm at work right now, so i cannot go into too much details on your post, but thanks for the thorough explanation.
I'll of course be working with context on how to decide what to drop, however i'm not sure if i'll be able to have "future" context, as that would require quite some drastic changes and added complexity (the current filter design does not have a concept of buffering frames).
If i can, i would like to get around without future context, but if its necessary and drastically improves precision, i might just do it.
From memory usage, i'm not afraid to use some, as long as we can keep it on an acceptable memory limit (so that 32-bit applications still work perfectly).
e-t172
3rd June 2011, 10:45
I'll of course be working with context on how to decide what to drop, however i'm not sure if i'll be able to have "future" context, as that would require quite some drastic changes and added complexity (the current filter design does not have a concept of buffering frames).
If i can, i would like to get around without future context, but if its necessary and drastically improves precision, i might just do it.
You don't need future context as long as the cadence do not change (i.e. there is no discontinuity in the telecined stream). If the filter only considers past context and stumbles upon a discontinuity, then it will get the pattern position wrong for a certain number of batches (because it'll trust past positions, which is wrong). After that it will pick up on the new pattern position and everything will be right again. So most of the time the IVTC will be perfect, but when a discontinuity occurs, the result will be ugly for X frames after the discontinuity.
In most 1080i30 broadcasts I've seen, these discontinuities are quite rare (except, of course, in case of advertising or packet loss due to reception problems). They do exist, however. Some broadcasts, like the example I gave about CBS, have discontinuities all over the place (switching back and forth between soft and hard telecine) and are nearly impossible to IVTC perfectly without future context.
Also, if you don't have future context, then the first X frames of output (beginning of playback, or seeking) are of course likely to be wrong. In fact, for the first 5 frames, you won't be able to take a decision at all, because you don't even have a complete 5-frame batch to begin with. If you buffer frames, it means you can have context even for the very first frames of the current stream, and so get the first batches right.
From memory usage, i'm not afraid to use some, as long as we can keep it on an acceptable memory limit (so that 32-bit applications still work perfectly).
Well, you can use as much as past context as you want without increasing memory usage (you just have to store the measured pattern positions, not the frames themselves). Memory is only consumed when buffering frames for future context.
madshi
3rd June 2011, 10:55
You're right. I'll try to compile it and do some basic tests to make sure it at least somewhat works so it can be used as a "demo" for my algorithm, but I don't promise anything. If I remember correctly, I got the algorithm working perfectly but the filter sometimes crashes in certain situations, or just randomly. However, if I'm not mistaken, it at least works for 5-10 minutes before the first crash, so it is still usable as a demo. I'll do my thing and get back to you.
Doesn't matter much if it crashes or even if it compiles. Neither nevcairiel nor I will just take your code and use it as it is. But looking at the underlying ideas and concepts might already be useful. More important than making it compile would be to add a bunch of comments explaining what the code does... :)
I can get you a bunch of samples with mixed content - I'll post some later today.
That'd be great.
Difficult to deinterlace samples are always very useful.
e-t172
3rd June 2011, 11:06
Doesn't matter much if it crashes or even if it compiles. Neither nevcairiel nor I will just take your code and use it as it is. But looking at the underlying ideas and concepts might already be useful. More important than making it compile would be to add a bunch of comments explaining what the code does... :)
There are some comments at strategic locations, but not much. The code is somewhat ugly (albeit arguably less ugly that the rest of ffdshow's code). Given that I wrote this code 2 years ago, it is unlikely I will be able to add more comments. That's why I'm trying to make it at least work, so that I'm not distributing broken code which would be even harder to understand (because it doesn't do what it's supposed to do).
roozhou
3rd June 2011, 11:42
Hi nevcairiel,
Why don't you start at pullup filter in mplayer?
LordMerlin
3rd June 2011, 11:56
Good day to all forum users.
Tell me please, video GT430 enough for proper operation of the decoder, or desirable At least 450?
nevcairiel
3rd June 2011, 12:44
Hi nevcairiel,
Why don't you start at pullup filter in mplayer?
I looked at several algorithms already, including the ones in the mplayer postprocessing library, thats not the problem.
ney2x
3rd June 2011, 12:51
Good day to all forum users.
Tell me please, video GT430 enough for proper operation of the decoder, or desirable At least 450?
GT430 is VP4 and Feature Set C according to wikipedia (http://en.wikipedia.org/wiki/Nvidia_PureVideo) . I think thats enough.
nevcairiel
3rd June 2011, 13:49
I would always go with a 440 or 450, because the 430 has a very limited memory bandwidth, and may run out of steam when doing some pixel shaders processing (like madVR does)
SamuriHL
3rd June 2011, 14:17
I love my 450. It makes my X2 4200+ actually usable with madVR. And is quite silent.
ney2x
3rd June 2011, 14:44
I hope madshi is here cause i did some comparison between LAV CUVID x86 vs LAV CUVID x64.
LAV CUVID 0.7 x86 - videos were "like" fast forwarding when seeking. (Is it normal?)
LAV CUVID 0.7 x64 - not so smooth and crisp because there is no madvr :/
nevcairiel
3rd June 2011, 14:48
The fast forward is kind of normal. After a seek,.there are a few frames that get delivered that are meant to init the decoder. I should probably throw those away instead of sending them to the renderer.
madshi
3rd June 2011, 16:21
madshi is here, but he won't do an x64 version anytime soon. End of story.
SamuriHL
3rd June 2011, 16:22
There's no way anyone could have possibly predicted that response, madshi. :D
ney2x
3rd June 2011, 16:43
madshi is here, but he won't do an x64 version anytime soon. End of story.
Oh well, I'm glad he said "soon". Better than never :cool:
Aegwyn11
3rd June 2011, 16:43
So I've got LAV CUVID and madVR working on my HTPC with a GT430 (Zotac one with the crazy fanless heatsink) and so far the experience is STELLAR. Even my wife noticed the difference in PQ.
So I decided to see if I might be able to get a similar setup working on my laptop. Its a Dell Studio 14z and the graphics are a 9400M G. According to nVidia's site, it lists it as HD capable for PureVideo, but it isn't listed on the Wiki site.
I'm using 64-bit Win7 on my laptop (my HTPC is 32-bit Win7). I used regsvr32 from the syswow64 directory to register LAV CUVID on my laptop.
Using 32-bit MPC-HC and either VC-1 or h.264 1080p 23.97 files, I get horrendous framerates (around 12-13) when using LAV CUVID. I'm using the compile from the first page of this post. If I use CoreAVC, it performs CUDA decoding and spits out a pristine 23.97 framerate. This is using the EVR Custom Pres. renderer.
Any ideas?
when playing MKv file,big size(>4G),Lav filter + coreavc coder+potplayer ,Fast Forward 4~5times in a short time,the picture will get stuck,only sound but picture still。
Aegwyn11
3rd June 2011, 20:18
Whoops, situation is a little different. I was using 0.6, didn't realize a new version had been posted. Installed 0.7 and the behavior changed.
Now using LAV CUVID as a decoder in MPC-HC (still 32-bit, running on 64-bit Windows), h.264 appears to decode just fine, but VC-1 is still decoding at the super slow rate of just over 12 fps.
Also, MPC-HC shows "Playing [DXVA]" for both VC-1 and h.264, but only shows "Playing" for Mpeg-2. Previously any time I used LAV CUVID, it would only show "Playing".
Any ideas?
nevcairiel
3rd June 2011, 20:38
I'm not 100% sure on the capabilities of the 9400M G. Maybe simply try installing GPU-Z and check the video decoder load/GPU load as well as the CPU load during playback? How does it look?
Also try unticking the "Use DXVA Interop" option.
Nevermind the display of DXVA in MPC-HC, its some kind of magic how it even detects that.
Aegwyn11
3rd June 2011, 21:59
With Mpeg-2, the GPU and video engine loads as reported by GPU-Z are very low (~10%ish). With VC-1 and h.264, the GPU load is in the mid-30's and the video engine load is in the 40's.
I already had the "Use DXVA Interop" unticked :(
I don't know that it matters a whole lot because when I enable MadVR, the GPU load shoots up into the 90's and it starts dropping frames like mad (maybe 5 a second?). Obviously this little GPU isn't powerful enough for MadVR at high resolutions :(
nevcairiel
3rd June 2011, 22:34
I dunno, those laptop IGPs are always a bit weird, especially the older models. Maybe it goes into a low power state and just doesn't have enough juice to decode. I cannot debug such problems without access to such a device.
e-t172
3rd June 2011, 22:35
I don't know that it matters a whole lot because when I enable MadVR, the GPU load shoots up into the 90's and it starts dropping frames like mad (maybe 5 a second?). Obviously this little GPU isn't powerful enough for MadVR at high resolutions :(
Have you tried downgrading madVR's scaling/quality options? This could make it usable on your GPU, as madVR's defaults are quite hungry.
GTPVHD
3rd June 2011, 23:15
9400M G is the same as ION chipset, 16SP VP3 GPU.
robpdotcom
4th June 2011, 01:38
Do you have any preference on how samples should be uploaded?
I have 5 samples of telecined material, totaling about 450MB. Basically, I looked for segments where the MPC-HC showed the frame rate changing while DScaler5 was being used. The samples are:
1) A local station flashed a banner across the screen during the program. (42MB)
2) A commercial break, where content switches from video to film several times - this is the longest sample, at just over 3 minutes. (285MB)
3) An emergency alert scrolls across the screen, accompanied by a resolution change - the frame rate never seemed to actually change, but I thought it might be interesting for testing. (51MB)
4) A commercial break with film and video, followed by the actual program.(53MB)
5) A clip of a program which actually has IVTC flags (none of the others have flags). I thought this one was interesting because Windows DTV-DVD decoder even seems to IVTC it, but not if using DXVA. (55MB)
I can place all the samples into a zip folder and upload it, or I can upload only the ones you are interested in.
Aegwyn11
4th June 2011, 03:13
Have you tried downgrading madVR's scaling/quality options? This could make it usable on your GPU, as madVR's defaults are quite hungry.
Yeah, thats how I got it down to ~5 fps dropped. With default settings it seems to be dropping more like half the frames. Oh well..
All this talk, along with a comment a page or two back (suggesting a 440 or 450 instead of the 430 due to memory bandwidth concerns) got me to thinking. I'm still inside 30 days on my 430 and could return it if necessary. With GPU-Z logging, I started playing a clip of the documentary Life (VC-1, 1080i) to see how much usage I'd get. I figured this would be a decent example of worst case as its 1080 AND requires deinterlacing. While playing this clip, here's what I got:
GPU Load - 50-66 (one outlier at 75)
Memory Controller Load - 22-26
Video Engine Load - 43-50
This was using MadVR at all default settings. Also, the "double framerate" option in LAV CUVID was unticked...got some weird artifacts with that (with that option ticked, the GPU Load and Memory Controller Load were about 10 higher, Video Engine Load was same).
What do you guys think? Is this card adequate, or should I swap it for something more powerful?
ney2x
4th June 2011, 03:16
when playing MKv file,big size(>4G),Lav filter + coreavc coder+potplayer ,Fast Forward 4~5times in a short time,the picture will get stuck,only sound but picture still。
That's a known problem of the "self-proclaimed" fastest decoder and updates 1/365, CoreAVC :D
CruNcher
4th June 2011, 08:35
I dunno, those laptop IGPs are always a bit weird, especially the older models. Maybe it goes into a low power state and just doesn't have enough juice to decode. I cannot debug such problems without access to such a device.
Actually in theory they should be even faster as they are most of the time directly connected to speedup memory transfers though for non VPx heavy based Shader operations 16SP so 2 SM are a little to low :). Also these days many user run a lot of stuff in the background and frame drops on Windows can't be avoided if something pools every x second somewhere the hardware for example or uses harsh timers under 500ms.
e-t172
4th June 2011, 19:03
Okay, as promised, here is my IVTC patch for ffdshow. I didn't manage to make it work with the old ffdshow revision (which is nearly impossible to compile correctly with MSVC++ 2010), so I figured it was easier to just port it to the latest ffdshow revision (r3867).
Patch against ffdshow-tryout r3867 adding an inverse telecine (pulldown removal) filter to the ffdshow video filter chain
Author: Etienne Dechamps (e-t172) <e-t172@akegroup.org>
Usage: apply this patch, build with MSVC++ 2010, and use the new "Pulldown removal" filter in the ffdshow video filter list.
There is also a new OSD option to monitor the state of the filter during playback.
IMPORTANT: you should disable the option "Detect soft telecine and average frame durations" in the ffdshow decoder options. This option seems to interact badly with the new filter.
DISCLAIMER: this code is provided "as-is" and is probably full of bugs. It is a merely a proof-of-concept, and is not suitable for everyday use.
I don't have the time nor the motivation to maintain or improve this patch, so don't waste your time reporting bugs or asking for new features.
Download: http://www.e-t172.net/files/ffdshow-r3867-pulldown-et172.7z
The archive contains the patch and a 32-bit ffdshow.ax binary compiled in release mode (ffdshow-tryout r3867 + patch, MSVC++ 2010), in case anyone wants to give it a try. I did a few basic tests and it didn't crash after all, however the filter still has some bugs which results in bad decisions (mistakes) in some corner case situations.
The code is licensed under the WTFPL (http://en.wikipedia.org/wiki/WTFPL).
madshi
4th June 2011, 19:06
Thanks, e-t172, appreciated. Cool license... :D
edison
4th June 2011, 19:25
version 0.8?
http://1f0.de/lav-cuvid/guide/
Starting with version 0.8, LAV CUVID comes with an Installer
Dogway
4th June 2011, 19:31
@Aegwyn11: You might have the same problem as me, check my old post (http://forum.doom9.org/showthread.php?p=1493030#post1493030). Although my posts were very well ignored until I insisted up to becoming near annoying.
I own a 9600m gt in a laptop too, maybe its not the same problem, maybe yes...
nevcairiel
4th June 2011, 19:42
version 0.8?
http://1f0.de/lav-cuvid/guide/
I just have to remember to put the installer in 0.8, and that line isn't wrong. Its just not released yet. :p
Okay, as promised, here is my IVTC patch for ffdshow. I didn't manage to make it work with the old ffdshow revision (which is nearly impossible to compile correctly with MSVC++ 2010), so I figured it was easier to just port it to the latest ffdshow revision (r3867).
Thanks! I'll look over it tomorrow and see what can be used.
Selur
4th June 2011, 20:31
@edison: thanks for compiling a 64bit version! :)
nevcairiel
4th June 2011, 21:01
@edison: thanks for compiling a 64bit version! :)
There is an official 64-bit version now, what are you thanking him for. :p
Selur
5th June 2011, 10:51
didn't see the official one,.. stopped looking for it after reading your first replies regarding 64bit ;)
(so thanks to you for adding a 64bit build :D)
nevcairiel
5th June 2011, 15:08
LAV CUVID Decoder 0.8
0.8 - 2011/06/05
- LAV CUVID now comes with an Installer
- Support for using NVIDIA GPUs which have no connected display
- Limit MPEG-4 ASP decoding to VP4 (and newer) GPUs
- Options to force a specific output pixel format
- Renamed and refactored some options
Download: Installer (32/64-bit, CUDA 4.0+) (http://files.1f0.de/cuvid/LAVCUVID-0.8.exe) - 32-bit (CUDA 4.0+) (http://files.1f0.de/cuvid/LAVCUVID-0.8.zip) - 64-bit (CUDA 4.0+) (http://files.1f0.de/cuvid/LAVCUVID-0.8-x64.zip) -- 32-bit (Older CUDA) (http://files.1f0.de/cuvid/LAVCUVID-0.8-LegacyCUDA.zip)
This build mainly improves the user-experience. An installer, some reworded options, and LAV CUVID will now detect if your GPU is capable to decode MPEG-4 ASP, so you don't get black screens anymore.
In addition to this, LAV CUVID now really supports GPUs that have no display attached, however this has one disadvantage. GPUs without a display do not have a D3D Adapter, so i cannot create the Direct3D Interface for CUVID. This means, the HQ DXVA processing (previously DXVA Interop) option will have no effect.
In related news, i put up some content pages on my website about LAV CUVID and my other filters, its still a work in progress, but better then only having this thread here. You can find those at http://1f0.de/lav-cuvid/
SamuriHL
5th June 2011, 15:11
Thanks, Nev! I appreciate the installer for sure. :)
ney2x
5th June 2011, 16:24
Thanks! You're unstoppable! What more can I ask for? ... a tray icon :D
ranpha
5th June 2011, 17:26
....or maybe, finally, finish off Haali Media Splitter with video editions + ordered chapters + external segment linking in .mkv files? <--- the only reason why I still put up with the idiosyncrasies of Haali Media Splitter.
edit: Whoops, sorry, I think I am on LAV FIlters thread.
oddball
5th June 2011, 21:43
When playing the Big Buck Bunny clip 1 at http://www.w6rz.net/ I get garbled output from both MPC-HC's internal MPEG2 decoder, LAV CUVID and PowerDVD. The only decoder that decodes it non-garbled is ffdhow's LibMPEG2 decoder. It matters not which renderer or splitter combination I use.
Can you look into this?
nevcairiel
5th June 2011, 21:46
Thats a 4:2:2 encode, LAV CUVID for example doesn't even support this. Might be the same issue for the other decoders if they try to use DXVA.
Its just missing some code to refuse the file in this case, but i don't know much about the mpeg2 headers.
oddball
5th June 2011, 21:51
Seems to work with ffdshow and any of the splitters just as long as ffdshow is the decoder (Libavcodec or LibMPEG2 it matters not). But CUVID is a no show. Likewise MPC-HC's and PowerDVD's decoders cannot handle it.
nevcairiel
5th June 2011, 21:52
Like i said, the hardware only supports 4:2:0 content, 4:2:2 is not supported. So any decoder using CUVID or DXVA will fail.
oddball
5th June 2011, 21:58
Any chance 4:2:2 will be supported in future builds?
nevcairiel
5th June 2011, 22:00
Didn't I just say that the hardware doesn't support it? :)
Underground78
5th June 2011, 22:33
Thats a 4:2:2 encode, LAV CUVID for example doesn't even support this. Might be the same issue for the other decoders if they try to use DXVA.
There is a check for that in MPC-HC internal decoder since rev 3123 (https://sourceforge.net/apps/trac/mpc-hc/changeset/3123/trunk).
oddball
5th June 2011, 23:44
There is a check for that in MPC-HC internal decoder since rev 3123 (https://sourceforge.net/apps/trac/mpc-hc/changeset/3123/trunk).
Using 3180 Madshi's build. It no worky. I mean software decoding not DXVA is messed up in all except ffdshow. But I have posted this in the MPC-HC thread now so no need to carry on in this thread. Thx.
oddball
6th June 2011, 00:34
Found another clip LAV CUVID will not decode correctly. Again ffdshow does.
http://trailers.apple.com/movies/independent/therift/therift-tlr1_h1080p.mov
Cyber-Mav
6th June 2011, 00:51
Thanks! You're unstoppable! What more can I ask for? ... a tray icon :D
a tray icon would be icing on the cake.
nevcairiel
6th June 2011, 06:49
What do people want a tray icon for?
I can understand people requesting icons for LAV Splitter, because you could then use it to switch streams and chapters on players that don't support it.
But LAV CUVID? It doesn't have any functionality that you need to access during playback! Just activate it, sit back, and enjoy! :)
I doubt there will *ever* be a tray-icon for LAV CUVID.
nevcairiel
6th June 2011, 06:53
Found another clip LAV CUVID will not decode correctly. Again ffdshow does.
http://trailers.apple.com/movies/independent/therift/therift-tlr1_h1080p.mov
Did you at least check the clip if its not 4:2:2 again, and wasting my time?
Btw, deep links on that trailers page don't work anyway.
madshi
6th June 2011, 07:05
I guess people ask for a tray icon for 2 reasons:
(1) So they can change the LAV CUVID settings through the tray icon instead of having to right click the video -> filters -> properties. Doing it through the tray icon is noticeably better if you have a 2 monitor setup, with the video running on secondary monitor. The tray icon will then be on the primary monitor, allowing you to change settings without interrupting fullscreen video playback on the secondary monitor.
(2) Seeing that tray icon in the tray bar is a very quick way to tell which filters are being used. If you don't see that tray icon you know that a "wrong" filter was selected by MPC-HC. I find this useful e.g. for the Haali Splitter. Whenever I see the Haali icon in the tray bar, I know that the Haali Splitter is being used. That's just "nice" as a quick way to see which splitter is currently being used.
BeNooL
6th June 2011, 07:45
I guess people ask for a tray icon for 2 reasons:
(1) So they can change the LAV CUVID settings through the tray icon instead of having to right click the video -> filters -> properties. Doing it through the tray icon is noticeably better if you have a 2 monitor setup, with the video running on secondary monitor. The tray icon will then be on the primary monitor, allowing you to change settings without interrupting fullscreen video playback on the secondary monitor.
(2) Seeing that tray icon in the tray bar is a very quick way to tell which filters are being used. If you don't see that tray icon you know that a "wrong" filter was selected by MPC-HC. I find this useful e.g. for the Haali Splitter. Whenever I see the Haali icon in the tray bar, I know that the Haali Splitter is being used. That's just "nice" as a quick way to see which splitter is currently being used.
That sums it up completely IMHO.
CruNcher
6th June 2011, 12:14
Did you at least check the clip if its not 4:2:2 again, and wasting my time?
Btw, deep links on that trailers page don't work anyway.
That wouldn't be logic as Apples H.264 Decoder doesn't support 4:2:2 ;)
I guess people ask for a tray icon for 2 reasons:
(1) So they can change the LAV CUVID settings through the tray icon instead of having to right click the video -> filters -> properties. Doing it through the tray icon is noticeably better if you have a 2 monitor setup, with the video running on secondary monitor. The tray icon will then be on the primary monitor, allowing you to change settings without interrupting fullscreen video playback on the secondary monitor.
(2) Seeing that tray icon in the tray bar is a very quick way to tell which filters are being used. If you don't see that tray icon you know that a "wrong" filter was selected by MPC-HC. I find this useful e.g. for the Haali Splitter. Whenever I see the Haali icon in the tray bar, I know that the Haali Splitter is being used. That's just "nice" as a quick way to see which splitter is currently being used.
You hit the nail on the Head, it's a very usability friendly thing in a (controlled) dshow environment where you want to see immediately what is rendering what, the same usability ffdshows try icon provides in showing you the whole graph it currently operates in, this way you don't have to click through all the MPC-HC menus or right click to find your way through x cascaded menus to see the Graph building (inefficient), though much nicer would be if MPC-HC would get this for the Status OSD as well (simple CTRL+J and you see whats going on, much more efficient in several scenarios), also because not everyone uses Explorer as his main Shell @ all and then a Tray icon would become useless again ;)
SamuriHL
6th June 2011, 13:41
Madshi just volunteered to add it to his madVR icon??? Woa, that's awesome! :p LOL! :D
nevcairiel
6th June 2011, 13:45
You hit the nail on the Head, it's a very usability friendly thing in a (controlled) dshow environment where you want to see immediately what is rendering what
Right click MPC-HC -> Filters, voila, all the info in the world!
Or if you're super OCD, attach GraphStudio to the graph!
I will definitely not add a tray icon just so people can see the icon when LAV CUVID is running. Thats alot of wasted development time for a, IMHO, useless icon.
ffdshow has alot of filters and other stuff you can activate, or choose subs, its not comparable. I just don't see the use in an icon for such a simple decoder.
If every playback component is going to add an icon, we'll end up with 5-6 new icons just when the movie starts. Thats horrible!
.. Actually it is already like this if you use ffdshow, and i don't like it.
I should do what the DivX decoder did, and blend a logo over the screen in a corner at the start of playback. :p
Oh, and because madshi talked so much about "to see which splitter is currently being used", LAV Splitter will eventually get a tray icon, so you can switch streams and chapters on players that don't offer this functionality natively. Thats a useful feature, having an icon just for the sake of having an icon .. is not.
clsid
6th June 2011, 14:01
Not everybody uses MPC or ffdshow or MadVR. Basic players like WMP don't offer all the required stream selection functionality. A tray icon is useful for stream selection.
nevcairiel
6th June 2011, 14:02
Like i said, LAV Splitter will get a tray icon for stream and chapter selection.
LAV CUVID will not, unless someone sends me a patch that looks clean enough.
ney2x
6th June 2011, 14:10
I should do what the DivX decoder did, and blend a logo over the screen in a corner at the start of playback. :p
That would be awesome!
Like i said, LAV Splitter will get a tray icon for stream and chapter selection.
LAV CUVID will not, unless someone sends me a patch that looks clean enough.
I'll ask mr.duck maybe he can send... :D
Not everybody uses MPC or ffdshow or MadVR. Basic players like WMP don't offer all the required stream selection functionality. A tray icon is useful for stream selection.
I think it's time also to add support for LAV CUVID and LAV Filters in Win7DSFilterTweaker for those who used WMP :D
SamuriHL
6th June 2011, 14:11
No no no no no no! :D
yesgrey
6th June 2011, 14:16
I should do what the DivX decoder did, and blend a logo over the screen in a corner at the start of playback. :p
I would do better: output only the logo.:devil:
nevcairiel
6th June 2011, 14:17
That would be easier then blending it over the frame, too! :)
BeNooL
6th June 2011, 18:12
I can confirm version 0.8 "32-bit (Older CUDA)" is now working fine for me with the headless GeForce :)
Thank you nevcairiel.
now it is time to use it and see how it all performs.
CruNcher
7th June 2011, 08:58
Right click MPC-HC -> Filters, voila, all the info in the world!
Or if you're super OCD, attach GraphStudio to the graph!
I will definitely not add a tray icon just so people can see the icon when LAV CUVID is running. Thats alot of wasted development time for a, IMHO, useless icon.
ffdshow has alot of filters and other stuff you can activate, or choose subs, its not comparable. I just don't see the use in an icon for such a simple decoder.
If every playback component is going to add an icon, we'll end up with 5-6 new icons just when the movie starts. Thats horrible!
.. Actually it is already like this if you use ffdshow, and i don't like it.
I should do what the DivX decoder did, and blend a logo over the screen in a corner at the start of playback. :p
Oh, and because madshi talked so much about "to see which splitter is currently being used", LAV Splitter will eventually get a tray icon, so you can switch streams and chapters on players that don't offer this functionality natively. Thats a useful feature, having an icon just for the sake of having an icon .. is not.
The way via the MPC-HC menu structure takes to much time (see also my post) and Graphedit/Graphstudio Graph attaching is a even more time consuming task. I still believe the most convenient option would be the MPC-HC OSD itself (CTRL+J) being able to display the current Graph running, this implementation way you could also avoid problems with different Windows Shells :)
Granted though that's not really falling into your resort @ all, i just found it a very nice way in ffdshow but thinking thrice about it it's inefficient to click arround to see the Graph if you can display it directly in the Host application without needing to click anywhere ;)
nevcairiel
7th June 2011, 08:59
The EVR-CP OSD shows the current Decoder, at least in current trunk builds.
CruNcher
7th June 2011, 10:45
Hmm nothing of that visible in VMR9 Renderless @ build 3190, anyways only the Decoder is a beginning but transforming the whole current Filter display text into the OSD is what i had in mind :)
Below the Render Device:
Render Device: NVIDIA Geforce 9800 GT
Graph: File Source Async -> Lav Splitter -> Lav Audio Decoder -> Mainconcept Mpeg-2 Decoder -> Video Mixing Renderer 9 Renderless -> Default DirectSound Device
Virtual_ManPL
7th June 2011, 12:51
@ nevcairiel - Thank you for x86-64 compilation! Works great. :D
GTPVHD
9th June 2011, 05:27
http://www.nvnews.net/vbulletin/showpost.php?p=2432758&postcount=370
H264 DECODING (1920x1080): 120 frames/s
GF119 has VDPAU FEATURE SET D, it's the only GPU with feature set D so far. Looks like Nvidia GPUs with feature set D hardware decoder has doubled the performance for the H.264 decoder.
nevcairiel
9th June 2011, 08:23
Too bad the GT 520 is too slow for any real usage (it cannot even deinterlace 1080i60 at highest quality, the test you linked only shows 55 fields/s), kinda hoping for a 540 or so using that video decoder but offering enough 3D performance.
Didée
9th June 2011, 09:29
GF119 has VDPAU FEATURE SET D, it's the only GPU with feature set D so far. Looks like Nvidia GPUs with feature set D hardware decoder has doubled the performance for the H.264 decoder.
Whatever "feature set D" might improve over "C", it's not the raw decoding performance. Those 120fps are referring to grey.ts, wich is ~8000kbps and not very complex. My little GT240 is decoding that one at 118fps too. (IIRC, Im not at home ATM)
nevcairiel
9th June 2011, 09:31
Whatever "feature set D" might improve over "C", it's not the raw decoding performance. Those 120fps are referring to grey.ts, wich is ~8000kbps and not very complex. My little GT240 is decoding that one at 118fps too. (IIRC, Im not at home ATM)
Maybe the test is not perfect, still, Feature Set D does nearly double the decoding performance.
There is a test from a GTX 580 a few posts above that, which shows "H264 DECODING (1920x1080): 66 frames/s"
BTW, the hardware decoder doesn't really care that much about complexity or bitrate (the beauty of fixed-function hardware), the biggest hit is resolution.
CruNcher
9th June 2011, 09:31
Yep intel easily beats that :P
nevcairiel
9th June 2011, 09:35
Yep intel easily beats that :P
Too bad that Intels 3D performance is just horrible.
I should write a Hardware decoder for Intel (its pretty easy, their SDK is beautiful). Wonder if you can use QuickSync decoding and then use madVR on a real GPU if you use Virtu or Synergy. Should be easy to test, need to install Virtu on my box. :)
I wish Intel iGPU would get some more 3D performance in the next generation, so that using it with madVR would be a viable solution.
roozhou
9th June 2011, 10:30
Too bad that Intels 3D performance is just horrible.
I should write a Hardware decoder for Intel (its pretty easy, their SDK is beautiful). Wonder if you can use QuickSync decoding and then use madVR on a real GPU if you use Virtu or Synergy. Should be easy to test, need to install Virtu on my box. :)
I wish Intel iGPU would get some more 3D performance in the next generation, so that using it with madVR would be a viable solution.
Any reason to use hardware decoding on a CPU as fast as Sandybridge?
hoborg
9th June 2011, 10:32
Any reason to use hardware decoding on a CPU as fast as Sandybridge?
HW deinterlacing for example?
CruNcher
9th June 2011, 10:35
Too bad that Intels 3D performance is just horrible.
I should write a Hardware decoder for Intel (its pretty easy, their SDK is beautiful). Wonder if you can use QuickSync decoding and then use madVR on a real GPU if you use Virtu or Synergy. Should be easy to test, need to install Virtu on my box. :)
I wish Intel iGPU would get some more 3D performance in the next generation, so that using it with madVR would be a viable solution.
Their is already a official Dshow Encoder/Decoder available ;)
And yeah those combination Frameworks are also things i thought about early on, though as im an early adopter of SB Virtu isn't available and i wait for Synergy :)
But the Israelis have something Nvidia neither ATI has yet any information about from their Labs and that almost released http://www.youtube.com/watch?v=EPhXqQFb7wE
These things are the only thing that will make me to move to the next NT because it's almost impossible todo Virtu or Synergy on XP and these frameworks are just to crazy to think about the possibilities :)
nevcairiel
9th June 2011, 11:14
Their is already a official Dshow Encoder/Decoder available ;)
Thats only pretty static sample applications, and only work in DXVA mode, not in madVR compatible mode. :p
GTPVHD
9th June 2011, 11:21
Anyone that says their GT 240 is getting over 100FPS is wrong. The GTX 580 has the same VP4 decoder as the GT 240 and it doesn't even break 66FPS.
http://www.nvnews.net/vbulletin/showpost.php?p=2330104&postcount=320
NVIDIA GPU GeForce GT 240 (GT215)
H264 DECODING (1920x1080): 66 frames/s
http://www.nvnews.net/vbulletin/showpost.php?p=2420599&postcount=14
Sorry about the confusion. VDPAU feature set D describes improved capabilities in the hardware. However, supporting these features requires software changes that are not yet available.
Feature Set D decoder has real improvements over VP4/Feature Set C.
Too bad the GT 520 is too slow for any real usage (it cannot even deinterlace 1080i60 at highest quality, the test you linked only shows 55 fields/s), kinda hoping for a 540 or so using that video decoder but offering enough 3D performance.
The next-gen Nvidia Kepler GPU family should have the same Feature Set D decoder or better decoder. So you get high performance H.264 decoding and better shader performance from Kepler's improved architechture.
CruNcher
9th June 2011, 11:43
Anyone that says their GT 240 is getting over 100FPS is wrong. The GTX 580 has the same VP4 decoder as the GT 240 and it doesn't even break 66FPS.
http://www.nvnews.net/vbulletin/showpost.php?p=2330104&postcount=320
http://www.nvnews.net/vbulletin/showpost.php?p=2420599&postcount=14
Feature Set D decoder has real improvements over VP4/Feature Set C.
The next-gen Nvidia Kepler GPU family should have the same Feature Set D decoder or better decoder. So you get high performance H.264 decoding and better shader performance from Kepler's improved architechture.
Much more interesting is that Tegra 3 will be finally able to deliver smooth 1080p/i @ low power :P
Didée
9th June 2011, 12:02
It's quite possible that I mixed-up some numbers, they were from memory (and dating half-a-year back).
BTW, the hardware decoder doesn't really care that much about complexity or bitrate (the beauty of fixed-function hardware), the biggest hit is resolution.
When I e.g. look here (http://forum.doom9.org/showthread.php?p=1421852#post1421852), I see that a VP4/Feat.C card decodes a 9Mbps stream @ 109fps, and a 25Mbps stream @ 65fps. That's not quite "doesnt care about bitrate". Or is it?
BTW, what are those *.dat-samples in the VDPAU test archive? On Windows I can't decode them with anything, also mediainfo can't make heads or tail of them. The AVC files aren't even reckognized when renamed to *.264, so they aren't native raw streams either?
Maybe the test is not perfect, still, Feature Set D does nearly double the decoding performance.
There is a test from a GTX 580 a few posts above that, which shows "H264 DECODING (1920x1080): 66 frames/s"
Frankly, I don't really know, but ... feature set is feature set, and VP engine is VP engine. If VP4 still is VP4, then it seems a bit strange that just the "feature set" should bring the raw decoding to double performance.
Is it absolutely sure that it's not some sort of a Linux-/driver-related effect?
BTW, I've no particular interest in this topic, since I'm fine with CPU decoding (i7-860 stays @ its lowest Multiplier when decoding 10Mbps 1080p, so I've not any need for GPU decoding).
I'm just wondering, and finding that particular VDPAU test not exactly "transparent".
nevcairiel
9th June 2011, 12:06
Frankly, I don't really know, but ... feature set is feature set, and VP engine is VP engine. If VP4 still is VP4, then it seems a bit strange that just the "feature set" should bring the raw decoding to double performance.
NVIDIA never really confirmed those VP2/3/4 names, its something we made up, all they use is the feature set, and they correspond perfectly to the VP's. 2=A, 3=B, 4=C
But its also not unheard of that they use the next-gen video decoder on a low-end card of the current generation. The 220 and 240 for example have the VP4 decoder of the 4xx generation, while all "faster" 2xx cards have a VP2.
Is it absolutely sure that it's not some sort of a Linux-/driver-related effect?
Yes. I've also seen Windows benchmarks.
I'm just wondering, and finding that particular VDPAU test not exactly "transparent".
Its not meant as the all knowing benchmark, more as a "does this work at all" kinda thing.
Didée
9th June 2011, 12:16
NVIDIA never really confirmed those VP2/3/4 names, its something we made up, all they use is the feature set, and they correspond perfectly to the VP's. 2=A, 3=B, 4=C
Oh, it is like THAT? Now you can tell me "badly informed". :)
Seen in that light, the list would continue with "5=D", and everything makes sense.
Time to continue with more fruitful discussion ...
andyvt
9th June 2011, 12:19
I should write a Hardware decoder for Intel (its pretty easy, their SDK is beautiful). Wonder if you can use QuickSync decoding and then use madVR on a real GPU if you use Virtu or Synergy. Should be easy to test, need to install Virtu on my box.
The "sample_decode" MSDK application shows how to use HWA decoding and get the raw data.
nevcairiel
9th June 2011, 12:20
The "sample_decode" MSDK application shows how to use HWA decoding and get the raw data.
Yeah i know it. Beautifully done by Intel, the samples cover everyhting you need. :)
andyvt
9th June 2011, 12:27
Yeah i know it. Beautifully done by Intel, the samples cover everyhting you need. :)
So next week then ;)
nevcairiel
9th June 2011, 12:30
Sadly, there isn't that much use for such a filter yet, as you need a dedicated card anyway to use madVR. Maybe when Ivy Bridge is near and the 3D performance looks much better. ;)
CruNcher
9th June 2011, 12:31
Still only a few yet implemented it compared to Nvcuvid and Nvcuvenc which almost every Asian Video Converter has now support for ;)
Though Stanley was the first again implementing Intels Encoder (he also was the first implementing Nvidias Encoder) from the less known ISVs in MediaCoder (and free) :)
Sadly, there isn't that much use for such a filter yet, as you need a dedicated card anyway to use madVR. Maybe when Ivy Bridge is near and the 3D performance looks much better. ;)
Or you see how wonderfully DXVA VMR9/EVR can work with Shaders where MadVR isn't supported yet ;)
nevcairiel
9th June 2011, 15:45
Or you see how wonderfully DXVA VMR9/EVR can work with Shaders where MadVR isn't supported yet ;)
Its not that madVR isn't supported, its just that the iGPUs are too damn slow for the resizing shaders that madVR uses - and that won't change with EVR, the shaders will still be too slow. :d
The default resizers in EVR in MPC-HC are just simple bilinear and bicubics, nothing advanced, so it works on all kinds of hardware. If you switch to those in madVR, it also works. But that defeats the point, kinda.
andyvt
9th June 2011, 16:30
Sadly, there isn't that much use for such a filter yet, as you need a dedicated card anyway to use madVR. Maybe when Ivy Bridge is near and the 3D performance looks much better. ;)
It would net hw decode and DI. GPU perf would still be an issue, but it's better than what we have now.
nevcairiel
9th June 2011, 16:40
It would net hw decode and DI. GPU perf would still be an issue, but it's better than what we have now.
A DXVA decoder can already do those, except not with madVR.
I might do it one day when i feel like it, i sometimes have those days where i need to do something cool. :)
andyvt
9th June 2011, 18:17
A DXVA decoder can already do those, except not with madVR.
I might do it one day when i feel like it, i sometimes have those days where i need to do something cool. :)
I hear ya. Definitely something that would be cool, but not a huge benefit yet for the effort required.
edison
9th June 2011, 19:54
something like "SVP"(frame interpolation) ? :)
yesgrey
10th June 2011, 00:39
Sadly, there isn't that much use for such a filter yet, as you need a dedicated card anyway to use madVR. Maybe when Ivy Bridge is near and the 3D performance looks much better. ;)
Another issue is that Sandy Bridge only allows 24.0Hz timings. It's not possible to get 23.976Hz, and we need it for Blu-ray... maybe Ivy Bridge would also solve that.
andyvt
10th June 2011, 00:42
Another issue is that Sandy Bridge only allows 24.0Hz timings. It's not possible to get 23.976Hz, and we need it for Blu-ray... maybe Ivy Bridge would also solve that.
If you disable UAC you get 23.973.
yesgrey
10th June 2011, 00:50
If you disable UAC you get 23.973.
Really? I read that it was some hardware problem that would only be corrected on next model... So I guess that's good news.
andyvt
10th June 2011, 01:02
Really? I read that it was some hardware problem that would only be corrected on next model... So I guess that's good news.
That's true too, although I haven't heard anything concrete on whether it will be addressed in IVB.
yesgrey
10th June 2011, 01:28
That's true too, although I haven't heard anything concrete on whether it will be addressed in IVB.
I read that they have found and solved the problem, but would be included only in a future version. I'm not sure it would be on IVB, though. I guess I read the news on Anandtech's.
nevcairiel
10th June 2011, 06:07
It didn't get in SNB because they rushed out the chipset without much re-design (its a flaw in the PCH, not in the GPU itself).
Lets hope they take enough time to do fix it for IVB this time around, although they did say IVB would run on the 6-series chipset boards, so its unsure if there will be a new chipset generation at all. :(
The 7-series chipset seems to be targeted at SNB-E, but maybe there will also be 7-series chipsets for IVB as well. Only time will tell!
CruNcher
11th June 2011, 08:32
If you disable UAC you get 23.973.
That is strange how in the hell can this be a hardware issue @ all, seems rather something in their PVP was badly thought off, if you read some of those confidential Cougar Chipset papers you would be surprised what is in their Bios (MME) going on ;)
CiNcH
11th June 2011, 09:41
Does LAVCUVID perform NALU parsing for H.264 or is it up to the splitter to always deliver a whole Access Unit at once? A lot of splitters don't do that...
nevcairiel
11th June 2011, 12:59
It should be able to deal with any input you throw at it, if it doesn't, thats a bug, and please let me know with which splitter that happens.
CiNcH
11th June 2011, 13:24
We are discussing it here (http://www.dvbviewer.tv/forum/topic/35205-madvr-implementation-posssible/page__view__findpost__p__338789). Splitter is DVBViewer's DVB Source. Did you by chance try that one? Maybe I will dust my 8600 GTS off and try it myself.
nevcairiel
11th June 2011, 13:46
I did test DVBViewer before with DVB-T and DVB-C, but i'll re-install it and test again. I was quite sure it worked, however.
nevcairiel
11th June 2011, 14:31
I just tested DVBViewer again, and both H264 and MPEG2 streams work fine. The only issue is that channel changes seem to take quite long, maybe i can improve that somehow.
Gleb Egorych
11th June 2011, 15:21
The only issue is that channel changes seem to take quite long, maybe i can improve that somehow.
DVBViewer option "Fast Channel Switching" produces this effect (Settings -> TV+Radio -> Fast Channel Switching).
CiNcH
11th June 2011, 15:36
DVBViewer option "Fast Channel Switching" produces this effect (Settings -> TV+Radio -> Fast Channel Switching).
If enabled, the DVBViewer won't rebuild the graph when switching channel.
LordMerlin
11th June 2011, 19:21
Good evening.
Please tell me whether or not the decoder h264 in 520 series is much more powerful than the 430.
ryrynz
13th June 2011, 03:07
The 430 has twice the amount of CUDA cores and RAM bandwidth in comparison to the 520, however it does make up for some of that with faster clocks.
The only big advantage I can see is that the 520 is more efficient (around 20 watts less power than the 430)
Judging from those differences and ignoring architectural changes (which likely only give a small boost) the 430 looks to be the better card for LAV CUVID.
nevcairiel
13th June 2011, 08:20
The 520 has a significantly faster decoder on board, however, due to the severly limited memory bandwidth and shader performance, the 520 completely fails at doing deinterlacing, completely destroying any advantage it has in decoding performance.
If i had to build a HTPC today, i would go with a 440 or 450.
GTPVHD
13th June 2011, 09:00
http://www.anandtech.com/show/4380/discrete-htpc-gpus-shootout/11
We asked NVIDIA about the changes in the new VDPAU feature set and what it meant for Windows users. They indicated that the new VPU was a faster version, also capable of decoding 4K x 2K videos. This means that the existing dual stream acceleration for 1080p videos has now been bumped up to quad stream acceleration.
Though the GPU can decode 4K videos, it is unfortunately not able to output it through HDMI. Despite the HDMI controller being advertised as HDMI 1.4a, it doesn't implement the 4K x 2K resolution part of the standard. The lack of HDMI sinks which accept that resolution is another matter, but that should get resolved in the next few years.
Thats answers the questions about Feature Set D hardware decoder. Now to see if Nvidia Kepler will output 4k res over HDMI/DisplayPort.
JoeH
13th June 2011, 11:39
The 520 has a significantly faster decoder on board, however, due to the severly limited memory bandwidth and shader performance, the 520 completely fails at doing deinterlacing, completely destroying any advantage it has in decoding performance.
If i had to build a HTPC today, i would go with a 440 or 450.
Would buying a 550 get the advantages of both the faster decoder and also avoid the performance problems? Or does the 550 not include the faster decoder?
nevcairiel
13th June 2011, 11:40
Only the 520 has it.
ney2x
13th June 2011, 12:10
I recommend GTX 560 Ti. You can play games and it's overkill for HTPC :)
JarrettH
13th June 2011, 17:20
Is there a certain way to get this working with madvr when playing back DVD discs? I added LAV as preferred and blocked the Microsoft DTV-DVD decoder assuming it would work. I get that Macrovision Fail error.
Seems to be working fine on its own with other content + madvr. Is this a better solution than using ffdshow's dxva?
Thanks
Edit: If madvr won't work as above, will choosing EVR-CP + LAV be a better choice than using the Microsoft DTV-DVD decoder? Just curious whether anything different is happening with EVR-CP + LAV playback
mindbomb
13th June 2011, 17:46
If i had to build a HTPC today, i would go with a 440 or 450.
but you can get a passive gt 430 from zotac, while I'm not aware of a passive 440 or 450.
CruNcher
13th June 2011, 17:50
Ui Featureset D also means 4k support now for Nvidia i wonder if 4:2:2 is also supported now ? :)
The Anandtech article though is strange they call "Lady Washington" a Spears&Munsil thing that clip is provided by Microsoft
nevcairiel
13th June 2011, 18:09
but you can get a passive gt 430 from zotac, while I'm not aware of a passive 440 or 450.
Passive is overrated.
Your system needs some kind of cooling, and most people with a passive card still put 1-2 system fans in there, so whats the point?
Unless you can go 100% passive, you can as well get one of those super-silent cards.
CruNcher
13th June 2011, 18:11
Passive is overrated.
Your system needs some kind of cooling, and most people with a passive card still put 1-2 system fans in there, so whats the point?
Unless you can go 100% passive, you can as well get one of those super-silent cards.
My 9800 GT is running full passive (and that is double the TDP of the GT430) and combined with SB you wont here anything @ idle ;)
0 system fan as the system is fully open also ;)
nevcairiel
13th June 2011, 18:13
The whole system, not the card.
No Fan on the CPU? None in the PSU? No other system fan?
You need a specially designed case for completely passive, and very few people have that.
I have a Gigabyte GTS450 with a Windforce Dual-Cooler, i don't hear a thing. When its on in idle, nothing. Only when i pressure the CPU to go 100%, i get a bit of noise from the CPU fan, but i havent managed to make the GPU make noise.
CruNcher
13th June 2011, 18:22
The whole system, not the card.
No Fan on the CPU? None in the PSU? No other system fan?
You need a specially designed case for completely passive, and very few people have that.
I have a Gigabyte GTS450 with a Windforce Dual-Cooler, i don't hear a thing. When its on in idle, nothing. Only when i pressure the CPU to go 100%, i get a bit of noise from the CPU fan, but i havent managed to make the GPU make noise.
CPU (wouldn't really be needed anyways for SB, big passive tower can cool it without any fan in a open enviroment) and PSU (for now) yes but no case fan and PSU we entering the Platin Generation currently semi and fully passive (90+ efficiency) is the future (500w fully passive is quiet possible these days with exterior block but not yet developed also a cost issue per unit), if you not a crazy gamer and need some overrated GPU and all kind of anti aliasing going on @ 2k res ;)
JarrettH
13th June 2011, 20:51
Is there a certain way to get this working with madvr when playing back DVD discs? I added LAV as preferred and blocked the Microsoft DTV-DVD decoder assuming it would work. I get that Macrovision Fail error.
Seems to be working fine on its own with other content + madvr. Is this a better solution than using ffdshow's dxva?
Thanks
Edit: If madvr won't work as above, will choosing EVR-CP + LAV be a better choice than using the Microsoft DTV-DVD decoder? Just curious whether anything different is happening with EVR-CP + LAV playback
I think I found my answer. The decoder should work, but the DVD navigator isn't compatible thus far :p
nevcairiel
13th June 2011, 20:52
I don't think LAV CUVID currently works with the DVD Navigator, but the Macrovision problem is a madVR problem on Win7.
JoeH
14th June 2011, 08:06
Only the 520 has it.
Too bad. I'm going to wait until we get a more powerful NVidia GT with VDPAU Feature Set D and go for that....
Nick [D]vB
14th June 2011, 16:53
Would it be possible to add MVC support to CUVID?
It would be great to have CUDA support for MVC on older cards.
Would that be possible on VP2 / Feature-set A hardware?
nevcairiel
14th June 2011, 16:58
MVC is only supported on newer cards, and i'm not quite sure if CUVID itself supports MVC at this time.
Nick [D]vB
14th June 2011, 17:04
So CUDA acceleration of MVC would only work if the GPU supports MVC in DXVA anyway?
Do you think this would be the same for CoreMVC when they add CUDA support?
It is a shame, I know a lot of people were hoping for a solution for older cards.
You think it is possible that CUVID already supports MVC on new cards ?!?
edison
14th June 2011, 20:14
The decoder can not work with x264 + Avisynth DirectShowSource.
blubberbirne
14th June 2011, 21:09
@nevcairiel
is it possible to get 4:2:2 working?
madshi
14th June 2011, 21:35
is it possible to get 4:2:2 working?
No, the hardware doesn't support it.
pirlouy
14th June 2011, 23:28
I'm not sure to understand.
Is the 520 (or 430) better than the 550Ti for CUVID (or madVR) ? I though 550Ti would be better in all ways...
CruNcher
15th June 2011, 00:17
In easy words raw decoding performance of the 520 is better but real world performance of the 550TI is depending on the usage scenario much better, though you can't say it that easy either as it depends on the API and general usage scenario :). Though for General Video playback purpose a 550TI is too overkill imho still the GTS 450 looks like a nice in between also in Power consumption the most balanced one and still more powerful then back then the 8800/9800 GT :)
Power consumption wise though in idle all discrete solutions these days made big steps so having a very powerful card or a less powerful card in a htpc makes no big difference these days (only some watts depending on card configuration memory and bios pstate setup) :) so with a GTS 450 (on Nvidias site) you cant really go wrong for many scenarios in a HTPC and have a much better card that can still beat every console these days ;)
Though also the foundation of the HTPC should be solid it makes no sense to push in a discrete workhorse into a base platform that can't deliver the throughput VP4/5 and MadVR require (especially in terms of High framerate Realtime Shader based Deinterlacing, or Realtime Motion Interpolation) so instead of pushing every money into 1 part it's more important to have a very good overall balance for the targeted purpose :)
JarrettH
15th June 2011, 04:00
So by usable with madvr did you mean dxva works? I noticed if I switch to EVR-CP it shows the Playing [DXVA] in the seek bar, but when I switch back to madvr it does not show [DXVA]
pirlouy
15th June 2011, 12:09
I think I was not clear. Several of us, users, are gamers who buy gamers cards. I just wanted to know if a 550Ti (or GTX 590) has something which prevents it to be a better card for playing a video with CUVID + madVR.
Is there something in this page which shows why 440 is better than other: http://en.wikipedia.org/wiki/GeForce_400_Series#Products ??
nevcairiel
15th June 2011, 12:19
All 4xx and 5xx cards are equal when it comes to pure video decoding, except the 520, it has a faster decoder chip, but sadly its otherwise way too slow.
For other HTPC usage, the 465, 470, 480, 570, 580 and 590 do NOT support HD Audio Bitstreaming, which may be a reason for some people to not buy them. The 550 and 560 support it just fine, however, as do any other cards in the 4xx or 5xx series not listed here. Its only the high-end gaming cards which do not support it.
If you only want video decoding and don't care about HD Audio Bitstreaming, then any gaming card will be fine.
SamuriHL
15th June 2011, 13:05
I'm considering adding a cheap nvidia card to my main htpc just to use for decoding. I'd still use the AMD card for display and bitstreaming. Any recommendations? I love my 450 in the other machine but is that overkill for this purpose?
nevcairiel
15th June 2011, 13:06
Using an NVIDIA card for decoding without a display connected has a few drawbacks, for example you won't get the highest quality deinterlacing (because the HQ DXVA processing mode does not work without a display adapter).
So considering that you won't get the best quality anyway, you'll need less silicon to make it happen, so a 430 is probably fine.
SamuriHL
15th June 2011, 13:13
Damn. The deinterlacing was one of the reasons I was considering it. I guess I'll wait and see what comes out in the gaming card arena over the next few months.
nevcairiel
15th June 2011, 13:18
Pick up a book about DirectShow/DXVA programming and go nuts, its all possible, even for ATI (at least on Win7), someone just has to do it. :D
SamuriHL
15th June 2011, 13:21
I wish I had the time. Work is keeping me quite busy these days unfortunately. It would be fun though.
nevcairiel
15th June 2011, 13:32
Maybe one day, after LAV Video was released, it may be a feature possibility.
I need someone to pay me to write these things, so i could quit my day job. :p
SamuriHL
15th June 2011, 13:50
Wouldn't that be nice! :)
andyvt
15th June 2011, 14:35
Pick up a book about DirectShow/DXVA programming and go nuts, its all possible, even for ATI (at least on Win7), someone just has to do it. :D
Can you recommend one?
nevcairiel
15th June 2011, 14:45
Not really, they were all too expensive when i last looked, and well, i don't learn from books anyway.
andyvt
15th June 2011, 14:50
Not really, they were all too expensive when i last looked, and well, i don't learn from books anyway.
LOL - "get a good book" -> "books are worthless not useful to me" :)
nevcairiel
15th June 2011, 14:56
Books are not worthless, i just don't like learning with a book, i only use them for reference. People are different - some dive into those books and come out smarter, i use a more "hands-on" approach and learn by examples.
SamuriHL
15th June 2011, 14:59
I've always been a hands on developer, as well, so, I know exactly what you mean by that. I often have reference books by my side, as well, but, lately I've stopped buying them as it's usually easier to find what I'm looking for through a search engine.
madshi
15th June 2011, 15:03
Pick up a book about DirectShow/DXVA programming and go nuts, its all possible, even for ATI (at least on Win7), someone just has to do it. :D
Good things come to those who wait. But it seems patience is not a virtue commonly known on doom9... :p
SamuriHL
15th June 2011, 15:04
Good things come to those who wait. But it seems patience is not a virtue commonly known on doom9... :p
You got that right! :D
CruNcher
15th June 2011, 15:32
Good things come to those who wait. But it seems patience is not a virtue commonly known on doom9... :p
Now if that wasn't a hint, what else could be ;)
nevcairiel
15th June 2011, 15:39
Good things come to those who wait. But it seems patience is not a virtue commonly known on doom9... :p
Waiting is boring, programming things is fun! :)
I'm very impatient myself, thats why i would rather code something myself then wait for someone else to do it. :D
Budtz
16th June 2011, 00:10
Hey guys.
Im new to this decoder. I have tried to read up a bit but i am unable to figure out the difference between this and ffdshow? what are the advatages of this decoder over ffdshow?
Budtz
16th June 2011, 09:19
any plans to add a sharpness and deband setting?
nevcairiel
16th June 2011, 09:41
All post-processing settings the Hardware is capable of has to be controled through the NVIDIA control panel. This is limited to Edge Enhancement (basically sharpness), Noise Reduction, and some color processing options.
JarrettH
16th June 2011, 10:18
So by usable with madvr did you mean dxva works? I noticed if I switch to EVR-CP it shows the Playing [DXVA] in the seek bar, but when I switch back to madvr it does not show [DXVA]
:confused: :thanks:
nevcairiel
16th June 2011, 11:29
The display of DXVA in that bar in MPC-HC is irrelevant, LAV CUVID functions the same no matter which renderer is used.
ney2x
18th June 2011, 15:06
I saw something weird. Can someone explain the "p" and "i" from the images. Regarding ffdshow, does it do its job like deinterlacing, deband, sharpen, etc. if LAV CUVID already deinterlace the video? Sorry for lot of questions. :devil:
External Filters:
File Source (Async.)
LAV Splitter
LAV CUVID Decoder
LAV Audio Decoder
- madvr reports xxx minutes frame repeat
http://img694.imageshack.us/img694/4417/1080pp.jpg
External Filters:
File Source (Async.)
LAV Splitter
LAV CUVID Decoder
ffdshow raw video filter (1080p/720p=deinterlacing, deband, sharpen | DivX=deinterlacing, postprocessing, deband, blur and nr, sharpen)
LAV Audio Decoder
- madvr reports xxx hours/days frame repeat
http://img217.imageshack.us/img217/6513/1080iv.jpg
Note: Images got from Reclock's Media Info.
JarrettH
18th June 2011, 18:34
Driver 275.33 is significantly faster with CUDA 4.0 like it says on the front page :cool:
ryrynz
19th June 2011, 07:40
Now if that wasn't a hint, what else could be ;)
Hilarious, it seems like no matter what Madshi says it's a hint at some new software he's developing or an upcoming feature. It's almost become a meme on Doom9.
nevcairiel
19th June 2011, 08:47
I saw something weird. Can someone explain the "p" and "i" from the images. Regarding ffdshow, does it do its job like deinterlacing, deband, sharpen, etc. if LAV CUVID already deinterlace the video?
Well ffdshow obviously doesn't deinterlace anymore, because its already done.
The difference in "i" and "p" can be ignored, its just something ffdshow sets in the media type, but makes no difference for the resulting images.
tormento
20th June 2011, 08:43
Win7DSFilterTweaker_4.2 allows to choose the Lav Cuvid too but only the x86! Do you think it is a Win7DSFilterTweaker_4.2 problem or Lav Cuvid?
clsid
20th June 2011, 14:20
Will be added in next version.
tormento
20th June 2011, 17:52
If you meant 4.3 it doesn't work yet.
pankov
20th June 2011, 20:50
The only issue is that channel changes seem to take quite long, maybe i can improve that somehow.DVBViewer option "Fast Channel Switching" produces this effect (Settings -> TV+Radio -> Fast Channel Switching).
Nev,
actually the problem is not only when changing channels. If for some reason there is a drop in the transmission (week signal / not enough bandwidth of the network between DVBViewer and DVB Recording Service) the picture will get stuck while the audio will continue. After some time the picture will start again. This doesn't happen with other decoders I've tried (MS/CoreAVC/Dscaler/FFDShow)
I guess the reason is some kind of buffering done by LAV CUVID Decoder but I hope you'll be able to skip it for live streams, cause for me, and I believe many others LAV CUVID is the best decoder for NVidia and I really would like to use it for Live TV.
jmone
22nd June 2011, 12:16
I've been trialling a move from ATI to a GTS 450 to use LAV CUVID to get access to high quality deinterlacing of HD Content that my CPU (Q6600) can not handle without maxing out. I'm struggling with a few things and I'm hoping all you nvidia types can help out:
1) When madVR changes the freq sometime the playback is all "stuttery / out of sync" and drops frames till I do a STOP/PLAY cycle at which point it is perfect (a pause/play does not help). I used to also see this issue with Intel GPU's but ATI GPUs seem to be immune to this. Is there a setting in the nvidia control panel for this or any other setting I'm missing as this is a big issue for me. (sorry for the double post in the madVR thread but I don't know if it is a madVR issue, CUVID or just a nvidia "feature")
2) I've not tried to set / change / tweak any other settings yet in the nvidia control panel so what should I look at changing, turning off, etc (eg colour space etc).
Thanks
Nathan
EDIT: Two other more minor issues are:
1) Silent Stream bug: it drops the audio connection when nothing is being played then reestablish it so you lose the first bit of the audio stream
2) Resetting the Windows resolution when losing EDID data when the AVR changes source (thank heavens for the DVI Detective Plus to solve this one!)
CruNcher
24th June 2011, 12:34
You should be only careful with Nvidias IVTC in the Control Panel depending on the Decoder side implementation and on the used Renderer it can backfire, other issue aren't known to me that can cause severe problems (unwanted playback behavior). So if you experience strange playback like unwanted dropped frames in some content turning of Nvidias IVTC can fix that for now.
JarrettH
24th June 2011, 16:29
Is there some reason why the XviD decoder in ffdshow would look visually better than using CUVID? It just seems to have a clearer appearance and less banding noticeable. Are there any technical differences which could contribute? :cool:
CruNcher
24th June 2011, 22:17
yep idct/fdct differences it's not like with H.264 where it's standardized for the Encoder for Mpeg-2 and 4 part 2 if the idct doesn't match it can result in what you describe :)
jmone
25th June 2011, 00:24
Thanks for the suggestions. In the nvidia control panel I've left it all as std except under
Adjust Desktop Colour Settings:
- Colour Format --> RGB
- Content Type Reported to Display --> Desktop Programs (???0-255???)
Video - Adjust Video Colour Settings
- Check On nvidia Setting
- Under Advanced --> Full 0-255 & Turn OFF all the "Digital Picture Improvement"
- Under Adjust Video Image Settings --> Unckeck "use Inverse Telecline"
The trouble is I can not get a reliably stable output with madVR and LAV CUVID (it was fine with ATI, or just using EVR) - any advise on setting to try would be welcome as I've played with the most and can make it worse but not better. I'm still getting:
1) With madVR in Exclusive sometime the playback is all "stuttery / out of sync" and drops frames till I do a STOP/PLAY cycle at which point it is perfect (a pause/play does not help). This seems to can happen both when changing clips with different fps and the refresh rate changer kicks in but I can also get it just doing a seek in one file (eg advancing a chapter in a blu-ray file).
2) With madVR in Full Windowed mode I just get dropped frames on native 1920x1080/60i/50i material no matter what combination of settings I try but it is fine in exclusive mode.
Unless anyone has any ideas or tweaks to try I seem to be stuck with a range of poor choices at this stage of:
* madVR the odd frame presentation / stuttering prob in Exclusive Mode or dropped frames with 1920x1080/50p/60i/50i material in windowed mode OR
* use EVR (and lose madVR's rendering quality)
* go back to ATI (and lose the high quality deinterlacing of 1920x1080/50p/60i/50i material)
Thanks
Nathan
jmone
25th June 2011, 08:43
FYI - after more playing the following seems OK so far in madVR
* General Settings: All unchecked except "Use a Separate Device for Presentation" and "use D3D11 for Presentation"
* Windowed Mode Settings: Back buffers = 8, and then "flush", "Flush & Wait (Sleep)", "Flush", "Flush & Wait (Loop)"
There is still issues with dropping frames (Backbuffer Q os 0-7) when changing refresh rate at the start of playback but I need to play some more (may also be due to the interaction of JR's Video Clock code)
Aegwyn11
25th June 2011, 14:52
So I went ahead and replaced my GT430 with a GTS450 figuring that would fix this problem, but it didn't, so allow me to describe. Not sure if this is a LAV CUVID question or a madVR question so I thought I'd post here first.
Using MPC-HC, LAV CUVID, and madVR, output resolution 1080p, I get smooth playback using the "Film mode" deinterlacing setting. If I try "Video mode", I only get smooth playback when madVR is in windowed mode. As soon as madVR switches to exclusive mode, the video gets stuttery. Its a very consistent stutter that looks (to me) like droppped frames, which is what made me think the GT430 just wasn't fast enough to do madVR at 1080p60 resolutions along with VA deinterlacing, leading me to swap to the GTS450 (based on recommendations in this thread).
The video I'm using to test with is "Human Planet", which is encoded as 1080i. I've also tried disabling the IVTC setting in the Nvidia control panel and that didn't do anything.
Any thoughts?
ney2x
25th June 2011, 15:55
So I went ahead and replaced my GT430 with a GTS450 figuring that would fix this problem, but it didn't, so allow me to describe. Not sure if this is a LAV CUVID question or a madVR question so I thought I'd post here first.
Using MPC-HC, LAV CUVID, and madVR, output resolution 1080p, I get smooth playback using the "Film mode" deinterlacing setting. If I try "Video mode", I only get smooth playback when madVR is in windowed mode. As soon as madVR switches to exclusive mode, the video gets stuttery. Its a very consistent stutter that looks (to me) like droppped frames, which is what made me think the GT430 just wasn't fast enough to do madVR at 1080p60 resolutions along with VA deinterlacing, leading me to swap to the GTS450 (based on recommendations in this thread).
The video I'm using to test with is "Human Planet", which is encoded as 1080i. I've also tried disabling the IVTC setting in the Nvidia control panel and that didn't do anything.
Any thoughts?
First, please describe and tell us your current configurations, like what TV/Monitor are you using, if it is capable of 24 or 48 refresh rate. Sometimes, stuttering are TV/monitor fault.
mark0077
25th June 2011, 16:00
nev, I have a feature request, not sure if it was requested before or if its too difficult, ignore if so.
About 40% of my content is 25fps PAL dvds, about 40% blu-rays and about 20% PAL music dvds.
Of the 40% pal dvds, about 90% of those don't need de-interlacing however they are badly marked as requiring de-interlacing. About 30% of my music dvds don't need de-interlacing but again are badly marked as requiring it.
This remains one of the only parts of my HTPC that I can't automate without having a bat script and lists of content that fits into each category which I can then use to set various registry keys to enable / disable de-interlacing in for example ffdshow.
Today I notice two problems using this old method of mine, when LAVCUVID is the decoder.
1) Pass interlaced flags onto the next filter:
I can't get LAVCUVID to output the interlaced flag to filters further down the chain like ffdshow, when it itself is set to "Deinterlacing : None (Weave)". Therefore I cannot use ffdshows yadif de-interlacer on / off via registry keys. Is it possible to have lavacuvid pass down the interlaced flag at present or can it be made possible in future versions perhaps?
2) Change lavcuvid settings on the fly:
If I use lavcuvids own de-interlacing settings and set them to None or Adaptive via registry keys, this would be one workaround for the above issue and give me even better de-interlacing than yadif when needs be, but I often play new content that I havn't yet added to my list of content requiring de-interlacing or not, so I like to be able to change the settings on the fly, which is possible in ffdshow for example, ie de-interlacing on or off tickbox. Can lavcuvid's filter settings dialog be made to take settings changes on the fly without requiring a restart of any content?
None of these are absolutely huge issues for me, but would be great improvements none the less for myself and maybe others if you believe they arn't too much work.
Thanks!
Aegwyn11
25th June 2011, 16:19
First, please describe and tell us your current configurations, like what TV/Monitor are you using, if it is capable of 24 or 48 refresh rate. Sometimes, stuttering are TV/monitor fault.
The TV is a Panasonic ST30 plasma, supports input of all the NTSC framerates, not sure about the PAL ones (don't care about the PAL ones anyway). I've got MPC-HC set up to change the refresh rate dependant on frame rate. 24p (23.976) auto configures to 23.976 output and both the "Default/Other" and the 29.97 (NTSC) settings are set to 59Hz.
I have no problems with movies (24p). Interlaced works fine and dandy if I set the setting in LAV CUVID to "Film mode". Set it to "Video mode" and it gets stuttery. Also, I just tried it with an episode of "Avatar: The Last Airbender" (the cartoon, not the crappy movie), which is 480i, and the results seem to be the same.
ney2x
25th June 2011, 17:34
The TV is a Panasonic ST30 plasma, supports input of all the NTSC framerates, not sure about the PAL ones (don't care about the PAL ones anyway). I've got MPC-HC set up to change the refresh rate dependant on frame rate. 24p (23.976) auto configures to 23.976 output and both the "Default/Other" and the 29.97 (NTSC) settings are set to 59Hz.
I have no problems with movies (24p). Interlaced works fine and dandy if I set the setting in LAV CUVID to "Film mode". Set it to "Video mode" and it gets stuttery. Also, I just tried it with an episode of "Avatar: The Last Airbender" (the cartoon, not the crappy movie), which is 480i, and the results seem to be the same.
Oh well, let's wait for nev or some expert here... I have Samsung LED TV and Sony Plasma and even Dell Monitor here and my playback of any kind of movies are flawless. My setup: LAV CUVID, LAV Filters, madvr, ffdshow raw video filter and Reclock -- all latest version/rev/build. Oh, do you use Reclock?
jmone
25th June 2011, 23:19
Did you try first changing the refresh rate then commencing playback? There is certainly something Odd (have yet to get to the bottom of it) where using madVR's refresh rate changer I can not keep the final queue from dropping to Zero and hence then dropping frames in conjunction with LAVCUVID/nvidia.....
jmone
26th June 2011, 00:41
Getting Closer to smooth playback! - I found one issue in that J.Rivers MC's "Video Clock" (aka reclock) is causing most (not all) dropped frames when ON with this combo of filters when madVR changes the refresh rate - I've posted over there.
Aegwyn11
26th June 2011, 18:35
Oh well, let's wait for nev or some expert here... I have Samsung LED TV and Sony Plasma and even Dell Monitor here and my playback of any kind of movies are flawless. My setup: LAV CUVID, LAV Filters, madvr, ffdshow raw video filter and Reclock -- all latest version/rev/build. Oh, do you use Reclock?
I'm not using Reclock and previously I was using the MPC-HC built in splitter.
Okay so I'm not sure what the heck was going on, but the problem seems to be solved. I was trying some things and started getting some ODD operation from MPC-HC where it would always stay on top and full screen, preventing me from accessing menus (like the LAV CUVID setup menu) and causing other headaches like closing MPC-HC! I had to uninstall MPC-HC (deleting all settings), reinstall, and get everything set back up. Once I got everything set back up, I changed over to LAV splitter. Now I get smooth playback with deinterlacing set to "video mode". Yay.
In short tests, it seems that I still get a hiccup here and there, so I might give Reclock a try later and see what happens, but the original problem I asked about seems to be solved.
Bryanhoop
27th June 2011, 01:14
Oh well, let's wait for nev or some expert here... I have Samsung LED TV and Sony Plasma and even Dell Monitor here and my playback of any kind of movies are flawless. My setup: LAV CUVID, LAV Filters, madvr, ffdshow raw video filter and Reclock -- all latest version/rev/build. Oh, do you use Reclock?
What is the ffdshow raw filter used for? Subtitles?
SamuriHL
27th June 2011, 01:16
What is the ffdshow raw filter used for? Subtitles?
Yea, that's what I'm using it for anyway. Don't know about the OP.
robpdotcom
27th June 2011, 02:00
You can use the regular video decoder as well, and I believe it's basically the same. Just set it to accept raw formats, and disable decoding of whichever formats you don't want decoded.
ney2x
27th June 2011, 04:19
What is the ffdshow raw filter used for? Subtitles?
Yeah, subtitles, deband, sharpen. I follow the guides here (http://www.homecinema-hd.com/ffdshow-video-introduction_en.html)
sixor
27th June 2011, 23:39
hi i have been using this for some time now, working perfect so far (with mad vr)
but my question is about quality, which should give me the best quality? core avc, lav cuvid or mpchc dxva? or they are just the same?
ney2x
28th June 2011, 03:41
hi i have been using this for some time now, working perfect so far (with mad vr)
but my question is about quality, which should give me the best quality? core avc, lav cuvid or mpchc dxva? or they are just the same?
From my own experience:
MPC-HC DXVA = not so smooth.
LAV CUVID = perfect if pair with ffdshow filters.
CoreAVC = fine, but seeking problem and not so nice support :devil:
Edit: For me, there's no difference when watching with smaller screens (22" - 32"), but with large screens (42" - above) I see some pixelation.
roozhou
28th June 2011, 04:44
hi i have been using this for some time now, working perfect so far (with mad vr)
but my question is about quality, which should give me the best quality? core avc, lav cuvid or mpchc dxva? or they are just the same?
Are you talking about image quality? You cannot judge video decoders by quality. There is only two kinds of decoders, correct and incorrect. All correct decoders have exactly the same "quality".
sixor
29th June 2011, 01:46
thanks ney2x,roozhou
then i guess will keep using lav cuvid since i like the divx support, for h264 i just canīt see a difference
jmone
29th June 2011, 01:53
FYI from the madVR thread: after some quick testing with the latest MC V121 (with a clean install / default settings of madVR V66) it seems to have addressed the presentation/stuttering issues! :)
nussman
30th June 2011, 14:28
After some test with dvbviewer pro and LiveTV i recognized some problems with format changes and channel changes (mpeg2 and h.264).
On format (channel) changes the pictures freezes several seconds or stopped until I rebuild the graph.
Dvbviewer does not rebuild the graph by format/channel changes.
LAV CUVID doesnt like on the fly format changes?
By the way LAV CUVID works very well here with correct deinterlacing (576i50 and 1080i). Thanks for your good work!
GPU= GT430
Driver= 275.33 (win7 32bit, evr custom renderer)
RedDwarf1
4th July 2011, 18:18
After some test with dvbviewer pro and LiveTV i recognized some problems with format changes and channel changes (mpeg2 and h.264).
On format (channel) changes the pictures freezes several seconds or stopped until I rebuild the graph.
Dvbviewer does not rebuild the graph by format/channel changes.
LAV CUVID doesnt like on the fly format changes?
By the way LAV CUVID works very well here with correct deinterlacing (576i50 and 1080i). Thanks for your good work!
GPU= GT430
Driver= 275.33 (win7 32bit, evr custom renderer)
Just been testing this with DVBViewer and it doesn't do too well with H.264 1920 video.
It constantly stuttering, pausing, freezing and shows a black screen and doesn't play smoothly. It uses quite a bit of the GPU, I'm getting around 57 to 71% while it's decoding but that drops to zero when it is failing to decode the stream.
I believe it is meant to be the Video Engine that does decoding. That is what gets used when neuron's DGDecodeNV is decoding H.264 video. Comparing with CoreAVC using CUDA, the GPU load is much higher although the video engine load is a little lower than CoreAVC at around 25%.
With Mpeg2 everything works fine.
I'm using a 1GB GT 240 with the latest 275.33 drivers on Win XP SP3.
Therefore, it seems that some more work is needed to get this working correctly. I look forward to trying it when it is working better.
nussman
4th July 2011, 19:07
I'm using a 1GB GT 240 with the latest 275.33 drivers on Win XP SP3.
Did you try vmr9 custom renderer?
nevcairiel
5th July 2011, 19:11
LAV CUVID Decoder 0.9
0.9 - 2011/07/05
- Slightly faster seeking
- Improvements to dynamic format changes
- Safe-Guards against crashes inside the NVIDIA decoding functions
Download: Installer (32/64-bit, CUDA 4.0+) (http://files.1f0.de/cuvid/LAVCUVID-0.9.exe) - 32-bit (CUDA 4.0+) (http://files.1f0.de/cuvid/LAVCUVID-0.9.zip) - 64-bit (CUDA 4.0+) (http://files.1f0.de/cuvid/LAVCUVID-0.9-x64.zip) -- 32-bit (Older CUDA) (http://files.1f0.de/cuvid/LAVCUVID-0.9-LegacyCUDA.zip)
This is a pretty minor release, but i wanted to get those fixes out before they rot on my disc for much longer while i work on other things. So here it is!
Have fun!
Sebastiii
5th July 2011, 23:39
Thanks :)
jmone
5th July 2011, 23:41
All good for me...
RedDwarf1
6th July 2011, 20:11
Did you try vmr9 custom renderer?
Yes and it doesn't alter anything.
v0.9 is a tiny bit better in that it displays video for longer without the long black screen pauses but it is certainly not smooth playback.
Volfield
9th July 2011, 09:09
few bugs in v0.9:
- render madvr, haali splitter, MPCHC or Potplayer. When unpause movie image back to a few frames. This bug does not occur on EVRCP.
- any render, haali splitter, MPCHC or Potplayer. When change audio stream picture stops for a few seconds and then catches up with the current frame. This bug does not occur with Your splitter.
My pc: CPu: Intel i5. GPU: Nvidia GeForce GT 320M 275.33 drivers, Win7 x64 SP1
mindbomb
11th July 2011, 22:03
minor problem here:
I changed to an ati graphics card in one of my computers, and i cant uninstall this filter now.
andyvt
12th July 2011, 05:45
minor problem here:
I changed to an ati graphics card in one of my computers, and i cant uninstall this filter now.
regsvr32 /u
mindbomb
13th July 2011, 21:34
also, does lav cuvid work with dvd's if you use EVR CP?
JarrettH
14th July 2011, 03:48
also, does lav cuvid work with dvd's if you use EVR CP?
It doesn't support the menu navigation to get the movie started :p
madshi
14th July 2011, 08:37
What does the decoder have to do with the menu navigation? I thought the menu navigation would be a separate subtitle pin in the *navigation* filter? I don't really know, though, just wondering...
nevcairiel
14th July 2011, 08:39
The decoder has nothing to do with the menu navigation. TBH, i have no idea how menus are rendered in DirectShow, but i do know that it has nothing to do with the decoder. :)
Anyhow, LAV CUVID is not compatible with the MS DVD Navigator at this time. It might be added later.
madshi
14th July 2011, 08:41
Macrovision once again?
nevcairiel
14th July 2011, 08:43
Yeah, the DVD Navigator sends the streams encrypted, and the decryption is just not integrated in LAV CUVID. I do have it in LAV Audio, so it would just be a matter of moving it over, but meh. I r teh busy.
madshi
14th July 2011, 09:15
I didn't know the streams are encrypted. Does that even happen if the DVD is already unprotected/decrypted?
nevcairiel
14th July 2011, 09:20
Not sure, probably not.
But it always sends the data in a special packed format, namely as MEDIATYPE_DVD_ENCRYPTED_PACK, which is a special packing form for single PES units, either encrypted or not.
I borrowed the code to handle this from MPC-HC, after understanding it in theory and testing some discs, i just called it a day and didn't investigate to deeply how it really behaves. ;)
madshi
14th July 2011, 09:30
Bah, why does it all have to be so complicated? <sigh>
clsid
14th July 2011, 11:20
The Macrovision error is just a simple renderer check afaik. Use a guid from one of the MS renderers and a custom renderer wil work.
I wonder if it would be possible to create some kind of wrapper for the MS DVD navigation filter. Then the data/info it gets could be modified to fool it.
madshi
14th July 2011, 11:41
The Macrovision error is just a simple renderer check afaik. Use a guid from one of the MS renderers and a custom renderer wil work.
Hmmmm... That sounds like a good idea, will give that a try sooner or later. Thanks!
I wonder if it would be possible to create some kind of wrapper for the MS DVD navigation filter. Then the data/info it gets could be modified to fool it.
That would be quite cool, of course.
clsid
14th July 2011, 11:46
Replacing one of the MS decoders might not be safe though and could result in funky problems. Some other filters also check which renderer is used to adjust their behavior. For example ffdshow.
madshi
14th July 2011, 11:52
Well, I could try to make only the MS Navigator think I'm EVR. Not sure if that's possible. At least it's something to play with...
starla
16th July 2011, 20:34
What does the decoder have to do with the menu navigation? I thought the menu navigation would be a separate subtitle pin in the *navigation* filter? I don't really know, though, just wondering...
MPEG2 decoder in DVD graph is responsible for decoding the sub picture stream - navigator doesnt do that (or correct directly to the video renderer).
As attachement there is a MediaPortal's directshow graph with MS DVD Navigator.
- tourettes
madshi
16th July 2011, 21:06
Attachments sometimes take ages to be approved in this forum, unfortunately.
lych_necross
21st July 2011, 06:53
I am having trouble playing this file with LAV CUVID Decoder 0.9.
http://www.mediafire.com/?yv750rqhfot2htq
This is a clip I made from my encode of Star Trek (2009). Here is the MediaInfo data is available here (http://pastebin.com/p7Sh6VYh).
This clip plays fine with DiAVC and ffdshow, but not with LAV CUVID Decoder. I'm not sure if it is a problem with my file or with Nvidia's drivers (I use version 275.50).
nevcairiel
21st July 2011, 17:55
I'm just assuming here you're using madVR 0.67 - which is actually causing this problem.
In any case, i've applied a small fix which should make LAV CUVID more resistant against this problem in the future.
lych_necross
22nd July 2011, 06:35
I'm just assuming here you're using madVR 0.67 - which is actually causing this problem.
In any case, i've applied a small fix which should make LAV CUVID more resistant against this problem in the future.
:thanks:
Yes I was using madVR 0.67. I downgraded to madVR 0.66 and all is well.
mindbomb
26th July 2011, 00:41
http://www.megaupload.com/?d=LAJVY9EO
this file(33mb) doesnt play in cuvid .9, but plays with dxva filters.
Virtual_ManPL
27th July 2011, 13:41
Aspect ratio bug
Looks identical like in CoreAVC - http://forum.doom9.org/showthread.php?p=1390600#post1390600
nevcairiel
27th July 2011, 14:06
Aspect ratio bug
Looks identical like in CoreAVC - http://forum.doom9.org/showthread.php?p=1390600#post1390600
This is not a bug.
Disable "Use Stream AR" in LAV CUVID settings.
Those encodes are just broken, having a wrong AR encoded in the bitstream. Haali manually overwrites that AR, so CoreAVC didn't have to offer this option in the decoder.
Virtual_ManPL
27th July 2011, 14:09
Ahhh, didn't try it at first.
Now works fine, thank you.
mark0077
29th July 2011, 00:44
quick question guys if anyone knows the answer it would be great. Does the output colorspaces option in lavcuvid have an impact when lavcuvid does hardware de-interlacing?
I'm outputting from lavcuvid into avisynth, which doesn't take nv12 as input, but I'm afraid that selecting yv12 in lavcuvid will have a negative impact on my de-interlacing quality but am not sure if this is just the final output colorspace, or a colorspace used internally for deinterlacing..
Edit:btw this is using nvidia gpu which obviously has better deinterlacing when fed nv12 afaik
pankov
29th July 2011, 00:52
I think the quality will not be affected if you change from nv12 to yv12 but I'm not 100% sure
nevcairiel
29th July 2011, 07:08
The decoder internally always works with NV12, its the only format it natively supports at this point. If you request YV12 output, it'll be converted manually (eg. by LAV CUVID, not by the NVIDIA driver) afterwards.
There is no quality difference between NV12 or YV12 output - both formats are 100% identical (except their different memory layout, of course)
dandyjun
29th July 2011, 11:25
I thank for your decoder codec.
But I have one problem for divx/xvid format on my laptop with Nvidia optimus system.
My GT540m is VP, C feature.
0.7 version can decode for divx/xvid with Nvidia optimus system.
But 0.8 and 0.9 version can't decode that.
I think that you don't consider Nvidia optimus system.
betaking
29th July 2011, 11:54
I thank for your decoder codec.
But I have one problem for divx/xvid format on my laptop with Nvidia optimus system.
My GT540m is VP, C feature.
0.7 version can decode for divx/xvid with Nvidia optimus system.
But 0.8 and 0.9 version can't decode that.
I think that you don't consider Nvidia optimus system.
Nvidia VDPAU Feature Sets
Feature Set C Complete acceleration for MPEG-1, MPEG-2, MPEG-4 Part 2 (a.k.a MPEG-4 ASP), VC-1/WMV9 and H.264. Global motion compensation and Data Partitioning are not supported for MPEG-4 Part 2.
nevcairiel
29th July 2011, 12:27
But I have one problem for divx/xvid format on my laptop with Nvidia optimus system.
My GT540m is VP, C feature.
0.7 version can decode for divx/xvid with Nvidia optimus system.
But 0.8 and 0.9 version can't decode that
Without owning a Optimus capable device, there isn't much i can do. I don't know how the devices are reported to the system.
XVID/DIVX is really not the most complicated format, and i don't think it hurts anyone if its falsely detected as not supported.
Xaurus
30th July 2011, 17:18
Nev,
I've gone back to LAVcuvid for 1080i since there are no other options out there that can match the deinterlacing quality.
While not perfect, it's still better than anything I could do with FFDSHOW + YADIF.
I've done much reading here:
http://www.avsforum.com/avs-vb/showthread.php?t=1157287
Also, those videos provided there might prove useful to anyone that wants to check the deinterlacing capability of their setup. And of Nev to fine-tune LAVcuvid. :)
Download - Format (MPEG-2 TS - 1920*1080):
NTSC interlaced:
1080i - 29.97 fps - VBR, 20 mbps - (42 MB) (http://dl.dropbox.com/u/8424544/Slices/Video/Slices_MPEG2_NTSC_1080i_29.97.zip)
NTSC progressive:
1080p - 29.97 fps - VBR, 16 mbps - (29 MB) (http://dl.dropbox.com/u/8424544/Slices/Video/Slices_NTSC_1080p_29.97.zip)
PAL interlaced:
1080i - 25 fps - VBR, 20 mbps - (50 MB) (http://dl.dropbox.com/u/8424544/Slices/Video/Slices_MPEG2_PAL_1080i-25.zip)
PAL progressive:
1080p - 25 fps - VBR, 16 mbps - (35 MB) (http://dl.dropbox.com/u/8424544/Slices/Video/Slices_PAL_1080p-25.zip)
The progressive versions may be good e.g. to watch the perfect structures and movements without any deinterlacing disortion.
Download - Format (H.264 - 1920*1080):
NTSC interlaced:
H.264 - 1080i - 29.97 fps - (36 MB) (http://dl.dropbox.com/u/8424544/Slices/Video/Slices_H.264_NTSC_1080i-29.97.ts)
PAL interlaced:
H.264 - 1080i - 25 fps - (33 MB) (http://dl.dropbox.com/u/8424544/Slices/Video/Slices_H.264_PAL_1080i-25.zip)
Download - Format (VC-1 - 1920*1080):
NTSC interlaced:
TS (26MB) NTSC 1920x1080 interlaced 29.97fps (http://dl.dropbox.com/u/8424544/Slices/Video/Slices_VC-1_NTSC_1080i-29.97_ts.zip)
NTSC interlaced:
MKV (27MB) NTSC 1920x1080 interlaced 29.97fps (http://dl.dropbox.com/u/8424544/Slices/Video/Slices_VC-1_NTSC_1080i-29.97_mkv.zip)
nevcairiel
30th July 2011, 17:22
The Cheese Slices video is a common testing video, already knew it. :p
Also, i don't think speaking of "percect" when talking about deinterlacing is really realistic. You have a video with only half the information, and you have to interpolate the missing information. There is clearly still some artifacting going on with the hardware deinterlaces - however this is a very artificial sample, on real world samples, i consider the GPUs already pretty damn good.
pankov
31st July 2011, 01:08
nev,
today I tried an old MPEG2 .ts TV stream and it didn't play correctly with LAV CUVID while LAV Video, FFDShow and madVR's Decoders played it fine. From madVR's OSD I noticed that it was a 4:2:2 so I guess that my (if any) video card doesn't support it in hardware. Is this correct?
Is there anything I can do to have LAV CUVID as my preferred decoder but still use another one for such unsupported streams?
If you need I can provide a sample, but I think you already have such streams.
CruNcher
31st July 2011, 03:55
The Cheese Slices video is a common testing video, already knew it. :p
Also, i don't think speaking of "percect" when talking about deinterlacing is really realistic. You have a video with only half the information, and you have to interpolate the missing information. There is clearly still some artifacting going on with the hardware deinterlaces - however this is a very artificial sample, on real world samples, i consider the GPUs already pretty damn good.
Don't let Didee hear that ;)
nev,
today I tried an old MPEG2 .ts TV stream and it didn't play correctly with LAV CUVID while LAV Video, FFDShow and madVR's Decoders played it fine. From madVR's OSD I noticed that it was a 4:2:2 so I guess that my (if any) video card doesn't support it in hardware. Is this correct?
Is there anything I can do to have LAV CUVID as my preferred decoder but still use another one for such unsupported streams?
If you need I can provide a sample, but I think you already have such streams.
Nope not yet also no Player yet is eventually designed to be as smart, a few advanced DXVA Decoder though fallback already automatically to their Software Decoders if Studio Profile is detected but not many support Studio Profile @ all to begin with. ;)
nevcairiel
31st July 2011, 08:32
All hardware decoders are currently limited to 4:2:0.
I already have the code to probe the MPEG-2 media type if its 4:2:2 or 4:2:0, and refuse connection in this case. I just need to get around to adding it.
CruNcher
31st July 2011, 10:56
Yep Finally Lav Cuvid would be able then to fallback to any preferred Software Studio Profile Decoder as Lav Video, MPCs Video Decoder, Mainconcept, Nero ect :) the same then needs to be done for H.264 and those different non "consumer" hardware decoder supported profiles.
sneaker_ger
31st July 2011, 14:22
the same then needs to be done for H.264 and those different non "consumer" hardware decoder supported profiles.
Which would be? nevcairiel seems to be blocking every not supported type he knows of already, so if you know even more, spit it out.
magic144
1st August 2011, 22:46
Hi - hope someone can help...
Can anybody explain the following:-
I'm testing with a 1080i retail music video BD, output to my LCD monitor via DVI, 1920x1200@60Hz
NVIDIA GeForce 9500GT
CUVID Settings:-
Frame Rate - 50p/60p (Video)
Use Stream Aspect Ratio (yes)
Use HQ DXVA processing (yes)
Field Order (Auto)
Output Format (Auto)
If I set Deinterlacing to "Adaptive", the video seems to play back half-speed compared to the audio and falls horribly out of sync. The renderer properties (EVR) are showing 59+ fps...
However if I choose either of the other None/Bob settings, EVR shows same fps but Video plays at correct speed...
Thanks in advance if anyone can explain this!
m
nevcairiel
1st August 2011, 22:53
Your GPU is probably too slow. You can increase your success on a low-performance GPU like the 9500 by changing the frame rate to 25/30p, and turning off HQ DXVA processing.
Why EVR doesnt show the proper stats, i dont know.
magic144
1st August 2011, 23:32
thanks - the HQ DXVA turned off improves things somewhat, but yeah I have to drop back to 25/30 to achieve total success
I had read somewhere that you probably need at least a GT440 with GDDR5 to avoid issues here - does that sound about right to you guys here?
I think it was this thread...
http://www.avsforum.com/avs-vb/showthread.php?t=1342476&page=2
thanks again,
m
Alexey1975
3rd August 2011, 09:57
Thank you Nevcairiel for your Great and Valuable Job!
Just only one request for your LAV CUVID Decoder: It desperately lacks of "Always Do Deinterlace" option!
Please, add it.
Hera
4th August 2011, 08:43
Any plans for Haali Renderer support?
EDIT: Or am I doing something wrong?
BetA13
4th August 2011, 12:09
hy nevcairiel,
first of all..Thanks so much for ur work..lav cuvid and co. does work very very well and have great value...
Im very happy with my video setup now..Its just one little thing that i dont like...
Is it possible to integrate a contrast and Brightnes controll..?
sometimes the picture is way too dark, xvid mostly..and there im missing a controll to edit them..like 2 little sliders to controll that a bit..
I really would be happy if this would find the way into ur decoder...
anyway..THX a lot for ur work here..im really impressed...I also did make a thread over @ Guru3d about ur filters and codecs and keep it always up to date..The people loving it...
Greetz BetA@Guru3D
rahzel
7th August 2011, 05:13
I'm planning on picking up a GT430 to replace my Radeon 5570 so that I can use the Cuvid decoder with madVR. I haven't had an Nvidia card for a while, so I'm not quite clear on what I need. If I want to use CUDA and bitstream HD audio, is every driver I need included with the display drivers (HDMI driver + CUDA driver?). I seem to remember a while ago that they were separate.
Also, are there any other Nvidia HDMI drivers like there is with AMD? AMD has the Realtek ones (which I preferred) and the official AMD ones that were included with the Software suite.
nevcairiel
7th August 2011, 06:42
Everything you need is included in the main driver package. Just get the latest directly from nvidia.
rahzel
7th August 2011, 07:04
Thank you.
Something else has recently got me to be hesitant of purchasing an Nvidia card. I see a lot of people fiddling around custom resolutions/refresh rates to get proper/smooth playback for 23.976 videos (ie, most film/movies) on a 24Hz capable display. What's the issue here? Is it that 23Hz is slightly too low (I see people saying ~23.967Hz) and 24Hz is slightly too high? Wouldn't Reclock fix this? I know right now, I have my Radeon 5570 set to 23Hz and IIRC, the actual refresh rate is 23.975. I have ReClock and movies seem buttery smooth to me... no frame drops at all.
nevcairiel
7th August 2011, 08:44
Reclock can fix that, however if you can get alot closer to the target by simply changing some settings, why not do it? Makes reclocks job alot easier, and in theory provides better audio (less resampling)
CruNcher
7th August 2011, 15:17
I changed now to VP4 from VP2 in the face of the 460 GTX and now i can playback 4 Girls @ 60 FPS in DXVA :) compared to the max of 52 FPS with the VP2 with the 9800 GT http://forum.doom9.org/showpost.php?p=1490026&postcount=67 gonna update with the VP4 results also im curios if my Lav Cuvid 60 FPS problems are now history http://forum.doom9.org/showthread.php?p=1488268&highlight=Cyberlink#post1488268 but im confident that's the case (thx to the Hardware improved Memory Copy) :)
MadVR Benchmark 4 Girls + Scaling (Highest Quality)
9800 GT 512 MB (G92,VP2) = 170 FPS
460 GTX 1 GB (G104,VP4) = 250 FPS
9800 GT (G92,VP2)
http://img541.imageshack.us/img541/6451/cudabandwith.png
460 GTX (G104,VP4)
http://img215.imageshack.us/img215/245/460gtxcudaz.png
9800 GT (G92,VP2)
http://img52.imageshack.us/img52/8686/disabledisplayout.png
460 GTX (G104,VP4)
http://img146.imageshack.us/img146/1184/460gtxvp4disabledisplay.png
Though i really wonder if it might be that the Bios of the 9800 GT (G92,VP2) is wrong optimized @ all and if 60 fps aren't possible with some optimization
PS: Yep the 60 FPS issues after X seconds http://forum.doom9.org/showthread.php?p=1488268&highlight=Cyberlink#post1488268 are history with Lav Cuvid and also any DXVA decoder so that Cyberlinks DXVA Decoder worked even on the 9800 GT with those (the only Decoder capable of flawless DXVA playback with those test samples on the 9800 GT (G92,VP2)) becomes more impressive ;)
Yes finally Full GPU offload Encoding works with Nvcuvenc (higher end bitrate though) reduces CPU use from 50% (partial) to 13% (full offload + cabac) :)
nautilus7
7th August 2011, 17:16
I noticed image corruption when decoding Conan the Barbarian BD.
http://thumbnails42.imagebam.com/14393/38ff40143925496.jpg (http://www.imagebam.com/image/38ff40143925496)
Sample: http://www.sendspace.com/file/98q7dn
Same happens with ffmpeg based decoders.
yesgrey
7th August 2011, 18:56
I'm planning on picking up a GT430 to replace my Radeon 5570 so that I can use the Cuvid decoder with madVR.
I wouldn't go with that one. The GT430 use DDR3 memory, which is very slow. If you're looking for a budget go with the GT440 DDR5. If you plan to use it for double rate deinterlacing, then you should not consider less than a GTS 450.
madshi
7th August 2011, 20:03
I noticed image corruption when decoding Conan the Barbarian BD.
Same happens with ffmpeg based decoders.
Same happens with CoreAVC, DivX and Intel decoders. So it looks very much like a broken video stream.
kamineko
9th August 2011, 10:21
For Hardware Support, Wikipedia to the rescue. You need at least VDPAU Feature Set A for H264 decoding, B for VC-1 and MPEG2, and C for MPEG4-ASP.
http://en.wikipedia.org/wiki/Nvidia_PureVideo#Table_of_PureVideo_.28HD.29_GPUs
The 9600GT is a "A" Feature Set, so at least you get H264 decoding out of it.
I am in the market for a new graphics card - could you recommend a minimum (is GT 430 ok - Zotac has a nice passive one with DisplayPort)?
CPU should be sufficient to drive it, if there's a minimum recommendation as well, I gladly take it.
pankov
9th August 2011, 11:02
kamineko,
use the search function or at least read a few posts above - the same was asked and answered a few days ago
SamuriHL
9th August 2011, 14:31
Sweet. Thanks!
CruNcher
10th August 2011, 08:04
@nev sorry for oftopic
could you help me here
http://forum.doom9.org/showthread.php?t=162182
kamineko
10th August 2011, 14:51
kamineko,
use the search function or at least read a few posts above - the same was asked and answered a few days ago
Sorry about that - I'm searching now more than three days for information, and I lost track where I already searched and jumped right in here.
And I posted in the wrong thread - the one I had open for exactly the search, and not the one in the AVSForum where I intended to post.
Reading the last 10 pages really makes me look like an idiot here... :blush:
CruNcher
12th August 2011, 07:21
@Nev any progress on the Mpeg-2 Studio Profile fallback ? (4:2:2) http://forum.doom9.org/showpost.php?p=1518850&postcount=17995
http://www.mediafire.com/download.php?t3k31t4iulsz41q <-Field Order Auto Detection fails (works with CoreAVC Cuda)
Aegwyn11
13th August 2011, 20:33
I apologize if I'm posting in the wrong place...really struggling to solve this one and not 100% sure where to start.
When playing back 1080i VC-1 material (Human Planet to be exact), I get jerky playback. The "jerk" happens about once every second with LAV CUVID/madVR/MPC-HC. I'm using a GTS 450. If I change to a different renderer, the symptom is less apparent because the video just isn't as smooth to begin with. If I change LAV CUVID to 30p (instead of 60p), the symptom is slightly less apparent because again, the video just isn't as smooth to begin with. If I try the clip in WMP, the symptom is less apparent (see above) and much more random. I tried Reclock and it didn't help.
Its most apparent on scrolling credits. It almost appears that its displaying a frame out of order (the credits seem to jump up, then back to the right spot).
I noticed this problem previously on another VC-1 1080i video (US version of Life). At the time I had a GT430 and assumed it was due to bandwith limitations on that card.
The VAST majority of my HD library is 24p and I never see this problem on that content. It also seems that 480i content (Mpeg-2) doesn't have this problem. Not sure about 1080i h.264...don't have any to test.
Thoughts? Suggestions?
vBulletin® v3.8.11, Copyright ©2000-2026, vBulletin Solutions Inc.