- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I have a very simple VSS solution (version 17.7.6), using hello_encode's util.h and linking to vpl.lib (..\Intel\onevpl.devel.win-x64.2023.1.0.43419\lib\native\win-x64). The purpose of the code is to enumerate implementations. When I run this code on my Coffeelake test box the output is as follows:
Implementation 0: mfxhw64 (1.35) supporting 0 codecs
That is to say, it has found an impl and is able to report its version but nothing else in the mfxImplDescription has been filled out. NumCodecs is zero.
I know this CPU supports Media SDK as it runs our software (which does H264 enc/dec). I am going through the process of switching out to VPL, which I assume simply dispatches to oneAPI or Media SDK. The above code works on my other box with the Intel Arc plugged in.
So my question is whether this is expected behaviour (undocumented if it is) and if not, what should I look at to try to find the cause. Do I need to make additional libraries available to it? I am deploying libvpl.dll to the program folder.
Here is my code:
#include "vpl/mfx.h"
#include <stdio.h>
#pragma comment(lib, "vpl.lib")
int main()
{
mfxLoader loader = MFXLoad();
if (!loader)
{
fprintf(stderr, "Failed to create a loader\n");
return -1;
}
mfxU32 i = 0;
mfxImplDescription * desc = nullptr;
while (MFX_ERR_NONE == MFXEnumImplementations(loader, i, MFX_IMPLCAPS_IMPLDESCSTRUCTURE, reinterpret_cast<mfxHDL*>(&desc)))
{
printf("Implementation %d: %s (%d.%d) supporting %d codecs\n", i, desc->ImplName, desc->ApiVersion.Major, desc->ApiVersion.Minor, desc->Enc.NumCodecs);
MFXDispReleaseImplDescription(loader, desc);
i++;
}
MFXUnload(loader);
return 0;
}
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi,
This is expected behavior on Legacy platforms such as Coffee Lake, link, where only MediaSDK runtime is available.
MediaSDK runtime (API=1.35) does not support advanced media capabilities query operations which were added with API 2.0 so structures such will not be filled in on these platforms
More information here.
Either the application should use legacy query function such as MFXVideoDECODE_Query() to confirm which codecs are supported or, as you mentioned you're transitioning towards VPL, try to use a suitable platform where oneVPL is supported ( https://github.com/oneapi-src/oneVPL/#readme:~:text=targeting%20Intel%C2%AE%20GPUs-,Runtime%20loaded,-by%20oneVPL%20Dispatcher ).
If this is the information you are looking for, make sure to accept this as a solution. This would help others with similar issue and let us know if you still need any information on this.
Regards,
Rajashekar
Link Copied
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Some additional info. I compiled legacy-encode.cpp, switching out the codec from HEVC to AVC, i.e.
encodeParams.mfx.CodecId = MFX_CODEC_AVC;
The output was:
> enumerate -hw -i 0099.raw -w 1280 -h 720
Implementation details:
ApiVersion: 1.35
Implementation type: HW
AccelerationMode via: D3D11
Path: C:\Windows\System32\DriverStore\FileRepository\iigd_dch.inf_amd64_b804c9204ad70be1\libmfxhw64.dll
Encode query failed
Encoded 0 frames
The acceleration mode appears to be MFX_ACCEL_MODE_VIA_D3D11. However the sample has MFX_IOPATTERN_IN_SYSTEM_MEMORY, so it doesn't work out of the box. I don't even know if that is the issue anyway. It's just something I noticed. I remember using a system memory allocator on Coffeelake with Media SDK so it must surely be supported.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi,
Thanks for posting in Intel Community.
Inorder to assist you better on the issue, could you provide below details.
1. Hardware/OS Versions.
2. It is observed that, you are trying to link with the oldest version?
Could you try with latest version of oneVPL build? (Instructions to build from the latest are here https://github.com/oneapi-src/oneVPL/blob/master/INSTALL.md) and confirm If you are facing the same.
3. Also, if the second query you've posted is also experimented on the same platform. If not, kindly provide VPL version and platform details for that as well.
Regards,
Rajashekar
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I have an i5 8400 running Windows 11. It has an NVIDIA 1650 graphics card driving the monitors. Our software services (using Media SDK to encode H264) run fine. I am attempting to implement the upgrade from Media SDK to VPL. My code works fine with the Intel Arc installed on the AMD machine. It does not work on the older Coffee Lake box (not the Arc, which is not installed, I'm talking about the CPU-side QuickSync here - the 1.35 version Media SDK impl).
I ran vpl-inspect on the Coffee Lake box and it returned:
..\native>vpl-inspect.exe
Implementation #0: mfxhw64
Library path: C:\Windows\System32\DriverStore\FileRepository\iigd_dch.inf_amd64_b804c9204ad70be1\libmfxhw64.dll
AccelerationMode: MFX_ACCEL_MODE_VIA_D3D11
ApiVersion: 1.35
Impl: MFX_IMPL_TYPE_HARDWARE
VendorImplID: 0x0001
ImplName: mfxhw64
License:
Version: 1.2
Keywords: MSDK,x64
VendorID: 0x8086
mfxAccelerationModeDescription:
Version: 1.0
Mode: MFX_ACCEL_MODE_VIA_D3D11
mfxPoolPolicyDescription:
Version: 1.0
mfxDeviceDescription:
MediaAdapterType: MFX_MEDIA_INTEGRATED
DeviceID: 3e92/1
Version: 1.1
mfxDecoderDescription:
Version: 0.0
mfxEncoderDescription:
Version: 0.0
mfxVPPDescription:
Version: 0.0
NumExtParam: 0Total number of implementations found = 1
I installed oneVPL into my project via. Visual Studio package manager. That is 2023.1.0.43419. Last week I fetched oneVPL-master from Github. I built it according to the instructions. That version of vpl.lib makes no difference to the output on the Coffee Lake box. It still does not work.
The github page for the dispatcher suggests, "The base package is limited to the dispatcher and samples. To use oneVPL for video processing you need to install at least one implementation". What does this mean? I have mfxhw64 in my drivers folder on Windows already. Presumably I don't need it and these are instructions for Linux devs.
I am so confused about what I need to do even after reading the upgrade guide. Please advise. Imagine you're talking to a Golden Retriever. Let's go through the basics:
I have a simple Visual Studio solution, with the code at the top of the page in it (just EnumImplementations). I link with vpl.lib. I have up to date drivers installed on the Coffee Lake box. Do I need to deploy some additional .dll? Do I need to install some additional libraries? Do I need to set some environment variables? What do I need to do to get it to work.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi @RobinsonUK ,
Thanks for providing the information.
We're working on this internally and will get back to you once we've an update.
Regards,
Rajashekar
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi,
This is expected behavior on Legacy platforms such as Coffee Lake, link, where only MediaSDK runtime is available.
MediaSDK runtime (API=1.35) does not support advanced media capabilities query operations which were added with API 2.0 so structures such will not be filled in on these platforms
More information here.
Either the application should use legacy query function such as MFXVideoDECODE_Query() to confirm which codecs are supported or, as you mentioned you're transitioning towards VPL, try to use a suitable platform where oneVPL is supported ( https://github.com/oneapi-src/oneVPL/#readme:~:text=targeting%20Intel%C2%AE%20GPUs-,Runtime%20loaded,-by%20oneVPL%20Dispatcher ).
If this is the information you are looking for, make sure to accept this as a solution. This would help others with similar issue and let us know if you still need any information on this.
Regards,
Rajashekar
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I'll tell you what it's a good job I'm using a dependency injection pattern in this library. I'm going to have to do an additional impl I think - crib my existing Media SDK encoder and decoder for the purpose. It's not entirely clear to me that'll work but I will of course return with more questions if it does not.
Thanks very much.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi,
Thanks for accepting it as solution. If you need any additional information, please post a new question as this thread will no longer be monitored by Intel.
Regards,
Rajashekar

- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page