[FFmpeg-user] Intel Transcoding: Vaapi or QSV
Shane Warren
shanew at innovsys.com
Wed Oct 23 22:45:17 EEST 2024
I decided to start a new thread since I have done a lot of testing and patching on qsv and vaapi transcoding since last week.
First, I decided to try to use QSV decoding and QSV encoding, but I noticed a53 captions were being stripped out, and I narrowed this down to the qsv decoders not passing the a53 captions on. I noticed there was a patch for SEI parsing for QSV decoders that was never merged into mainline ffmpeg. The patchset can be seen here: https://patchwork.ffmpeg.org/project/ffmpeg/list/?series=&submitter=&state=&q=+Implement+SEI+parsing+for+QSV+decoders&archive=&delegate= I applied that patchset up to v6 of the patch. I had to fix a lot of API changes from that older version up to my mostly recent version but after that patch, QSV decode -> QSV encode passed a53 captions and they looked correct in my extensive testing (at least for h264).
I'm trying to replace our use of nvidia cards and replace them with intel cards for transcoding. We make use of overlays, so I was trying to use overlay_qsv to allow: h264_qsv -> vpp_qsv=deinterlace,scale -> overlay_qsv but a53 captions were getting slightly garbled. I then tried a lot of combinations and a53 captions get garbled in all these:
1. QSV decode -> vpp_qsv -> overlay_qsv -> h264_qsv = bad closed captions
2. QSV decode -> overlay_qsv -> h264_qsv = bad closed captions
3. Software decode -> overlay_qsv -> h264_qsv = bad closed captions
4. Software decode -> overlay -> h264_qsv = bad closed captions
I then decided apparently h264_qsv can mess up captions itself, but strangely not if using qsv decoding.
I then settled on: vaapi_h264 -> deinterlace_vaapi -> scale_vaapi -> overaly_vaapi and a53 captions worked great and cpu usage (5-8%) was the lowest of any overlay I've seen, which means it's almost entirely in the gpu.
Now I'm wondering if I should go back to using vaapi decoding and encoding for everything, I had started out this project wanting to use qsv since it in theory was the newest and had more features.
Are there any downsides to using vaapi over qsv? I just want something that works and produces good quality transcoding.
Thanks,
Shane Warren
More information about the ffmpeg-user
mailing list