aboutsummaryrefslogtreecommitdiff
path: root/src/capture/nvfbc.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/capture/nvfbc.c')
-rw-r--r--src/capture/nvfbc.c15
1 files changed, 7 insertions, 8 deletions
diff --git a/src/capture/nvfbc.c b/src/capture/nvfbc.c
index d538b5b..a7bb16a 100644
--- a/src/capture/nvfbc.c
+++ b/src/capture/nvfbc.c
@@ -177,8 +177,8 @@ static bool ffmpeg_create_cuda_contexts(gsr_capture_nvfbc *cap_nvfbc, AVCodecCon
return false;
}
- video_codec_context->hw_device_ctx = device_ctx;
- video_codec_context->hw_frames_ctx = frame_context;
+ video_codec_context->hw_device_ctx = av_buffer_ref(device_ctx);
+ video_codec_context->hw_frames_ctx = av_buffer_ref(frame_context);
return true;
}
@@ -350,9 +350,9 @@ static int gsr_capture_nvfbc_start(gsr_capture *cap, AVCodecContext *video_codec
if(video_codec_context->hw_device_ctx)
av_buffer_unref(&video_codec_context->hw_device_ctx);
- // Not needed because the above call to unref device ctx also frees this?
- //if(video_codec_context->hw_frames_ctx)
- // av_buffer_unref(&video_codec_context->hw_frames_ctx);
+ if(video_codec_context->hw_frames_ctx)
+ av_buffer_unref(&video_codec_context->hw_frames_ctx);
+
gsr_cuda_unload(&cap_nvfbc->cuda);
return -1;
}
@@ -438,9 +438,8 @@ static void gsr_capture_nvfbc_destroy(gsr_capture *cap, AVCodecContext *video_co
gsr_capture_nvfbc_destroy_session(cap);
if(video_codec_context->hw_device_ctx)
av_buffer_unref(&video_codec_context->hw_device_ctx);
- // Not needed because the above call to unref device ctx also frees this?
- //if(video_codec_context->hw_frames_ctx)
- // av_buffer_unref(&video_codec_context->hw_frames_ctx);
+ if(video_codec_context->hw_frames_ctx)
+ av_buffer_unref(&video_codec_context->hw_frames_ctx);
if(cap_nvfbc) {
gsr_cuda_unload(&cap_nvfbc->cuda);
dlclose(cap_nvfbc->library);