[FFmpeg-devel] [PATCH] Added QSV based VPP filter - second try
Sven Dueking
sven at nablet.com
Thu Nov 5 11:18:38 CET 2015
> -----Ursprüngliche Nachricht-----
> Von: ffmpeg-devel [mailto:ffmpeg-devel-bounces at ffmpeg.org] Im Auftrag
> von Sven Dueking
> Gesendet: Montag, 2. November 2015 10:33
> An: 'FFmpeg development discussions and patches'
> Betreff: Re: [FFmpeg-devel] [PATCH] Added QSV based VPP filter - second
> try
>
>
>
> > -----Ursprüngliche Nachricht-----
> > Von: ffmpeg-devel [mailto:ffmpeg-devel-bounces at ffmpeg.org] Im Auftrag
> > von Carl Eugen Hoyos
> > Gesendet: Donnerstag, 29. Oktober 2015 18:39
> > An: ffmpeg-devel at ffmpeg.org
> > Betreff: Re: [FFmpeg-devel] [PATCH] Added QSV based VPP filter -
> > second try
> >
> > Sven Dueking <sven <at> nablet.com> writes:
> >
> > > Please find attached my second attempt to add Intel´s VPP to
> FFMpeg.
> > > As requested, the patch includes a documentation file
> >
> > I don't know much about how the documentation works but why isn't
> this
> > part of the filter documentation and how are users supposed to find
> it?
>
> Hi Carl,
>
> I was unsure how to add the documentation, that´s why I asked this
> before.
> Will merge my changes into the filter documentation.
>
> >
> > > + AV_PIX_FMT_RGB32,
> >
> > The Intel documentation for RGB4 reads:
> > "ARGB in that order, A channel is 8 MSBs"
> > Making this AV_PIX_FMT_ARGB imo
> > But I'm probably wrong again...
>
> https://software.intel.com/sites/default/files/mediasdk-man.pdf
>
> RGB4
> Thirty-two-bit RGB color format. Also known as RGB32
>
> MFX_FOURCC_RGB4 : RGB4 (RGB32) color planes
>
> This matches the define in the latest SDK
>
> MFX_FOURCC_RGB4 = MFX_MAKEFOURCC('R','G','B','4'), /*
> RGB32 */
>
> As far as I know older versions of mfxstructures.h have such comment as
> you mentioned.
>
> Anyway, according to the sample
>
> case MFX_FOURCC_RGB4:
> ptr->G = ptr->B + 1;
> ptr->R = ptr->B + 2;
> ptr->A = ptr->B + 3;
>
> it´s BGRA (and the output is fine using BRGA and "bad" using ARGB).
>
> >
> > > + if (inlink->format == AV_PIX_FMT_YUV420P)
> > > + vpp->pVppParam->vpp.In.FourCC = MFX_FOURCC_YV12;
> > > + else if (inlink->format == AV_PIX_FMT_YUV422P)
> > > + vpp->pVppParam->vpp.In.FourCC = MFX_FOURCC_YUY2;
> > > + else if (inlink->format == AV_PIX_FMT_NV12)
> > > + vpp->pVppParam->vpp.In.FourCC = MFX_FOURCC_NV12;
> > > + else
> > > + vpp->pVppParam->vpp.In.FourCC = MFX_FOURCC_RGB4;
> >
> > Did you consider to add BGR4 and ARGB16 in the future?
>
> No, VPP doesn´t support ARGB16.
>
> >
> > > + unsigned int bits_per_pixel =
> > > + get_bpp(vpp->pVppParam->vpp.In.FourCC);
> >
> > See below.
> >
> > > + width = (unsigned int) FFALIGN(vpp->pVppParam->vpp.In.Width,
> > 32);
> > > + height = (unsigned int) FFALIGN(vpp->pVppParam->vpp.In.Height,
> > > + 32);
> >
> > Are the casts necessary or useful?
>
> Nope ;)
>
> >
> > > + vpp->in_surface = av_mallocz(sizeof(mfxFrameSurface1) *
> > > vpp->num_surfaces_in);
> >
> > This looks wrong to me, I believe you want to allocate
> num_surfaces_in
> > pointers, not structs. (Sorry if I miss
> > somthing.)
>
> You are correct, thanks !
>
> >
> > > + return -1;
> >
> > ENOMEM.
> >
> > > + for (i = 0; i < vpp->num_surfaces_in; i++)
> > > + vpp->in_surface[i] = NULL;
> >
> > This is unnecessary if you use mallocz() as you do.
> >
> > > + for (i = 0; i < vpp->num_surfaces_in; i++) {
> > > + vpp->in_surface[i] = av_mallocz(sizeof(mfxFrameSurface1));
> > > +
> > > + if (!vpp->in_surface[i])
> > > + return -1;
> >
> > ENOMEM but this leaks memory, you have to free everything else on
> > failure.
> > (same below for out_surface)
> >
> > > + bits_per_pixel = 12;
> >
> > Imo, remove the variable and use get_bpp() once and "12" on the
> second
> > usage.
> >
>
> Also ok.
>
> Many thanks for your feedback !
Hi all,
Attached an updated version of the VPP filter.
Thanks,
Sven
>
> > Carl Eugen
> > _______________________________________________
> > ffmpeg-devel mailing list
> > ffmpeg-devel at ffmpeg.org
> > http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel at ffmpeg.org
> http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0001-added-QSV-VPP-filter.patch
Type: application/octet-stream
Size: 33903 bytes
Desc: not available
URL: <http://ffmpeg.org/pipermail/ffmpeg-devel/attachments/20151105/d920246a/attachment.obj>
More information about the ffmpeg-devel
mailing list