I am working on a application for which I will require to modify custom presenter. I just want to ask that is it possible that we create NV12 surfaces in presnter? This type is not in the list but is there any way we can do this? And will it make my filter graph and video rendering faster?
Basically we will be having multiple videos and we take out video frame from renderer and render it through our application along with other content. So I thought having NV12 surfaces will save color conversion happening in renderer. We have observed that with multiple videos, the application is not able to render at proper rate. So we are trying to optimize wherever possible.
Any other idea will also help. (We are using Intel MSDK DS filters)
I think this is a good idea and worth trying. You may define#define D3DFMT_NV12 (D3DFORMAT)MAKEFOURCC('N','V','1','2') and use D3DFMT_NV12 as backbuffer format. I expect both mixer and display device can support this format. Just make sure you correct all the format checks in the code (like explicit check for D3DFMT_X8R8G8B8).
I'll be interested to know if this works and helps improve performance of your app. We may need to update our sample apps, too.
I tried this too and confirm that it doesn't work. Sorry for a misleading advice. Let me do more investigation on this.. Could you please also describe in more details the pipeline of your app and which color conversion you need to avoid?
We are using directshow for video playback but the EVR presenter would provide video frame to application where it gets composed along with other contents using DXVA-HD. The color conversion happens in presenter since the surfaces created are of XRGB type and the IMSDK output is NV12.