[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