Page 4 of 4 FirstFirst ... 234
Results 31 to 34 of 34

Thread: AMD Comments On XvBA Video Situation

  1. #31
    Join Date
    Aug 2007
    Posts
    6,607

    Default

    @entropy

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

    http://kanotix.com/files/fix/xbmc-latest-xvba-local.txt

    Needs this in case you dont have got Kanotix:

    https://launchpad.net/~wsnipex/+arch...4001-5_all.deb

    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.

  2. #32
    Join Date
    Feb 2011
    Posts
    129

    Default

    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 profile@5.1 for out of spec Level 4.1@High movies, thx.
    https://github.com/FernetMenta/xbmc/...ccedd98a43a602

  3. #33
    Join Date
    Nov 2008
    Location
    Old Europe
    Posts
    904

    Default

    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.

  4. #34
    Join Date
    Feb 2011
    Posts
    129

    Default

    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.

    http://paste.ubuntu.com/1073464/
    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 HP@L4.1 */
    +    /* 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 HP@L4.1. "
    -                "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; 07-03-2012 at 04:29 PM.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •