I am working with the Video Processing sample (sample_vpp). I have inserted a few printf's but the sample code is basically unmodified. VPP denoise appears to have no effect when using hardware 1.7. It does behave as expected when using software 1.8.
This is my setup: Media SDK 2014 for Clients (x64), driver 10.18.10.3345, Intel(R) HD Graphics 4600.
Is VPP denoise supposed to work for hardware 1.7?
I am using the same yv12 source for both sw and hw attempts, with this command line:
-denoise 99 -lib hw -sw 720 -sh 480 -scc yv12 -sf 30 -spic 1 -dpic 1 -dw 720 -dh 480 -dcc nv12 -df 30 -i noisy_yv12.raw -o noisy_yv12_vpp.raw
I tested this locally with the same configuration and driver but I do not see any issues. Denoise works fine both in HW (1.7) and SW (1.8), albeit the effect is subtle, which is the expected behavior.
Did you try this with a very noisy input? A noisy input may help identify the effect.
Your issue may also be due to the fact that denoise in on by default for some configurations. Thus you may not be able to see the effect, at least not as clearly. Check out the "sample_encode" sample function "AllocAndInitVppDoNotUse()" for details on how to disable potential default VPP filters.
Yes, I am using a noisy input. Note that I am seeing the denoise effect when using sw 1.8.
I am using a yv12 input. When I use an nv12 input I see the denoise effect with hw 1.7 so my problem is just for yv12 input.
Here are my sample_vpp command lines:
-denoise 99 -lib sw -sw 720 -sh 480 -scc yv12 -sf 30 -spic 1 -dpic 1 -dw 720 -dh 480 -dcc nv12 -df 30 -i vidutil.yv12 -o vpp_sw.nv12
-denoise 99 -lib hw -sw 720 -sh 480 -scc yv12 -sf 30 -spic 1 -dpic 1 -dw 720 -dh 480 -dcc nv12 -df 30 -i vidutil.yv12 -o vpp_hw.nv12
Does it work on yv12 for you?
yes, on my side it is working for both YV12 and NV12 in HW mode. But the effect is quite subtle.
If not already, can you try to explicitly turn off any default VPP filter as illustrated in "AllocAndInitVppDoNotUse()" to see it it makes any difference.
The effect of denoise on my test clip is not subtle, it is easy to see that nv12 is working and yv12 is not.
Video Processing Sample 5.0.337.78585 doesn't include VPP DoNotUse code. So starting from a different project I added DoNotUse code. I am able to turn off MFX_EXTBUFF_VPP_DETAIL, MFX_EXTBUFF_VPP_SCENE_ANALYSIS, and MFX_EXTBUFF_VPP_PROCAMP. And of course I am not adding MFX_EXTBUFF_VPP_DENOISE because I want that on. If I specify any others (MFX_EXTBUFF_VPP_FRAME_RATE_CONVERSION, MFX_EXTBUFF_VPP_IMAGE_STABILIZATION, MFX_EXTBUFF_VPP_PICSTRUCT_DETECTION) I get an error MFX_ERR_INVALID_VIDEO_PARAM.
That change does not fix the issue, yv12 is still not being denoised. I have attached a trace.
So if you're not using sample_vpp, maybe your reader is manually converting YV12 to NV12 on file read. I have no problem doing that I just wanted to know if VPP from YV12 was supposed to work.