lavc/qsvenc: add Tiles encode support for HEVC
authorLinjie Fu <linjie.fu@intel.com>
Tue, 26 Nov 2019 03:56:18 +0000 (11:56 +0800)
committerZhong Li <zhongli_dev@126.com>
Thu, 12 Dec 2019 15:43:06 +0000 (23:43 +0800)
commit8446318502bf21347a4867a5a1fcd8d9bfbd6a41
tree446ac7afe53344362c716f34f4753d40ac0534b4
parent0ceed513d563c5c95a2f180f8203e1df080b5f84
lavc/qsvenc: add Tiles encode support for HEVC

Add -tile_rows and -tile_cols option to specify the number of tile rows
and columns for ICL+ (gen 11) platform.

A tile must wholly contain all the slices within it. Slices cannot cross
tile boundaries. So the slice number would be implicitly resized to the
max(nSlice, nTile).

Example:
    ffmpeg -v verbose -hwaccel qsv -init_hw_device qsv=hw
    -filter_hw_device hw -f rawvideo -s:v 1920x1080 -i ./input.nv12 -vf
    format=nv12,hwupload=extra_hw_frames=64 -c:v hevc_qsv -tile_rows 2
    -tile_cols 2 -slices 4 -y output.h265

Also dump the actual quantity of encoded tiled rows and columns in run
time.

Fix the enhancement #8400.

Signed-off-by: Linjie Fu <linjie.fu@intel.com>
libavcodec/qsvenc.c
libavcodec/qsvenc.h
libavcodec/qsvenc_hevc.c