annotate mpeg4video_parser.h @ 10061:09f2db2d7c90 libavcodec

Fix bug caused by difference in stride and picture width. When a frame is allocated using libschroedinger routines, the frame data size does not match the actual frame size if the width is not a multiple of 16. So we cannot do a straightforward memcpy of the frame returned by libschroedinger into the FFmpeg picture as the stride differs from the width. Fix this bug by allocating for the libschroedinger frame with the dimensions in AVCodecContext within libavcodec and passing the frame to libschroedinger. patch by Anuradha Suraparaju, anuradha rd.bbc.co uk
author diego
date Sat, 15 Aug 2009 11:59:53 +0000
parents 04423b2f6e0b
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
4957
3fcb2f0d9ef1 move ff_mpeg4_find_frame_end() from h263dec.c to mpeg4video_parser.c
aurel
parents:
diff changeset
1 /*
3fcb2f0d9ef1 move ff_mpeg4_find_frame_end() from h263dec.c to mpeg4video_parser.c
aurel
parents:
diff changeset
2 * MPEG4 video parser prototypes
8629
04423b2f6e0b cosmetics: Remove pointless period after copyright statement non-sentences.
diego
parents: 7760
diff changeset
3 * Copyright (c) 2003 Fabrice Bellard
04423b2f6e0b cosmetics: Remove pointless period after copyright statement non-sentences.
diego
parents: 7760
diff changeset
4 * Copyright (c) 2003 Michael Niedermayer
4957
3fcb2f0d9ef1 move ff_mpeg4_find_frame_end() from h263dec.c to mpeg4video_parser.c
aurel
parents:
diff changeset
5 *
3fcb2f0d9ef1 move ff_mpeg4_find_frame_end() from h263dec.c to mpeg4video_parser.c
aurel
parents:
diff changeset
6 * This file is part of FFmpeg.
3fcb2f0d9ef1 move ff_mpeg4_find_frame_end() from h263dec.c to mpeg4video_parser.c
aurel
parents:
diff changeset
7 *
3fcb2f0d9ef1 move ff_mpeg4_find_frame_end() from h263dec.c to mpeg4video_parser.c
aurel
parents:
diff changeset
8 * FFmpeg is free software; you can redistribute it and/or
3fcb2f0d9ef1 move ff_mpeg4_find_frame_end() from h263dec.c to mpeg4video_parser.c
aurel
parents:
diff changeset
9 * modify it under the terms of the GNU Lesser General Public
3fcb2f0d9ef1 move ff_mpeg4_find_frame_end() from h263dec.c to mpeg4video_parser.c
aurel
parents:
diff changeset
10 * License as published by the Free Software Foundation; either
3fcb2f0d9ef1 move ff_mpeg4_find_frame_end() from h263dec.c to mpeg4video_parser.c
aurel
parents:
diff changeset
11 * version 2.1 of the License, or (at your option) any later version.
3fcb2f0d9ef1 move ff_mpeg4_find_frame_end() from h263dec.c to mpeg4video_parser.c
aurel
parents:
diff changeset
12 *
3fcb2f0d9ef1 move ff_mpeg4_find_frame_end() from h263dec.c to mpeg4video_parser.c
aurel
parents:
diff changeset
13 * FFmpeg is distributed in the hope that it will be useful,
3fcb2f0d9ef1 move ff_mpeg4_find_frame_end() from h263dec.c to mpeg4video_parser.c
aurel
parents:
diff changeset
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
3fcb2f0d9ef1 move ff_mpeg4_find_frame_end() from h263dec.c to mpeg4video_parser.c
aurel
parents:
diff changeset
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
3fcb2f0d9ef1 move ff_mpeg4_find_frame_end() from h263dec.c to mpeg4video_parser.c
aurel
parents:
diff changeset
16 * Lesser General Public License for more details.
3fcb2f0d9ef1 move ff_mpeg4_find_frame_end() from h263dec.c to mpeg4video_parser.c
aurel
parents:
diff changeset
17 *
3fcb2f0d9ef1 move ff_mpeg4_find_frame_end() from h263dec.c to mpeg4video_parser.c
aurel
parents:
diff changeset
18 * You should have received a copy of the GNU Lesser General Public
3fcb2f0d9ef1 move ff_mpeg4_find_frame_end() from h263dec.c to mpeg4video_parser.c
aurel
parents:
diff changeset
19 * License along with FFmpeg; if not, write to the Free Software
3fcb2f0d9ef1 move ff_mpeg4_find_frame_end() from h263dec.c to mpeg4video_parser.c
aurel
parents:
diff changeset
20 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
3fcb2f0d9ef1 move ff_mpeg4_find_frame_end() from h263dec.c to mpeg4video_parser.c
aurel
parents:
diff changeset
21 */
3fcb2f0d9ef1 move ff_mpeg4_find_frame_end() from h263dec.c to mpeg4video_parser.c
aurel
parents:
diff changeset
22
7760
c4a4495715dd Globally rename the header inclusion guard names.
stefano
parents: 5830
diff changeset
23 #ifndef AVCODEC_MPEG4VIDEO_PARSER_H
c4a4495715dd Globally rename the header inclusion guard names.
stefano
parents: 5830
diff changeset
24 #define AVCODEC_MPEG4VIDEO_PARSER_H
4957
3fcb2f0d9ef1 move ff_mpeg4_find_frame_end() from h263dec.c to mpeg4video_parser.c
aurel
parents:
diff changeset
25
3fcb2f0d9ef1 move ff_mpeg4_find_frame_end() from h263dec.c to mpeg4video_parser.c
aurel
parents:
diff changeset
26 #include "parser.h"
3fcb2f0d9ef1 move ff_mpeg4_find_frame_end() from h263dec.c to mpeg4video_parser.c
aurel
parents:
diff changeset
27
3fcb2f0d9ef1 move ff_mpeg4_find_frame_end() from h263dec.c to mpeg4video_parser.c
aurel
parents:
diff changeset
28 /**
3fcb2f0d9ef1 move ff_mpeg4_find_frame_end() from h263dec.c to mpeg4video_parser.c
aurel
parents:
diff changeset
29 * finds the end of the current frame in the bitstream.
3fcb2f0d9ef1 move ff_mpeg4_find_frame_end() from h263dec.c to mpeg4video_parser.c
aurel
parents:
diff changeset
30 * @return the position of the first byte of the next frame, or -1
3fcb2f0d9ef1 move ff_mpeg4_find_frame_end() from h263dec.c to mpeg4video_parser.c
aurel
parents:
diff changeset
31 */
3fcb2f0d9ef1 move ff_mpeg4_find_frame_end() from h263dec.c to mpeg4video_parser.c
aurel
parents:
diff changeset
32 int ff_mpeg4_find_frame_end(ParseContext *pc, const uint8_t *buf, int buf_size);
3fcb2f0d9ef1 move ff_mpeg4_find_frame_end() from h263dec.c to mpeg4video_parser.c
aurel
parents:
diff changeset
33
7760
c4a4495715dd Globally rename the header inclusion guard names.
stefano
parents: 5830
diff changeset
34 #endif /* AVCODEC_MPEG4VIDEO_PARSER_H */