- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
We have been using a simple MFXInit() to test of Quicksync is available, but I now realized that when we run our program as a service, the very same MFXInit() always fails. That leads me to believe Quicksync (or any is not available to a Windows service...
Much to my disappointment, I found this thread : http://software.intel.com/en-us/forums/topic/311956, which leads me to indicate there is no solution for this problem, with graphics drivers not available to "session 0" .. (I have no experience with Windows services - others have worked on that part in our project). Very unfortunate - we relied on Quicksync for much improved transcoding performance.
-Karl L.
Link Copied
- « Previous
-
- 1
- 2
- Next »
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Sergey: Thanks for trying to help, even when the Intel expert has posted it is impossible with Windows 7. So here you go:
CreateService(
schSCManager,
pServiceName,
pServiceName,
SERVICE_ALL_ACCESS,
dwServiceType,
dwStartType,
SERVICE_ERROR_NORMAL,
pExePath,
NULL,
NULL,
NULL,
NULL,
NULL);
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
According to http://msdn.microsoft.com/en-us/library/windows/desktop/ms683502(v=vs.85).aspx : "Important Services cannot directly interact with a user as of Windows Vista. Therefore, the techniques mentioned in the section titled Using an Interactive Service should not be used in new code."
The SERVICE_INTERACTIVE_PROCESS flag is mentioned in the Using an Interactive Service.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Here is the excerpt from the article mentioned by you
"The NoInteractiveServices value defaults to 1, which means that no service is allowed to run interactively, regardless of whether it has SERVICE_INTERACTIVE_PROCESS. When NoInteractiveServices is set to a 0, services with SERVICE_INTERACTIVE_PROCESS are allowed to run interactively."
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Before that, like I already quoted:::::: : "Important Services cannot directly interact with a user as of Windows Vista. Therefore, the techniques mentioned in the section titled Using an Interactive Service should not be used in new code."
Anyway, the SERVICE_INTERACTIVE_PROCESS_FLAG corresponds to the same checkbox as is located in the Log On tab of a service property, which I asked you above. So now I tried both methods - setting it in the registry -> modifies the check box. Setting the check box -> modifies the registry. So to answer my own question: Yes, this flag and that checkbox is the same.
And to re-iterate: I tried that already (tried again now), and the result is the same I wrote above: "Are you describing the "Allow service to interact with desktop" in the Log On tab for service properties? I tried this, and it makes no difference for Quicksync availability. I was also told "It's a deprecated option for interop with very old services"."
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
The only alternative, as I suggested above, which is possible when a user is logged on and has our systray app running, is to transmit the encoding parameters to the systray using IPC (named pipes), to have it start our encoding process. It's a little messy, and prone to errors, if for instance users log off mid-encoding, but with Quicksync's amazing encoding speed, may be worth the effort when we have time.
Suggestion to Intel: you should create something like Lucid's Virtu (http://www.lucidlogix.com/product-virtu-gpu.html) , which I use on my home system. How it works, I don't know, but it allows Quicksync to be used with a discrete graphics card installed.
This, however, would be some kind of user space process with a defined API in your SDK, which transmits the function calls via IPC to that user process, that would allow Quicksync to be used by services on Windows 7. I already applied for a patent ;) Probably not possible or viable though, just speculating on something I have only brief knowledge about.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Sounds like we are back to the service type flag, as iliyapolak has already suggested. We have tried SERVICE_INTERACTIVE_PROCESS, as a flag to CreateService, setting it via the registry, and setting the checkbox. These three appear to be identical in their function, and for Quicksync, also tested all three variations thereof, makes zero difference.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
{{Off topic: just posted a reply, it was queued for approval. Why are some replies posted immediately, some queued for approval? This is why I ended up with duplicates...}}
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I didn't save it, and won't retype it. I am sure it will show up.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
As you know, the MFX error is MFX_ERR_UNSUPPORTED (The function cannot find the desired SDK implementation or version.)
The corresponding GetLastError is ERROR_MOD_NOT_FOUND 126 (0x7E) The specified module could not be found.
This seems like a logical match to me. When not run as a service there are no errors.
{{I am still waiting for my other reply to be approved, but the summary is that the parameter you asked about to CreateService: I tried OR-ing with the same deprecated (since Vista) SERVICE_INTERACTIVE_PROCESS flag 0x00000100 discussed above, and the effect is the same. The registry gets the flag ORed in, and the Log On Interactive check box gets marked. So three ways to set the same parameter, neither of which has any effect on the Quicksync availability - return code from MFXInit}}
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
>>> I tried OR-ing with the same deprecated (since Vista) SERVICE_INTERACTIVE_PROCESS flag 0x00000100 discussed above.>>>
I did not know that this flag is deprecated.My source of information did not state that clearly.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Look, guys (Sergey and iliyapolak): While I do appreciate your attempts at help, the Intel expert has stated access to Quicksync is impossible from services under Windows 7. I have done what I can to satisfy your requests for more information, but frankly, I don't see the point in continuing this exercise in futility.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi Karl,
it seems that nothing can be done.
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page
- « Previous
-
- 1
- 2
- Next »