diff --git a/libavformat/avformat.h b/libavformat/avformat.h
index d7c457b9053aae3d7fbabe42fbafe25d86253a4f..be1ec1c24acb8febce51a66191a0eb53b9c64cb1 100644
--- a/libavformat/avformat.h
+++ b/libavformat/avformat.h
@@ -1197,7 +1197,7 @@ int avf_sdp_create(AVFormatContext *ac[], int n_files, char *buff, int size);
 
 #ifdef HAVE_AV_CONFIG_H
 
-void ff_dynarray_add(unsigned long **tab_ptr, int *nb_ptr, unsigned long elem);
+void ff_dynarray_add(intptr_t **tab_ptr, int *nb_ptr, intptr_t elem);
 
 #ifdef __GNUC__
 #define dynarray_add(tab, nb_ptr, elem)\
@@ -1205,12 +1205,12 @@ do {\
     __typeof__(tab) _tab = (tab);\
     __typeof__(elem) _elem = (elem);\
     (void)sizeof(**_tab == _elem); /* check that types are compatible */\
-    ff_dynarray_add((unsigned long **)_tab, nb_ptr, (unsigned long)_elem);\
+    ff_dynarray_add((intptr_t **)_tab, nb_ptr, (intptr_t)_elem);\
 } while(0)
 #else
 #define dynarray_add(tab, nb_ptr, elem)\
 do {\
-    ff_dynarray_add((unsigned long **)(tab), nb_ptr, (unsigned long)(elem));\
+    ff_dynarray_add((intptr_t **)(tab), nb_ptr, (intptr_t)(elem));\
 } while(0)
 #endif
 
diff --git a/libavformat/cutils.c b/libavformat/cutils.c
index 42ef5996d996e57b59e147c3e0cc2b3d676d1e79..4967d5b90c211a23823a66e7f4d087a2666964a9 100644
--- a/libavformat/cutils.c
+++ b/libavformat/cutils.c
@@ -21,10 +21,10 @@
 #include "avformat.h"
 
 /* add one element to a dynamic array */
-void ff_dynarray_add(unsigned long **tab_ptr, int *nb_ptr, unsigned long elem)
+void ff_dynarray_add(intptr_t **tab_ptr, int *nb_ptr, intptr_t elem)
 {
     int nb, nb_alloc;
-    unsigned long *tab;
+    intptr_t *tab;
 
     nb = *nb_ptr;
     tab = *tab_ptr;
@@ -33,7 +33,7 @@ void ff_dynarray_add(unsigned long **tab_ptr, int *nb_ptr, unsigned long elem)
             nb_alloc = 1;
         else
             nb_alloc = nb * 2;
-        tab = av_realloc(tab, nb_alloc * sizeof(unsigned long));
+        tab = av_realloc(tab, nb_alloc * sizeof(intptr_t));
         *tab_ptr = tab;
     }
     tab[nb++] = elem;