diff --git a/libavformat/avformat.h b/libavformat/avformat.h
index 4a46a36789bcd2c53add3d61c8782f5e1a297fae..b08f758d0f157a47283246012d92d7c7cb6b49d7 100644
--- a/libavformat/avformat.h
+++ b/libavformat/avformat.h
@@ -672,7 +672,7 @@ typedef struct AVFormatContext {
     void *priv_data;
     ByteIOContext *pb;
     unsigned int nb_streams;
-#if LIBAVFORMAT_VERSION_MAJOR < 53
+#if FF_API_MAX_STREAMS
     AVStream *streams[MAX_STREAMS];
 #else
     AVStream **streams;
diff --git a/libavformat/utils.c b/libavformat/utils.c
index 73f89a0a0fd7c3eee086e4e20e41440c56d70506..1b58b342bb72ef73d61204635d2467b6482908e5 100644
--- a/libavformat/utils.c
+++ b/libavformat/utils.c
@@ -2543,7 +2543,13 @@ AVStream *av_new_stream(AVFormatContext *s, int id)
 {
     AVStream *st;
     int i;
-#if LIBAVFORMAT_VERSION_MAJOR >= 53
+
+#if FF_API_MAX_STREAMS
+    if (s->nb_streams >= MAX_STREAMS){
+        av_log(s, AV_LOG_ERROR, "Too many streams\n");
+        return NULL;
+    }
+#else
     AVStream **streams;
 
     if (s->nb_streams >= INT_MAX/sizeof(*streams))
@@ -2552,11 +2558,6 @@ AVStream *av_new_stream(AVFormatContext *s, int id)
     if (!streams)
         return NULL;
     s->streams = streams;
-#else
-    if (s->nb_streams >= MAX_STREAMS){
-        av_log(s, AV_LOG_ERROR, "Too many streams\n");
-        return NULL;
-    }
 #endif
 
     st = av_mallocz(sizeof(AVStream));