I'm trying to get the Intel Quick-Sync H.264 Encoder MFT to work on Windows 7. I've discovered that it doesn't work with a SinkWriter, the error I eventually get while pushing samples to the SinkWriter is MF_E_UNEXPECTED( 0xC00D36BB ). I'd like to get the encoder working in isolation first and then build up to hooking it to a MPEG4Sink to write to a file.
Anyway, I'm running into a problem with the first step of creating a instance of the encoder and verifying that the eventing mechanism will work. When I call GetEvent() I get a Access Violation with the following call stack :
mfplat.dll!MFTRACE_MEDIA_EVENT_IMPL( unsigned long, unsigned long, struct IMFMediaEvent * ) <---- Access Violation Here
mfplat.dll!CMFMediaEventGenerator::GetEvent( unsigned long, struct IMFMediaEvent * * )
mfplat.dll!CMFMediaEventQueue::GetEvent( unsigned long, struct IMFMediaEvent * * )
EventCrash.exe!main() Line 92
I verified that this code works fine on Windows 10 with no crash.
Thanks for sharing details on the issue. Can you provide details on platform with Win7? Share a log from system analyzer here: https://software.intel.com/en-us/articles/media-sdk-tools. But, before running system analyzer tool, check if you have latest drivers installed on the machine from here: https://downloadcenter.intel.com/. Update the graphics driver if not latest and run the test again. Let me know your findings?
"Thank you Harsh for your reply.
My drivers are up-to-date.
Here is the output from System Analyzer:
Intel(r) Media Server Studio 2015 R6 - System Analyzer (64-bit)
The following versions of Media SDK API are supported by platform/driver
[opportunistic detection of MSDK API > 1.16]:
Version Target Supported Dec Enc
1.0 HW Yes X X
1.0 SW Yes X X
1.1 HW Yes X X
1.1 SW Yes X X
1.2 HW Yes X X
1.2 SW Yes X X
1.3 HW Yes X X
1.3 SW Yes X X
1.4 HW Yes X X
1.4 SW Yes X X
1.5 HW No
1.5 SW Yes X X
1.6 HW No
1.6 SW Yes X X
1.7 HW No
1.7 SW Yes X X
1.8 HW No
1.8 SW Yes X X
1.9 HW No
1.9 SW Yes X X
1.10 HW No
1.10 SW Yes X X
1.11 HW No
1.11 SW Yes X X
1.12 HW No
1.12 SW Yes X X
1.13 HW No
1.13 SW Yes X X
1.14 HW No
1.14 SW Yes X X
1.15 HW No
1.15 SW Yes X X
1.16 HW No
1.16 SW Yes X X
1.17 SW Yes X X
Name Version State
Intel(R) HD Graphics 3000 18.104.22.16801 08
NVIDIA NVS 4200M 22.214.171.1249 Active
CPU: Intel(R) Core(TM) i5-2520M CPU @ 2.50GHz
OS: Microsoft Windows 7 Enterprise
Installed Media SDK packages (be patient...processing takes some time):
Intel(R) Media SDK 2016
Intel(R) Media SDK Samples 2016
Something else interesting I found is that I can get the sample_encode code sample working to perform hardware encoding on this machine. Even though the direct approach works I would still like to get the hardware encoding transform working through Media Foundation."
Thanks for sharing the system analyzer log. From the log, I see you are using 2nd generation [i5-2520M] dual graphics system (this is very old platform and no longer supported by MediaSDK, please refer to latest release notes). But, I suspect that the issue is caused by dual graphics configuration and few issues were fixed in late 2013 drivers. Unfortunately, we do not have 2nd generation machine on our end here to try. Hence to isolate this issue disable the Nvidia graphics or try on some other latest systems with 4th generation or above processor ( without dual graphics). Please refer to this article on current driver support matrix: https://software.intel.com/en-us/articles/driver-support-matrix-for-media-sdk-and-opencl?language=fr.
I did end up getting past this crash by using BeginGetEvent() instead of GetEvent(), for whatever reason the Intel Encoder MFT on this machine likes the BeginGetEvent()/EndGetEvent()/IMFAsyncCallback pattern.