Hi team, So I'm trying to implement seeking in the FILM demuxer to the best of my understanding. First off, FILM file chunks have a key frame bit which makes seeking feasible. This is the strategy I'm using: 1) When opening the file and building a chunk index, count the number of chunks in the 1st second of the file and assume this is the average number of chunks per second. 2) When reading a chunk into a demuxer packet, my demuxer keeps track of the current chunk number and just increments the number after reading a chunk. 3) Per my understanding of seeking, it involves adjusting the current chunk number so that when the fill_buffer() function is called, it starts getting packets with PTSs from the right time. That's why I'm computing: int new_current_chunk = current_chunk + rel_seek_secs * chunks_per_second; If the new_current_chunk isn't a key frame, I search back until the number is sitting on a key frame. Then I set the current_chunk to the new_current_chunk. It doesn't work. Within the first 10 seconds of a file, I can press the back button and the FILM correctly seeks to the beginning. But pressing the back button after the first 10 seconds or pressing the forward button at any time basically causes MPlayer to freeze playing. When I press 'q' in this state, after a few seconds, it will quit. PgUp and PgDn both do the right thing, though. What am I missing? Thanks... -- -Mike Melanson
participants (1)
-
Mike Melanson