Journal VA-API de plus en plus utilisé

Posté par .
Tags : aucun
11
4
nov.
2009
Va-API, l'extension au serveur X développé par Intel pour permettre l'accélération matérielle des codecs Videos commence à devenir de plus en plus adoptée.
En effet, outre Intel et S3 qui supportent cette API nativement sur certaines de leurs cartes, un backend vdpau (extension de Nvidia concurrente) est disponible depuis quelques temps au public chez .splitted-desktop, surtout depuis que NVidia à sortie une bibliothèque open-source pour en tirer partis.
Ils viennent de rendre accessible le backend XvBa (extension concurrente d' ATI/Amd), mais ce backend n'est qu'un backend binaire. La librairie XvBa restant toujours fermée.
On se doute que splitted-desktop à du signer un NDA (Non Disclosure Aggreement) avec Amd pour pouvoir développer une telle librairie qui doit obligatoirement fonctionner avec les drivers propriétaires de Amd.
Il n'empêche que désormais, l'accélération matérielle des codecs sous Linux peut être utilisée de manière unifiée via Va-API, ce qui est une grosse avancée par rapport à quelques mois, ou Linux était délaissé par rapport aux plateformes de Microsoft.

Pour ma part, j'espère qu'un state-tracker pour Va-API soit implémenté dans Gallium3D (aujourd'hui seul un state-tracker pour XvMc est en cours de développement), ce qui permettra un support plus large de cette API dans les drivers open-sources.

lien vers les backend pour Va-API : http://www.splitted-desktop.com/~gbeauchesne/
  • # Des précisions ?

    Posté par (page perso) . Évalué à 5.

    Ça a l’air très bien… mais je n’ai pas tout compris !
    Pratiquement, ça veut dire qu’en installant va-api et xvba-vidéo, on obtient de l’accélération vidéo avec une ati tournant avec fglrx ?
    • [^] # Re: Des précisions ?

      Posté par . Évalué à 5.

      Oui ... Si le player supporte va-api.
      • [^] # Re: Des précisions ?

        Posté par (page perso) . Évalué à 4.

        Et si la carte graphique le supporte aussi donc radeon HD4xxx et plus il me semble

        S'il y a un problème, il y a une solution; s'il n'y a pas de solution, c'est qu'il n'y a pas de problème.

        • [^] # Re: Des précisions ?

          Posté par . Évalué à 3.

          Exact, mais il faut préciser qu'en fait ça concerne les chips graphiques supportant UVD2 ce qui comprends les radeon HD4XXX (et +) ainsi quel le chipset AMD 785G , intéressant pour les media-center.
          • [^] # Re: Des précisions ?

            Posté par . Évalué à 3.

            Exact, mais il faut préciser qu'en fait ça concerne les chips graphiques supportant UVD2 ce qui comprends les radeon HD4XXX (et +) ainsi quel le chipset AMD 785G , intéressant pour les media-center.

            Ainsi que les vieux RS780G et RS780E.
            • [^] # Re: Des précisions ?

              Posté par . Évalué à 2.

              Etant donné que tu es directement impliqué dans le projet, tu es certainement très au courant, mais selon wikipedia le 780G ne supporte que l'UVD normal (pas 2.0) ref : http://en.wikipedia.org/wiki/Unified_Video_Decoder .

              donc si tu as plus de précision sur le sujet je suis très intéressé.
              • [^] # Re: Des précisions ?

                Posté par . Évalué à 4.

                Wikipedia ment, c'est bien connu. Je développe sur RS780G et oui, ça marche dessus. UVD2 est indiqué dans les logs, et c'est tout ce que AMD supporte. Seul le RS780V n'a pas de bloc de décodage vidéo du tout.
      • [^] # Re: Des précisions ?

        Posté par (page perso) . Évalué à 3.

        Hum… donc ça veut dire patcher mpalyer :)
        • [^] # Re: Des précisions ?

          Posté par (page perso) . Évalué à 3.

          • [^] # Re: Des précisions ?

            Posté par (page perso) . Évalué à 1.

            Oui, j’avais vu le lien. Testé ici, la compilation semble se passer sans soucis (karmic x64) mais j’ai une erreur : 

            AVI file format detected.
            [aviheader] Video stream found, -vid 0
            [aviheader] Audio stream found, -aid 1
            VIDEO: [DIV3] 640x344 24bpp 25.000 fps 910.7 kbps (111.2 kbyte/s)
            libva: libva version 0.31.0-sds3
            libva: va_getDriverName() returns 0
            libva: Trying to open /usr/lib/va/drivers/fglrx_drv_video.so
            libva: va_openDriver() returns 0
            Opening video filter: [scale]
            Opening video filter: [spp]
            ==========================================================================
            Opening video decoder: [ffmpeg] FFmpeg's libavcodec codec family
            [VD_FFMPEG] VA API accelerated codec.
            [VD_FFMPEG] Trying pixfmt=0.
            Unsupported PixelFormat -1
            [PP] Using external postprocessing filter, max q = 6.
            Could not find matching colorspace - retrying with -vf scale...
            Opening video filter: [scale]
            The selected video_out device is incompatible with this codec.
            Try appending the scale filter to your filter list,
            e.g. -vf spp,scale instead of -vf spp.
            Unsupported PixelFormat -1
            [msmpeg4 @ 0xd75e60]decoding to PIX_FMT_NONE is not supported.
            Could not open codec.
            VDecoder init failed :(
            Requested video codec family [divxds] (vfm=dshow) not available.
            Enable it at compilation.
            Requested video codec family [divx] (vfm=vfw) not available.
            Enable it at compilation.
            Requested video codec family [divx4vfw] (vfm=vfw) not available.
            Enable it at compilation.
            Cannot find codec matching selected -vo and video format 0x33564944.
            ==========================================================================
            ==========================================================================
            Opening audio decoder: [mp3lib] MPEG layer-2, layer-3
            AUDIO: 48000 Hz, 2 ch, s16le, 96.0 kbit/6.25% (ratio: 12000->192000)
            Selected audio codec: [mp3] afm: mp3lib (mp3lib MPEG layer-2, layer-3)
            ==========================================================================
            AO: [pulse] 48000Hz 2ch s16le (2 bytes per sample)
            Video: no video
            Starting playback...
            A: 15.0 (15.0) of 58956.9 (16:22:36.9) 0.5%


            lancé avec -vo vaapi -va vaapi -vf spp,scale
            Si il y a un endroit — forum, bugtracker — plus approprié pour ça que les commentaires de linuxfr, je suis preneur.
            • [^] # Re: Des précisions ?

              Posté par . Évalué à 2.

              lancé avec -vo vaapi -va vaapi -vf spp,scale

              Et pourquoi ainsi?
              1) La doc mentionne que cette version ne supporte que le rendu OpenGL. Donc il faut utiliser l'option 'gl' au VO, soit -vo vaapi:gl
              2) Que fait -vf spp,scale?
              • [^] # Re: Des précisions ?

                Posté par (page perso) . Évalué à 1.

                -vo vaapi et va vaapi c’est ce que j’avais lu.
                -vf spp,scale je l’ai ajouté après que mplayer m’a donné une erreur avec ce moyen comme possible solution.

                -vo vaapi:gl ne fonctionne pas non plus…

                Opening video decoder: [ffmpeg] FFmpeg's libavcodec codec family
                [VD_FFMPEG] VA API accelerated codec.
                [VD_FFMPEG] Trying pixfmt=0.
                Unsupported PixelFormat -1
                Movie-Aspect is undefined - no prescaling applied.
                VO: [vaapi] 608x256 => 608x256 MPEG-4 VA API Acceleration
                FATAL: Cannot initialize video driver.
                [VD_FFMPEG] Trying pixfmt=1.
                Unsupported PixelFormat -1
                Could not find matching colorspace - retrying with -vf scale...
                Opening video filter: [scale]
                The selected video_out device is incompatible with this codec.
                Try appending the scale filter to your filter list,
                e.g. -vf spp,scale instead of -vf spp.
                Unsupported PixelFormat -1
                Unsupported PixelFormat -1
                Selected video codec: [ffodivx] vfm: ffmpeg (FFmpeg MPEG-4)
                • [^] # Re: Des précisions ?

                  Posté par . Évalué à 5.

                  -vo vaapi:gl ne fonctionne pas non plus…

                  En y regardant de plus près, tu essaies un fichier DivX (MPEG-4 ASP), ce qui n'est pas la même chose que H.264 (MPEG-4 AVC). L'UVD2 ne supporte pas le DivX, uniquement H.264, VC-1 et MPEG-2, dans une moindre mesure.
  • # Encore plus de précision...

    Posté par . Évalué à 2.

    Pour quelqu'un ayant une carte Intel*:

    - il faut quelle version du noyau?
    - il faut quelle version de Xorg et du driver Intel?

    Après suffit-il d'avoir une appli supportant va-api comme un mplayer recompilé avec le support?

    Faut-il ajouter une autre couche?

    Merci.

    *: seule le GMA500 est supporté? D'après http://www.freedesktop.org/wiki/Software/vaapi, le G965 est aussi supporté.
    • [^] # Re: Encore plus de précision...

      Posté par . Évalué à 2.

      Concernant le GMA500, les éléments suivants fonctionnent pour moi:
      - Ubuntu 8.04 + GMA500 2.2.0.32L.0020 au 2.3.2.32L.0038
      - Ubuntu 9.04 + GMA500 5.0.1.0046
      - Ubuntu 9.04 + IEGD 10.x et en particulier 10.2

      Concernant le G45 (i965, GM4500HD, etc.), il faut un driver Intel suffisamment récent supportant DRI2. En particulier, ça fonctionne out-of-the-box sur une Ubuntu 9.10 + libVA SDS bien sûr.

      D'autres drivers ou back-ends seront annoncés plus tard quand ils seront disponibles.

      Après suffit-il d'avoir une appli supportant va-api comme un mplayer recompilé avec le support?

      Oui.

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.