intel / libvpl

Intel® Video Processing Library (Intel® VPL) API, dispatcher, and examples
https://intel.github.io/libvpl/
MIT License
262 stars 80 forks source link

Can't use GPU decoding #31

Closed NicolasProy closed 2 years ago

NicolasProy commented 2 years ago

Hi! I made a program using oneVPL to decode AVC and HEVC streams. While using this program with CPU implementation by initialising the session as follow, it works fine.

ImplValue.Type = MFX_VARIANT_TYPE_U32; ImplValue.Data.U32 = MFX_IMPL_TYPE_SOFTWARE; cfg[0] = MFXCreateConfig(loader); mfxStatus sts = MFXSetConfigFilterProperty(cfg[0], (const mfxU8*)"mfxImplDescription.Impl", ImplValue);

But when I try to use GPU capabilities (ImplValue.Data.U32 = MFX_IMPL_TYPE_HARDWARE;), decoding doesn't work. My IGP is an Iris Plus Graphics 655 and should be handled by oneAPI, and my drivers are up to date.

I tried to use the libraries installed by the oneAPI installer and also tried to compile from source with no result.

I can't figure out what I missed and could use a little help. Thanks in advance, Nicolas.

mav-intel commented 2 years ago

Hi Nicolas, can you print the output of the vpl-inspect tool here? It will show the adapters detected by oneVPL.

NicolasProy commented 2 years ago

Thank you for your answer, Here it is: function: MFXEnumImplementations (enter) function: LoaderCtxVPL::BuildListOfCandidateLibs (enter) function: LoaderCtxVPL::BuildListOfCandidateLibs (return) function: LoaderCtxVPL::CheckValidLibraries (enter) function: LoaderCtxVPL::CheckValidLibraries (return) function: LoaderCtxVPL::QueryLibraryCaps (enter) function: LoaderCtxVPL::PrioritizeImplList (enter) function: LoaderCtxVPL::PrioritizeImplList (return) function: LoaderCtxVPL::QueryLibraryCaps (return) function: LoaderCtxVPL::UpdateValidImplList (enter) function: LoaderCtxVPL::PrioritizeImplList (enter) function: LoaderCtxVPL::PrioritizeImplList (return) function: LoaderCtxVPL::UpdateValidImplList (return) function: LoaderCtxVPL::QueryImpl (enter) function: LoaderCtxVPL::QueryImpl (return) function: MFXEnumImplementations (return)

Implementation #0: mfxhw64 function: MFXEnumImplementations (enter) function: LoaderCtxVPL::QueryImpl (enter) function: LoaderCtxVPL::QueryImpl (return) function: MFXEnumImplementations (return) Library path: C:\WINDOWS\system32\libmfxhw64.dll function: MFXDispReleaseImplDescription (enter) function: LoaderCtxVPL::ReleaseImpl (enter) function: LoaderCtxVPL::ReleaseImpl (return) function: MFXDispReleaseImplDescription (return) AccelerationMode: MFX_ACCEL_MODE_VIA_D3D11 ApiVersion: 1.33 Impl: MFX_IMPL_TYPE_HARDWARE VendorImplID: 0x0000 ImplName: mfxhw64 License: Version: 1.2 Keywords: MSDK,x64 VendorID: 0x8086 mfxAccelerationModeDescription: Version: 1.0 Mode: MFX_ACCEL_MODE_VIA_D3D11 Mode: MFX_ACCEL_MODE_VIA_D3D9 mfxPoolPolicyDescription: Version: 1.0 mfxDeviceDescription: MediaAdapterType: MFX_MEDIA_INTEGRATED DeviceID: 3ea5/0 Version: 1.1 mfxDecoderDescription: Version: 0.0 mfxEncoderDescription: Version: 0.0 mfxVPPDescription: Version: 0.0 NumExtParam: 0 function: MFXDispReleaseImplDescription (enter) function: LoaderCtxVPL::ReleaseImpl (enter) function: LoaderCtxVPL::ReleaseImpl (return) function: MFXDispReleaseImplDescription (return) function: MFXEnumImplementations (enter) function: LoaderCtxVPL::QueryImpl (enter) function: LoaderCtxVPL::QueryImpl (return) function: MFXEnumImplementations (return)

Implementation #1: oneAPI VPL CPU Reference Impl function: MFXEnumImplementations (enter) function: LoaderCtxVPL::QueryImpl (enter) function: LoaderCtxVPL::QueryImpl (return) function: MFXEnumImplementations (return) Library path: C:\Program Files (x86)\Intel\oneAPI\vpl\latest\bin\libvplswref64.dll function: MFXDispReleaseImplDescription (enter) function: LoaderCtxVPL::ReleaseImpl (enter) function: LoaderCtxVPL::ReleaseImpl (return) function: MFXDispReleaseImplDescription (return) AccelerationMode: MFX_ACCEL_MODE_NA ApiVersion: 2.5 Impl: MFX_IMPL_TYPE_SOFTWARE VendorImplID: 0x0000 ImplName: oneAPI VPL CPU Reference Impl License: MIT Version: 1.2 Keywords: VPL,CPU,x64 VendorID: 0x8086 mfxAccelerationModeDescription: Version: 1.0 Mode: MFX_ACCEL_MODE_NA mfxPoolPolicyDescription: Version: 1.0 Policy: MFX_ALLOCATION_UNLIMITED mfxDeviceDescription: MediaAdapterType: MFX_MEDIA_UNKNOWN DeviceID: 0000 Version: 1.1 mfxDecoderDescription: Version: 1.0 CodecID: AV1 MaxcodecLevel: 53 Profile: MFX_PROFILE_AV1_MAIN MemHandleType: MFX_RESOURCE_SYSTEM_SURFACE Width Min: 64 Width Max: 4096 Width Step: 8 Height Min: 64 Height Max: 4096 Height Step: 8 ColorFormats: IYUV, I010 CodecID: AVC MaxcodecLevel: 52 Profile: MFX_PROFILE_AVC_HIGH MemHandleType: MFX_RESOURCE_SYSTEM_SURFACE Width Min: 64 Width Max: 4096 Width Step: 8 Height Min: 64 Height Max: 4096 Height Step: 8 ColorFormats: IYUV CodecID: HEVC MaxcodecLevel: 51 Profile: MFX_PROFILE_HEVC_MAIN MemHandleType: MFX_RESOURCE_SYSTEM_SURFACE Width Min: 64 Width Max: 4096 Width Step: 8 Height Min: 64 Height Max: 4096 Height Step: 8 ColorFormats: IYUV Profile: MFX_PROFILE_HEVC_MAIN10 MemHandleType: MFX_RESOURCE_SYSTEM_SURFACE Width Min: 64 Width Max: 4096 Width Step: 8 Height Min: 64 Height Max: 4096 Height Step: 8 ColorFormats: I010 CodecID: JPEG MaxcodecLevel: 0 Profile: MFX_PROFILE_JPEG_BASELINE MemHandleType: MFX_RESOURCE_SYSTEM_SURFACE Width Min: 64 Width Max: 4096 Width Step: 8 Height Min: 64 Height Max: 4096 Height Step: 8 ColorFormats: IYUV mfxEncoderDescription: Version: 1.0 CodecID: AV1 MaxcodecLevel: 53 BiDirectionalPrediction: 1 Profile: MFX_PROFILE_AV1_MAIN MemHandleType: MFX_RESOURCE_SYSTEM_SURFACE Width Min: 64 Width Max: 4096 Width Step: 8 Height Min: 64 Height Max: 4096 Height Step: 8 ColorFormats: IYUV, I010 CodecID: HEVC MaxcodecLevel: 51 BiDirectionalPrediction: 1 Profile: MFX_PROFILE_HEVC_MAIN MemHandleType: MFX_RESOURCE_SYSTEM_SURFACE Width Min: 64 Width Max: 4096 Width Step: 8 Height Min: 64 Height Max: 4096 Height Step: 8 ColorFormats: IYUV Profile: MFX_PROFILE_HEVC_MAIN10 MemHandleType: MFX_RESOURCE_SYSTEM_SURFACE Width Min: 64 Width Max: 4096 Width Step: 8 Height Min: 64 Height Max: 4096 Height Step: 8 ColorFormats: I010 CodecID: JPEG MaxcodecLevel: 0 BiDirectionalPrediction: 0 Profile: MFX_PROFILE_JPEG_BASELINE MemHandleType: MFX_RESOURCE_SYSTEM_SURFACE Width Min: 64 Width Max: 4096 Width Step: 8 Height Min: 64 Height Max: 4096 Height Step: 8 ColorFormats: IYUV mfxVPPDescription: Version: 1.0 FilterFourCC: VCSC MaxDelayInFrames: 1 MemHandleType: MFX_RESOURCE_SYSTEM_SURFACE Width Min: 64 Width Max: 4096 Width Step: 8 Height Min: 64 Height Max: 4096 Height Step: 8 InFormat: I010 OutFormats: IYUV, RGB4 InFormat: IYUV OutFormats: I010, RGB4 InFormat: RGB4 OutFormats: IYUV, I010 FilterFourCC: VSCL MaxDelayInFrames: 1 MemHandleType: MFX_RESOURCE_SYSTEM_SURFACE Width Min: 64 Width Max: 4096 Width Step: 8 Height Min: 64 Height Max: 4096 Height Step: 8 InFormat: I010 OutFormats: I010 InFormat: IYUV OutFormats: IYUV InFormat: RGB4 OutFormats: RGB4 NumExtParam: 0 function: MFXDispReleaseImplDescription (enter) function: LoaderCtxVPL::ReleaseImpl (enter) function: LoaderCtxVPL::ReleaseImpl (return) function: MFXDispReleaseImplDescription (return) function: MFXEnumImplementations (enter) function: LoaderCtxVPL::QueryImpl (enter) function: LoaderCtxVPL::QueryImpl (return) function: MFXEnumImplementations (return)

Total number of implementations found = 2 function: LoaderCtxVPL::UnloadAllLibraries (enter) function: LoaderCtxVPL::UnloadAllLibraries (return) function: LoaderCtxVPL::FreeConfigFilters (enter) function: LoaderCtxVPL::FreeConfigFilters (return)

shepark commented 2 years ago

Hi Nicolas, From the vpl-inspect output Library path: C:\WINDOWS\system32\libmfxhw64.dll. It seems like you have legacy mediasdk driver. So, please refer the sample legacy-decode in examples\coreAPI. At first, please check with the legacy-decode whether it's working or not with -hw option. And please take a look at the code. oneVPL supports 2 different version of mediasdk drivers, "libmfxhw", and "libmfx-gen". The samples in examples\coreAPI are to show how to implement for legacy gen.

And, please post the error message as well when you have failed. It'd be very helpful to figure out what happens.

And, if you still see the errors, then please post source code as well.