diff options
author | Wenbin Chen <wenbin.chen@intel.com> | 2021-12-23 10:26:37 +0800 |
---|---|---|
committer | Haihao Xiang <haihao.xiang@intel.com> | 2021-12-23 15:49:07 +0800 |
commit | ed6c5c13b10930ea95c622d6ef6e32a6e2077018 (patch) | |
tree | 674015e4b3c6d1f2deed5cd406ae6c65dcff0b89 /libavutil/hwcontext_vdpau.c | |
parent | 7e4747ec504586658bf12a38c304659fa8d84a6a (diff) | |
download | ffmpeg-ed6c5c13b10930ea95c622d6ef6e32a6e2077018.tar.gz |
libavutil/hwcontext_qsv: clean padding when upload qsv frames
Fix #7830
When we upload a frame that is not padded as MSDK requires, we create a
new AVFrame to copy data. The frame's padding data is uninitialized so
it brings run to run problem. For example, If we run the following
command serveral times we will get different outputs.
ffmpeg -init_hw_device qsv=qsv:hw -qsv_device /dev/dri/renderD128 \
-filter_hw_device qsv -f rawvideo -s 192x200 -pix_fmt p010 \
-i 192x200_P010.yuv -vf "format=nv12,hwupload=extra_hw_frames=16" \
-c:v hevc_qsv output.265
According to https://github.com/Intel-Media-SDK/MediaSDK/blob/master/doc/mediasdk-man.md#encoding-procedures
"Note: It is the application's responsibility to fill pixels outside
of crop window when it is smaller than frame to be encoded. Especially
in cases when crops are not aligned to minimum coding block size (16
for AVC, 8 for HEVC and VP9)"
I add a function to fill padding area with border pixel to fix this
run2run problem, and also move the new AVFrame to global structure
to reduce redundant allocation operation to increase preformance.
Signed-off-by: Wenbin Chen <wenbin.chen@intel.com>
Signed-off-by: Haihao Xiang <haihao.xiang@intel.com>
Diffstat (limited to 'libavutil/hwcontext_vdpau.c')
0 files changed, 0 insertions, 0 deletions