[FFmpeg-devel] [PATCH] hwcontext_cuda: implement frames_get_constraints

wm4 nfxjfg at googlemail.com
Mon Jan 16 19:56:09 EET 2017


On Mon, 16 Jan 2017 09:31:42 -0800
Philip Langdale <philipl at overt.org> wrote:

> On Mon, 16 Jan 2017 16:44:16 +0100
> wm4 <nfxjfg at googlemail.com> wrote:
> 
> > Copied and modified from hwcontext_qsv.c.
> > ---
> >  libavutil/hwcontext_cuda.c | 26 ++++++++++++++++++++++++++
> >  1 file changed, 26 insertions(+)
> > 
> > diff --git a/libavutil/hwcontext_cuda.c b/libavutil/hwcontext_cuda.c
> > index 5dd0d99272..ed595c3e0f 100644
> > --- a/libavutil/hwcontext_cuda.c
> > +++ b/libavutil/hwcontext_cuda.c
> > @@ -39,6 +39,31 @@ static const enum AVPixelFormat
> > supported_formats[] = { AV_PIX_FMT_P016,
> >  };
> >  
> > +static int cuda_frames_get_constraints(AVHWDeviceContext *ctx,
> > +                                       const void *hwconfig,
> > +                                       AVHWFramesConstraints
> > *constraints) +{
> > +    int i;
> > +
> > +    constraints->valid_sw_formats =
> > av_malloc_array(FF_ARRAY_ELEMS(supported_formats) + 1,
> > +
> > sizeof(*constraints->valid_sw_formats));
> > +    if (!constraints->valid_sw_formats)
> > +        return AVERROR(ENOMEM);
> > +
> > +    for (i = 0; i < FF_ARRAY_ELEMS(supported_formats); i++)
> > +        constraints->valid_sw_formats[i] = supported_formats[i];
> > +    constraints->valid_sw_formats[FF_ARRAY_ELEMS(supported_formats)]
> > = AV_PIX_FMT_NONE; +
> > +    constraints->valid_hw_formats = av_malloc_array(2,
> > sizeof(*constraints->valid_hw_formats));
> > +    if (!constraints->valid_hw_formats)
> > +        return AVERROR(ENOMEM);  
> 
> Is it weird if this fails and valid_sw_formats succeeds? I guess that's
> up to how the caller handles the error.

It is, but the QSV code also did it this way.

And if we're completely honest, nobody really cares about tiny leaks
when tiny allocations fail (which in practice never ever happens
anyway).


More information about the ffmpeg-devel mailing list