Announcement

Collapse
No announcement yet.

XBMC Project Implements AMD XvBA Interface

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

  • XBMC Project Implements AMD XvBA Interface

    Phoronix: XBMC Project Implements AMD XvBA Interface

    The XBMC multimedia project has implemented AMD's XvBA interface directly for providing video hardware acceleration for Radeon and Fusion graphics processors...

    Phoronix, Linux Hardware Reviews, Linux hardware benchmarks, Linux server benchmarks, Linux benchmarking, Desktop Linux, Linux performance, Open Source graphics, Linux How To, Ubuntu benchmarks, Ubuntu hardware, Phoronix Test Suite

  • #2
    I've been confused about the state of hardware-accelerated video decoding for AMD GPUs. Since AMD has been pushing hard to get into the lower-end (e.g., HTPC) market with their APUs, isn't hardware-accelerated video decoding an absolute requirement right out of the box?

    Comment


    • #3
      This is amazing news, exactly what I was waiting for!

      #edit: Just tried this and it works perfect! The few movies that did not work with the VAAPI wrapper work now and performance is great and I hated to install all the stuff for the wrapper! Thanks
      Last edited by d2kx; 14 December 2011, 07:11 PM.

      Comment


      • #4
        @johnc

        John I totally agree with you. I even take it a step further, if I were AMD I would actively make sure Linux support was top notch. Making sure your product works and works really well on Linux is a great way to advertise it's performance. Just looking at Bulldozer, the numbers aren't great, but they are better on Linux than on Windows. AMD would have the ability to show what their stuff can do faster than having to wait for Windows to optimize for it. Linux people may use free software, but have no problem paying for low cost quality hardware like AMD generally puts out.

        Obviously, the Windows market is huge and too big to turn away from, but using Linux to show off your stuff, especially when it makes your stuff look good, or at least better, seems like a no brainer.

        Finally, I say this all understanding the cost of having Linux developers etc., but it just seems like such an untapped resource for AMD.

        Comment


        • #5
          I already test this XBMC build on AMD E-350 with Catalyst 11.12. For me it work at least not worse than with VA-API.

          Comment


          • #6
            Working well on Radeon 4200 mobile (with a new patch)

            I tried the old way Xvba/Va in the past and it just didn't work well enough.

            I built the new XbmcXvba and I'm quite pleased with how it's performing. I had a crash when I was toggling between fullscreen and window mode so I looked at the xbmc error log, and then the source code. I made a tweek to FFGetBuffer and the errors disappeared.

            These are the signs of the problem:

            23:24:48 T:139815462737664 DEBUG: XVBA::FFReleaseBuffer - ignoring invalid buffer

            This seems to fix it.

            Code:
            --- ./xbmc/cores/dvdplayer/DVDCodecs/Video/XVBA.cpp.orig	2011-12-14 23:05:22.935781205 -0700
            +++ ./xbmc/cores/dvdplayer/DVDCodecs/Video/XVBA.cpp	2011-12-15 00:16:50.562906967 -0700
            @@ -900,6 +900,16 @@ int CDecoder::FFGetBuffer(AVCodecContext
               CDecoder*             xvba  = (CDecoder*)ctx->GetHardware();
               struct pictureAge*    pA    = &xvba->picAge;
             
            +  pic->data[0] =
            +  pic->data[1] =
            +  pic->data[2] =
            +  pic->data[3] = 0;
            +
            +  pic->linesize[0] =
            +  pic->linesize[1] =
            +  pic->linesize[2] =
            +  pic->linesize[3] = 0;
            +
               CSharedLock lock(xvba->m_decoderSection);
             
               { CSharedLock dLock(xvba->m_displaySection);
            @@ -961,14 +971,6 @@ int CDecoder::FFGetBuffer(AVCodecContext
                 return -1;
             
               pic->data[0] = (uint8_t*)render;
            -  pic->data[1] =
            -  pic->data[2] =
            -  pic->data[3] = 0;
            -
            -  pic->linesize[0] =
            -  pic->linesize[1] =
            -  pic->linesize[2] =
            -  pic->linesize[3] = 0;
             
               if(pic->reference)
               {

            Comment


            • #7
              Thx for your effort in improving xvba support.
              I forwared this patch to "upstream".

              If you have a git account you could also send a pull request if you want!

              Thanks again

              Edit: Upstream is here: https://github.com/FernetMenta/xbmc/commits/xvba
              Last edited by fritsch; 15 December 2011, 04:12 AM.

              Comment


              • #8
                Very nice!
                @fritsch: have you been in contatc with the maintainer of XvBA Tools on Sourceforge (http://sourceforge.net/projects/xvbat/) about the issues you've had? He seems like the most public figure at AMD for XvBA-related stuff.

                Comment


                • #9
                  We looked a bit through xvba tools code. But they are using another base, no ffmpeg framework, so mapping, etc. could not be learned of.
                  It was hard to compare.

                  Gwens xvba-va-driver code was really helpful at some points.

                  For mail, we had an internal contact.

                  Comment


                  • #10
                    Uvd/uvd+ ?

                    Does this also work with the original UVD/UVD+? Or do you need at least UVD2?

                    Comment

                    Working...
                    X