diff --git a/libavformat/avio.c b/libavformat/avio.c
index 1d40da67ee5fbabca9221fd23384700959e0c36c..e043058974a6a61e20edec07af3a21f8312627ef 100644
--- a/libavformat/avio.c
+++ b/libavformat/avio.c
@@ -49,7 +49,7 @@ static const AVClass urlcontext_class =
 static int default_interrupt_cb(void);
 
 URLProtocol *first_protocol = NULL;
-URLInterruptCB *url_interrupt_cb = default_interrupt_cb;
+int (*url_interrupt_cb)(void) = default_interrupt_cb;
 
 URLProtocol *av_protocol_next(URLProtocol *p)
 {
@@ -389,7 +389,7 @@ static int default_interrupt_cb(void)
     return 0;
 }
 
-void avio_set_interrupt_cb(URLInterruptCB *interrupt_cb)
+void avio_set_interrupt_cb(int (*interrupt_cb)(void))
 {
     if (!interrupt_cb)
         interrupt_cb = default_interrupt_cb;
diff --git a/libavformat/avio.h b/libavformat/avio.h
index e9aa49991ef8ceb0b5d900a6a91f5b9e7ddca88e..701f3fe66c429f6109ebc8982b77e7ff2f183002 100644
--- a/libavformat/avio.h
+++ b/libavformat/avio.h
@@ -90,11 +90,9 @@ typedef struct URLPollEntry {
  * silently ignored.
  */
 #define URL_FLAG_NONBLOCK 4
-#endif
 
 typedef int URLInterruptCB(void);
 
-#if FF_API_OLD_AVIO
 /**
  * @defgroup old_url_funcs Old url_* functions
  * @deprecated use the buffered API based on AVIOContext instead
@@ -117,7 +115,7 @@ attribute_deprecated void url_get_filename(URLContext *h, char *buf, int buf_siz
 attribute_deprecated int av_url_read_pause(URLContext *h, int pause);
 attribute_deprecated int64_t av_url_read_seek(URLContext *h, int stream_index,
                                               int64_t timestamp, int flags);
-attribute_deprecated void url_set_interrupt_cb(URLInterruptCB *interrupt_cb);
+attribute_deprecated void url_set_interrupt_cb(int (*interrupt_cb)(void));
 #endif
 
 /**
@@ -132,7 +130,7 @@ int url_exist(const char *url);
  * in this case by the interrupted function. 'NULL' means no interrupt
  * callback is given.
  */
-void avio_set_interrupt_cb(URLInterruptCB *interrupt_cb);
+void avio_set_interrupt_cb(int (*interrupt_cb)(void));
 
 #if FF_API_OLD_AVIO
 /* not implemented */
diff --git a/libavformat/url.h b/libavformat/url.h
index 7482611e11cd5b5bbfbf4f1203dca17d774603a7..941b8af1d1684fa5f2df23e5a45d3775338f4533 100644
--- a/libavformat/url.h
+++ b/libavformat/url.h
@@ -31,7 +31,7 @@
 #if !FF_API_OLD_AVIO
 #define URL_PROTOCOL_FLAG_NESTED_SCHEME 1 /*< The protocol name can be the first part of a nested protocol scheme */
 
-extern URLInterruptCB *url_interrupt_cb;
+extern int (*url_interrupt_cb)(void);
 #endif
 
 /**