goto fail; \
} \
} while(0)
+/**
+ * release an OpenCL Kernel
+ */
+#define CL_RELEASE_KERNEL(k) \
+do { \
+ if (k) { \
+ cle = clReleaseKernel(k); \
+ if (cle != CL_SUCCESS) \
+ av_log(avctx, AV_LOG_ERROR, "Failed to release " \
+ "OpenCL kernel: %d.\n", cle); \
+ } \
+} while(0)
+
+/**
+ * release an OpenCL Memory Object
+ */
+#define CL_RELEASE_MEMORY(m) \
+do { \
+ if (m) { \
+ cle = clReleaseMemObject(m); \
+ if (cle != CL_SUCCESS) \
+ av_log(avctx, AV_LOG_ERROR, "Failed to release " \
+ "OpenCL memory: %d.\n", cle); \
+ } \
+} while(0)
+
+/**
+ * release an OpenCL Command Queue
+ */
+#define CL_RELEASE_QUEUE(q) \
+do { \
+ if (q) { \
+ cle = clReleaseCommandQueue(q); \
+ if (cle != CL_SUCCESS) \
+ av_log(avctx, AV_LOG_ERROR, "Failed to release " \
+ "OpenCL command queue: %d.\n", cle); \
+ } \
+} while(0)
/**
* Return that all inputs and outputs support only AV_PIX_FMT_OPENCL.