[Libva] [PATCH] vaDeriveImage: properly set VAImage format

Julien Isorce julien.isorce at gmail.com
Sun Oct 11 08:33:22 PDT 2015


Hi Xiang,

Thx for your review. I initially did not understand your remark and I had
not time to go further.
But I figure out that indeed I cannot use i965_image_formats_map because it
is does not entirely include the format exposes in the i965_DeriveImage
switch. I was focus on RGB likes format.
So I submitted a v2 (see mail just before). It looks a bit verbose, maybe
its own map would be better. But I am ok with whatever solution you prefer.
Just let me know.

Cheers
Julien

On 29 September 2015 at 03:36, Xiang, Haihao <haihao.xiang at intel.com> wrote:

>
> > https://bugs.freedesktop.org/show_bug.cgi?id=92088
> >
> > Signed-off-by: Julien Isorce <j.isorce at samsung.com>
> > ---
> >  src/i965_drv_video.c | 14 +++++++++++---
> >  1 file changed, 11 insertions(+), 3 deletions(-)
> >
> > diff --git a/src/i965_drv_video.c b/src/i965_drv_video.c
> > index 9bbd67f..bf599d6 100644
> > --- a/src/i965_drv_video.c
> > +++ b/src/i965_drv_video.c
> > @@ -4008,6 +4008,7 @@ VAStatus i965_DeriveImage(VADriverContextP ctx,
> >      struct object_surface *obj_surface;
> >      VAImageID image_id;
> >      unsigned int w_pitch;
> > +    int i = 0;
> >      VAStatus va_status = VA_STATUS_ERROR_OPERATION_FAILED;
> >
> >      out_image->image_id = VA_INVALID_ID;
> > @@ -4055,9 +4056,16 @@ VAStatus i965_DeriveImage(VADriverContextP ctx,
> >      image->height = obj_surface->orig_height;
> >      image->data_size = obj_surface->size;
> >
> > -    image->format.fourcc = obj_surface->fourcc;
> > -    image->format.byte_order = VA_LSB_FIRST;
> > -    image->format.bits_per_pixel = 12;
> > +    for (i = 0; i965_image_formats_map[i].va_format.fourcc != 0; i++) {
> > +        const i965_image_format_map_t * const m =
> &i965_image_formats_map[i];
> > +        if (m->va_format.fourcc == obj_surface->fourcc) {
> > +            image->format = m->va_format;
> > +            break;
> > +        }
> > +    }
>
> i965_image_formats_map() holds images exposed by vaQueryImageFormats()
> only. it doesn't include the derived image formats.
>
>
>
> > +
> > +    if (!i965_image_formats_map[i].va_format.fourcc)
> > +        goto error;
> >
> >      switch (image->format.fourcc) {
> >      case VA_FOURCC_YV12:
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/libva/attachments/20151011/dfb1647a/attachment.html>


More information about the Libva mailing list