I have developed an application which encodes JPEG images around Media SDK 1.19. On my development machine everything works well, however it is a Gen 5 Core CPU (i7-5820K) so the implementation fails back to Software.
On a second machine (Atom E3825) the application also works and automatically fails back to software implementation.
I went out and purchased a Gen 6 Skylake (Pentium E4400) CPU and motherboard so that I can test JPEG hardware acceleration. Here is my problem:
When I run my application I get the response MFX_ERR_UNSUPPORTED from MFXVideoENCODE_Query.
If I change the IMPL from AUTO to SOFTWARE the program runs with no problems.
If I run the "sample_encode.exe" program provided by Intel like this: "sample_encode.exe jpeg -w 1920 -h 1080 -f 30 -q 90 -i test.bin -o test.jpg" it runs correctly but gives the warning "partial acceleration".
Here is my code for the video param:
mfxVideoParam m_mfxEncParams; memset(&m_mfxEncParams, 0, sizeof(mfxVideoParam)); m_mfxEncParams.mfx.CodecId = MFX_CODEC_JPEG; m_mfxEncParams.mfx.FrameInfo.FrameRateExtN = 120; m_mfxEncParams.mfx.FrameInfo.FrameRateExtD = 1; m_mfxEncParams.IOPattern = MFX_IOPATTERN_IN_SYSTEM_MEMORY; // frame info parameters m_mfxEncParams.mfx.FrameInfo.FourCC = MFX_FOURCC_YV12; m_mfxEncParams.mfx.FrameInfo.ChromaFormat = MFX_CHROMAFORMAT_YUV420; m_mfxEncParams.mfx.FrameInfo.PicStruct = MFX_PICSTRUCT_PROGRESSIVE; m_mfxEncParams.mfx.FrameInfo.Width = MSDK_ALIGN16(width); m_mfxEncParams.mfx.FrameInfo.Height = (MFX_PICSTRUCT_PROGRESSIVE == m_mfxEncParams.mfx.FrameInfo.PicStruct) ? MSDK_ALIGN16(height) : MSDK_ALIGN32(height); m_mfxEncParams.mfx.FrameInfo.CropX = 0; m_mfxEncParams.mfx.FrameInfo.CropY = 0; m_mfxEncParams.mfx.FrameInfo.CropW = width; m_mfxEncParams.mfx.FrameInfo.CropH = height; m_mfxEncParams.mfx.Interleaved = 1; m_mfxEncParams.mfx.Quality = 75; m_mfxEncParams.mfx.RestartInterval = 0; m_mfxEncParams.AsyncDepth = 1; m_mfxEncParams.mfx.BufferSizeInKB = width * height * 32 / 1024; mfxStatus status = MFXVideoENCODE_Query(*session, &m_mfxEncParams, &m_mfxEncParams);
And here are the results from mediasdk_system_analyzer_64.exe:
Intel(R) Media Server Studio 2016 R2 - System Analyzer (64-bit)
The following versions of Media SDK API are supported by platform/driver
[opportunistic detection of MSDK API > 1.19]:
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 Yes X X
1.5 SW Yes X X
1.6 HW Yes X X
1.6 SW Yes X X
1.7 HW Yes X X
1.7 SW Yes X X
1.8 HW Yes X X
1.8 SW Yes X X
1.9 HW Yes X X
1.9 SW Yes X X
1.10 HW Yes X X
1.10 SW Yes X X
1.11 HW Yes X X
1.11 SW Yes X X
1.12 HW Yes X X
1.12 SW Yes X X
1.13 HW Yes X X
1.13 SW Yes X X
1.14 HW Yes X X
1.14 SW Yes X X
1.15 HW Yes X X
1.15 SW Yes X X
1.16 HW Yes X X
1.16 SW Yes X X
1.17 HW Yes X X
1.17 SW Yes X X
1.18 HW Yes X X
1.18 SW Yes X X
1.19 HW Yes X X
1.19 SW Yes X X
Graphics Devices:
Name Version State
Intel(R) HD Graphics 510 20.19.15.4501 Active
System info:
CPU: Intel(R) Pentium(R) CPU G4400 @ 3.30GHz
OS: Microsoft Windows 7 Professional
Arch: 64-bit
Installed Media SDK packages (be patient...processing takes some time):
Installed Media SDK DirectShow filters:
Installed Intel Media Foundation Transforms:
Intel(R) Hardware VC-1 Decoder MFT : {059A5BAE-5D7A-4C5E-8F7A-BFD57D1D6AAA}
Intel(R) Hardware H.264 Decoder MFT : {45E5CE07-5AC7-4509-94E9-62DB27CF8F96}
Intel(R) Hardware MPEG-2 Decoder MFT : {CD5BA7FF-9071-40E9-A462-8DC5152B1776}
Intel(R) Quick Sync Video H.264 Encoder MFT : {4BE8D3C0-0515-4A37-AD55-E4BAE19AF471}
Intel(R) Hardware Preprocessing MFT : {EE69B504-1CBF-4EA6-8137-BB10F806B014}
Thank you everyone for your help.