[FFmpeg-devel] [PATCH 05/18] vulkan_ffv1: optimize symbol reader

Lynne dev at lynne.ee
Sat Apr 12 10:22:36 EEST 2025


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;
 }
-- 
2.47.2


More information about the ffmpeg-devel mailing list