[Libva] [PATCH][Libva-intel-driver] i965_DeriveImage() support JPEG color formats

Xiang, Haihao haihao.xiang at intel.com
Wed Apr 16 18:39:08 PDT 2014


On Wed, 2014-04-16 at 05:23 -0700, Gwenole Beauchesne wrote: 
> 2014-04-15 17:48 GMT-07:00 Xiang, Haihao <haihao.xiang at intel.com>:
> > On Tue, 2014-04-15 at 07:27 -0700, Gwenole Beauchesne wrote:
> >> Hi,
> >>
> >> 2014-04-14 1:17 GMT-07:00 Zhong Li <zhong.li at intel.com>:
> >> > Signed-off-by: Zhong Li <zhong.li at intel.com>
> >> > ---
> >> >  src/i965_drv_video.c |    6 ++++++
> >> >  1 file changed, 6 insertions(+)
> >> >
> >> > diff --git a/src/i965_drv_video.c b/src/i965_drv_video.c
> >> > index cc61ad3..f94d429 100755
> >> > --- a/src/i965_drv_video.c
> >> > +++ b/src/i965_drv_video.c
> >> > @@ -3286,6 +3286,10 @@ VAStatus i965_DeriveImage(VADriverContextP ctx,
> >> >
> >> >      case VA_FOURCC_I420:
> >> >      case VA_FOURCC_422H:
> >> > +    case VA_FOURCC_IMC3:
> >> > +    case VA_FOURCC_444P:
> >> > +    case VA_FOURCC_422V:
> >> > +    case VA_FOURCC_411P:
> >> >          image->num_planes = 3;
> >> >          image->pitches[0] = w_pitch; /* Y */
> >> >          image->offsets[0] = 0;
> >>
> >> IMC3 fourcc is totally useless, change that to be I420.
> >
> > IMC3 is required for JPEG decoding and U/V plane + garbage is in full
> > pitch.
> 
> And? IMC3 = I420 with stride for each plane that is the same, and that
> is specified in the VAImage struct. So, what is the point? This needs
> to be changed. That's all an application needs to know. i.e. move up
> VA_FOURCC_IMC3 to the top, make image->fourcc = VA_FOURCC_I420, and
> fall-through in the rest...

Yes. an application can access IMC3 and I420 image in the same way via
VAImage structure. However setting it to IMC3 is because the exported
image match the IMC3 layout defined in www.fourcc.org/yuv.php and user
can have direct perception that all of the planes of the exported image
have the same stride. 

> 
> >> >          image->pitches[2] = obj_surface->cb_cr_pitch; /* V */
> >> >          image->offsets[2] = w_pitch * obj_surface->y_cr_offset;
> >> >          break;
> >> > +
> >> >      case VA_FOURCC_YUY2:
> >> >      case VA_FOURCC_UYVY:
> >> > +    case VA_FOURCC_Y800:
> >> >          image->num_planes = 1;
> >> >          image->pitches[0] = obj_surface->width; /* Y, width is aligned already */
> >> >          image->offsets[0] = 0;
> >> > --
> >> > 1.7.9.5
> >> >
> >> > _______________________________________________
> >> > Libva mailing list
> >> > Libva at lists.freedesktop.org
> >> > http://lists.freedesktop.org/mailman/listinfo/libva
> >> _______________________________________________
> >> Libva mailing list
> >> Libva at lists.freedesktop.org
> >> http://lists.freedesktop.org/mailman/listinfo/libva
> >
> >




More information about the Libva mailing list