[SCM] libav/experimental: move mjpeg parser in its own file
siretart at users.alioth.debian.org
siretart at users.alioth.debian.org
Sun Jun 30 15:59:47 UTC 2013
The following commit has been merged in the experimental branch:
commit b16560a3892be5faa5efc7c8bec172985831bd53
Author: Aurelien Jacobs <aurel at gnuage.org>
Date: Thu May 10 22:37:36 2007 +0000
move mjpeg parser in its own file
Originally committed as revision 8987 to svn://svn.ffmpeg.org/ffmpeg/trunk
diff --git a/libavcodec/Makefile b/libavcodec/Makefile
index 7a79e07..d2641fd 100644
--- a/libavcodec/Makefile
+++ b/libavcodec/Makefile
@@ -291,7 +291,7 @@ OBJS-$(CONFIG_DVDSUB_PARSER) += dvdsub_parser.o
OBJS-$(CONFIG_H261_PARSER) += h261_parser.o
OBJS-$(CONFIG_H263_PARSER) += h263_parser.o
OBJS-$(CONFIG_H264_PARSER) += h264_parser.o
-OBJS-$(CONFIG_MJPEG_PARSER) += mjpeg.o
+OBJS-$(CONFIG_MJPEG_PARSER) += mjpeg_parser.o
OBJS-$(CONFIG_MPEG4VIDEO_PARSER) += mpeg4video_parser.o
OBJS-$(CONFIG_MPEGAUDIO_PARSER) += mpegaudio_parser.o
OBJS-$(CONFIG_MPEGVIDEO_PARSER) += mpegvideo_parser.o
diff --git a/libavcodec/mjpeg.c b/libavcodec/mjpeg.c
index 214fc08..5fa2059 100644
--- a/libavcodec/mjpeg.c
+++ b/libavcodec/mjpeg.c
@@ -962,68 +962,6 @@ static int mjpeg_decode_init(AVCodecContext *avctx)
}
-/**
- * finds the end of the current frame in the bitstream.
- * @return the position of the first byte of the next frame, or -1
- */
-static int find_frame_end(ParseContext *pc, const uint8_t *buf, int buf_size){
- int vop_found, i;
- uint16_t state;
-
- vop_found= pc->frame_start_found;
- state= pc->state;
-
- i=0;
- if(!vop_found){
- for(i=0; i<buf_size; i++){
- state= (state<<8) | buf[i];
- if(state == 0xFFD8){
- i++;
- vop_found=1;
- break;
- }
- }
- }
-
- if(vop_found){
- /* EOF considered as end of frame */
- if (buf_size == 0)
- return 0;
- for(; i<buf_size; i++){
- state= (state<<8) | buf[i];
- if(state == 0xFFD8){
- pc->frame_start_found=0;
- pc->state=0;
- return i-1;
- }
- }
- }
- pc->frame_start_found= vop_found;
- pc->state= state;
- return END_NOT_FOUND;
-}
-
-static int jpeg_parse(AVCodecParserContext *s,
- AVCodecContext *avctx,
- const uint8_t **poutbuf, int *poutbuf_size,
- const uint8_t *buf, int buf_size)
-{
- ParseContext *pc = s->priv_data;
- int next;
-
- next= find_frame_end(pc, buf, buf_size);
-
- if (ff_combine_frame(pc, next, &buf, &buf_size) < 0) {
- *poutbuf = NULL;
- *poutbuf_size = 0;
- return buf_size;
- }
-
- *poutbuf = buf;
- *poutbuf_size = buf_size;
- return next;
-}
-
/* quantize tables */
static int mjpeg_decode_dqt(MJpegDecodeContext *s)
{
@@ -2626,16 +2564,6 @@ AVCodec ljpeg_encoder = { //FIXME avoid MPV_* lossless jpeg shouldnt need them
};
#endif
-#ifdef CONFIG_MJPEG_PARSER
-AVCodecParser mjpeg_parser = {
- { CODEC_ID_MJPEG },
- sizeof(ParseContext),
- NULL,
- jpeg_parse,
- ff_parse_close,
-};
-#endif
-
AVBitStreamFilter mjpega_dump_header_bsf = {
"mjpegadump",
0,
diff --git a/libavcodec/h263_parser.c b/libavcodec/mjpeg_parser.c
similarity index 59%
copy from libavcodec/h263_parser.c
copy to libavcodec/mjpeg_parser.c
index 7031ad9..aad112e 100644
--- a/libavcodec/h263_parser.c
+++ b/libavcodec/mjpeg_parser.c
@@ -1,6 +1,8 @@
/*
- * H.263 parser
- * Copyright (c) 2002-2004 Michael Niedermayer <michaelni at gmx.at>
+ * MJPEG parser
+ * Copyright (c) 2000, 2001 Fabrice Bellard.
+ * Copyright (c) 2003 Alex Beregszaszi
+ * Copyright (c) 2003-2004 Michael Niedermayer
*
* This file is part of FFmpeg.
*
@@ -20,15 +22,20 @@
*/
/**
- * @file h263_parser.c
- * H.263 parser
+ * @file mjpeg_parser.c
+ * MJPEG parser.
*/
#include "parser.h"
-int ff_h263_find_frame_end(ParseContext *pc, const uint8_t *buf, int buf_size){
+
+/**
+ * finds the end of the current frame in the bitstream.
+ * @return the position of the first byte of the next frame, or -1
+ */
+static int find_frame_end(ParseContext *pc, const uint8_t *buf, int buf_size){
int vop_found, i;
- uint32_t state;
+ uint16_t state;
vop_found= pc->frame_start_found;
state= pc->state;
@@ -37,7 +44,7 @@ int ff_h263_find_frame_end(ParseContext *pc, const uint8_t *buf, int buf_size){
if(!vop_found){
for(i=0; i<buf_size; i++){
state= (state<<8) | buf[i];
- if(state>>(32-22) == 0x20){
+ if(state == 0xFFD8){
i++;
vop_found=1;
break;
@@ -46,46 +53,49 @@ int ff_h263_find_frame_end(ParseContext *pc, const uint8_t *buf, int buf_size){
}
if(vop_found){
- for(; i<buf_size; i++){
- state= (state<<8) | buf[i];
- if(state>>(32-22) == 0x20){
- pc->frame_start_found=0;
- pc->state=-1;
- return i-3;
+ /* EOF considered as end of frame */
+ if (buf_size == 0)
+ return 0;
+ for(; i<buf_size; i++){
+ state= (state<<8) | buf[i];
+ if(state == 0xFFD8){
+ pc->frame_start_found=0;
+ pc->state=0;
+ return i-1;
+ }
}
- }
}
pc->frame_start_found= vop_found;
pc->state= state;
-
return END_NOT_FOUND;
}
-static int h263_parse(AVCodecParserContext *s,
+static int jpeg_parse(AVCodecParserContext *s,
AVCodecContext *avctx,
- uint8_t **poutbuf, int *poutbuf_size,
+ const uint8_t **poutbuf, int *poutbuf_size,
const uint8_t *buf, int buf_size)
{
ParseContext *pc = s->priv_data;
int next;
- next= ff_h263_find_frame_end(pc, buf, buf_size);
+ next= find_frame_end(pc, buf, buf_size);
- if (ff_combine_frame(pc, next, (uint8_t **)&buf, &buf_size) < 0) {
+ if (ff_combine_frame(pc, next, &buf, &buf_size) < 0) {
*poutbuf = NULL;
*poutbuf_size = 0;
return buf_size;
}
- *poutbuf = (uint8_t *)buf;
+ *poutbuf = buf;
*poutbuf_size = buf_size;
return next;
}
-AVCodecParser h263_parser = {
- { CODEC_ID_H263 },
+
+AVCodecParser mjpeg_parser = {
+ { CODEC_ID_MJPEG },
sizeof(ParseContext),
NULL,
- h263_parse,
+ jpeg_parse,
ff_parse_close,
};
--
Libav/FFmpeg packaging
More information about the pkg-multimedia-commits
mailing list