diff --git a/libavcodec/blockdsp.c b/libavcodec/blockdsp.c
index a5c527a4dac66422bf0b8a29284af722b9934466..c7efe7e77b061380348f5faadc25bb1ad4ae7776 100644
--- a/libavcodec/blockdsp.c
+++ b/libavcodec/blockdsp.c
@@ -35,7 +35,8 @@ static void clear_blocks_c(int16_t *blocks)
     memset(blocks, 0, sizeof(int16_t) * 6 * 64);
 }
 
-static void fill_block16_c(uint8_t *block, uint8_t value, int line_size, int h)
+static void fill_block16_c(uint8_t *block, uint8_t value, ptrdiff_t line_size,
+                           int h)
 {
     int i;
 
@@ -45,7 +46,8 @@ static void fill_block16_c(uint8_t *block, uint8_t value, int line_size, int h)
     }
 }
 
-static void fill_block8_c(uint8_t *block, uint8_t value, int line_size, int h)
+static void fill_block8_c(uint8_t *block, uint8_t value, ptrdiff_t line_size,
+                          int h)
 {
     int i;
 
diff --git a/libavcodec/blockdsp.h b/libavcodec/blockdsp.h
index 95e1d0f32e114852c3db30d32de5d0d963dc35d3..6e27a02ba52d87367b98a9cbb5515a52caa69b59 100644
--- a/libavcodec/blockdsp.h
+++ b/libavcodec/blockdsp.h
@@ -19,6 +19,7 @@
 #ifndef AVCODEC_BLOCKDSP_H
 #define AVCODEC_BLOCKDSP_H
 
+#include <stddef.h>
 #include <stdint.h>
 
 #include "avcodec.h"
@@ -29,7 +30,7 @@
  * h for op_pixels_func is limited to { width / 2, width },
  * but never larger than 16 and never smaller than 4. */
 typedef void (*op_fill_func)(uint8_t *block /* align width (8 or 16) */,
-                             uint8_t value, int line_size, int h);
+                             uint8_t value, ptrdiff_t line_size, int h);
 
 typedef struct BlockDSPContext {
     void (*clear_block)(int16_t *block /* align 16 */);
diff --git a/libavcodec/mips/blockdsp_mips.h b/libavcodec/mips/blockdsp_mips.h
index 9559d40eaa35181eb9bfe6efdc2bb5f70c3c722e..1742b123c3a863ed3730fee52400865ca817900f 100644
--- a/libavcodec/mips/blockdsp_mips.h
+++ b/libavcodec/mips/blockdsp_mips.h
@@ -24,13 +24,13 @@
 
 #include "../mpegvideo.h"
 
-void ff_fill_block16_msa(uint8_t *src, uint8_t val, int stride, int height);
-void ff_fill_block8_msa(uint8_t *src, uint8_t val, int stride, int height);
+void ff_fill_block16_msa(uint8_t *src, uint8_t val, ptrdiff_t stride, int height);
+void ff_fill_block8_msa(uint8_t *src, uint8_t val, ptrdiff_t stride, int height);
 void ff_clear_block_msa(int16_t *block);
 void ff_clear_blocks_msa(int16_t *block);
 
-void ff_fill_block16_mmi(uint8_t *block, uint8_t value, int line_size, int h);
-void ff_fill_block8_mmi(uint8_t *block, uint8_t value, int line_size, int h);
+void ff_fill_block16_mmi(uint8_t *block, uint8_t value, ptrdiff_t line_size, int h);
+void ff_fill_block8_mmi(uint8_t *block, uint8_t value, ptrdiff_t line_size, int h);
 void ff_clear_block_mmi(int16_t *block);
 void ff_clear_blocks_mmi(int16_t *block);
 
diff --git a/libavcodec/mips/blockdsp_mmi.c b/libavcodec/mips/blockdsp_mmi.c
index 1035dbbc571aa0b3e6e16b3533b3e10e842060bc..68641e25448a0dabac3c59f41b85084fbfcb9e29 100644
--- a/libavcodec/mips/blockdsp_mmi.c
+++ b/libavcodec/mips/blockdsp_mmi.c
@@ -24,7 +24,7 @@
 #include "blockdsp_mips.h"
 #include "libavutil/mips/mmiutils.h"
 
-void ff_fill_block16_mmi(uint8_t *block, uint8_t value, int line_size, int h)
+void ff_fill_block16_mmi(uint8_t *block, uint8_t value, ptrdiff_t line_size, int h)
 {
     double ftmp[1];
     DECLARE_VAR_ALL64;
@@ -48,7 +48,7 @@ void ff_fill_block16_mmi(uint8_t *block, uint8_t value, int line_size, int h)
     );
 }
 
-void ff_fill_block8_mmi(uint8_t *block, uint8_t value, int line_size, int h)
+void ff_fill_block8_mmi(uint8_t *block, uint8_t value, ptrdiff_t line_size, int h)
 {
     double ftmp0;
     DECLARE_VAR_ALL64;
diff --git a/libavcodec/mips/blockdsp_msa.c b/libavcodec/mips/blockdsp_msa.c
index 32ac858e1dc7c3fbd397bae62df9cb530c007bce..2b78c288f08d529e36aae572088ffec6b2c42aeb 100644
--- a/libavcodec/mips/blockdsp_msa.c
+++ b/libavcodec/mips/blockdsp_msa.c
@@ -65,12 +65,12 @@ static void memset_zero_16width_msa(uint8_t *src, int32_t stride,
     }
 }
 
-void ff_fill_block16_msa(uint8_t *src, uint8_t val, int stride, int height)
+void ff_fill_block16_msa(uint8_t *src, uint8_t val, ptrdiff_t stride, int height)
 {
     copy_8bit_value_width16_msa(src, val, stride, height);
 }
 
-void ff_fill_block8_msa(uint8_t *src, uint8_t val, int stride, int height)
+void ff_fill_block8_msa(uint8_t *src, uint8_t val, ptrdiff_t stride, int height)
 {
     copy_8bit_value_width8_msa(src, val, stride, height);
 }