Listing the hardware accelerators

classic Classic list List threaded Threaded
9 messages Options
Reply | Threaded
Open this post in threaded view
|

Listing the hardware accelerators

Verachten Bruno
Hi List,

I have different environments (X86, ARM, Jetson Nano) on which I'd like to
use hardware encoders and decoders if available.
I guess that I won't be able to use them if they have not been built in the
ffmpeg dependencies if I install a "generic" version.
Will the configure command autodetect what it should build, or do I have to
know my hardware before launching configure with specific options?
I have read https://trac.ffmpeg.org/wiki/HWAccelIntro but it's not clear to
me yet.
Is there any way to have ffmpeg list what it has "found" on my system?
Do I have to launch a series of commands with the different accelerators
that exist, and see the output?
I suppose we have to specify on the command line the hardware acceleration
chosen for the ffmpeg command, it won't autodetect and choose one that is
available, am I right?

Thanks a bunch,

Bruno
--
Bruno Verachten
_______________________________________________
ffmpeg-user mailing list
[hidden email]
https://ffmpeg.org/mailman/listinfo/ffmpeg-user

To unsubscribe, visit link above, or email
[hidden email] with subject "unsubscribe".
Reply | Threaded
Open this post in threaded view
|

Re: Listing the hardware accelerators

Carl Eugen Hoyos-2
Am Do., 26. Sept. 2019 um 21:13 Uhr schrieb Verachten Bruno
<[hidden email]>:

> I have different environments (X86, ARM, Jetson Nano) on which I'd like to
> use hardware encoders and decoders if available.
> I guess that I won't be able to use them if they have not been built in the
> ffmpeg dependencies if I install a "generic" version.
> Will the configure command autodetect what it should build, or do I have to
> know my hardware before launching configure with specific options?
> I have read https://trac.ffmpeg.org/wiki/HWAccelIntro but it's not clear to
> me yet.
> Is there any way to have ffmpeg list what it has "found" on my system?
> Do I have to launch a series of commands with the different accelerators
> that exist, and see the output?

Are you searching for this command?
$ ffmpeg -hwaccels

> I suppose we have to specify on the command line the hardware acceleration
> chosen for the ffmpeg command, it won't autodetect and choose one that is
> available, am I right?

$ ./configure --help
gives some information, vdpau, vaapi, *toolbox and dxva2 are (for example)
autodetected.

Carl Eugen
_______________________________________________
ffmpeg-user mailing list
[hidden email]
https://ffmpeg.org/mailman/listinfo/ffmpeg-user

To unsubscribe, visit link above, or email
[hidden email] with subject "unsubscribe".
Reply | Threaded
Open this post in threaded view
|

Re: Listing the hardware accelerators

Michael Koch
Am 26.09.2019 um 23:06 schrieb Carl Eugen Hoyos:

> Am Do., 26. Sept. 2019 um 21:13 Uhr schrieb Verachten Bruno
> <[hidden email]>:
>
>> I have different environments (X86, ARM, Jetson Nano) on which I'd like to
>> use hardware encoders and decoders if available.
>> I guess that I won't be able to use them if they have not been built in the
>> ffmpeg dependencies if I install a "generic" version.
>> Will the configure command autodetect what it should build, or do I have to
>> know my hardware before launching configure with specific options?
>> I have read https://trac.ffmpeg.org/wiki/HWAccelIntro but it's not clear to
>> me yet.
>> Is there any way to have ffmpeg list what it has "found" on my system?
>> Do I have to launch a series of commands with the different accelerators
>> that exist, and see the output?
> Are you searching for this command?
> $ ffmpeg -hwaccels

 From the documentation:
"-hwaccels   List all hardware acceleration methods supported in this
build of ffmpeg."

Does that mean
a) List all hardware acceleration methods supported in this build of
ffmpeg, regardless if the hardware is really built into this computer,
or does it mean
b) List all hardware acceleration methods supported in this build of
ffmpeg and this hardware is really available in this computer?

Michael

_______________________________________________
ffmpeg-user mailing list
[hidden email]
https://ffmpeg.org/mailman/listinfo/ffmpeg-user

To unsubscribe, visit link above, or email
[hidden email] with subject "unsubscribe".
Reply | Threaded
Open this post in threaded view
|

Re: Listing the hardware accelerators

Moritz Barsnick
On Fri, Sep 27, 2019 at 09:14:07 +0200, Michael Koch wrote:
> Does that mean
> a) List all hardware acceleration methods supported in this build of
> ffmpeg, regardless if the hardware is really built into this computer,
> or does it mean
> b) List all hardware acceleration methods supported in this build of
> ffmpeg and this hardware is really available in this computer?

a)
Which is not what the original poster requested.

On the other hand, the command line needs to be adapted anyway,
depending on hwaccel. Perhaps one could use ffmpeg to query by doing
trial and error (e.g. encoding to /dev/null) - unfortunately, ffmpeg
won't say what the actual issue was, unless you want to parse log
messages.

Moritz
_______________________________________________
ffmpeg-user mailing list
[hidden email]
https://ffmpeg.org/mailman/listinfo/ffmpeg-user

To unsubscribe, visit link above, or email
[hidden email] with subject "unsubscribe".
Reply | Threaded
Open this post in threaded view
|

Re: Listing the hardware accelerators

Carl Eugen Hoyos-2
Am Fr., 27. Sept. 2019 um 10:17 Uhr schrieb Moritz Barsnick <[hidden email]>:

>
> On Fri, Sep 27, 2019 at 09:14:07 +0200, Michael Koch wrote:
> > Does that mean
> > a) List all hardware acceleration methods supported in this build of
> > ffmpeg, regardless if the hardware is really built into this computer,
> > or does it mean
> > b) List all hardware acceleration methods supported in this build of
> > ffmpeg and this hardware is really available in this computer?
>
> a)
> Which is not what the original poster requested.

We (developers) apparently think that just as you have to know your
input file to use ffmpeg (not every command line supports every
input file), you also have to know the hardware you are using...

@Michael: Please understand that (at least most) developers do
not have the time to copy the change you already suggested into
their local tree. Instead install a git client of your choice and send
the documentation patches to the development mailing list where
they will find more friends!
You will find that this saves both of us (!) a lot of time because
making the change locally and sending an email is definitely faster
than opening a ticket on trac.

Carl Eugen
_______________________________________________
ffmpeg-user mailing list
[hidden email]
https://ffmpeg.org/mailman/listinfo/ffmpeg-user

To unsubscribe, visit link above, or email
[hidden email] with subject "unsubscribe".
Reply | Threaded
Open this post in threaded view
|

Re: Listing the hardware accelerators

Verachten Bruno
In reply to this post by Moritz Barsnick
Thanks a lot for your answers and new questions.
When I run the -hwaccels, I get:
 ffmpeg -hwaccels
ffmpeg version 4.2.1 Copyright (c) 2000-2019 the FFmpeg developers
  built with gcc 7 (Ubuntu 7.4.0-1ubuntu1~18.04.1)
  configuration: --enable-gpl --enable-version3 --disable-static
--enable-shared --enable-small --enable-avisynth --enable-chromaprint
--enable-frei0r --enable-gmp --enable-gnutls --enable-ladspa
--enable-libaom --enable-libass --enable-libcaca --enable-libcdio
--enable-libcodec2 --enable-libfontconfig --enable-libfreetype
--enable-libfribidi --enable-libgme --enable-libgsm --enable-libjack
--enable-libmodplug --enable-libmp3lame --enable-libopencore-amrnb
--enable-libopencore-amrwb --enable-libopencore-amrwb --enable-libopenjpeg
--enable-libopenmpt --enable-libopus --enable-libpulse --enable-librsvg
--enable-librubberband --enable-librtmp --enable-libshine
--enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh
--enable-libtesseract --enable-libtheora --enable-libtwolame
--enable-libv4l2 --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx
--enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265
--enable-libxvid --enable-libxml2 --enable-libzmq --enable-libzvbi
--enable-lv2 --enable-libmysofa --enable-openal --enable-opencl
--enable-opengl --enable-libdrm --enable-nonfree --enable-libfdk-aac
--enable-libbluray --extra-libs='-lnettle -lhogweed -lgmp'
  libavutil      56. 31.100 / 56. 31.100
  libavcodec     58. 54.100 / 58. 54.100
  libavformat    58. 29.100 / 58. 29.100
  libavdevice    58.  8.100 / 58.  8.100
  libavfilter     7. 57.100 /  7. 57.100
  libswscale      5.  5.100 /  5.  5.100
  libswresample   3.  5.100 /  3.  5.100
  libpostproc    55.  5.100 / 55.  5.100
Hardware acceleration methods:
drm
opencl

So... That would mean that on this machine, with what configure has been
able to detect, I only have access to drm and opencl.

That's on a i5 laptop with an Intel 5500GPU

Information gathered from Chromium with the "about:gpu":
GPU0VENDOR = 0x8086 [Intel Open Source Technology Center], DEVICE=
0x1616 [Mesa DRI Intel(R) HD Graphics 5500 (Broadwell GT2) ] *ACTIVE*

> We (developers) apparently think that just as you have to know your
> input file to use ffmpeg (not every command line supports every
> input file), you also have to know the hardware you are using...
Great. That was not crystal clear for me up to now.
My first (reasonable) option would be to study the various systems I use,
try to understand which hardware accelerators they have if any, and then
choose the correct options in configure so that I will have a bespoke
ffmpeg. I have already tried that path (more or less) with ARM SoCs, and my
wounds have not healed yet.
The second (harebrained) option would be to turn every hardware accelerator
related option on with configure on every machine, so that I have a
consistent ffmpeg build script, and then try to understand for each
machine/build the hardware accelerators we have access to, if any (that
would be once more a pain in the neck with ARM SoCs).

Thanks.


On Fri, Sep 27, 2019 at 10:17 AM Moritz Barsnick <[hidden email]> wrote:

> On Fri, Sep 27, 2019 at 09:14:07 +0200, Michael Koch wrote:
> > Does that mean
> > a) List all hardware acceleration methods supported in this build of
> > ffmpeg, regardless if the hardware is really built into this computer,
> > or does it mean
> > b) List all hardware acceleration methods supported in this build of
> > ffmpeg and this hardware is really available in this computer?
>
> a)
> Which is not what the original poster requested.
>
> On the other hand, the command line needs to be adapted anyway,
> depending on hwaccel. Perhaps one could use ffmpeg to query by doing
> trial and error (e.g. encoding to /dev/null) - unfortunately, ffmpeg
> won't say what the actual issue was, unless you want to parse log
> messages.
>
> Moritz
> _______________________________________________
> ffmpeg-user mailing list
> [hidden email]
> https://ffmpeg.org/mailman/listinfo/ffmpeg-user
>
> To unsubscribe, visit link above, or email
> [hidden email] with subject "unsubscribe".



--
Bruno Verachten
_______________________________________________
ffmpeg-user mailing list
[hidden email]
https://ffmpeg.org/mailman/listinfo/ffmpeg-user

To unsubscribe, visit link above, or email
[hidden email] with subject "unsubscribe".
Reply | Threaded
Open this post in threaded view
|

Re: Listing the hardware accelerators

Carl Eugen Hoyos-2
Am Fr., 27. Sept. 2019 um 15:04 Uhr schrieb Verachten Bruno
<[hidden email]>:

>
> Thanks a lot for your answers and new questions.
> When I run the -hwaccels, I get:
>  ffmpeg -hwaccels
> ffmpeg version 4.2.1 Copyright (c) 2000-2019 the FFmpeg developers
>   built with gcc 7 (Ubuntu 7.4.0-1ubuntu1~18.04.1)
>   configuration: --enable-gpl --enable-version3 --disable-static
> --enable-shared --enable-small --enable-avisynth --enable-chromaprint
> --enable-frei0r --enable-gmp --enable-gnutls --enable-ladspa
> --enable-libaom --enable-libass --enable-libcaca --enable-libcdio
> --enable-libcodec2 --enable-libfontconfig --enable-libfreetype
> --enable-libfribidi --enable-libgme --enable-libgsm --enable-libjack
> --enable-libmodplug --enable-libmp3lame --enable-libopencore-amrnb
> --enable-libopencore-amrwb --enable-libopencore-amrwb --enable-libopenjpeg
> --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librsvg
> --enable-librubberband --enable-librtmp --enable-libshine
> --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh
> --enable-libtesseract --enable-libtheora --enable-libtwolame
> --enable-libv4l2 --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx
> --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265
> --enable-libxvid --enable-libxml2 --enable-libzmq --enable-libzvbi
> --enable-lv2 --enable-libmysofa --enable-openal --enable-opencl
> --enable-opengl --enable-libdrm --enable-nonfree --enable-libfdk-aac
> --enable-libbluray --extra-libs='-lnettle -lhogweed -lgmp'

(You compiled your FFmpeg binaries with several options that
you don't need.)

>   libavutil      56. 31.100 / 56. 31.100
>   libavcodec     58. 54.100 / 58. 54.100
>   libavformat    58. 29.100 / 58. 29.100
>   libavdevice    58.  8.100 / 58.  8.100
>   libavfilter     7. 57.100 /  7. 57.100
>   libswscale      5.  5.100 /  5.  5.100
>   libswresample   3.  5.100 /  3.  5.100
>   libpostproc    55.  5.100 / 55.  5.100
> Hardware acceleration methods:
> drm
> opencl
>
> So... That would mean that on this machine, with what configure has been
> able to detect, I only have access to drm and opencl.
>
> That's on a i5 laptop with an Intel 5500GPU

Then install the vaapi drivers and development headers (sorry, I
don't know the package names) and recompile.

> Information gathered from Chromium with the "about:gpu":
> GPU0VENDOR = 0x8086 [Intel Open Source Technology Center], DEVICE=
> 0x1616 [Mesa DRI Intel(R) HD Graphics 5500 (Broadwell GT2) ] *ACTIVE*
>
> > We (developers) apparently think that just as you have to know your
> > input file to use ffmpeg (not every command line supports every
> > input file), you also have to know the hardware you are using...

> Great. That was not crystal clear for me up to now.
> My first (reasonable) option would be to study the various systems I use,
> try to understand which hardware accelerators they have if any, and then
> choose the correct options in configure so that I will have a bespoke
> ffmpeg.

This is less about configure options (the common hardware accelerations
are auto-detected) and more about missing development headers (vaapi
and vdpau / nvcodec which you need for nvidia gpus).

> I have already tried that path (more or less) with ARM SoCs, and my
> wounds have not healed yet.

arm can be more difficult, there is something called v4l2-m2m that is
also auto-detected and for which you also need specific drivers and
headers at compile time.
There are also rkmpp, omx and mmal: Only enable these if you know
what you are doing.

> The second (harebrained) option would be to turn every hardware accelerator
> related option on with configure on every machine, so that I have a
> consistent ffmpeg build script, and then try to understand for each
> machine/build the hardware accelerators we have access to, if any (that
> would be once more a pain in the neck with ARM SoCs).

Except for arm, this may not really be such a pain, the necessary headers
are available for all distributions.

Please do not top-post here, Carl Eugen
_______________________________________________
ffmpeg-user mailing list
[hidden email]
https://ffmpeg.org/mailman/listinfo/ffmpeg-user

To unsubscribe, visit link above, or email
[hidden email] with subject "unsubscribe".
Reply | Threaded
Open this post in threaded view
|

Re: Listing the hardware accelerators

Michael Koch
In reply to this post by Carl Eugen Hoyos-2
Carl Eugen,

> @Michael: Please understand that (at least most) developers do
> not have the time to copy the change you already suggested into
> their local tree. Instead install a git client of your choice and send
> the documentation patches to the development mailing list where
> they will find more friends!

I know absolutely nothing about git, and when I read introductions (for
example https://www.ffmpeg.org/git-howto.html)  I'm totally lost. I need
to find someone locally who can explain that to me.

Michael

_______________________________________________
ffmpeg-user mailing list
[hidden email]
https://ffmpeg.org/mailman/listinfo/ffmpeg-user

To unsubscribe, visit link above, or email
[hidden email] with subject "unsubscribe".
Reply | Threaded
Open this post in threaded view
|

Re: Listing the hardware accelerators

Carl Eugen Hoyos-2
Am Fr., 27. Sept. 2019 um 15:53 Uhr schrieb Michael Koch
<[hidden email]>:

>
> Carl Eugen,
>
> > @Michael: Please understand that (at least most) developers do
> > not have the time to copy the change you already suggested into
> > their local tree. Instead install a git client of your choice and send
> > the documentation patches to the development mailing list where
> > they will find more friends!
>
> I know absolutely nothing about git, and when I read introductions (for
> example https://www.ffmpeg.org/git-howto.html)  I'm totally lost. I need
> to find someone locally who can explain that to me.

Google led me to this page:
https://git-scm.com/download/gui/windows

But given that you use ffmpeg from the command line, consider the
following (after installing "native git" which runs from the command line):
$ git clone http://git.ffmpeg.org/ffmpeg.git
$ cd ffmpeg
edit a file in the doc directory.
$ git commit doc
(I suspect this will ask you to set your name and email when running
it for the first time)
$ git format-patch HEAD^
This produces a file that you can send to the mailing list after
visual inspection for commit message and your name.
$ git reset HEAD^

I expect there to be more than one tutorial...

Carl Eugen
_______________________________________________
ffmpeg-user mailing list
[hidden email]
https://ffmpeg.org/mailman/listinfo/ffmpeg-user

To unsubscribe, visit link above, or email
[hidden email] with subject "unsubscribe".