Browse Source

avfilter/overlay_cuda: hold explicit reference to hw_device_ctx

release/4.3
Timo Rothenpieler 4 years ago
parent
commit
0fcaa97739
1 changed files with 7 additions and 1 deletions
  1. +7
    -1
      libavfilter/vf_overlay_cuda.c

+ 7
- 1
libavfilter/vf_overlay_cuda.c View File

@@ -63,6 +63,7 @@ typedef struct OverlayCUDAContext {
enum AVPixelFormat in_format_overlay; enum AVPixelFormat in_format_overlay;
enum AVPixelFormat in_format_main; enum AVPixelFormat in_format_main;


AVBufferRef *hw_device_ctx;
AVCUDADeviceContext *hwctx; AVCUDADeviceContext *hwctx;


CUcontext cu_ctx; CUcontext cu_ctx;
@@ -256,6 +257,9 @@ static av_cold void overlay_cuda_uninit(AVFilterContext *avctx)
CHECK_CU(cu->cuModuleUnload(ctx->cu_module)); CHECK_CU(cu->cuModuleUnload(ctx->cu_module));
CHECK_CU(cu->cuCtxPopCurrent(&dummy)); CHECK_CU(cu->cuCtxPopCurrent(&dummy));
} }

av_buffer_unref(&ctx->hw_device_ctx);
ctx->hwctx = NULL;
} }


/** /**
@@ -341,7 +345,9 @@ static int overlay_cuda_config_output(AVFilterLink *outlink)


// initialize // initialize


ctx->hwctx = frames_ctx->device_ctx->hwctx;
ctx->hw_device_ctx = av_buffer_ref(frames_ctx->device_ref);
ctx->hwctx = ((AVHWDeviceContext*)ctx->hw_device_ctx->data)->hwctx;

cuda_ctx = ctx->hwctx->cuda_ctx; cuda_ctx = ctx->hwctx->cuda_ctx;
ctx->fs.time_base = inlink->time_base; ctx->fs.time_base = inlink->time_base;




Loading…
Cancel
Save