On Tue, Nov 10, 2015 at 4:09 AM, Julien Isorce <julien.iso...@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
_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to