Closed clsid2 closed 9 months ago
Ah looks like in 1.2 D3D11 Native is actually working now, but going back to 1.1 does break it, was a bit confused since the diff between 1.1 & 1.2 didn't really seem like it'd fix it, but seems it's probably the new 8-bit checks around bHdrPassthrough:
For me Native is passing something with params.CDepth == 16
, 1.1 would have set bHdrPassthrough for that but in 1.2 it gets left as false now instead, guess if bHdrPassthrough was set for it then it'd end up with some color space that RTXHDR doesn't like.
Appreciate the help btw, I'd tried looking into disabling Native when you mentioned it before but I'm a bit out of my depth with DirectShow, I'll look into adding an NV check shortly too.
You can do that by not exposing ID3D11DecoderConfiguration interface in
CVideoRendererInputPin::NonDelegatingQueryInterface()
.I would advice to first add an option for RTXAutoHDR in the settings GUI, so Native mode only gets disabled when really needed. Based on MediaType info you have at that point you should also be able to determine cases where AutoHDR won't get used, such as video already being 10-bit (HDR), again to avoid disabling it unnecessarily.
This way users don't need to mess with LAV Filters settings, and copyback mode is only forced when RTXAutoHDR option is enabled.
You should also add
m_VendorId == PCIV_NVIDIA
check in your code when determining if AutoHDR should be used. That to avoid unneeded re-init on unsupported systems.Edit: When Native mode is active, the decoder calls
CVideoRendererInputPin::ActivateD3D11Decoding()
which in turn callsCDX11VideoProcessor::SetDevice()
. Maybe that helps you in figuring out why AutoHDR doesn't work with Native mode.