[Ffmpeg-devel] [Bad news]: MPEG Seek has failed to work in FFmpeg SVN

Michael Niedermayer michaelni
Mon Nov 6 20:51:19 CET 2006


Hi

On Mon, Nov 06, 2006 at 07:42:08PM +0100, Steve Lhomme wrote:
> Michael Niedermayer wrote:
> >Hi
> >
> >On Mon, Nov 06, 2006 at 06:59:50PM +0100, Steve Lhomme wrote:
> >>Diego Biurrun wrote:
> >>>On Mon, Nov 06, 2006 at 05:58:52PM +0100, Steve Lhomme wrote:
> >>>>OK, I only added the possibility in ffplay to seek by bytes instead of 
> >>>>time. Now you can play chems1.vob, seek back a few times and it will 
> >>>>crash (on MinGW at least). It doesn't with our custom patch that was 
> >>>>discussed a long time ago as a non valid/clean solution.
> >>>>
> >>>>$ ./ffplay.exe -bytes /C/test/DivX/chems1.vob
> >>>Forgot to attach the patch?
> >>What patch ?
> >>;)
> >
> >looks ok with one exception
> >
> >
> >[...]
> >>-                incr = -10.0;
> >>+                if (seek_by_bytes)
> >>+                    incr = 1861818;
> >>+                else
> >>+                    incr = -10.0;
> >>                 goto do_seek;
> >>             case SDLK_RIGHT:
> >>-                incr = 10.0;
> >>+                if (seek_by_bytes)
> >>+                    incr = 1861818;
> >>+                else
> >>+                    incr = 10.0;
> >>                 goto do_seek;
> >>             case SDLK_UP:
> >>-                incr = 60.0;
> >>+                if (seek_by_bytes)
> >>+                    incr = 8861818;
> >>+                else
> >>+                    incr = 60.0;
> >>                 goto do_seek;
> >>             case SDLK_DOWN:
> >>-                incr = -60.0;
> >>+                if (seek_by_bytes)
> >>+                    incr = -8861818;
> >>+                else
> >>+                    incr = -60.0;
> >>             do_seek:
> >>                 if (cur_stream) {
> >>-                    pos = get_master_clock(cur_stream);
> >>-                    pos += incr;
> >>-                    stream_seek(cur_stream, (int64_t)(pos * 
> >>AV_TIME_BASE), incr);
> >>+                    if (seek_by_bytes) {
> >>+                        pos = url_ftell(&cur_stream->ic->pb);
> >>+                        pos += incr;
> >>+                        stream_seek(cur_stream, pos, incr);
> >>+                    } else {
> >>+                        pos = get_master_clock(cur_stream);
> >>+                        pos += incr;
> >>+                        stream_seek(cur_stream, (int64_t)(pos * 
> >>AV_TIME_BASE), incr);
> >>+                    }
> >
> >the above should rather set incr like it did and then muliply that by
> >AVFormatContext.bit_rate, if not zero if 0 then some default
> 
> Yeah, I just put the actual size/location of where it crashes in 
> chems1.vob in our app. Here's another patch with a more general value. 
> (I made sure chems1.vob crashes too).

looks ok


[...]
-- 
Michael     GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB

In the past you could go to a library and read, borrow or copy any book
Today you'd get arrested for mere telling someone where the library is




More information about the ffmpeg-devel mailing list