I get VPP then Encode slow situation in my code,
then I tried Intel Media SDK R2 example, Media SDK 2013 R2\samples\sample_encode, find the same thing
Please help how should I set parms in situations below :
1. I add some code to test time:
LARGE_INTEGER tStart, tEnd;
double freq = (double)tStart.QuadPart;
double duration = ((double)tEnd.QuadPart - (double)tStart.QuadPart) / freq;
printf("\nExecution time: %3.2fs (%3.2ffps)\n", duration, frames/duration);
2. test results:
a. -d3d h264 -i "d:\\samples\\out\\00000.track_4113.264_1920x1080.yuv" -o "d:\\samples\\out\\out_Intel__.264" -w 1920 -h 1080 -hw -dstw 1920 -dsth 1180
Frame number: 614, Execution time: 65.42s (9.39fps)
b. -d3d h264 -i "d:\\samples\\out\\00000.track_4113.264_1920x1080.yuv" -o "d:\\samples\\out\\out_Intel__.264" -w 1920 -h 1080 -hw -dstw 2020 -dsth 1080
Frame number: 614 Execution time: 6.13s (100.21fps)
And It seem if out put width big then 1920, then speed will down significantly.
Please Give me some suggestions.
I suspect the issue is that you are falling back on SW implementation of the encoder. Older generations of Intel processors did not support HW accelerated encode or resize beyond the 1920p resolution threshold (greater resolution content is instead processed using SW codec).
You should be able to verify if this is the case by looking at your CPU utilization while executing the two workloads you mentioned above.
Thanks for the tip about gpu falling back on SW.
Here is infomation of my computer:
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
Name Version State
NVIDIA GeForce GT 640 18.104.22.16858 08
Intel(R) HD Graphics 4000 10.18.10.3345 Active
AMD Radeon HD 6800 Series 22.214.171.12400 Active
CPU: Intel(R) Core(TM) i7-3770 CPU @ 3.40GHz
OS: Microsoft Windows 7
Is i7-3770 that old can not support encode size big than 1080p in HW ?
Simple change to -dstw 1940 ,
-d3d h264 -i "d:\\samples\\out\\00000.track_4113.264_1920x1080.yuv" -o "d:\\samples\\out\\out_Intel__.264" -w 1920 -h 1080 -hw -dstw 1940 -dsth 1080
run sts = m_pmfxENC->Init(&m_mfxEncParams); get warning WARNING: partial acceleration !
Frame number: 614 , Execution time: 16.74s (36.67fps)
The problem is what parameters should I set to avoid this ? Please give some suggestions, Thanks.
Right, your processor is an Intel 3rd generation Core processor which does not support HW accelerated encode for resolutions greater than 1920x1200.
Intel 4th generation Core processors supports up to typical 4K resolution encode.
The "partial acceleration" warning you get essentially means that the SDK fell back on SW encoder implementation, thus the degraded performance.