]> git.sesse.net Git - ffmpeg/blobdiff - libavcodec/pngdec.c
Merge remote-tracking branch 'dwbuiten/master'
[ffmpeg] / libavcodec / pngdec.c
index e55a3823c076fd88e860ebce38184410924412d6..5bfe07ba5ded76787f9238cb93fc797058e1e445 100644 (file)
@@ -395,21 +395,23 @@ static int decode_frame(AVCodecContext *avctx,
     AVFrame *p;
     uint8_t *crow_buf_base = NULL;
     uint32_t tag, length;
+    int64_t sig;
     int ret;
 
     FFSWAP(AVFrame *, s->current_picture, s->last_picture);
     avctx->coded_frame= s->current_picture;
     p = s->current_picture;
 
+    bytestream2_init(&s->gb, buf, buf_size);
+
     /* check signature */
-    if (buf_size < 8 ||
-        memcmp(buf, ff_pngsig, 8) != 0 &&
-        memcmp(buf, ff_mngsig, 8) != 0) {
+    sig = bytestream2_get_be64(&s->gb);
+    if (sig != PNGSIG &&
+        sig != MNGSIG) {
         av_log(avctx, AV_LOG_ERROR, "Missing png signature\n");
         return -1;
     }
 
-    bytestream2_init(&s->gb, buf + 8, buf_size - 8);
     s->y=
     s->state=0;
 //    memset(s, 0, sizeof(PNGDecContext));