aboutsummaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authordec05eba <dec05eba@protonmail.com>2026-08-08 04:11:11 +0200
committerdec05eba <dec05eba@protonmail.com>2026-08-08 04:11:11 +0200
commit20740fe57962c9cbfb0cd6c2f1036da775c40c8b (patch)
treea2f56f4f50ba36198d899da27a5327acd023e68f /src
parent65c75169276be632ed8543a1f0c03d966f683b19 (diff)
Fix nvenc crash on shutdown. part 2
Diffstat (limited to 'src')
-rw-r--r--src/encoder/video/nvenc.c2
-rw-r--r--src/encoder/video/vaapi.c2
-rw-r--r--src/encoder/video/vulkan.c2
-rw-r--r--src/recorder/recorder.c8
4 files changed, 7 insertions, 7 deletions
diff --git a/src/encoder/video/nvenc.c b/src/encoder/video/nvenc.c
index f7fca41..594416c 100644
--- a/src/encoder/video/nvenc.c
+++ b/src/encoder/video/nvenc.c
@@ -152,7 +152,7 @@ void gsr_video_encoder_nvenc_stop(gsr_video_encoder_nvenc *self, AVCodecContext
self->target_textures[0] = 0;
self->target_textures[1] = 0;
- if(video_codec_context->hw_frames_ctx)
+ if(video_codec_context && video_codec_context->hw_frames_ctx)
av_buffer_unref(&video_codec_context->hw_frames_ctx);
if(self->device_ctx)
av_buffer_unref(&self->device_ctx);
diff --git a/src/encoder/video/vaapi.c b/src/encoder/video/vaapi.c
index d310125..12dd3d7 100644
--- a/src/encoder/video/vaapi.c
+++ b/src/encoder/video/vaapi.c
@@ -294,7 +294,7 @@ void gsr_video_encoder_vaapi_stop(gsr_video_encoder_vaapi *self, AVCodecContext
self->target_textures[0] = 0;
self->target_textures[1] = 0;
- if(video_codec_context->hw_frames_ctx)
+ if(video_codec_context && video_codec_context->hw_frames_ctx)
av_buffer_unref(&video_codec_context->hw_frames_ctx);
if(self->device_ctx)
av_buffer_unref(&self->device_ctx);
diff --git a/src/encoder/video/vulkan.c b/src/encoder/video/vulkan.c
index c90a1f9..232a37d 100644
--- a/src/encoder/video/vulkan.c
+++ b/src/encoder/video/vulkan.c
@@ -862,7 +862,7 @@ void gsr_video_encoder_vulkan_stop(gsr_video_encoder_vulkan *self, AVCodecContex
}
}
- if(video_codec_context->hw_frames_ctx)
+ if(video_codec_context && video_codec_context->hw_frames_ctx)
av_buffer_unref(&video_codec_context->hw_frames_ctx);
if(self->device_ctx)
av_buffer_unref(&self->device_ctx);
diff --git a/src/recorder/recorder.c b/src/recorder/recorder.c
index ca4dcea..29d36d8 100644
--- a/src/recorder/recorder.c
+++ b/src/recorder/recorder.c
@@ -914,17 +914,17 @@ void gsr_recorder_destroy(gsr_recorder *self, bool exiting) {
if(self->video_frame)
av_frame_free(&self->video_frame);
+ if(self->video_codec_context)
+ avcodec_free_context(&self->video_codec_context);
+
if(self->video_encoder)
- gsr_video_encoder_destroy(self->video_encoder, self->video_codec_context);
+ gsr_video_encoder_destroy(self->video_encoder, NULL);
if(self->encoder_initialized)
gsr_encoder_deinit(&self->encoder, exiting);
gsr_video_sources_deinit(&self->video_sources_data);
- if(self->video_codec_context)
- avcodec_free_context(&self->video_codec_context);
-
if(self->av_format_context) {
if(self->av_format_context->pb && !(self->av_format_context->oformat->flags & AVFMT_NOFILE))
avio_close(self->av_format_context->pb);