[Mesa-dev] [PATCH v4 0/6] nouveau: add support for vaapi

Julien Isorce julien.isorce at gmail.com
Fri Dec 4 00:00:23 PST 2015


Hi Ilia,

Please give another try with these patches (i.e. 1, 2, 3 and 5 from this
patch series. 4 and 6 are already merged since I have resubmit them
afterward and split in several series). I rebased these four patches on top
of latest master here:
https://github.com/CapOM/mesa/commits/st_va_nouveau_chunk_decoding  (there
was no conflict during rebase)

h264 is now working properly :), problem was not from these patches but
from st/va. Fixes been merged recently (see the 2 latest patches in st/va)

Let me know if you see anything wrong when playing video compared to vdpau.

Cheers
Julien


On 10 November 2015 at 09:28, Ilia Mirkin <imirkin at alum.mit.edu> wrote:

> On Tue, Nov 10, 2015 at 4:09 AM, Julien Isorce <julien.isorce at gmail.com>
> wrote:
> > Hi,
> >
> > I found some difference in the content of dec->bsp_bo[i], for h264 when
> > using st/vdpau (ok) and st/vaapi (ko).
> >
> > In src/gallium/state_trackers/va/picture.c, at least the reference frames
> > are not set. At minimum it is missing something like the following though
> > still not enough:
> >
> > @@ -193,7 +194,23 @@ handlePictureParameterBuffer(vlVaDriver *drv,
> > vlVaContext *context, vlVaBuffer *
> >        context->desc.h264.pps->redundant_pic_cnt_present_flag =
> >           h264->pic_fields.bits.redundant_pic_cnt_present_flag;
> >        /*reference_pic_flag*/
> > +      context->desc.h264.is_reference =
> > h264->pic_fields.bits.reference_pic_flag;
> >        context->desc.h264.frame_num = h264->frame_num;
> > +
> > +      for (i = 0; i < 16; ++i) {
> > +         if ((h264->ReferenceFrames[i].flags & VA_PICTURE_H264_INVALID)
> ||
> > +             (h264->ReferenceFrames[i].picture_id ==
> VA_INVALID_SURFACE))
> > +            break;
> > +
> > +         getReferenceFrame(drv, h264->ReferenceFrames[i].picture_id,
> > &context->desc.h264.ref[i]);
> > +
> > +         context->desc.h264.field_order_cnt_list[i][0] =
> > h264->ReferenceFrames[i].TopFieldOrderCnt;
> > +         context->desc.h264.field_order_cnt_list[i][1] =
> > h264->ReferenceFrames[i].BottomFieldOrderCnt;
> > +         context->desc.h264.frame_num_list[i] =
> > h264->ReferenceFrames[i].frame_idx;
> > +      }
> >
> > I am surprised that "getReferenceFrame" is not called at all in the h264
> > case.
>
> Reference frames are a huge part of h264 (all the MPEG codecs in
> fact), so I'm guessing there's some different way we're supposed to be
> retrieving the information. Perhaps look at where uvd gets it from?
>
>   -ilia
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/mesa-dev/attachments/20151204/4c6050d7/attachment.html>


More information about the mesa-dev mailing list