I am planning to develop a windows service(running in session 0) which will use Intel Media SDK VPP features.
In the previous version of Intel Media SDK graphics hardware acceleration is not supported in windows service session 0 due to some technical concerns of windows OS.
Windows 8 now support graphics hardware acceleration under windows service.
Could anyone confirm that Intel Media SDK 2013 have full hardware acceleration capabilities under a windows service (session 0) ?
one more question
Intel Media SDK 2013 enhanced support for DirectX 11, in the sample code I only find the decoder and encoder sample which using DirectX 11.
Is it possible to use DirectX 11 on Intel Media SDK VPP ?
Any suggestions are highly appreciated.
Correct, Using Windows 8 developers can now utilize Media SDK 2013 in a Windows service. But note that the core requirement to enable this use case is the use of DirectX11 device and D3D11 surfaces.
The samples part of Media SDK 2013 showcase how to setup DirectX11 pipelines for some common use cases. There are also some simple samples part of the new Media SDK tutorial, showing how to utilize DirectX11 in a "headless" fashion.
Yes, DirectX11 works fine with with all Media SDK components, including VPP.
Hi Petter ,
I made a slightly changes of my program based on the sample code simple_4_vpp_resize_procamp - d3d provided in this tutorial (http://software.intel.com/en-us/articles/intel-media-sdk-tutorial).
My program takes input from webcam (YUY2) --> MEDIA SDK VPP --> Output(NV12)
I use the API version 1.4 and MFX_IMPL_VIA_D3D11.
Intel HD Graphics 4000 Driver version 126.96.36.19932.
My program works well under desktop mode standard application(I can see the correct output data).
When I try it under Windows service although all the VPP steps return MFX_ERR_NONE , but the output of MEDIA SDK VPP was green color(I check through the output data and found out that the value of Y , U and V channel are all zero).
So far I am sure that I fed the correct input data into MEDIA SDK VPP.
Am I missing some steps when running the MEDIA SDK VPP ?
Or is there any tools that can let me debug deeper into the program , so I can check why the output data is a green color image ?
that is interesting and surprising. Could you share some more details on how you implemented the Windows service so that we can try to reproduce on our side?
Hi Petter ,
Sorry for the late reply..
I am not sure what really cause this problem, It could be some bug on my program..
I am kinda busy lately , so I can't provide any detail right now
I will update you or may be provide you part of my code as soon as possible..
Hi Petter ,
To narrow down my problem and to make sure that the problem is not on my windows service,
I decided to try the sample code simple_4_vpp_resize_procamp - d3d provided in this tutorial (http://software.intel.com/en-us/articles/intel-media-sdk-tutorial).
I use foreman_cif.yuv as my input data (please check the attach file but you could also download it from here http://trace.eas.asu.edu/yuv/ ;) .
I only changed the mfxU16 inputWidth = 352; mfxU16 inputHeight = 288; to fit my input data.
All the VPP steps return MFX_ERR_NONE , but suprisingly the output frame was green color(the value of Y , U and V channel are all zero).
BTW my computer only support D3D_FEATURE_LEVEL_11_0.
Any suggestion ?
D3D_FEATURE_LEVEL_11_0 is a problem if you are trying to run DX11 pipeline using Media SDK. DX11 surface usage with Media SDK is only supported in Windows 8 (= D3D_FEATURE_LEVEL_11_1)
But from from your description is seems you are running a DX9 pipeline? If so, I'm not sure what is going on, since you are not running the workload inside a service, right?
Hi Petter ,
Yes, my workload is not in a service.
I am just trying to run the sample code simple_4_vpp_resize_procamp - d3d
How to make sure that I am using DX11 pipeline ?
so far I set the MFX_IMPL_VIA_D3D11 and API Version 1.6
My system running Windows 8 Pro 64 bits with Intel HD Graphics 4000 driver version 188.8.131.5232
but after calling the D3D11CreateDevice function I checked the return Feature level is D3D_FEATURE_LEVEL_11_0.
I am wondering why my computer doesn't support D3D_FEATURE_LEVEL_11_1 ?
It is quite strange that your Win8 system does not report support for feature level 11.1. I have a hard time guessing what the issue may be since this is a fundamental OS/DirectX capability. More info by Microsoft here: http://msdn.microsoft.com/en-us/library/windows/desktop/hh404562(v=vs.85).aspx
Are you running an unmodified version of the "simple_4_vpp_resize_procamp - d3d" opened from the DX11 Visual Studio solution file?
Device creation using D3D11CreateDevice() with feature levels set up to 11.1 should not fail on Windows 8.
I'm assuming you are you using Visual Studio 2012?
Hi Petter ,
Yes I am running the "simple_4_vpp_resize_procamp - d3d" opened from DX11 Solution file. The only things I modified is the inputWidth and inputHeight variables in order to fit my input data.
I am using Visual Studio Ultimate 2012.
D3D11CreateDevice() return S_OK but the returned feature level is D3D_FEATURE_LEVEL_11_0 not D3D_FEATURE_LEVEL_11_1.
I am just googled and found out that Intel HD Graphics 4000 does'nt support Direct 3D 11.1
could it be the problem ?
I would not worry much about the returned feature level array from D3D11CreateDevice(). If the call to D3D11CreateDevice() succeeds when using D3D_FEATURE_LEVEL_11_1 you should be fine.
The current Intel HD Graphics 4000 driver does support DX11 surface usage via Media SDK when using Win8. The DirectX11.1 web discussions on this topic are misleading.
Regarding your issue. I looked at the "simple_4_vpp_resize_procamp - d3d" and observe similar issue. Thanks for reporting this bug. We will improve future Media SDK tutorial code drop.
In the meantime the issue can be resolved by commenting out the following line from the code:
VPPRequest.Type |= WILL_READ;
Hendrik W. wrote:
Commenting VPPRequest.Type |= WILL_READ; solved this issue.
After doing the above correction, did everything also work when running it as a Windows 8 service (under session 0)?
Did you have to do additional changes to the Media SDK parts (the sample) to get it to work as a service?
I think there are many other forum readers (which have been previously frustrated by the limitations of Windows 7 and Media SDK and DirectX in this situation) that would be interested in any details you can share on getting Media SDK to run as a session 0 service (on Win8).
Hi jay ,
There's no need to comment " VPPRequest.Type |= WILL_READ; " again
This issue has been solved in the 18 April 2013 update of media sdk tutorial
You can download the latest tutorial here (http://software.intel.com/en-us/articles/intel-media-sdk-tutorial) .
Please make sure you use the most recent Intel graphics driver.