Opened 6 years ago

Closed 2 years ago

#4658 closed enhancement (fixed)

QSV Decoding + Video Post Processing (VPP) support

Reported by: TheTroll Owned by:
Priority: normal Component: avcodec
Version: git-master Keywords: qsv
Cc: Blocked By:
Blocking: Reproduced by developer: no
Analyzed by developer: no


Summary of the bug:
The latest GIT as of 2015-06-22 supports QSV encoding quite properly.

Though QSV decoding does not work at all.
In addition, there is no use of the VPP functions (like deinterlacing, scaling,...).

It would be nice to have this working, to do a fully HW accelerated transcoding.

Change History (8)

comment:1 in reply to: ↑ description Changed 6 years ago by cehoyos

  • Component changed from undetermined to avcodec
  • Keywords intel quicksync transcoding removed

Replying to TheTroll:

Though QSV decoding does not work at all.

Is this a regression or did it never work?

comment:2 Changed 6 years ago by oromit

As far as i'm aware, there is not and never was a qsv based decoder.
Hardware decoding is done via DXVA on Windows.

Last edited 6 years ago by oromit (previous) (diff)

comment:3 Changed 6 years ago by TheTroll

Well there is a qsvdec_h264.c file...
The implementation misses some key calls like the DecodeHeader? function for instance.

So if it has indeed worked, I am not sure how.. or only in in a very specific situation

comment:4 Changed 6 years ago by TheTroll

Examples on how to do VPP and decoding are in the file:


that you can get from intel site.

HW encoding is great, I can transcode from 1080i H264 from 720p H264, using ~0% CPU for the encoding part.

Though, decoding+deinterlacing+scaling takes almosy 30% CPU on a Core i7-4790k :/

comment:5 Changed 4 years ago by bordon

Hope the offical can add QSV Decoding function as soos as possible.

comment:6 Changed 4 years ago by TheTroll


coming back on this thread, QSV decoding works now quite well:
Try the following :

ffmpeg -c:v h264_qsv -i in_h264.ts -b:v 1000k -maxrate 1000k -c:v h264_qsv out_qsv.ts

comment:7 Changed 2 years ago by lizhong1008

VPP is supported from FFmpeg 3.3, scaling and deinterlacing filters were supported. And from ffmpeg 4.0, qsv overlay was supported.
Here is an example of a qsv transcoding pipeline with decoding/scaling/encoding:
ffmpeg -hwaccel qsv -c:v h264_qsv -i "testvid.mp4" -vf "scale_qsv=640:360" -b:v 800k -c:v h264_qsv -c:a copy -y "testoutput.mp4"

Last edited 2 years ago by lizhong1008 (previous) (diff)

comment:8 Changed 2 years ago by lizhong1008

  • Resolution set to fixed
  • Status changed from new to closed
Note: See TracTickets for help on using tickets.