No announcement yet.

AMD Comments On XvBA Video Situation

  • Filter
  • Time
  • Show
Clear All
new posts

  • #31

    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.


    • #32
      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.


      • #33
        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.


        • #34
          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.

          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(
          -    /* 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.