[Cin] HEVC hw encoding on AMD Polaris cards

Спицын Андрей spitsyn.andrey at gmail.com
Mon May 13 22:34:47 CEST 2019


Hi Andrew,

Here the quick test results.
I used 4k sample video on my PC with RX550 and outdated CPU (ten
years-old double-core Pentium)

The variable CIN_HW_DEV affects only on ability to play videos.
My test video with vaapi device plays at full speed with around 50% CPU
load.
The use of 'none' device results in unplayable video (more like slide
show).
But in both cases I can successfully encode video with hevc_vaapi
and h264_vaapi (profile=main) encoders  with about 100% CPU load.
The hevc encoder produce smaller file size with a shorter encoding time
(that's surprise me).
Ten seconds video encodes about 3 minutes (my hardware is really old for
4k:( )

Software encoding lasts forever, so I not tested it.

And last test I used ffmpeg from deb-multimedia and created proxy file
for my 4k video sample. Hevc_vaapi decode and h264 vaapi encode with
vaapi downscale to 640x360 took around 30 seconds for 10 second
video!!!
If I use cinelerra's to manually create proxy files (not by menu), just
add scale_vaapi filter, then I get following results.
The hevc and h262 vaapi encoders uses around 1 min 20 sec (hevc) and 1
minute 45 seconds (h262 main). 
In case of proxy creation with a menu button, rendering estimates around
42 minutes for 30 seconds video. But I not tested it.

So my conclusion that vaapi decoding is extremely useful for playing
videos and create proxy files in separate script.

@GG how can I use custom script for proxy files creation inside
Cinelerra? Or use ffmpeg's scale_vaapi filter if vaapi used.


$vainfo 
libva info: VA-API version 0.39.4
libva info: va_getDriverName() returns -1
libva info: User requested driver 'radeonsi'
libva info: Trying to open /usr/lib/x86_64-linux-gnu/dri/radeonsi_drv_video.so
libva info: Found init function __vaDriverInit_0_39
libva info: va_openDriver() returns 0
vainfo: VA-API version: 0.39 (libva 1.7.3)
vainfo: Driver version: Mesa Gallium driver 18.2.8 for Radeon RX 550 Series (POLARIS12, DRM 3.27.0, 4.19.0-0.bpo.4-amd64, LLVM 6.0.0)
vainfo: Supported profile and entrypoints
      VAProfileMPEG2Simple            :	VAEntrypointVLD
      VAProfileMPEG2Main              :	VAEntrypointVLD
      VAProfileVC1Simple              :	VAEntrypointVLD
      VAProfileVC1Main                :	VAEntrypointVLD
      VAProfileVC1Advanced            :	VAEntrypointVLD
      VAProfileH264ConstrainedBaseline:	VAEntrypointVLD
      VAProfileH264ConstrainedBaseline:	VAEntrypointEncSlice
      VAProfileH264Main               :	VAEntrypointVLD
      VAProfileH264Main               :	VAEntrypointEncSlice
      VAProfileH264High               :	VAEntrypointVLD
      VAProfileH264High               :	VAEntrypointEncSlice
      VAProfileHEVCMain               :	VAEntrypointVLD
      VAProfileHEVCMain               :	VAEntrypointEncSlice
      VAProfileHEVCMain10             :	VAEntrypointVLD
      VAProfileJPEGBaseline           :	VAEntrypointVLD
      VAProfileNone                   :	VAEntrypointVideoProc

$cat /proc/cpuinfo 
processor	: 0
vendor_id	: GenuineIntel
cpu family	: 6
model		: 23
model name	: Pentium(R) Dual-Core  CPU      E5300  @ 2.60GHz
stepping	: 10
microcode	: 0xa0b
cpu MHz		: 1905.714
cache size	: 2048 KB
physical id	: 0
siblings	: 2
core id		: 0
cpu cores	: 2
apicid		: 0
initial apicid	: 0
fpu		: yes
fpu_exception	: yes
cpuid level	: 13
wp		: yes
flags		: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx lm constant_tsc arch_perfmon pebs bts rep_good nopl cpuid aperfmperf pni dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm xsave lahf_lm pti tpr_shadow vnmi flexpriority dtherm
bugs		: cpu_meltdown spectre_v1 spectre_v2 spec_store_bypass l1tf
bogomips	: 5200.12
clflush size	: 64
cache_alignment	: 64
address sizes	: 36 bits physical, 48 bits virtual
power management:

processor	: 1
vendor_id	: GenuineIntel
cpu family	: 6
model		: 23
model name	: Pentium(R) Dual-Core  CPU      E5300  @ 2.60GHz
stepping	: 10
microcode	: 0xa0b
cpu MHz		: 1833.296
cache size	: 2048 KB
physical id	: 0
siblings	: 2
core id		: 1
cpu cores	: 2
apicid		: 1
initial apicid	: 1
fpu		: yes
fpu_exception	: yes
cpuid level	: 13
wp		: yes
flags		: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx lm constant_tsc arch_perfmon pebs bts rep_good nopl cpuid aperfmperf pni dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm xsave lahf_lm pti tpr_shadow vnmi flexpriority dtherm
bugs		: cpu_meltdown spectre_v1 spectre_v2 spec_store_bypass l1tf
bogomips	: 5200.12
clflush size	: 64
cache_alignment	: 64
address sizes	: 36 bits physical, 48 bits virtual
power management:




More information about the Cin mailing list