diff options
author | Michael Niedermayer <michaelni@gmx.at> | 2003-07-23 09:58:02 +0000 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2003-07-23 09:58:02 +0000 |
commit | e9174ba460aee4dd6b90ad598ebbaea683f774bf (patch) | |
tree | ae4199ee59d80d9cd6b25b43d05f96aaf4cdef2a | |
parent | a15e68deb6a0578941c8471c4b2b9b03f920ffab (diff) | |
download | ffmpeg-e9174ba460aee4dd6b90ad598ebbaea683f774bf.tar.gz |
last frame decoding fix
Originally committed as revision 2074 to svn://svn.ffmpeg.org/ffmpeg/trunk
-rw-r--r-- | libavcodec/h263dec.c | 12 | ||||
-rw-r--r-- | libavcodec/mpeg12.c | 9 |
2 files changed, 14 insertions, 7 deletions
diff --git a/libavcodec/h263dec.c b/libavcodec/h263dec.c index aee93e82f1..01defcd721 100644 --- a/libavcodec/h263dec.c +++ b/libavcodec/h263dec.c @@ -401,9 +401,17 @@ uint64_t time= rdtsc(); s->flags= avctx->flags; *data_size = 0; - - /* no supplementary picture */ + + /* no supplementary picture */ if (buf_size == 0) { + /* special case for last picture */ + if (s->low_delay==0 && s->next_picture_ptr) { + *pict= *(AVFrame*)s->next_picture_ptr; + s->next_picture_ptr= NULL; + + *data_size = sizeof(AVFrame); + } + return 0; } diff --git a/libavcodec/mpeg12.c b/libavcodec/mpeg12.c index e84fa55133..99678500e7 100644 --- a/libavcodec/mpeg12.c +++ b/libavcodec/mpeg12.c @@ -2231,12 +2231,11 @@ static int mpeg_decode_frame(AVCodecContext *avctx, *data_size = 0; /* special case for last picture */ - if (buf_size == 0) { - if (s2->picture_number > 0) { - *picture= *(AVFrame*)&s2->next_picture; + if (buf_size == 0 && s2->low_delay==0 && s2->next_picture_ptr) { + *picture= *(AVFrame*)s2->next_picture_ptr; + s2->next_picture_ptr= NULL; - *data_size = sizeof(AVFrame); - } + *data_size = sizeof(AVFrame); return 0; } |