[FFmpeg-devel] [PATCH] Remove duplicated png and mng signatures.

Paul B Mahol onemda at gmail.com
Fri Jun 15 01:25:27 CEST 2012


Signed-off-by: Paul B Mahol <onemda at gmail.com>
---
 libavcodec/png.c        |    3 ---
 libavcodec/png.h        |    4 ++--
 libavcodec/png_parser.c |    4 +---
 libavcodec/pngdec.c     |   10 ++++++----
 libavcodec/pngenc.c     |    2 +-
 5 files changed, 10 insertions(+), 13 deletions(-)

diff --git a/libavcodec/png.c b/libavcodec/png.c
index 332701c..a4287bd 100644
--- a/libavcodec/png.c
+++ b/libavcodec/png.c
@@ -21,9 +21,6 @@
 #include "avcodec.h"
 #include "png.h"
 
-const uint8_t ff_pngsig[8] = {137, 80, 78, 71, 13, 10, 26, 10};
-const uint8_t ff_mngsig[8] = {138, 77, 78, 71, 13, 10, 26, 10};
-
 /* Mask to determine which y pixels are valid in a pass */
 const uint8_t ff_png_pass_ymask[NB_PASSES] = {
     0x80, 0x80, 0x08, 0x88, 0x22, 0xaa, 0x55,
diff --git a/libavcodec/png.h b/libavcodec/png.h
index 4b30ba3..948c2f7 100644
--- a/libavcodec/png.h
+++ b/libavcodec/png.h
@@ -49,8 +49,8 @@
 
 #define NB_PASSES 7
 
-extern const uint8_t ff_pngsig[8];
-extern const uint8_t ff_mngsig[8];
+#define PNGSIG 0x89504e470d0a1a0a
+#define MNGSIG 0x8a4d4e470d0a1a0a
 
 /* Mask to determine which y pixels are valid in a pass */
 extern const uint8_t ff_png_pass_ymask[NB_PASSES];
diff --git a/libavcodec/png_parser.c b/libavcodec/png_parser.c
index 722889b..877b894 100644
--- a/libavcodec/png_parser.c
+++ b/libavcodec/png_parser.c
@@ -25,9 +25,7 @@
  */
 
 #include "parser.h"
-
-#define PNGSIG 0x89504e470d0a1a0a
-#define MNGSIG 0x8a4d4e470d0a1a0a
+#include "png.h"
 
 typedef struct PNGParseContext
 {
diff --git a/libavcodec/pngdec.c b/libavcodec/pngdec.c
index e55a382..5bfe07b 100644
--- a/libavcodec/pngdec.c
+++ b/libavcodec/pngdec.c
@@ -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));
diff --git a/libavcodec/pngenc.c b/libavcodec/pngenc.c
index 1d362b5..a29d3c9 100644
--- a/libavcodec/pngenc.c
+++ b/libavcodec/pngenc.c
@@ -322,7 +322,7 @@ static int encode_frame(AVCodecContext *avctx, AVPacket *pkt,
     }
 
     /* write png header */
-    memcpy(s->bytestream, ff_pngsig, 8);
+    AV_WB64(s->bytestream, PNGSIG);
     s->bytestream += 8;
 
     AV_WB32(s->buf, avctx->width);
-- 
1.7.7



More information about the ffmpeg-devel mailing list