[FFmpeg-devel] EOF and IO error checking

Marton Balint cus at passwd.hu
Sat Aug 17 22:10:59 EEST 2019


Hi,

As you might now avio_feof() returns true both in case of actual EOF and 
in case of IO errors.

Some demuxers (matroska) have special handling for this exact reason, 
e.g.:

if (avio_feof(pb)) {
     if (pb->error) {
         return pb->error;
     } else {
         return AVERROR_EOF;
     }
}

Most of the demuxers do not, so there is a real chance that IO errrors 
are mistaken for EOF.

What should we do about this?

a) Fix every demuxer to return IO error if there is one.

b) Add special code to ff_read_packet which checks if there is an error in 
the IO context and return that if there is?

c) Add code to ffmpeg.c which checks the IO context error code after every 
av_read_frame call?

Some other idea? Which one is preferred from these?

Thanks,
Marton




More information about the ffmpeg-devel mailing list