diff options
author | Michael Niedermayer <michaelni@gmx.at> | 2011-12-16 18:55:04 +0100 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2011-12-16 18:55:04 +0100 |
commit | 227960427b726eaa6c83702e3d49679754cbc322 (patch) | |
tree | 240cd2a955d204400c87b3b4562aef1aed4fb4c3 /libavcodec/h264.c | |
parent | 902c0904139b532ae25113fb6e34fa4c5cdf7ebc (diff) | |
download | ffmpeg-227960427b726eaa6c83702e3d49679754cbc322.tar.gz |
h264: retuen the amount read in case of NAL_END_SEQUENCE
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
Diffstat (limited to 'libavcodec/h264.c')
-rw-r--r-- | libavcodec/h264.c | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/libavcodec/h264.c b/libavcodec/h264.c index 26f3a6385e..8a1784f94f 100644 --- a/libavcodec/h264.c +++ b/libavcodec/h264.c @@ -4046,15 +4046,15 @@ static int decode_frame(AVCodecContext *avctx, MpegEncContext *s = &h->s; AVFrame *pict = data; int buf_index; + Picture *out; + int i, out_idx; s->flags= avctx->flags; s->flags2= avctx->flags2; /* end of stream, output what is still in the buffers */ - out: if (buf_size == 0) { - Picture *out; - int i, out_idx; + out: s->current_picture_ptr = NULL; @@ -4075,7 +4075,7 @@ static int decode_frame(AVCodecContext *avctx, *pict= *(AVFrame*)out; } - return 0; + return buf_size; } if(h->is_avc && buf_size >= 9 && buf[0]==1 && buf[2]==0 && (buf[4]&0xFC)==0xFC && (buf[5]&0x1F) && buf[8]==0x67){ int cnt= buf[5]&0x1f; @@ -4105,7 +4105,8 @@ not_extra: return -1; if (!s->current_picture_ptr && h->nal_unit_type == NAL_END_SEQUENCE) { - buf_size = 0; + av_assert0(buf_index <= buf_size); + buf_size = buf_index; goto out; } |