[FFmpeg-cvslog] vulkan_decode: ensure there's at least one context per decode thread

Lynne git at videolan.org
Wed Nov 27 18:32:48 EET 2024


ffmpeg | branch: master | Lynne <dev at lynne.ee> | Thu Nov 28 00:51:21 2024 +0900| [41f65b7326ea437d0b19744810903a5a588047fd] | committer: Lynne

vulkan_decode: ensure there's at least one context per decode thread

Otherwise, what may happen is that 2 threads will both write
into the same context.

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=41f65b7326ea437d0b19744810903a5a588047fd
---

 libavcodec/vulkan_decode.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/libavcodec/vulkan_decode.c b/libavcodec/vulkan_decode.c
index e55df7ad27..dc5d57ec67 100644
--- a/libavcodec/vulkan_decode.c
+++ b/libavcodec/vulkan_decode.c
@@ -1159,7 +1159,8 @@ int ff_vk_decode_init(AVCodecContext *avctx)
     /* Create decode exec context for this specific main thread.
      * 2 async contexts per thread was experimentally determined to be optimal
      * for a majority of streams. */
-    err = ff_vk_exec_pool_init(s, &ctx->qf, &dec->exec_pool, 2*ctx->qf.nb_queues,
+    err = ff_vk_exec_pool_init(s, &ctx->qf, &dec->exec_pool,
+                               FFMAX(2*ctx->qf.nb_queues, avctx->thread_count),
                                nb_q, VK_QUERY_TYPE_RESULT_STATUS_ONLY_KHR, 0,
                                profile);
     if (err < 0)



More information about the ffmpeg-cvslog mailing list