summaryrefslogtreecommitdiff
path: root/libavcodec/mpeg4video_parser.c
diff options
context:
space:
mode:
authorAurelien Jacobs <aurel@gnuage.org>2007-05-09 23:13:43 +0000
committerAurelien Jacobs <aurel@gnuage.org>2007-05-09 23:13:43 +0000
commitdf495dbd9a5fc5053d5e7e6976932bb104cde4a6 (patch)
tree5d467365b678c53edfc545874a9bf1ed6c0a77a5 /libavcodec/mpeg4video_parser.c
parent87e61d09cc22ec2d438a9014559d881b782a6a21 (diff)
move ff_mpeg4_find_frame_end() from h263dec.c to mpeg4video_parser.c
now h263dec depends on mpeg4video_parser this fixes compilation when h263 decoder is disabled Originally committed as revision 8962 to svn://svn.ffmpeg.org/ffmpeg/trunk
Diffstat (limited to 'libavcodec/mpeg4video_parser.c')
-rw-r--r--libavcodec/mpeg4video_parser.c38
1 files changed, 38 insertions, 0 deletions
diff --git a/libavcodec/mpeg4video_parser.c b/libavcodec/mpeg4video_parser.c
index 4771ca0b44..9accc91265 100644
--- a/libavcodec/mpeg4video_parser.c
+++ b/libavcodec/mpeg4video_parser.c
@@ -22,8 +22,46 @@
#include "parser.h"
#include "mpegvideo.h"
+#include "mpeg4video_parser.h"
+int ff_mpeg4_find_frame_end(ParseContext *pc, const uint8_t *buf, int buf_size){
+ int vop_found, i;
+ uint32_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 == 0x1B6){
+ 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&0xFFFFFF00) == 0x100){
+ pc->frame_start_found=0;
+ pc->state=-1;
+ return i-3;
+ }
+ }
+ }
+ pc->frame_start_found= vop_found;
+ pc->state= state;
+ return END_NOT_FOUND;
+}
+
/* XXX: make it use less memory */
static int av_mpeg4_decode_header(AVCodecParserContext *s1,
AVCodecContext *avctx,