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.

Cheers
Julien


On 16 October 2015 at 23:18, Ilia Mirkin <imir...@alum.mit.edu> wrote:

> On Fri, Oct 16, 2015 at 6:13 PM, Julien Isorce <julien.iso...@gmail.com>
> wrote:
> >
> >
> > On 18 September 2015 at 21:34, Ilia Mirkin <imir...@alum.mit.edu> wrote:
> >>
> >> On Fri, Sep 18, 2015 at 4:29 PM, Julien Isorce <julien.iso...@gmail.com
> >
> >> wrote:
> >> >
> >> >
> >> > On 17 September 2015 at 17:52, Ilia Mirkin <imir...@alum.mit.edu>
> wrote:
> >> >>
> >> >> On Wed, Sep 16, 2015 at 8:22 AM, Julien Isorce <j.iso...@samsung.com
> >
> >> >> wrote:
> >> >> > I added below version4 updates. It works for all codecs expect
> h264.
> >> >> > Video is visible but lot of blockiness.
> >> >> > Can someone with a Radeon confirm that "LIBVA_DRIVER_NAME=gallium
> mpv
> >> >> > --hwdec=vaapi"
> >> >> > is working on h264 videos ?
> >> >> > I want to make sure it is not a bug in st/va.
> >> >>
> >> >> The sad reality is that h264 is the only thing that matters (at least
> >> >> from this list of supported codecs). My concern is that this series
> >> >> will regress the situation for people who want to use VA-API -- right
> >> >> now they can use the vdpau <-> vaapi adapter, whereas with this patch
> >> >> series, they will end up with a va-api driver that doesn't work. So I
> >> >> can't merge this as-is.
> >> >
> >> >
> >> > Make perfectly sense.
> >> >
> >> >>
> >> >>
> >> >> Are the various lengths (for inter-bo size/etc) being computed
> >> >> properly
> >> >
> >> >
> >> > In the past I compared the final content of the nouveau_bo buffer at
> >> > each
> >> > endFrame step , with the content using vdpau. There were the same.
> >> > I will re-check.
> >> > Does it make sense to do that actually ?
> >> > Is there anything else I could compare with vdpau ?
> >>
> >> If you're feeding the exact same stuff and everything is exactly the
> >> same, then the results would also be the same. Clearly there's SOME
> >> difference SOMEWHERE :)
> >
> >
> > Indeed I compared only dec->bsp_bo, not dec->inter_bo :) I'll check that.
> > But in the first place I do not see where dec->inter_bo is filled. Could
> you
> > point out where this is done ?
>
> nouveau doesn't fill inter_bo -- it's a bo shared between the VLD and
> VDEC engines iirc.
>
_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to