aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTimo Rothenpieler <timo@rothenpieler.org>2016-10-10 12:56:55 +0200
committerTimo Rothenpieler <timo@rothenpieler.org>2016-11-22 10:34:27 +0100
commitb0ca90d7cbccfea0a6f2a37f9fe37449a2631d1d (patch)
tree411541ba57c7c81a4b7841462ef16cf2ced691e5
parenta66835bcb16ce4659737edefd8d3f3791dad54c8 (diff)
downloadffmpeg-b0ca90d7cbccfea0a6f2a37f9fe37449a2631d1d.tar.gz
avfilter/vf_hwupload_cuda: use new hwdevice allocation API
-rw-r--r--libavfilter/vf_hwupload_cuda.c57
1 files changed, 5 insertions, 52 deletions
diff --git a/libavfilter/vf_hwupload_cuda.c b/libavfilter/vf_hwupload_cuda.c
index c22221c699..dba496fc1e 100644
--- a/libavfilter/vf_hwupload_cuda.c
+++ b/libavfilter/vf_hwupload_cuda.c
@@ -18,7 +18,6 @@
#include "libavutil/buffer.h"
#include "libavutil/hwcontext.h"
-#include "libavutil/hwcontext_cuda.h"
#include "libavutil/log.h"
#include "libavutil/opt.h"
@@ -35,60 +34,14 @@ typedef struct CudaUploadContext {
AVBufferRef *hwframe;
} CudaUploadContext;
-static void cudaupload_ctx_free(AVHWDeviceContext *ctx)
-{
- AVCUDADeviceContext *hwctx = ctx->hwctx;
- cuCtxDestroy(hwctx->cuda_ctx);
-}
-
static av_cold int cudaupload_init(AVFilterContext *ctx)
{
CudaUploadContext *s = ctx->priv;
+ char buf[64] = { 0 };
- AVHWDeviceContext *device_ctx;
- AVCUDADeviceContext *device_hwctx;
- CUdevice device;
- CUcontext cuda_ctx = NULL, dummy;
- CUresult err;
- int ret;
-
- err = cuInit(0);
- if (err != CUDA_SUCCESS) {
- av_log(ctx, AV_LOG_ERROR, "Could not initialize the CUDA driver API\n");
- return AVERROR_UNKNOWN;
- }
-
- err = cuDeviceGet(&device, s->device_idx);
- if (err != CUDA_SUCCESS) {
- av_log(ctx, AV_LOG_ERROR, "Could not get the device number %d\n", s->device_idx);
- return AVERROR_UNKNOWN;
- }
-
- err = cuCtxCreate(&cuda_ctx, 0, device);
- if (err != CUDA_SUCCESS) {
- av_log(ctx, AV_LOG_ERROR, "Error creating a CUDA context\n");
- return AVERROR_UNKNOWN;
- }
-
- cuCtxPopCurrent(&dummy);
-
- s->hwdevice = av_hwdevice_ctx_alloc(AV_HWDEVICE_TYPE_CUDA);
- if (!s->hwdevice) {
- cuCtxDestroy(cuda_ctx);
- return AVERROR(ENOMEM);
- }
-
- device_ctx = (AVHWDeviceContext*)s->hwdevice->data;
- device_ctx->free = cudaupload_ctx_free;
+ snprintf(buf, sizeof(buf), "%d", s->device_idx);
- device_hwctx = device_ctx->hwctx;
- device_hwctx->cuda_ctx = cuda_ctx;
-
- ret = av_hwdevice_ctx_init(s->hwdevice);
- if (ret < 0)
- return ret;
-
- return 0;
+ return av_hwdevice_ctx_create(&s->hwdevice, AV_HWDEVICE_TYPE_CUDA, buf, NULL, 0);
}
static av_cold void cudaupload_uninit(AVFilterContext *ctx)
@@ -134,8 +87,8 @@ static int cudaupload_config_output(AVFilterLink *outlink)
hwframe_ctx = (AVHWFramesContext*)s->hwframe->data;
hwframe_ctx->format = AV_PIX_FMT_CUDA;
hwframe_ctx->sw_format = inlink->format;
- hwframe_ctx->width = FFALIGN(inlink->w, 16);
- hwframe_ctx->height = FFALIGN(inlink->h, 16);
+ hwframe_ctx->width = inlink->w;
+ hwframe_ctx->height = inlink->h;
ret = av_hwframe_ctx_init(s->hwframe);
if (ret < 0)