[FFmpeg-devel] [PATCH] lavu/opencl: add opencl public error API
Stefano Sabatini
stefasab at gmail.com
Fri May 3 20:02:39 CEST 2013
On date Sunday 2013-04-28 08:52:16 +0800, Wei Gao encoded:
> Hi,
> The attachment is the patch according to the comments
>
>
> 2013/4/28 Stefano Sabatini <stefasab at gmail.com>
>
> > On date Saturday 2013-04-27 09:52:45 +0800, Wei Gao encoded:
> > >
> >
> >
> >
> > LGTM otherwise, maybe with a minor bump in libavutil, thanks.
> > --
> > FFmpeg = Fiendish Fundamental Mere Portable Energized Genius
> > _______________________________________________
> > ffmpeg-devel mailing list
> > ffmpeg-devel at ffmpeg.org
> > http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
> >
> From 35ef0c10168cf6c46db7aca61b7ac7361d4b02c3 Mon Sep 17 00:00:00 2001
> From: highgod0401 <highgod0401 at gmail.com>
> Date: Sun, 28 Apr 2013 08:47:20 +0800
> Subject: [PATCH] lavu/opencl: add opencl public error API
>
> ---
> libavutil/opencl.c | 48 ++++++++++++++++++++++++------------------------
> libavutil/opencl.h | 8 ++++++++
> libavutil/version.h | 2 +-
> 3 files changed, 33 insertions(+), 25 deletions(-)
>
> diff --git a/libavutil/opencl.c b/libavutil/opencl.c
> index 1fdb096..e2d5581 100644
> --- a/libavutil/opencl.c
> +++ b/libavutil/opencl.c
> @@ -162,7 +162,7 @@ static const OpenclErrorMsg opencl_err_msg[] = {
> {CL_INVALID_DEVICE_PARTITION_COUNT, "INVALID DEVICE PARTITION COUNT"},
> };
>
> -static const char *opencl_errstr(cl_int status)
> +const char *av_opencl_errstr(cl_int status)
> {
> int i;
> for (i = 0; i < sizeof(opencl_err_msg); i++) {
> @@ -201,7 +201,7 @@ static int get_device_list(AVOpenCLDeviceList *device_list)
> status = clGetPlatformIDs(0, NULL, &device_list->platform_num);
> if (status != CL_SUCCESS) {
> av_log(&opencl_ctx, AV_LOG_ERROR,
> - "Could not get OpenCL platform ids: %s\n", opencl_errstr(status));
> + "Could not get OpenCL platform ids: %s\n", av_opencl_errstr(status));
> return AVERROR_EXTERNAL;
> }
> platform_ids = av_mallocz(device_list->platform_num * sizeof(cl_platform_id));
> @@ -210,7 +210,7 @@ static int get_device_list(AVOpenCLDeviceList *device_list)
> status = clGetPlatformIDs(device_list->platform_num, platform_ids, NULL);
> if (status != CL_SUCCESS) {
> av_log(&opencl_ctx, AV_LOG_ERROR,
> - "Could not get OpenCL platform ids: %s\n", opencl_errstr(status));
> + "Could not get OpenCL platform ids: %s\n", av_opencl_errstr(status));
> ret = AVERROR_EXTERNAL;
> goto end;
> }
> @@ -256,7 +256,7 @@ static int get_device_list(AVOpenCLDeviceList *device_list)
> devices_num[j], device_ids, NULL);
> if (status != CL_SUCCESS) {
> av_log(&opencl_ctx, AV_LOG_WARNING,
> - "Could not get device ID: %s:\n", opencl_errstr(status));
> + "Could not get device ID: %s:\n", av_opencl_errstr(status));
> av_freep(&device_ids);
> continue;
> }
> @@ -275,7 +275,7 @@ static int get_device_list(AVOpenCLDeviceList *device_list)
> NULL);
> if (status != CL_SUCCESS) {
> av_log(&opencl_ctx, AV_LOG_WARNING,
> - "Could not get device name: %s\n", opencl_errstr(status));
> + "Could not get device name: %s\n", av_opencl_errstr(status));
> continue;
> }
> device_list->platform_node[i]->device_num++;
> @@ -416,7 +416,7 @@ int av_opencl_create_kernel(AVOpenCLKernelEnv *env, const char *kernel_name)
> break;
> }
> if (status != CL_SUCCESS) {
> - av_log(&opencl_ctx, AV_LOG_ERROR, "Could not create OpenCL kernel: %s\n", opencl_errstr(status));
> + av_log(&opencl_ctx, AV_LOG_ERROR, "Could not create OpenCL kernel: %s\n", av_opencl_errstr(status));
> ret = AVERROR_EXTERNAL;
> goto end;
> }
> @@ -438,7 +438,7 @@ void av_opencl_release_kernel(AVOpenCLKernelEnv *env)
> status = clReleaseKernel(env->kernel);
> if (status != CL_SUCCESS) {
> av_log(&opencl_ctx, AV_LOG_ERROR, "Could not release kernel: %s\n",
> - opencl_errstr(status));
> + av_opencl_errstr(status));
> }
> env->kernel = NULL;
> env->command_queue = NULL;
> @@ -526,14 +526,14 @@ static int init_opencl_env(OpenclContext *opencl_ctx, AVOpenCLExternalEnv *ext_o
> NULL, NULL, &status);
> if (status != CL_SUCCESS) {
> av_log(opencl_ctx, AV_LOG_ERROR,
> - "Could not get OpenCL context from device type: %s\n", opencl_errstr(status));
> + "Could not get OpenCL context from device type: %s\n", av_opencl_errstr(status));
> return AVERROR_EXTERNAL;
> }
> opencl_ctx->command_queue = clCreateCommandQueue(opencl_ctx->context, opencl_ctx->device_id,
> 0, &status);
> if (status != CL_SUCCESS) {
> av_log(opencl_ctx, AV_LOG_ERROR,
> - "Could not create OpenCL command queue: %s\n", opencl_errstr(status));
> + "Could not create OpenCL command queue: %s\n", av_opencl_errstr(status));
> return AVERROR_EXTERNAL;
> }
> }
> @@ -566,7 +566,7 @@ static int compile_kernel_file(OpenclContext *opencl_ctx)
> &status);
> if(status != CL_SUCCESS) {
> av_log(opencl_ctx, AV_LOG_ERROR,
> - "Could not create OpenCL program with source code: %s\n", opencl_errstr(status));
> + "Could not create OpenCL program with source code: %s\n", av_opencl_errstr(status));
> return AVERROR_EXTERNAL;
> }
> if (!opencl_ctx->programs[opencl_ctx->program_count]) {
> @@ -577,7 +577,7 @@ static int compile_kernel_file(OpenclContext *opencl_ctx)
> opencl_ctx->build_options, NULL, NULL);
> if (status != CL_SUCCESS) {
> av_log(opencl_ctx, AV_LOG_ERROR,
> - "Could not compile OpenCL kernel: %s\n", opencl_errstr(status));
> + "Could not compile OpenCL kernel: %s\n", av_opencl_errstr(status));
> return AVERROR_EXTERNAL;
> }
> opencl_ctx->program_count++;
> @@ -628,7 +628,7 @@ void av_opencl_uninit(void)
> status = clReleaseProgram(opencl_ctx.programs[i]);
> if (status != CL_SUCCESS) {
> av_log(&opencl_ctx, AV_LOG_ERROR,
> - "Could not release OpenCL program: %s\n", opencl_errstr(status));
> + "Could not release OpenCL program: %s\n", av_opencl_errstr(status));
> }
> opencl_ctx.programs[i] = NULL;
> }
> @@ -637,7 +637,7 @@ void av_opencl_uninit(void)
> status = clReleaseCommandQueue(opencl_ctx.command_queue);
> if (status != CL_SUCCESS) {
> av_log(&opencl_ctx, AV_LOG_ERROR,
> - "Could not release OpenCL command queue: %s\n", opencl_errstr(status));
> + "Could not release OpenCL command queue: %s\n", av_opencl_errstr(status));
> }
> opencl_ctx.command_queue = NULL;
> }
> @@ -645,7 +645,7 @@ void av_opencl_uninit(void)
> status = clReleaseContext(opencl_ctx.context);
> if (status != CL_SUCCESS) {
> av_log(&opencl_ctx, AV_LOG_ERROR,
> - "Could not release OpenCL context: %s\n", opencl_errstr(status));
> + "Could not release OpenCL context: %s\n", av_opencl_errstr(status));
> }
> opencl_ctx.context = NULL;
> }
> @@ -661,7 +661,7 @@ int av_opencl_buffer_create(cl_mem *cl_buf, size_t cl_buf_size, int flags, void
> cl_int status;
> *cl_buf = clCreateBuffer(opencl_ctx.context, flags, cl_buf_size, host_ptr, &status);
> if (status != CL_SUCCESS) {
> - av_log(&opencl_ctx, AV_LOG_ERROR, "Could not create OpenCL buffer: %s\n", opencl_errstr(status));
> + av_log(&opencl_ctx, AV_LOG_ERROR, "Could not create OpenCL buffer: %s\n", av_opencl_errstr(status));
> return AVERROR_EXTERNAL;
> }
> return 0;
> @@ -675,7 +675,7 @@ void av_opencl_buffer_release(cl_mem *cl_buf)
> status = clReleaseMemObject(*cl_buf);
> if (status != CL_SUCCESS) {
> av_log(&opencl_ctx, AV_LOG_ERROR,
> - "Could not release OpenCL buffer: %s\n", opencl_errstr(status));
> + "Could not release OpenCL buffer: %s\n", av_opencl_errstr(status));
> }
> memset(cl_buf, 0, sizeof(*cl_buf));
> }
> @@ -689,7 +689,7 @@ int av_opencl_buffer_write(cl_mem dst_cl_buf, uint8_t *src_buf, size_t buf_size)
>
> if (status != CL_SUCCESS) {
> av_log(&opencl_ctx, AV_LOG_ERROR,
> - "Could not map OpenCL buffer: %s\n", opencl_errstr(status));
> + "Could not map OpenCL buffer: %s\n", av_opencl_errstr(status));
> return AVERROR_EXTERNAL;
> }
> memcpy(mapped, src_buf, buf_size);
> @@ -697,7 +697,7 @@ int av_opencl_buffer_write(cl_mem dst_cl_buf, uint8_t *src_buf, size_t buf_size)
> status = clEnqueueUnmapMemObject(opencl_ctx.command_queue, dst_cl_buf, mapped, 0, NULL, NULL);
> if (status != CL_SUCCESS) {
> av_log(&opencl_ctx, AV_LOG_ERROR,
> - "Could not unmap OpenCL buffer: %s\n", opencl_errstr(status));
> + "Could not unmap OpenCL buffer: %s\n", av_opencl_errstr(status));
> return AVERROR_EXTERNAL;
> }
> return 0;
> @@ -712,7 +712,7 @@ int av_opencl_buffer_read(uint8_t *dst_buf, cl_mem src_cl_buf, size_t buf_size)
>
> if (status != CL_SUCCESS) {
> av_log(&opencl_ctx, AV_LOG_ERROR,
> - "Could not map OpenCL buffer: %s\n", opencl_errstr(status));
> + "Could not map OpenCL buffer: %s\n", av_opencl_errstr(status));
> return AVERROR_EXTERNAL;
> }
> memcpy(dst_buf, mapped, buf_size);
> @@ -720,7 +720,7 @@ int av_opencl_buffer_read(uint8_t *dst_buf, cl_mem src_cl_buf, size_t buf_size)
> status = clEnqueueUnmapMemObject(opencl_ctx.command_queue, src_cl_buf, mapped, 0, NULL, NULL);
> if (status != CL_SUCCESS) {
> av_log(&opencl_ctx, AV_LOG_ERROR,
> - "Could not unmap OpenCL buffer: %s\n", opencl_errstr(status));
> + "Could not unmap OpenCL buffer: %s\n", av_opencl_errstr(status));
> return AVERROR_EXTERNAL;
> }
> return 0;
> @@ -749,7 +749,7 @@ int av_opencl_buffer_write_image(cl_mem dst_cl_buf, size_t cl_buffer_size, int d
> 0, NULL, NULL, &status);
> if (status != CL_SUCCESS) {
> av_log(&opencl_ctx, AV_LOG_ERROR,
> - "Could not map OpenCL buffer: %s\n", opencl_errstr(status));
> + "Could not map OpenCL buffer: %s\n", av_opencl_errstr(status));
> return AVERROR_EXTERNAL;
> }
> temp = mapped;
> @@ -761,7 +761,7 @@ int av_opencl_buffer_write_image(cl_mem dst_cl_buf, size_t cl_buffer_size, int d
> status = clEnqueueUnmapMemObject(opencl_ctx.command_queue, dst_cl_buf, mapped, 0, NULL, NULL);
> if (status != CL_SUCCESS) {
> av_log(&opencl_ctx, AV_LOG_ERROR,
> - "Could not unmap OpenCL buffer: %s\n", opencl_errstr(status));
> + "Could not unmap OpenCL buffer: %s\n", av_opencl_errstr(status));
> return AVERROR_EXTERNAL;
> }
> return 0;
> @@ -791,7 +791,7 @@ int av_opencl_buffer_read_image(uint8_t **dst_data, int *plane_size, int plane_n
>
> if (status != CL_SUCCESS) {
> av_log(&opencl_ctx, AV_LOG_ERROR,
> - "Could not map OpenCL buffer: %s\n", opencl_errstr(status));
> + "Could not map OpenCL buffer: %s\n", av_opencl_errstr(status));
> return AVERROR_EXTERNAL;
> }
> temp = mapped;
> @@ -804,7 +804,7 @@ int av_opencl_buffer_read_image(uint8_t **dst_data, int *plane_size, int plane_n
> status = clEnqueueUnmapMemObject(opencl_ctx.command_queue, src_cl_buf, mapped, 0, NULL, NULL);
> if (status != CL_SUCCESS) {
> av_log(&opencl_ctx, AV_LOG_ERROR,
> - "Could not unmap OpenCL buffer: %s\n", opencl_errstr(status));
> + "Could not unmap OpenCL buffer: %s\n", av_opencl_errstr(status));
> return AVERROR_EXTERNAL;
> }
> return 0;
> diff --git a/libavutil/opencl.h b/libavutil/opencl.h
> index acafe36..4621e88 100644
> --- a/libavutil/opencl.h
> +++ b/libavutil/opencl.h
> @@ -151,6 +151,14 @@ AVOpenCLExternalEnv *av_opencl_alloc_external_env(void);
> void av_opencl_free_external_env(AVOpenCLExternalEnv **ext_opencl_env);
>
> /**
> + * Get OpenCL error string.
> + *
> + * @param status OpenCL error code
> + * @return OpenCL error string
> + */
> +const char *av_opencl_errstr(cl_int status);
> +
> +/**
> * Register kernel code.
> *
> * The registered kernel code is stored in a global context, and compiled
> diff --git a/libavutil/version.h b/libavutil/version.h
> index abcdba8..4cc6024 100644
> --- a/libavutil/version.h
> +++ b/libavutil/version.h
> @@ -75,7 +75,7 @@
> */
>
> #define LIBAVUTIL_VERSION_MAJOR 52
> -#define LIBAVUTIL_VERSION_MINOR 27
> +#define LIBAVUTIL_VERSION_MINOR 28
> #define LIBAVUTIL_VERSION_MICRO 101
LGTM, thanks.
--
FFmpeg = Friendly and Faithful Murdering Political Erroneous Gospel
More information about the ffmpeg-devel
mailing list