From fc960dafef9f1b30433bbf6ead84fbdc8d492539 Mon Sep 17 00:00:00 2001 From: Lynne Date: Wed, 2 Apr 2025 20:46:12 +0000 Subject: [PATCH] vulkan_ffv1: optimize symbol reader This was the fastest variant tested. --- libavcodec/vulkan/ffv1_dec.comp | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/libavcodec/vulkan/ffv1_dec.comp b/libavcodec/vulkan/ffv1_dec.comp index f9ffe1cee1..7d3150ed63 100644 --- a/libavcodec/vulkan/ffv1_dec.comp +++ b/libavcodec/vulkan/ffv1_dec.comp @@ -78,13 +78,11 @@ int get_isymbol(inout RangeCoder c, uint64_t state) state += 21; - int a = 1 << e; - int i; - for (i = e - 1; i >= 9; i--) - a |= int(get_rac(c, state + 9)) << i; // 22..31 - - for (; i >= 0; i--) - a |= int(get_rac(c, state + i)) << i; // 22..31 + int a = 1; + for (int i = e - 1; i >= 0; i--) { + a <<= 1; + a |= int(get_rac(c, state + min(i, 9))); // 22..31 + } return get_rac(c, state - 11 + min(e, 10)) ? -a : a; }