Media (Intel® Video Processing Library, Intel Media SDK)
Access community support with transcoding, decoding, and encoding in applications using media tools like Intel® oneAPI Video Processing Library and Intel® Media SDK
Announcements
The Intel Media SDK project is no longer active. For continued support and access to new features, Intel Media SDK users are encouraged to read the transition guide on upgrading from Intel® Media SDK to Intel® Video Processing Library (VPL), and to move to VPL as soon as possible.
For more information, see the VPL website.

Hardware acceleration issue in sample_decode

Ivan_G_
Beginner
325 Views

Hello.

I downloaded Intel® Media SDK 2014 for Clients with samples and trying to use HW acceleration in Windows 8.0 with the sample_decode to decode h.264 stream to YUV. But it always use SW instead of HW.

Test command line:
sample_decode.exe h264 -i in.h264 -o out.yuv -hw

Output:

Intel(R) Media SDK Decoding Sample Version 5.0.461.92695

Input video     AVC
Output format   YUV420
Resolution      1280x720
Crop X,Y,W,H    0,0,0,0
Frame rate      30.00
Memory type             system
MediaSDK impl           hw
MediaSDK version        1.10


Intel HD Graphics driver updated to the last version and Media SDK System Analyzer says:

Intel Media SDK System Analyzer (64 bit)

The following versions of Media SDK API are supported by platform/driver:

        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.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

Graphics Devices:
        Name                                         Version             State
        Intel(R) HD Graphics 4600                    10.18.10.3621       Active
        AMD Radeon HD 7700 Series                    12.104.0.0          Active
        AMD Radeon HD 7700 Series                    12.104.0.0          Active

System info:
        CPU:    Intel(R) Core(TM) i7-4770 CPU @ 3.40GHz
        OS:
Installed Media SDK packages (be patient...processing takes some time):


What I'm doing wrong?
How can I enable HW acceleration in the sample_decode?
I noticed g_msdk_supported_plugins array (mfx_plugin_uids.cpp) does not have HW supported decoder plugins. Is it correct?

Thank you.

 

0 Kudos
2 Replies
John_H_7
Beginner
325 Views

Like Ivan, I also am trying the sample_decode and am really wondering if HW decode is working.  In my case, I'm doing it on Ubuntu:

sample_decode_drm  h264 -i BigBuckBunny.h264 -o BigBuckBunny.yuv -hw
libva info: VA-API version 0.34.0
libva info: va_getDriverName() returns 0
libva info: Trying to open /usr/lib/x86_64-linux-gnu/dri/iHD_drv_video.so
libva info: Found init function __vaDriverInit_0_32
libva info: va_openDriver() returns 0
Intel(R) Media SDK Decoding Sample Version 5.0.1603344.93446

Input video     AVC
Output format   YUV420
Resolution      416x240
Crop X,Y,W,H    0,0,0,0
Frame rate      24.00
Memory type             system
MediaSDK impl           hw
MediaSDK version        1.10

Decoding started
Frame number: 14314, fps: 172.105, fread_fps: 0.000, fwrite_fps: 184.659
Decoding finished

While the decode completes, it is terribly slow.  If I do the same decode with ffmpeg, I get the same result in 25% of the time.  It seems the Media SDK Analyzer is not part of the Linux SDK, so I don't believe I can do much with that to make sure the HW decode is really happening. Vmstat shows about 58% of the CPU is consumed when the decode runs.

Now, when I leave off the "-hw" option, I get:

Return on error: error code -3, /home/msdk/mdp_msdk-samples/samples/sample_decode/src/pipeline_decode.cpp158

Return on error: error code 1,  /home/msdk/mdp_msdk-samples/samples/sample_decode/src/sample_decode.cpp 341

so, maybe hardware decode is working?  My processor is small. SIngle core Xeon:

model name      : Intel(R) Xeon(R) CPU E3-1285 v3 @ 3.60GHz  Around 12GB memory.

I'm using the SDK to try the Intel MCU.  Performance there (not surprisingly) is also bad, with 3 VGA callers about the limit for a conference.

Here is my graphics controller:

 Display controller [0380]: Intel Corporation Xeon E3-1200 v3 Processor Integrated Graphics Controller [8086:041a] (rev 06)

Any guidance as to whether this is really happening in HW and if this is the best possible performance for this system would be appreciated.

Thx.

John

0 Kudos
Sravanthi_K_Intel
325 Views

Hello Ivan and John,
"But it always use SW instead of HW."
According to your SDK output, you are decoding using the HW acceleration. 

"While the decode completes, it is terribly slow.  If I do the same decode with ffmpeg, I get the same result in 25% of the time. "
While the decoder implementation is very fast and well optimized, the slowdown (and high CPU activity) you notice in the sample_decode application is due to the not-so-efficient File I/O operation, where the SDK writes the output to the file. This implementation choice was made for the sample applications.

"if this is the best possible performance for this system "
Since the File I/O operation is the bottleneck, for performance measurements and benchmarking purpose, we recommended you test the decoder without writing the output of the decoder to a file.

Let me know if you have more questions.

0 Kudos
Reply