[Ffmpeg-devel] avformat/av_seek_frame_binary with growing file

Kenneth Aafløy kenneth
Thu Jun 9 01:59:15 CEST 2005


Hi,

I'm implementing a server/client which makes use of libavformat/codec to 
handle reading and decoding through an abstraction layer. I'm reading files 
through the http protocol handling implemented in this abstraction layer, 
from files that may or may not be currently recording. I've chosen not to set 
the is_streamed flag of urlcontext, since that would limit my options when it 
comes to seeking. The http protocol implementation prefers http/1.1 partial 
content request/responses, so seeking is relativly easy to implement. 
However, in av_seek_frame_binary (which is used with mpeg ts formats) there 
is a for (;;) loop which does not care much for a file that is currently 
growing in size :

       for(;;){
            int64_t tmp_pos= pos_max + 1;
            int64_t tmp_ts= avif->read_timestamp(s, stream_index, &tmp_pos, 
INT64_MAX);
            if(tmp_ts == AV_NOPTS_VALUE)
                break;
            ts_max= tmp_ts;
            pos_max= tmp_pos;
        }

If I put a 'if (tmp_pos > filesize) break;' after 'int64_t tmp_pos = ....' my 
seeks with growing files will happily succeed.

Kennethff





More information about the ffmpeg-devel mailing list