[FFmpeg-devel] [PATCH 02/28] changed: allow reading of growing avi files (ie currently being written)
Mans Rullgard
mans
Wed Jun 30 11:09:30 CEST 2010
From: Cory Fields <theuni-nospam- at xbmc.org>
---
libavformat/avidec.c | 8 ++++----
1 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/libavformat/avidec.c b/libavformat/avidec.c
index 485c4eb..730b3b7 100644
--- a/libavformat/avidec.c
+++ b/libavformat/avidec.c
@@ -125,7 +125,7 @@ static int read_braindead_odml_indx(AVFormatContext *s, int frame_num){
AVIStream *ast;
int i;
int64_t last_pos= -1;
- int64_t filesize= url_fsize(s->pb);
+ int64_t filesize= avi->fsize;
#ifdef DEBUG_SEEK
av_log(s, AV_LOG_ERROR, "longs_pre_entry:%d index_type:%d entries_in_use:%d chunk_id:%X base:%16"PRIX64"\n",
@@ -281,7 +281,7 @@ static int avi_read_header(AVFormatContext *s, AVFormatParameters *ap)
return -1;
avi->fsize = url_fsize(pb);
- if(avi->fsize<=0)
+ if(avi->fsize<=0 || avi->fsize < avi->riff_end)
avi->fsize= avi->riff_end == 8 ? INT64_MAX : avi->riff_end;
/* first list tag */
@@ -308,7 +308,7 @@ static int avi_read_header(AVFormatContext *s, AVFormatParameters *ap)
if (tag1 == MKTAG('m', 'o', 'v', 'i')) {
avi->movi_list = url_ftell(pb) - 4;
if(size) avi->movi_end = avi->movi_list + size + (size & 1);
- else avi->movi_end = url_fsize(pb);
+ else avi->movi_end = avi->fsize;
dprintf(NULL, "movi end=%"PRIx64"\n", avi->movi_end);
goto end_of_header;
}
@@ -630,7 +630,7 @@ static int avi_read_header(AVFormatContext *s, AVFormatParameters *ap)
av_log(s, AV_LOG_ERROR, "Something went wrong during header parsing, "
"I will ignore it and try to continue anyway.\n");
avi->movi_list = url_ftell(pb) - 4;
- avi->movi_end = url_fsize(pb);
+ avi->movi_end = avi->fsize;
goto end_of_header;
}
/* skip tag */
--
1.7.1.1
More information about the ffmpeg-devel
mailing list