Hello ffmpeg Dev team, While integrating FFmpeg for M4A , MP4 stream & facing issue that mov demuxer trying to request seek for invalid seek offset. Issue details:- - Modified doc/examples/demuxing_decoding.c example to support Custom IO call-back because we have our own mechanism to read data from source - In custom IO seek call back , we do not support “whence” values AVSEEK_SIZE & SEEK_END , used to find stream size ( returning -1 in both the cases ). - In attached screen shot , where we are observing seek with invalid seek offset and the seek requested after End of stream is detected - Seek offset value 9223372036854775799 always the same ( I think INT64_MAX – 8 , 8 is length Atom type & size field ) - If we allow to return proper stream size in seek callback then this problem is not observed. Fix : In attached patch to verify EOS condition before going to parse atom data. Signed-off-by: Janpriya Malviya --- libavformat/mov.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/libavformat/mov.c b/libavformat/mov.c index 6c847de..9704550 100644 --- a/libavformat/mov.c +++ b/libavformat/mov.c @@ -7556,6 +7556,10 @@ static int mov_read_default(MOVContext *c, AVIOContext *pb, MOVAtom atom) if (atom.size >= 8) { a.size = avio_rb32(pb); a.type = avio_rl32(pb); + + if(avio_feof(pb)) + continue; + if (((a.type == MKTAG('f','r','e','e') && c->moov_retry) || a.type == MKTAG('h','o','o','v')) && a.size >= 8 && -- 2.7.4