[FFmpeg-trac] #5393(ffmpeg:new): Option to select the Intel Quick Sync GPU device adapter for encoding
FFmpeg
trac at avcodec.org
Thu Mar 31 18:57:59 CEST 2016
#5393: Option to select the Intel Quick Sync GPU device adapter for encoding
-------------------------------------+-------------------------------------
Reporter: beloko | Type:
Status: new | enhancement
Component: ffmpeg | Priority: normal
Keywords: qsv gpu | Version: git-
device id | master
Blocking: | Blocked By:
Analyzed by developer: 0 | Reproduced by developer: 0
-------------------------------------+-------------------------------------
Hello,
My Windows 7 (x64) computer has two HW accelerated video devices :
. an nVidia video card as the main display adapter (ID: 0)
. and iGPU used as extended display (ID: 1)
I would use FFMPEG to encode video files with Quick Sync Video.
Here is my FFMPEG command line :
{{{ffmpeg.exe -i input.m2ts -c:v h264_qsv output.mp4}}}
And then I get this error message :
{{{
[graph 0 input from stream 0:0 @ 0000000002c3bac0] w:3840 h:2160
pixfmt:yuv420p
tb:1/90000 fr:24000/1001 sar:1/1 sws_param:flags=2
[auto-inserted scaler 0 @ 0000000002a1ebc0] w:iw h:ih flags:'bicubic'
interl:0
[format @ 0000000002c3bee0] auto-inserting filter 'auto-inserted scaler 0'
betwe
en the filter 'Parsed_null_0' and the filter 'format'
[auto-inserted scaler 0 @ 0000000002a1ebc0] w:3840 h:2160 fmt:yuv420p
sar:1/1 ->
w:3840 h:2160 fmt:nv12 sar:1/1 flags:0x4
[graph 1 input from stream 0:1 @ 00000000029e8520] tb:1/44100
samplefmt:fltp sam
plerate:44100 chlayout:0x3
[h264_qsv @ 00000000004abea0] Initialized an internal MFX session using
hardware
accelerated implementation
[h264_qsv @ 00000000004abea0] Using the VBR with lookahead (LA)
ratecontrol meth
od
[h264_qsv @ 00000000004abea0] Selected ratecontrol mode is not supported
by the
QSV runtime. Choose a different mode.
}}}
Now, if I toggle my iGPU as the main display adapter (ID: 0) and my nVidia
video card as extended display (ID: 1), my FFMPEG command line works
properly. And the output.mp4 video file is encoded by Intel Quick Sync
Video hardware unit.
FFMPEG can create a QSV HW encoding session because iGPU is set as ID: 0
{{{
[graph 0 input from stream 0:0 @ 0000000002d1bda0] w:3840 h:2160
pixfmt:yuv420p
tb:1/90000 fr:24000/1001 sar:1/1 sws_param:flags=2
[auto-inserted scaler 0 @ 0000000002afebc0] w:iw h:ih flags:'bicubic'
interl:0
[format @ 0000000002afdc20] auto-inserting filter 'auto-inserted scaler 0'
betwe
en the filter 'Parsed_null_0' and the filter 'format'
[auto-inserted scaler 0 @ 0000000002afebc0] w:3840 h:2160 fmt:yuv420p
sar:1/1 ->
w:3840 h:2160 fmt:nv12 sar:1/1 flags:0x4
[graph 1 input from stream 0:1 @ 0000000002ac8520] tb:1/44100
samplefmt:fltp sam
plerate:44100 chlayout:0x3
[h264_qsv @ 000000000058bea0] Initialized an internal MFX session using
hardware
accelerated implementation
[h264_qsv @ 000000000058bea0] Using the VBR with lookahead (LA)
ratecontrol meth
od
[h264_qsv @ 000000000058bea0] profile: high; level: 51
[h264_qsv @ 000000000058bea0] GopPicSize: 250; GopRefDist: 4; GopOptFlag:
closed
; IdrInterval: 0
[h264_qsv @ 000000000058bea0] TargetUsage: 4; RateControlMethod: LA
[h264_qsv @ 000000000058bea0] TargetKbps: 1000; LookAheadDepth: 40
[h264_qsv @ 000000000058bea0] NumSlice: 1; NumRefFrame: 2
[h264_qsv @ 000000000058bea0] RateDistortionOpt: OFF
[h264_qsv @ 000000000058bea0] RecoveryPointSEI: OFF IntRefType: 0;
IntRefCycleSi
ze: 0; IntRefQPDelta: 0
[h264_qsv @ 000000000058bea0] MaxFrameSize: 6220800; MaxSliceSize: 0;
[h264_qsv @ 000000000058bea0] BitrateLimit: ON; MBBRC: OFF; ExtBRC:
unknown
[h264_qsv @ 000000000058bea0] Trellis: auto
[h264_qsv @ 000000000058bea0] RepeatPPS: ON; NumMbPerSlice: 0;
LookAheadDS: unkn
own
[h264_qsv @ 000000000058bea0] AdaptiveI: unknown; AdaptiveB: unknown;
BRefType:
off
[h264_qsv @ 000000000058bea0] MinQPI: 0; MaxQPI: 0; MinQPP: 0; MaxQPP: 0;
MinQPB
: 0; MaxQPB: 0
[h264_qsv @ 000000000058bea0] Entropy coding: CABAC; MaxDecFrameBuffering:
2
[h264_qsv @ 000000000058bea0] NalHrdConformance: OFF; SingleSeiNalUnit:
ON; VuiV
clHrdParameters: OFF VuiNalHrdParameters: OFF
}}}
Should be interesting to add an option to be able to select the iGPU video
device by its Windows screen ID (like the -gpu option available in the
NVENC codecs).
''-gpu <int> E..V.... Selects which NVENC capable GPU
to use. First GPU is 0, second is 1, and so on. (from 0 to INT_MAX)
(default 0)''
Intel provide a tool to check iGPU capabilities in its Media SDK 2016 :
\tools\mediasdk_sys_analyzer\mediasdk_system_analyzer_32.exe
Here is the report when iGPU is set as Windows main screen (ID: 0) :
{{{
Intel Media SDK System Analyzer (32 bit)
The following versions of Media SDK API are supported by platform/driver:
Version Target Supported Dec Enc
1.0 HW Yes X X
1.0 SW Yes X X
1.1 HW Yes X X
1.1 SW Yes X X
1.3 HW Yes X X
1.3 SW Yes X X
1.4 HW Yes X X
1.4 SW Yes X X
1.5 HW Yes X X
1.5 SW Yes X X
1.6 HW Yes X X
1.6 SW Yes X X
1.7 HW Yes X X
1.7 SW Yes X X
1.8 HW Yes X X
1.8 SW Yes X X
Graphics Devices:
Name Version
State
VNC Mirror Driver 1.8.0.0
Active
Intel(R) HD Graphics 4600 10.18.14.4332
Active
NVIDIA GeForce GTX 970 10.18.13.6191
08
System info:
CPU: Intel(R) Core(TM) i7-4770 CPU @ 3.40GHz
OS: Microsoft Windows 7 Ultimate
Arch: 64 bits
Installed Media SDK packages (be patient...processing takes some time):
Intel« Media SDK 2016
Installed Media SDK DirectShow filters:
Installed Intel Media Foundation Transforms:
Intel« Hardware VC-1 Decoder MFT : {059A5BAE-5D7A-4C5E-8F7A-
BFD57D1D6AAA}
Intel« Hardware H.264 Decoder MFT :
{45E5CE07-5AC7-4509-94E9-62DB27CF8F96}
Intel« Hardware MPEG-2 Decoder MFT :
{CD5BA7FF-9071-40E9-A462-8DC5152B1776}
Intel« Quick Sync Video H.264 Encoder MFT :
{4BE8D3C0-0515-4A37-AD55-E4BAE19AF471}
Intel« Hardware Preprocessing MFT : {EE69B504-1CBF-
4EA6-8137-BB10F806B014}
Analysis complete... [press ENTER]
}}}
Here is the report when iGPU is set as Windows extended screen (ID: 1) :
{{{
Intel Media SDK System Analyzer (32 bit)
The following versions of Media SDK API are supported by platform/driver:
Version Target Supported Dec Enc
1.0 HW Yes X X [Adapter 1]
1.0 SW Yes X X
1.1 HW Yes X X [Adapter 1]
1.1 SW Yes X X
1.3 HW Yes X X [Adapter 1]
1.3 SW Yes X X
1.4 HW Yes X X [Adapter 1]
1.4 SW Yes X X
1.5 HW Yes X X [Adapter 1]
1.5 SW Yes X X
1.6 HW Yes X X [Adapter 1]
1.6 SW Yes X X
1.7 HW Yes X X [Adapter 1]
1.7 SW Yes X X
1.8 HW Yes X X [Adapter 1]
1.8 SW Yes X X
Graphics Devices:
Name Version
State
VNC Mirror Driver 1.8.0.0
Active
Intel(R) HD Graphics 4600 10.18.14.4332
Active
NVIDIA GeForce GTX 970 10.18.13.6191
08
System info:
CPU: Intel(R) Core(TM) i7-4770 CPU @ 3.40GHz
OS: Microsoft Windows 7 Ultimate
Arch: 64 bits
Installed Media SDK packages (be patient...processing takes some time):
Intel« Media SDK 2016
Installed Media SDK DirectShow filters:
Installed Intel Media Foundation Transforms:
Intel« Hardware VC-1 Decoder MFT : {059A5BAE-5D7A-4C5E-8F7A-
BFD57D1D6AAA}
Intel« Hardware H.264 Decoder MFT :
{45E5CE07-5AC7-4509-94E9-62DB27CF8F96}
Intel« Hardware MPEG-2 Decoder MFT :
{CD5BA7FF-9071-40E9-A462-8DC5152B1776}
Intel« Quick Sync Video H.264 Encoder MFT :
{4BE8D3C0-0515-4A37-AD55-E4BAE19AF471}
Intel« Hardware Preprocessing MFT : {EE69B504-1CBF-
4EA6-8137-BB10F806B014}
Analysis complete... [press ENTER]
}}}
This means it's possible to detect the video adapter device ID that can
create the Intel QSV HW encoding session.
--
Ticket URL: <https://trac.ffmpeg.org/ticket/5393>
FFmpeg <https://ffmpeg.org>
FFmpeg issue tracker
More information about the FFmpeg-trac
mailing list