[FFmpeg-trac] #8328(undetermined:new): QSV gives much worse PSNR/SSIM for HEVC transcode than VA-API or MediaSDK
FFmpeg
trac at avcodec.org
Tue Oct 22 18:54:23 EEST 2019
#8328: QSV gives much worse PSNR/SSIM for HEVC transcode than VA-API or MediaSDK
-------------------------------------+-------------------------------------
Reporter: eero-t | Type: defect
Status: new | Priority: normal
Component: | Version:
undetermined | unspecified
Keywords: | Blocked By:
Blocking: | Reproduced by developer: 0
Analyzed by developer: 0 |
-------------------------------------+-------------------------------------
Summary of the bug:
PSNR & SSIM values for transcoded HEVC files are much worse with QSV than
when the same transcoding is done with VA-API or MediaSDK sample
application.
(I haven't seen any significant difference in PSNR & SSIM between QSV and
VA-API / MediaSDK with 8-bit AVC transcode.)
Setup:
* Ubuntu 18.04
* drm-tip kernel
* yesterday's git build of FFmpeg, MediaSDK and media-driver
How to reproduce:
* Transcode 4K 10-bit HEVC file [1] to smaller bitrate with QSV:
{{{
$ ffmpeg -hwaccel qsv -qsv_device /dev/dri/renderD128 -c:v hevc_qsv -i
Netflix_FoodMarket_4096x2160_10bit_420_100mbs_600.h265 -c:v hevc_qsv -b:v
20M -frames 300 output.h265
}}}
* with VA-API:
{{{
$ ffmpeg -hwaccel vaapi -vaapi_device /dev/dri/renderD128
-hwacel_output_format vaapi -i
Netflix_FoodMarket_4096x2160_10bit_420_100mbs_600.h265 -c:v hevc_vaapi
-b:v 20M -frames 300 output.h265
}}}
* And with MediaSDK:
{{{
$ sample_multi_transcode -i::h265
Netflix_FoodMarket_4096x2160_10bit_420_100mbs_600.h265 -o::h265
output.h265 -b 20000 -u 4 -n 300 -async 4 -hw
}}}
* Calculate PSNR & SSIM for each of the output files with FFmpeg:
{{{
$Â ffmpeg -i Netflix_FoodMarket_4096x2160_10bit_420_100mbs_600.h265 -i
output.h265 -lavfi 'ssim;[0:v][1:v]psnr' -frames 300 -f null -
}}}
Result:
* QSV: PSNR = 25
* VA-API: PSNR = 40.7
* MediaSDK: PSNR = 40.7
Notes:
* Above QSV HEVC transcode has had bad PSNR at least since April (didn't
try any older Media stacks), so if it's a regression, it's not a recent
one
* I've downloaded few other HEVC videos from net, and see similar PSNR
value differences with them too
* Unlike with VA-API, changing bitrate doesn't change PSNR/SSIM for QSV
significantly with the above given transcode
[1] I'm using this, converted to 100Mbit/s with libx265 2-pass ABR:
https://media.xiph.org/video/derf/ElFuente/Netflix_FoodMarket_4096x2160_60fps_10bit_420.y4m
PS. FFmpeg PSNR calculation has a huge memory leak / loop with some input
files. When doing above metrics calculation with problematic input
videos, somewhat after passing halfway frame, frame number output freezes
and FFmpeg starts eating GBs of memory until kernel OOM-kills it.
--
Ticket URL: <https://trac.ffmpeg.org/ticket/8328>
FFmpeg <https://ffmpeg.org>
FFmpeg issue tracker
More information about the FFmpeg-trac
mailing list