diff --git a/libavdevice/v4l2.c b/libavdevice/v4l2.c
index 724c014ecfefe9ac1e88228eaf7d67648ffab0cc..c8854c05c5e2daedaf954ca106b21e23ff0ddeb1 100644
--- a/libavdevice/v4l2.c
+++ b/libavdevice/v4l2.c
@@ -616,9 +616,6 @@ static int v4l2_read_header(AVFormatContext *s1, AVFormatParameters *ap)
     }
 
     desired_format = device_try_init(s1, ap, &s->width, &s->height, &codec_id);
-    if (avcodec_check_dimensions(s1, s->width, s->height) < 0)
-        return AVERROR(EINVAL);
-
     if (desired_format == 0) {
         av_log(s1, AV_LOG_ERROR, "Cannot find a proper format for "
                "codec_id %d, pix_fmt %d.\n", s1->video_codec_id, ap->pix_fmt);
@@ -626,6 +623,8 @@ static int v4l2_read_header(AVFormatContext *s1, AVFormatParameters *ap)
 
         return AVERROR(EIO);
     }
+    if (avcodec_check_dimensions(s1, s->width, s->height) < 0)
+        return AVERROR(EINVAL);
     s->frame_format = desired_format;
 
     if( v4l2_set_parameters( s1, ap ) < 0 )