diff --git a/libavcodec/svq1.c b/libavcodec/svq1.c
index a167ac9c8fd9ec2a3105d652ae93d687ae17d782..957176e386f9a3284ccc0d2c881cf254520f576e 100644
--- a/libavcodec/svq1.c
+++ b/libavcodec/svq1.c
@@ -1355,7 +1355,7 @@ static int svq1_encode_frame(AVCodecContext *avctx, unsigned char *buf,
     init_put_bits(&s->pb, buf, buf_size);
 
     *p = *pict;
-    p->pict_type = avctx->frame_number % avctx->gop_size ? P_TYPE : I_TYPE;
+    p->pict_type = avctx->gop_size && avctx->frame_number % avctx->gop_size ? P_TYPE : I_TYPE;
     p->key_frame = p->pict_type == I_TYPE;
 
     svq1_write_header(s, p->pict_type);