should be ok,

will take care of it shotly

On Thu, Mar 29, 2018 at 4:05 PM, Li, Zhong <zhong...@intel.com> wrote:

> Ping?
>
> > -----Original Message-----
> > From: Li, Zhong
> > Sent: Thursday, March 22, 2018 10:42 PM
> > To: libav-devel@libav.org
> > Cc: Li, Zhong <zhong...@intel.com>; Liu, ChaoX A <chaox.a....@intel.com>
> > Subject: [PATCH V2 2/3] lavu/hwcontext_qsv: Add support for pix_fmt
> > RGB32.
> >
> > RGB32 format may be used as overlay with alpha blending.
> > So add RGB32 format support.
> >
> > Signed-off-by: ChaoX A Liu <chaox.a....@intel.com>
> > Signed-off-by: Zhong Li <zhong...@intel.com>
> > ---
> >  libavutil/hwcontext_qsv.c | 43
> > +++++++++++++++++++++++++++++++++----------
> >  1 file changed, 33 insertions(+), 10 deletions(-)
> >
> > diff --git a/libavutil/hwcontext_qsv.c b/libavutil/hwcontext_qsv.c index
> > 5018a05..0db446b 100644
> > --- a/libavutil/hwcontext_qsv.c
> > +++ b/libavutil/hwcontext_qsv.c
> > @@ -90,6 +90,7 @@ static const struct {
> >      uint32_t           fourcc;
> >  } supported_pixel_formats[] = {
> >      { AV_PIX_FMT_NV12, MFX_FOURCC_NV12 },
> > +    { AV_PIX_FMT_RGB32,MFX_FOURCC_RGB4 },
> >      { AV_PIX_FMT_P010, MFX_FOURCC_P010 },
> >      { AV_PIX_FMT_PAL8, MFX_FOURCC_P8   },
> >  };
> > @@ -730,6 +731,36 @@ static int
> > qsv_transfer_data_child(AVHWFramesContext *ctx, AVFrame *dst,
> >      return ret;
> >  }
> >
> > +static int map_frame_to_surface(const AVFrame *frame,
> > mfxFrameSurface1
> > +*surface) {
> > +    switch (frame->format) {
> > +        case AV_PIX_FMT_NV12:
> > +            surface->Data.Y  = frame->data[0];
> > +            surface->Data.UV = frame->data[1];
> > +            break;
> > +
> > +        case AV_PIX_FMT_YUV420P:
> > +            surface->Data.Y = frame->data[0];
> > +            surface->Data.U = frame->data[1];
> > +            surface->Data.V = frame->data[2];
> > +            break;
> > +
> > +        case AV_PIX_FMT_RGB32:
> > +            surface->Data.B = frame->data[0];
> > +            surface->Data.G = frame->data[0] + 1;
> > +            surface->Data.R = frame->data[0] + 2;
> > +            surface->Data.A = frame->data[0] + 3;
> > +            break;
> > +
> > +        default:
> > +            return MFX_ERR_UNSUPPORTED;
> > +    }
> > +    surface->Data.Pitch     = frame->linesize[0];
> > +    surface->Data.TimeStamp = frame->pts;
> > +
> > +    return 0;
> > +}
> > +
> >  static int qsv_transfer_data_from(AVHWFramesContext *ctx, AVFrame
> > *dst,
> >                                    const AVFrame *src)  { @@
> > -749,11 +780,7 @@ static int qsv_transfer_data_from(AVHWFramesContext
> > *ctx, AVFrame *dst,
> >      }
> >
> >      out.Info = in->Info;
> > -    out.Data.PitchLow = dst->linesize[0];
> > -    out.Data.Y        = dst->data[0];
> > -    out.Data.U        = dst->data[1];
> > -    out.Data.V        = dst->data[2];
> > -    out.Data.A        = dst->data[3];
> > +    map_frame_to_surface(dst, &out);
> >
> >      do {
> >          err = MFXVideoVPP_RunFrameVPPAsync(s->session_download, in,
> > &out, NULL, &sync); @@ -796,11 +823,7 @@ static int
> > qsv_transfer_data_to(AVHWFramesContext *ctx, AVFrame *dst,
> >      }
> >
> >      in.Info = out->Info;
> > -    in.Data.PitchLow = src->linesize[0];
> > -    in.Data.Y        = src->data[0];
> > -    in.Data.U        = src->data[1];
> > -    in.Data.V        = src->data[2];
> > -    in.Data.A        = src->data[3];
> > +    map_frame_to_surface(src, &in);
> >
> >      do {
> >          err = MFXVideoVPP_RunFrameVPPAsync(s->session_upload, &in,
> > out, NULL, &sync);
> > --
> > 1.8.3.1
>
> _______________________________________________
> libav-devel mailing list
> libav-devel@libav.org
> https://lists.libav.org/mailman/listinfo/libav-devel
_______________________________________________
libav-devel mailing list
libav-devel@libav.org
https://lists.libav.org/mailman/listinfo/libav-devel

Reply via email to