[RESOLVED] Artifacts On GITS VOB Frame Serving
Re: Artifacts On GITS VOB Frame Serving
I have a temporary workaround that seems to work but I want to ask nVidia if it's OK to lie in the bit_rate_value field, i.e., will it break something in the decoder if I just write a 1 in there unconditionally? Seems to be OK but I want to get an nVidia A-OK before letting anything loose.
If quant matrices change, though, there is no workaround and we have to wait for a driver fix. In your stream, only the bit_rate_value field changes between sequence headers.
If quant matrices change, though, there is no workaround and we have to wait for a driver fix. In your stream, only the bit_rate_value field changes between sequence headers.
Re: Artifacts On GITS VOB Frame Serving
Thanks for looking into all of this!
Also, thanks for giving me some pretty detailed background info. I'm genuinely curious about how these tools work. I've got a reasonably good high-level understanding of the basics, but I'm totally lost on any of the actual implementation.
Also, thanks for giving me some pretty detailed background info. I'm genuinely curious about how these tools work. I've got a reasonably good high-level understanding of the basics, but I'm totally lost on any of the actual implementation.
Re: Artifacts On GITS VOB Frame Serving
You know what I always say, I aim to please (except when I don't).
I like to give all the details because there are other developers out there implementing CUVID and they surely like to know about these things. I grokked 10-bit HEVC thanks to another developer, so it's the least I can do to share the things I discover.
You get brownie points for bringing this to light and following up instead of just grumbling to yourself.
I like to give all the details because there are other developers out there implementing CUVID and they surely like to know about these things. I grokked 10-bit HEVC thanks to another developer, so it's the least I can do to share the things I discover.
You get brownie points for bringing this to light and following up instead of just grumbling to yourself.
Re: Artifacts On GITS VOB Frame Serving
Why thank you kindly! I'm just happy to help out!admin wrote:You get brownie points for bringing this to light and following up instead of just grumbling to yourself.
Re: Artifacts On GITS VOB Frame Serving
I went back and extracted a small segment again, and this time it does show problems. I must've done something really absentminded the first time, like open the m2v file in dgindex.
Re: Artifacts On GITS VOB Frame Serving
Hehe, good old human error. It's why I always "trust but verify". I wish you had been right because then it would have been on my program stream parser and it would have been fully in my control.
I'm going to slipstream a fix for you later this morning. Watch out for it.
I'm going to slipstream a fix for you later this morning. Watch out for it.
- Aleron Ives
- Posts: 126
- Joined: Fri May 31, 2013 8:36 pm
Re: Artifacts On GITS VOB Frame Serving
That sounds like a dangerous and/or violent fix.admin wrote:I'm going to slipstream a fix for you later this morning. Watch out for it.
Re: Artifacts On GITS VOB Frame Serving
Holy fortune cookies. You funny guy.
BTW, the fix is in.
BTW, the fix is in.
Re: Artifacts On GITS VOB Frame Serving
Just out of curiosity, as there has been several driver releases since, what is the actual status of this ?admin wrote:OK, thanks to nVidia's fine support, the problem is now understood. It is due to a recent CUVID regression.
Is it fixed in the driver, or do you still need your workaround ?
Re: [RESOLVED] Artifacts On GITS VOB Frame Serving
Hi jpsdr.
I just updated to version 378.78 and it is indeed fixed. I usually leave harmless workarounds in place so as not to hose people running older drivers.
I just updated to version 378.78 and it is indeed fixed. I usually leave harmless workarounds in place so as not to hose people running older drivers.
Re: Artifacts On GITS VOB Frame Serving
Is your workaround safe in that case ? Also, it's possible that i didn't understood this statement properly, and you were not comparing this case with your workaround.admin wrote: If quant matrices change, though, there is no workaround and we have to wait for a driver fix.
And i thought you were not sure your workaround may not break things in specific cases, but as it was just my thought/feeling, it may be wrong also.
Re: [RESOLVED] Artifacts On GITS VOB Frame Serving
Everything is fine; don't worry.
The CUVID bug was this: When a sequence header is encountered that differs from the previous one, the next GOP is erroneously marked as bad link, meaning the referenced frames in the preceding GOP are discarded. That caused macroblocking at that point. A sequence header change should NOT mark the GOP as bad link.
In the case of the stream offered here, the only change in the sequence header was the signaled bit rate. But CUVID does not use this field in any way (other than when comparing the sequence header). That allowed me to simply always write it as 0, so that CUVID would not see a change in the sequence header. If, however, the quant matrices would change, I cannot write those to 0 because decoding would then fail miserably. In that case, the CUVID bug would be triggered with no possible workaround.
So: The workaround is unconditionally safe because it simply writes a field that is never used. I never thought it would break anything. But I did speculate that some streams may be encountered for which the workaround is useless.
All clear?
The CUVID bug was this: When a sequence header is encountered that differs from the previous one, the next GOP is erroneously marked as bad link, meaning the referenced frames in the preceding GOP are discarded. That caused macroblocking at that point. A sequence header change should NOT mark the GOP as bad link.
In the case of the stream offered here, the only change in the sequence header was the signaled bit rate. But CUVID does not use this field in any way (other than when comparing the sequence header). That allowed me to simply always write it as 0, so that CUVID would not see a change in the sequence header. If, however, the quant matrices would change, I cannot write those to 0 because decoding would then fail miserably. In that case, the CUVID bug would be triggered with no possible workaround.
So: The workaround is unconditionally safe because it simply writes a field that is never used. I never thought it would break anything. But I did speculate that some streams may be encountered for which the workaround is useless.
All clear?
Re: [RESOLVED] Artifacts On GITS VOB Frame Serving
Perfect, thanks.
Re: [RESOLVED] Artifacts On GITS VOB Frame Serving
You're welcome, my pleasure. Have a great Sunday!