diff --git a/libavcodec/ffv1.c b/libavcodec/ffv1.c
index c526414a2ca226502dd665656b70941d1e6a332f..46017252860ccefbba16b084a2c700bc8c8a96b7 100644
--- a/libavcodec/ffv1.c
+++ b/libavcodec/ffv1.c
@@ -38,6 +38,7 @@
 #define CONTEXT_SIZE 32
 
 #define MAX_QUANT_TABLES 8
+#define MAX_CONTEXT_INPUTS 5
 
 extern const uint8_t ff_log2_run[32];
 
@@ -216,7 +217,7 @@ typedef struct VlcState{
 } VlcState;
 
 typedef struct PlaneContext{
-    int16_t quant_table[5][256];
+    int16_t quant_table[MAX_CONTEXT_INPUTS][256];
     int context_count;
     uint8_t (*state)[CONTEXT_SIZE];
     VlcState *vlc_state;
@@ -239,8 +240,8 @@ typedef struct FFV1Context{
     int plane_count;
     int ac;                              ///< 1=range coder <-> 0=golomb rice
     PlaneContext plane[MAX_PLANES];
-    int16_t quant_table[5][256];
-    int16_t quant_tables[MAX_QUANT_TABLES][5][256];
+    int16_t quant_table[MAX_CONTEXT_INPUTS][256];
+    int16_t quant_tables[MAX_QUANT_TABLES][MAX_CONTEXT_INPUTS][256];
     int context_count[MAX_QUANT_TABLES];
     uint8_t state_transition[256];
     int run_index;
@@ -610,7 +611,7 @@ static void write_quant_table(RangeCoder *c, int16_t *quant_table){
     put_symbol(c, state, i-last-1, 0);
 }
 
-static void write_quant_tables(RangeCoder *c, int16_t quant_table[5][256]){
+static void write_quant_tables(RangeCoder *c, int16_t quant_table[MAX_CONTEXT_INPUTS][256]){
     int i;
     for(i=0; i<5; i++)
         write_quant_table(c, quant_table[i]);
@@ -1208,7 +1209,7 @@ static int read_quant_table(RangeCoder *c, int16_t *quant_table, int scale){
     return 2*v - 1;
 }
 
-static int read_quant_tables(RangeCoder *c, int16_t quant_table[5][256]){
+static int read_quant_tables(RangeCoder *c, int16_t quant_table[MAX_CONTEXT_INPUTS][256]){
     int i;
     int context_count=1;