diff --git a/libavformat/allformats.c b/libavformat/allformats.c
index 6303dc2b18b8f37f0ad2693002cae97afb4f59d4..cd80136c64268364b93b36bf1d293944a60bcc44 100644
--- a/libavformat/allformats.c
+++ b/libavformat/allformats.c
@@ -75,7 +75,9 @@ void av_register_all(void)
     av_register_image_format(&ppm_image_format);
     av_register_image_format(&pgmyuv_image_format);
     av_register_image_format(&yuv_image_format);
+#ifdef CONFIG_ZLIB
     av_register_image_format(&png_image_format);
+#endif
     av_register_image_format(&jpeg_image_format);
     av_register_image_format(&gif_image_format);
 
diff --git a/libavformat/avformat.h b/libavformat/avformat.h
index c78b98aa7005173ad0132f78686dff756c98540a..a58e73c4fa1e09da3b092ea85e839e7f814b8a02 100644
--- a/libavformat/avformat.h
+++ b/libavformat/avformat.h
@@ -253,7 +253,9 @@ extern AVImageFormat pgm_image_format;
 extern AVImageFormat ppm_image_format;
 extern AVImageFormat pgmyuv_image_format;
 extern AVImageFormat yuv_image_format;
+#ifdef CONFIG_ZLIB
 extern AVImageFormat png_image_format;
+#endif
 extern AVImageFormat jpeg_image_format;
 extern AVImageFormat gif_image_format;
 
diff --git a/libavformat/png.c b/libavformat/png.c
index e4facf80fa19626c1bd1fe4ee089b3ef19f8b08c..75d07ddcee89475d9c113038f2c7dff9365b10ed 100644
--- a/libavformat/png.c
+++ b/libavformat/png.c
@@ -18,6 +18,7 @@
  */
 #include "avformat.h"
 
+#ifdef CONFIG_ZLIB
 #include <zlib.h>
 
 //#define DEBUG
@@ -563,3 +564,4 @@ AVImageFormat png_image_format = {
     (1 << PIX_FMT_RGB24) | (1 << PIX_FMT_GRAY8) | (1 << PIX_FMT_MONOBLACK) | (1 << PIX_FMT_PAL8),
     png_write,
 };
+#endif