When I use the hardware transcoding,the usage rate of CPU is too high.But the type information shows that it called the graphics card to transcode the Media. When i use the hardware transcoding to transcode 7 video together ,the usage rate becomes nearly 100% .
I think about that the hardware use not the CPU but GPU.Why my transcoding program shows that it use the CPU ?
Can you tell your system configuration - CPU, GPU, driver info, OS, which Media SDK version do you have?
Are you using sample_multi_transcode? If yes, please send us the cmd line. Also if you are using windows, can you send us the tracer logs present at <Installed folder>\Software Development Kit\tools\mediasdk_tracer.
This would help us to guide you and explain what might be the issue here.
The type of CPU is Intel(R) Xeon(R) CPU E3-1285L
The type of GPU is 00:02.0 VGA compatible controller : Intel Corporation Xeon E3-1200 v3 Processor Integrated Graphics Controller [8086:041a] (rev 06)
The driver info：
libva info: VA-API version 0.35.0
libva info: va_getDriverName() returns 0
libva info: User requested driver 'iHD'
libva info: Trying to open /opt/intel/mediasdk/lib64/iHD_drv_video.so
libva info: Found init function __vaDriverInit_0_32
libva info: va_openDriver() returns 0
Output #0, mpegts, to 'video.ts':
By the way ,we use the fuction of ffmpeg hardware transcoding .The code is that :
ffmpeg -y -i 1.mp4 -f mpegts -acodec libfaac -s 800x480 -b:v 500k -vcodec h264_qsv video.ts
And,it shows that the hardware is called by ffmpeg.
Thanks for sending the cmd line.
The reason for seeing high CPU usage is because of ffmpeg and architecturally, ffmpeg always copies back the surfaces to CPU memory, so there are copies happening btw video and system memory.
You can use sample_full_transcode, present in samples package and has the same pipeline set up and is optimize for surface sharing and has the transcode pipeline set up on video memory. I am hoping you should see the performance boost in this case.
Hope that helps.