Announcement

Collapse
No announcement yet.

Libav Adds H.264 & HEVC Encoders For NVIDIA's NVENC

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • #11
    Originally posted by Nille_kungen View Post
    Could someone please explain how well supported different vendors hardware encoding is in linux?
    It seems from this thread that that Nvidia has an good api and Intel a bad one is this true and how's AMD?
    VDPAU (nvidia's API) has the best support for the most part. The downside is its decode only, there's no encoding portion of the API.

    VAAPI (Intel's API) has the second best support. It supports encode and decode but I've read similar complaints about the quality of the library and the API.

    XVBA (Amd's API) has mostly been abandoned and was never really all that well supported to begin with.

    Closed source Nvidia: Supports VDPAU, I think that's it.

    Open source Nvidia: Supports VDPAU. Supports VAAPI through a wrapper that translates VAAPI calls into VDPAU calls.

    Closed source AMD: Supports XVBA. Supports VAAPI through backend that translates VAAPI into XVBA. Supports VDPAU through wrapper that translates VDPAU calls into VAAPI calls which then get past to the XVBA backend.

    Open source AMD: Supports VDPAU. Supports VAAPI through a wrapper that translate VAAPI calls into VDPAU calls.

    Intel: Supports VAAPI. Supports VDPAU through wrapper that translates VDPAU calls into VAAPI.


    If any one has any corrections please say so. I snagged this from like five minutes of googling.
    All opinions are my own not those of my employer if you know who they are.

    Comment


    • #12
      Originally posted by Ericg View Post
      ...
      He asked about encoding, and on linux its mainly NVENC, VAAPI and OpenMAX.

      Comment


      • #13
        Btbn did you looked at openmax? Its sad that this is not supported in ffmpeg and many hardware, special on ARM Socs like RPI, use this api for encoding. Its also used for AMDs encoders and decoders on Linux with the FOSS-Drivers.

        Comment


        • #14
          The decoding is pretty clear in linux but the encoding is not at least to me.
          Originally posted by magika View Post
          He asked about encoding, and on linux its mainly NVENC, VAAPI and OpenMAX.
          I will try to summon things up a bit and post some more specific questions about linux hw encoding, but i don't know if everything is correct.

          Nvidia uses NVENC (Nvidia video encoding) accessed through a proprietary API called "NVENC API" provided by Nvidia's proprietary device driver, but it seems that the API is clean but according to wikipedia it's undocumented but ffmpeg does have support for it.
          NVENC is vendor specific.


          Intel uses VAAPI (Video Acceleration API) it's for both decoding and encoding and it's an free and open API, but it turns out it's a mess and it's seems hard to develop hardware encoding with VAAPI, it's only supported thru gstreamer.
          VAAPI is not vendor specific.


          AMD has VCE (Video Coding Engine) that's open source and documented.
          Radeon uses OpenMAX with the GStreamer OpenMAX (Gst-omx) support for exposing the VCE video encode engine according to http://www.phoronix.com/vr.php?view=MTU5MTc
          What is the current state of the Gallium3D OpenMAX Video State Tracker?
          OpenMAX (Open Media Acceleration) is an open media acceleration API by Khronos Group.
          How well supported is OpenMAX in software and how good is the API?
          OpenMAX is not vendor specific.


          What encoders does the different vendors hardware encoding support in linux right now? (x264, VP8, VP9, theora, hevc and so on)
          What software support is there for them? (ffmpeg, gstreamer and so on)

          Comment


          • #15
            Originally posted by Ericg View Post
            If any one has any corrections please say so. I snagged this from like five minutes of googling.
            One correction: Open source AMD has both VDPAU and VAAPI without any wrappers.

            Also, I would advise against using wrappers. When they're involved, you often end up with more resource usage than not using hardware decoding at all.


            Originally posted by Nille_kungen View Post
            OpenMAX is not vendor specific.
            In theory. In practice, it's very much is. You'll need RPi specific code in your app, and then specific code for each other vendor you want to support, for example ArchLinux ARM has kodi-rpb (for the RPi) and kodi-c1 (for the Odroid-C1) packages.

            OpenMAX is a mess, even bigger than VAAPI. It's why there's so little support for it outside of Android (where a vendor will provide a closed implementation specific to a particular phone) or the RPi. Even on the RPi, app developers are using MMAL, either exclusively (mpv) or in addition to OpenMAX (Kodi, VLC), because MMAL tends to work better and requires *way* less code to support it.

            Edit: Haha, I just learned the Odroid-C1 isn't actually using OpenMAX! There's a vendor specific solution, AMCodec (the C1 is using an Amlogic SoC). So yeah, OpenMAX is a mess.
            Last edited by Gusar; 01 June 2015, 05:43 AM.

            Comment


            • #16
              It's interesting to see how popular gstreamer has become.

              Comment


              • #17
                Originally posted by Isedonde View Post
                And that's not quite true either, because apparently just a few Debian guys still prefer libav over ffmpeg. Namely Reinhard Tartler, Jonas Smedegaard and a few others.

                That might change soon though, see this thread:
                http://lists.alioth.debian.org/piper...ay/043979.html
                Judging by that thread (or rather the June portion), it looks like it is all but certain that Debian will switch to ffmpeg.

                Comment


                • #18
                  Originally posted by TheBlackCat View Post
                  Judging by that thread (or rather the June portion), it looks like it is all but certain that Debian will switch to ffmpeg.
                  The ordeal is over!

                  Comment


                  • #19
                    Originally posted by Gusar View Post
                    One correction: Open source AMD has both VDPAU and VAAPI without any wrappers.

                    Also, I would advise against using wrappers. When they're involved, you often end up with more resource usage than not using hardware decoding at all.
                    as long as the damn things work as they intended.

                    Comment


                    • #20
                      Originally posted by 89c51 View Post
                      as long as the damn things work as they intended.
                      I wouldn't call using more resources than software decoding "work as intended". A wrapper should be a bridge with minimal, ideally no overhead. But when these vaapi<->vdpau wrappers have such overhead that you're better off with software decoding, they are effectively useless.

                      Comment

                      Working...
                      X