Message ID | 20231229042358.3703640-1-haihao.xiang@intel.com |
---|---|
State | New |
Headers | show |
Series | [FFmpeg-devel,1/2] doc/ffmpeg: update the documentation about qsv device creation | expand |
Context | Check | Description |
---|---|---|
yinshiyou/make_loongarch64 | success | Make finished |
yinshiyou/make_fate_loongarch64 | success | Make fate finished |
andriy/make_x86 | success | Make finished |
andriy/make_fate_x86 | success | Make fate finished |
On Vr, 2023-12-29 at 12:23 +0800, Xiang, Haihao wrote: > From: Haihao Xiang <haihao.xiang@intel.com> > > Signed-off-by: Haihao Xiang <haihao.xiang@intel.com> > --- > doc/ffmpeg.texi | 21 +++++++++++++++++++-- > 1 file changed, 19 insertions(+), 2 deletions(-) > > diff --git a/doc/ffmpeg.texi b/doc/ffmpeg.texi > index ab17d1d687..c6c0606e8a 100644 > --- a/doc/ffmpeg.texi > +++ b/doc/ffmpeg.texi > @@ -1406,16 +1406,33 @@ If not specified, @samp{auto_any} is used. > platform-appropriate subdevice (@samp{dxva2} or @samp{d3d11va} or > @samp{vaapi}) and then deriving a > QSV device from that.) > > -Alternatively, @samp{child_device_type} helps to choose platform-appropriate > subdevice type. > -On Windows @samp{d3d11va} is used as default subdevice type. > +The following options are recognized: > +@table @option > +@item child_device > +Specify a DRM render node on Linux or DirectX adapter on Windows > +@item child_device_type > +Choose platform-appropriate subdevice type. On Windows @samp{d3d11va} is used > +as default subdevice type. > +@end table > > Examples: > @table @emph > +@item -init_hw_device qsv:hw,child_device=/dev/dri/renderD129 > +Create a QSV device with @samp{MFX_IMPL_HARDWARE} on DRM render node > /dev/dri/renderD129 > + > +@item -init_hw_device qsv:hw,child_device=1 > +Create a QSV device with @samp{MFX_IMPL_HARDWARE} on DirectX adapter 1. The > subdevice > +type is @samp{d3d11va} if @code{--enable-libvpl} is specified at > configuration time, the > +subdevice type is @samp{dxva2} if @code{--enable-libmfx} is specified at > configuration time. > + > @item -init_hw_device qsv:hw,child_device_type=d3d11va > Choose the GPU subdevice with type @samp{d3d11va} and create QSV device with > @samp{MFX_IMPL_HARDWARE}. > > @item -init_hw_device qsv:hw,child_device_type=dxva2 > Choose the GPU subdevice with type @samp{dxva2} and create QSV device with > @samp{MFX_IMPL_HARDWARE}. > + > +@item -init_hw_device qsv:hw,child_device=1,child_device_type=d3d11va > +Create a QSV device with @samp{MFX_IMPL_HARDWARE} on DirectX adapter 1 with > subdevice type @samp{d3d11va} > @end table > > @item opencl Will apply the patchset - Haihao
On Tue, 2 Jan 2024, 08:27 Xiang, Haihao, < haihao.xiang-at-intel.com@ffmpeg.org> wrote: > On Vr, 2023-12-29 at 12:23 +0800, Xiang, Haihao wrote: > > From: Haihao Xiang <haihao.xiang@intel.com> > > > > Signed-off-by: Haihao Xiang <haihao.xiang@intel.com> > > --- > > doc/ffmpeg.texi | 21 +++++++++++++++++++-- > > 1 file changed, 19 insertions(+), 2 deletions(-) > > > > diff --git a/doc/ffmpeg.texi b/doc/ffmpeg.texi > > index ab17d1d687..c6c0606e8a 100644 > > --- a/doc/ffmpeg.texi > > +++ b/doc/ffmpeg.texi > > @@ -1406,16 +1406,33 @@ If not specified, @samp{auto_any} is used. > > platform-appropriate subdevice (@samp{dxva2} or @samp{d3d11va} or > > @samp{vaapi}) and then deriving a > > QSV device from that.) > > > > -Alternatively, @samp{child_device_type} helps to choose > platform-appropriate > > subdevice type. > > -On Windows @samp{d3d11va} is used as default subdevice type. > > +The following options are recognized: > > +@table @option > > +@item child_device > > +Specify a DRM render node on Linux or DirectX adapter on Windows > > +@item child_device_type > > +Choose platform-appropriate subdevice type. On Windows @samp{d3d11va} > is used > > +as default subdevice type. > > +@end table > > > > Examples: > > @table @emph > > +@item -init_hw_device qsv:hw,child_device=/dev/dri/renderD129 > > +Create a QSV device with @samp{MFX_IMPL_HARDWARE} on DRM render node > > /dev/dri/renderD129 > > + > > +@item -init_hw_device qsv:hw,child_device=1 > > +Create a QSV device with @samp{MFX_IMPL_HARDWARE} on DirectX adapter 1. > The > > subdevice > > +type is @samp{d3d11va} if @code{--enable-libvpl} is specified at > > configuration time, the > > +subdevice type is @samp{dxva2} if @code{--enable-libmfx} is specified at > > configuration time. > > + > > @item -init_hw_device qsv:hw,child_device_type=d3d11va > > Choose the GPU subdevice with type @samp{d3d11va} and create QSV device > with > > @samp{MFX_IMPL_HARDWARE}. > > > > @item -init_hw_device qsv:hw,child_device_type=dxva2 > > Choose the GPU subdevice with type @samp{dxva2} and create QSV device > with > > @samp{MFX_IMPL_HARDWARE}. > > + > > +@item -init_hw_device qsv:hw,child_device=1,child_device_type=d3d11va > > +Create a QSV device with @samp{MFX_IMPL_HARDWARE} on DirectX adapter 1 > with > > subdevice type @samp{d3d11va} > > @end table > > > > @item opencl > > Will apply the patchset > A small request: The docs mention the creation of either VAAPI or d3d11 devices and then deriving a Quicksync device from that. Can your patchset include a trivial example of that, preferably with hwmap? That would eliminate the ambiguity in that clause. >
On Di, 2024-01-02 at 19:00 +0300, Dennis Mungai wrote: > On Tue, 2 Jan 2024, 08:27 Xiang, Haihao, < > haihao.xiang-at-intel.com@ffmpeg.org> wrote: > > > On Vr, 2023-12-29 at 12:23 +0800, Xiang, Haihao wrote: > > > From: Haihao Xiang <haihao.xiang@intel.com> > > > > > > Signed-off-by: Haihao Xiang <haihao.xiang@intel.com> > > > --- > > > doc/ffmpeg.texi | 21 +++++++++++++++++++-- > > > 1 file changed, 19 insertions(+), 2 deletions(-) > > > > > > diff --git a/doc/ffmpeg.texi b/doc/ffmpeg.texi > > > index ab17d1d687..c6c0606e8a 100644 > > > --- a/doc/ffmpeg.texi > > > +++ b/doc/ffmpeg.texi > > > @@ -1406,16 +1406,33 @@ If not specified, @samp{auto_any} is used. > > > platform-appropriate subdevice (@samp{dxva2} or @samp{d3d11va} or > > > @samp{vaapi}) and then deriving a > > > QSV device from that.) > > > > > > -Alternatively, @samp{child_device_type} helps to choose > > platform-appropriate > > > subdevice type. > > > -On Windows @samp{d3d11va} is used as default subdevice type. > > > +The following options are recognized: > > > +@table @option > > > +@item child_device > > > +Specify a DRM render node on Linux or DirectX adapter on Windows > > > +@item child_device_type > > > +Choose platform-appropriate subdevice type. On Windows @samp{d3d11va} > > is used > > > +as default subdevice type. > > > +@end table > > > > > > Examples: > > > @table @emph > > > +@item -init_hw_device qsv:hw,child_device=/dev/dri/renderD129 > > > +Create a QSV device with @samp{MFX_IMPL_HARDWARE} on DRM render node > > > /dev/dri/renderD129 > > > + > > > +@item -init_hw_device qsv:hw,child_device=1 > > > +Create a QSV device with @samp{MFX_IMPL_HARDWARE} on DirectX adapter 1. > > The > > > subdevice > > > +type is @samp{d3d11va} if @code{--enable-libvpl} is specified at > > > configuration time, the > > > +subdevice type is @samp{dxva2} if @code{--enable-libmfx} is specified at > > > configuration time. > > > + > > > @item -init_hw_device qsv:hw,child_device_type=d3d11va > > > Choose the GPU subdevice with type @samp{d3d11va} and create QSV device > > with > > > @samp{MFX_IMPL_HARDWARE}. > > > > > > @item -init_hw_device qsv:hw,child_device_type=dxva2 > > > Choose the GPU subdevice with type @samp{dxva2} and create QSV device > > with > > > @samp{MFX_IMPL_HARDWARE}. > > > + > > > +@item -init_hw_device qsv:hw,child_device=1,child_device_type=d3d11va > > > +Create a QSV device with @samp{MFX_IMPL_HARDWARE} on DirectX adapter 1 > > with > > > subdevice type @samp{d3d11va} > > > @end table > > > > > > @item opencl > > > > Will apply the patchset > > > > > A small request: The docs mention the creation of either VAAPI or d3d11 > devices and then deriving a Quicksync device from that. Can your patchset > include a trivial example of that, Added an example in v2 (https://ffmpeg.org/pipermail/ffmpeg-devel/2024-January/319321.html ) > preferably with hwmap? That would > eliminate the ambiguity in that clause. This patch is about qsv device initilazation when using option -init_hw_device, not hwmap. hwmap can use the devices initialized by option -init_hw_device or derive a new device. hwmap uses a device initialized by option -init_hw_device, for example: $ ffmpeg -init_hw_device vaapi=va:/dev/dri/renderD128 -init_hw_device opencl=ocl@va -hwaccel vaapi -hwaccel_device va -filter_hw_device ocl - hwaccel_output_format vaapi -i input.mp4 -vf 'hwmap,unsharp_opencl' -f null - hwmap derives a new device, then use this new device, for example: $ ffmpeg -init_hw_device vaapi=va:/dev/dri/renderD128 -hwaccel vaapi - hwaccel_device va -filter_hw_device va -hwaccel_output_format vaapi -i input.mp4 -vf 'hwmap=derive_device=opencl,unsharp_opencl' -f null - Thanks Haihao > > > > _______________________________________________ > ffmpeg-devel mailing list > ffmpeg-devel@ffmpeg.org > https://ffmpeg.org/mailman/listinfo/ffmpeg-devel > > To unsubscribe, visit link above, or email > ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
diff --git a/doc/ffmpeg.texi b/doc/ffmpeg.texi index ab17d1d687..c6c0606e8a 100644 --- a/doc/ffmpeg.texi +++ b/doc/ffmpeg.texi @@ -1406,16 +1406,33 @@ If not specified, @samp{auto_any} is used. platform-appropriate subdevice (@samp{dxva2} or @samp{d3d11va} or @samp{vaapi}) and then deriving a QSV device from that.) -Alternatively, @samp{child_device_type} helps to choose platform-appropriate subdevice type. -On Windows @samp{d3d11va} is used as default subdevice type. +The following options are recognized: +@table @option +@item child_device +Specify a DRM render node on Linux or DirectX adapter on Windows +@item child_device_type +Choose platform-appropriate subdevice type. On Windows @samp{d3d11va} is used +as default subdevice type. +@end table Examples: @table @emph +@item -init_hw_device qsv:hw,child_device=/dev/dri/renderD129 +Create a QSV device with @samp{MFX_IMPL_HARDWARE} on DRM render node /dev/dri/renderD129 + +@item -init_hw_device qsv:hw,child_device=1 +Create a QSV device with @samp{MFX_IMPL_HARDWARE} on DirectX adapter 1. The subdevice +type is @samp{d3d11va} if @code{--enable-libvpl} is specified at configuration time, the +subdevice type is @samp{dxva2} if @code{--enable-libmfx} is specified at configuration time. + @item -init_hw_device qsv:hw,child_device_type=d3d11va Choose the GPU subdevice with type @samp{d3d11va} and create QSV device with @samp{MFX_IMPL_HARDWARE}. @item -init_hw_device qsv:hw,child_device_type=dxva2 Choose the GPU subdevice with type @samp{dxva2} and create QSV device with @samp{MFX_IMPL_HARDWARE}. + +@item -init_hw_device qsv:hw,child_device=1,child_device_type=d3d11va +Create a QSV device with @samp{MFX_IMPL_HARDWARE} on DirectX adapter 1 with subdevice type @samp{d3d11va} @end table @item opencl