lavc/qsvenc: enable hevc gpb option
authorZhong Li <zhong.li@intel.com>
Fri, 11 Jan 2019 07:09:07 +0000 (15:09 +0800)
committerZhong Li <zhong.li@intel.com>
Wed, 3 Apr 2019 15:00:15 +0000 (23:00 +0800)
commit1125277bc64ebef1a7a6bee7349c7a8fab7fdcc7
tree6be91d4d5a8e21b972b1ad3d5d73042ea3d3cffc
parentc745bedd18afea19e3eb75da3d094d542b02a88b
lavc/qsvenc: enable hevc gpb option

GPB is the default type, just contains forward references but the
slice_type is B slice with higher encoding efficiency than regular P
slice, but lower performance.

Add an option to allow user to set regular P slice.

Fix ticket#6870

Test data on Intel Kabylake (i7-7567U CPU @ 3.50GHz):
1. ffmpeg -hwaccel qsv -c:v h264_qsv -i bbb_sunflower_1080p_30fps_normal.mp4 -vsync passthrough
-vframes 1000  -c:v hevc_qsv -gpb 0 -bf 0 -q 25 test_gpb_off_bf0_kbl.mp4

transcoding fps: 85
encoded file size of test_gpb_off_bf0_kbl.mp4: 21960100 (bytes)

2. ffmpeg -hwaccel qsv -c:v h264_qsv -i bbb_sunflower_1080p_30fps_normal.mp4 -vsync passthrough
-vframes 1000  -c:v hevc_qsv -gpb 1 -bf 0 -q 25 test_gpb_on_bf0_kbl.mp4

transcoding fps: 79
encoded file size oftest_gpb_on_bf0_kbl.mp4:  21211449 (bytes)

In this case, enable gpb can bring about 7% performance drop but 3.4% encoding efficiency improvment.

Signed-off-by: Zhong Li <zhong.li@intel.com>
libavcodec/qsvenc.c
libavcodec/qsvenc.h
libavcodec/qsvenc_hevc.c