Announcement

Collapse
No announcement yet.

AMD Comments On XvBA Video Situation

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

  • fritsch
    replied
    This is a simple patch to make xvba-va-driver working with Level51 files.
    Additionally it makes playback of broken Level41 files possible.

    It uses gwen's method (seeh h264 Level standards) of calcing max_reframes and changes the level to 51 if they are over spec.


    Code:
    diff --git a/src/xvba_buffer.c b/src/xvba_buffer.c
    index 4facbbf..d8012a3 100644
    --- a/src/xvba_buffer.c
    +++ b/src/xvba_buffer.c
    @@ -368,23 +368,18 @@ translate_VAPictureParameterBufferH264(
             obj_context->picture_height
         );
     
    -    /* Check for H.264 content over [email protected] */
    +    /* Check for wrongly coded H264 Level 41 files
    +       adjust profile to Level 51 when reframes are too many
    +     */
         unsigned int num_ref_frames = pic_param->num_ref_frames;
    -    if (profile == XVBA_H264_HIGH && level > 41) {
    -        if (!driver_data->warn_h264_over_hp_l41) {
    -            driver_data->warn_h264_over_hp_l41 = 1;
    -            xvba_information_message(
    -                "driver does not support H.264 content over [email protected]. "
    -                "Please upgrade.\n"
    -            );
    -        }
    +    if (profile == XVBA_H264_HIGH && level == 41) {
     
    -        /* Use fail-safe values (lower ref frames) */
    +        /* Increase Level to decode pseudo Level 41 as Level 51 */
             const unsigned int mbw = pic_param->picture_width_in_mbs_minus1 + 1;
             const unsigned int mbh = (obj_context->picture_height + 15) / 16;
             const unsigned int max_ref_frames = 12288 * 1024 / (mbw * mbh * 384);
             if (max_ref_frames < num_ref_frames)
    -            num_ref_frames = max_ref_frames;
    +            level = 51;
         }
     
         XVBABufferDescriptor * const xvba_buffer = obj_surface->pic_desc_buffer;
    Last edited by fritsch; 03 July 2012, 04:29 PM.

    Leave a comment:


  • entropy
    replied
    Kano, no offense.

    I really appreciate what you're doing!
    It's just that - to me - your post sounded somehow positive about XVBA for the first time.

    While I'm using the FOSS radeon stack for now, it's great to hear AMD improves on the UVD support in the blob.
    Obviously, having that much issues with the video acceleration is a no go when the competition is ahead.

    Leave a comment:


  • fritsch
    replied
    Reengineering other things is not that easy.

    Level51 just works with the current xvba-sdk, you do not need to do anything special.

    For mpeg-2 / mpeg-4 support we need another "struct mapping". These keys are for now not public. I tried to find some of them by adding offsets to the current code, but that leads to nowhere. So mpeg-2 and mpeg-4 will work after xvba-sdk update.

    @Gwen: We used your code to calc max_reframes in order to set high [email protected] for out of spec Level 4.1@High movies, thx.

    Leave a comment:


  • Kano
    replied
    @entropy

    Maybe you forgot that i have written lots of scripts to test various variants of xbmc branches, also the ones that support xvba:



    Needs this in case you dont have got Kanotix:



    You can install depends as root and as user it will dl and compile it. If you update wipe out ~/dist before.

    I tested xvba since the very beginning, but today i could playback my l5.1 testfile. Well i dont use fglrx all the day, i did so with an ati 9700/9800 pro but not later.

    Leave a comment:


  • xgt001
    replied
    Originally posted by Kano View Post
    Very interesting, with latest xbmc fernet menta my l5.1 test file worked. I used:
    Code:
    aticonfig --set-pcs-u32=MCIL,HWUVD_H264Level51Support,1
    that works on the fly and does not require to stop the xserver. You can test the diff with setting it to 0.
    wow! thanks... wonder if any other hidden gems are present in fglrx

    Leave a comment:


  • entropy
    replied
    Originally posted by Kano View Post
    Very interesting, with latest xbmc fernet menta my l5.1 test file worked. I used:
    Code:
    aticonfig --set-pcs-u32=MCIL,HWUVD_H264Level51Support,1
    that works on the fly and does not require to stop the xserver. You can test the diff with setting it to 0.
    This seems to be first time you post anything related to XVBA not expressing deep hatred.
    MUST. BE. A. SIGN.

    Leave a comment:


  • Kano
    replied
    Very interesting, with latest xbmc fernet menta my l5.1 test file worked. I used:
    Code:
    aticonfig --set-pcs-u32=MCIL,HWUVD_H264Level51Support,1
    that works on the fly and does not require to stop the xserver. You can test the diff with setting it to 0.

    Leave a comment:


  • popper
    replied
    Originally posted by gbeauche View Post
    This probably doesn't interest anyone. The binary-only version of xvba-video did have a check for the PCS key for ages... Why do you think was there an explicit check for HP @ L5.1 videos and an warning message in this case? Actually, support for those videos was there from the beginning along with the Windows version, if not earlier (in Linux beta).

    Besides, the PCS key is pretty easy to find, this is what I did. The constraints and limitations of this support are available under NDA, though. Wait for Tim to disclose the details to you. I think he hinted enough now. At least, he disclosed there was a "PCS key". Just go find it out.

    Oh Hi gwenole, its been a while since you posted.....
    its always of interest when a sheepshaver dev ( ) posts but you haven't updated your files in a while 16-Mar-2005 LOL, actually AROS could do with a good update for a mac emulator that's still faster than a real mac and a reliable xvba/Intel's new H.264 VA encoding extensions http://phoronix.com/forums/showthrea...589#post223589

    on a slightly more serious note any chance that high ranking Intel Dev that did the low level API and x264 patches is even going to submit them to the x264/ffmpeg/avconv dev's! as others can then use it to better integrate and control Intel Hardware Encode/decode rather than reinvent yet another lower level API for cross platform HW EN/decode based off the newest Intel hardware PDF's into ffmpeg/libva

    Last edited by popper; 28 June 2012, 04:10 AM.

    Leave a comment:


  • fritsch
    replied
    Just got another report: Also working on E350 with 12.4 fglrx.

    Leave a comment:


  • fritsch
    replied
    Lol - it works :-)

    hahaha. Stop lightdm. Add
    HWUVD_H264Level51Support=V1

    directly under UVdEnabled=V1

    and try the killa.sample.

    Oh my god - i feel kind of really stupid now. As I always tried at the wrong position

    Update: For now this only works in xbmc, as xvba-video checks for the max ref frames and sets them to Level41 specific. But this can easily patched out.
    Update2: Hardware, I tested it: AMD E450 with fglrx 12.6b on ubuntu 12.04
    Update3: Also working on E350 with fglrx 12.6b under 12.04
    Update4: An xbmc-xvba user with fglrx Catalyst 11.11 could not get it working (investigating)

    Can anyone try this with 12.4?
    Last edited by fritsch; 28 June 2012, 02:35 AM.

    Leave a comment:

Working...
X