diff --git a/ffmpeg.c b/ffmpeg.c
index 06fb2535a9..c43192d8f9 100644
--- a/ffmpeg.c
+++ b/ffmpeg.c
@@ -553,7 +553,7 @@ static int codec_get_buffer(AVCodecContext *s, AVFrame *frame)
     FrameBuffer *buf;
     int ret, i;
 
-    if(av_image_check_size(s->width, s->height, 0, s))
+    if(av_image_check_size(s->width, s->height, 0, s) || s->pix_fmt<0)
         return -1;
 
     if (!ist->buffer_pool && (ret = alloc_buffer(s, ist, &ist->buffer_pool)) < 0)
diff --git a/ffplay.c b/ffplay.c
index 19c430883c..93097e1ee7 100644
--- a/ffplay.c
+++ b/ffplay.c
@@ -1564,7 +1564,7 @@ static int input_get_buffer(AVCodecContext *codec, AVFrame *pic)
     w = codec->width;
     h = codec->height;
 
-    if(av_image_check_size(w, h, 0, codec))
+    if(av_image_check_size(w, h, 0, codec) || codec->pix_fmt<0)
         return -1;
 
     avcodec_align_dimensions2(codec, &w, &h, stride);
diff --git a/libavcodec/utils.c b/libavcodec/utils.c
index a697facdaa..63f7fae88a 100644
--- a/libavcodec/utils.c
+++ b/libavcodec/utils.c
@@ -414,7 +414,7 @@ static int video_get_buffer(AVCodecContext *s, AVFrame *pic)
         return -1;
     }
 
-    if(av_image_check_size(w, h, 0, s))
+    if(av_image_check_size(w, h, 0, s) || s->pix_fmt<0)
         return -1;
 
     if (!avci->buffer) {