From 559ae20dda9e84abf878ee10f8dcea78dacfd0cc Mon Sep 17 00:00:00 2001 From: Michael Niedermayer Date: Fri, 16 Dec 2011 15:40:21 +0100 Subject: [PATCH] lavf: Update AVIOContext.maxsize when hitting the end. Signed-off-by: Michael Niedermayer --- libavformat/utils.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/libavformat/utils.c b/libavformat/utils.c index 10cd6f3066..379ee2b34b 100644 --- a/libavformat/utils.c +++ b/libavformat/utils.c @@ -269,10 +269,17 @@ int av_get_packet(AVIOContext *s, AVPacket *pkt, int size) { int ret; - if(s->maxsize>0){ + if(s->maxsize>=0){ int64_t remaining= s->maxsize - avio_tell(s); - if(remaining>=0) - size= FFMIN(size, remaining); + if(remaining < size){ + int64_t newsize= avio_size(s); + if(!s->maxsize || s->maxsizemaxsize= newsize; + remaining= s->maxsize - avio_tell(s); + } + + if(s->maxsize>=0 && remaining>=0) + size= FFMIN(size, remaining+1); } ret= av_new_packet(pkt, size);