diff --git a/libavcodec/bink.c b/libavcodec/bink.c
index c501688ae8ccc9840713026703569f5d016a586b..7df587103070b656e87ebc5d38a140792725d121 100644
--- a/libavcodec/bink.c
+++ b/libavcodec/bink.c
@@ -148,7 +148,7 @@ static void init_lengths(BinkContext *c, int width, int bw)
 {
     c->bundle[BINK_SRC_BLOCK_TYPES].len = av_log2((width >> 3) + 511) + 1;
 
-    c->bundle[BINK_SRC_SUB_BLOCK_TYPES].len = av_log2((width >> 4) + 511) + 1;
+    c->bundle[BINK_SRC_SUB_BLOCK_TYPES].len = av_log2(((width + 7) >> 4) + 511) + 1;
 
     c->bundle[BINK_SRC_COLORS].len = av_log2(bw*64 + 511) + 1;