How can Iinitialize Videoencoder withhardware implementation in Windows service (running in session 0) ? (Windows7 and Windows Server 2008).
I do not believe this usage model would work, as there are some technicalconcerns with Windows services (running in session 0) using some OS APIs that are required for Media SDK. One suggestion that may allow this issue to be avoided would be to have the service launch a new separate process (with a differnent 'user' and as an 'interactive session').
This may take some experimentation and some time to get definitive answers. If I find any more information on this, I will update this thread.
While researching this requestI found the following on the Internet, which describes some of the technical issues with creating this kind of service that wants to use graphics hardware acceleration. If any better suggestion is discovered, I will share it here.
Thank you Tony,
The service I develop, which will use Intel Media SDK, particularly video encoding with hardware acceleration, doesn't need to use desktop to show video, it does just a video encoding and saving it on hard drive as files. I'm aware that the graphic drivers absent in session 0, because it doesn't need to use GUI. But I'm wondering why Intel or/and Microsoft will not make available hardware acceleration for session 0? May be my scenario of using Intel Media SDK andvideo encoding isn't general, but it exists, and there is need to do so - service running in session 0 to encode live video streams from different camera's, there is no need in GUI application for doing that.
I'm afraid that most of solutions presented by some developers, described in link you mentioned in your reply, not applicable in our scenario. I'll do search further for suitable solution and hope for help from Intel as well.
I agree with your concerns/comments. I believe the root of the issue is that the design/architecture of a Microsoft Direct3D device, which is necessary for communication to graphics accelerator device.
The only other solution I can think of would be for Intel to provide private APIs that access hardware without using OS API, and I believe this is not allowed for secure Windows OS design.
I will continue to drive this through internal Intel channels, but it might help if you were to ask Microsoft for help directly, as the root of the issue isn't really "Intel Media SDK", but is instead "use of a Microsoft Graphics Accelerator device from within a Microsoft system (session 0) service". That way, you could explain why your scenario can not use their proposed solution.
Of course, I've tried to reach people at Microsoft with this issue, still without result. But I think that there will be more effectwhen Intel contact Microsftwith a such questions rather than just adeveloper, like me ;-)
Hi,I believeIntel could/(should?) provide a direct driver for Intel GPUs (exposing compute (i.e. OpenCL next year wih Ivi Bridge and Quick Sync also).. Nvidia has solved this problem exactly using a TCC driver that doesn't expose graphics but compute capabilities of gpus (i.e. OpenCL and CUDA)..So as I expect Intel to support OpenCL with IvyBridge and having next years lots ofgamer PCs with Ivi bridge and discrete cards for gaming you should expose at least headless OpenCL support (see new support in OpenCL inAMD APP 2.5 and Nvidia since years) if not this TCC like support..As said you could expose QuickSync via this driver also..thanks
The same question was addressed in other thread.http://software.intel.com/en-us/forums/showthread.php?t=84194&p=1#156619
Since Windows 8 is supposed to have full access to the DirectX APIs from within a session 0 service, I have started a new thread (question) on whether or not the Media SDK will in a new version be able to leverage this. Thread is here #106521.
We also ran into this issue under Windows 7 and spent some time already looking for workarounds.
In our use case we do not actually use the Media SDK within the service, but within a process that is started by the service. There are a lot of opinions on the web whether this should be possible or not. There is a tutorial that looks promising, but we had no success with that.
So the only option might be Windows 8, what would be unfortunate because we also want to support Windows 7 and implementation wise the distinction would be a hassle.