diff options
| author | dec05eba <dec05eba@protonmail.com> | 2026-08-08 04:11:11 +0200 |
|---|---|---|
| committer | dec05eba <dec05eba@protonmail.com> | 2026-08-08 04:11:11 +0200 |
| commit | 20740fe57962c9cbfb0cd6c2f1036da775c40c8b (patch) | |
| tree | a2f56f4f50ba36198d899da27a5327acd023e68f | |
| parent | 65c75169276be632ed8543a1f0c03d966f683b19 (diff) | |
Fix nvenc crash on shutdown. part 2
| -rw-r--r-- | src/encoder/video/nvenc.c | 2 | ||||
| -rw-r--r-- | src/encoder/video/vaapi.c | 2 | ||||
| -rw-r--r-- | src/encoder/video/vulkan.c | 2 | ||||
| -rw-r--r-- | src/recorder/recorder.c | 8 |
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); |
