Re: [FFmpeg-devel] [PATCH] hwcontext_cuda: implement frames_get_constraints
On Mon, 16 Jan 2017 10:01:41 -0800 Philip Langdale wrote: > On Mon, 16 Jan 2017 18:56:09 +0100 > wm4 wrote: > > > On Mon, 16 Jan 2017 09:31:42 -0800 > > Philip Langdale wrote: > > > > > On Mon, 16 Jan 2017 16:44:16 +0100 > > > wm4 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). > > Yeah. The world is going to end if it ever happens. > > Ship it. Pushed, got tired of waiting for a response on the Libav ML. ___ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
Re: [FFmpeg-devel] [PATCH] hwcontext_cuda: implement frames_get_constraints
On Mon, 16 Jan 2017 18:56:09 +0100 wm4 wrote: > On Mon, 16 Jan 2017 09:31:42 -0800 > Philip Langdale wrote: > > > On Mon, 16 Jan 2017 16:44:16 +0100 > > wm4 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). Yeah. The world is going to end if it ever happens. Ship it. --phil ___ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
Re: [FFmpeg-devel] [PATCH] hwcontext_cuda: implement frames_get_constraints
On Mon, 16 Jan 2017 09:31:42 -0800 Philip Langdale wrote: > On Mon, 16 Jan 2017 16:44:16 +0100 > wm4 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). ___ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
Re: [FFmpeg-devel] [PATCH] hwcontext_cuda: implement frames_get_constraints
On Mon, 16 Jan 2017 16:44:16 +0100 wm4 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. > + > +constraints->valid_hw_formats[0] = AV_PIX_FMT_CUDA; > +constraints->valid_hw_formats[1] = AV_PIX_FMT_NONE; > + > +return 0; > +} > + > static void cuda_buffer_free(void *opaque, uint8_t *data) > { > AVHWFramesContext *ctx = opaque; > @@ -376,6 +401,7 @@ const HWContextType ff_hwcontext_type_cuda = { > .device_create= cuda_device_create, > .device_init = cuda_device_init, > .device_uninit= cuda_device_uninit, > +.frames_get_constraints = cuda_frames_get_constraints, > .frames_init = cuda_frames_init, > .frames_get_buffer= cuda_get_buffer, > .transfer_get_formats = cuda_transfer_get_formats, --phil ___ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
[FFmpeg-devel] [PATCH] hwcontext_cuda: implement frames_get_constraints
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); + +constraints->valid_hw_formats[0] = AV_PIX_FMT_CUDA; +constraints->valid_hw_formats[1] = AV_PIX_FMT_NONE; + +return 0; +} + static void cuda_buffer_free(void *opaque, uint8_t *data) { AVHWFramesContext *ctx = opaque; @@ -376,6 +401,7 @@ const HWContextType ff_hwcontext_type_cuda = { .device_create= cuda_device_create, .device_init = cuda_device_init, .device_uninit= cuda_device_uninit, +.frames_get_constraints = cuda_frames_get_constraints, .frames_init = cuda_frames_init, .frames_get_buffer= cuda_get_buffer, .transfer_get_formats = cuda_transfer_get_formats, -- 2.11.0 ___ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel