[Ffmpeg-devel] [RFC] av_seek_frame behaviour
Sun Apr 22 17:33:32 CEST 2007
On Sun, Apr 22, 2007 at 04:13:42PM +0200, Baptiste Coudurier wrote:
> Reimar D?ffinger a ?crit :
> > On Sun, Apr 22, 2007 at 02:50:52AM +0200, Baptiste Coudurier wrote:
> >> I think about always returning after demuxer seek function, see patch.
> >> It might be wrong, and missed some demuxers behaviour.
> > This will most likely break seeking for gxf files without index.
> Ouch, therefore problem is there for 10gb without index GXF files as
> well. Btw, it would be very much more efficient to seek on MEDIA packet
> for GXF, when no index is found.
That is what av_seek_frame_binary does for gxf. And your patch removes
that av_seek_frame_binary fallback...
> > If anything, introduce two different return values, one indicating that
> > the frame definitely is not there and another one to indicate that we
> > should try the other seek methods.
> > But that still will not fix your problem. From the description I'd say
> > what you want is a FAST_SEEK_ONLY flag or similar that would only allow
> > seek methods with O(log n) max. (which is another things that IMO is
> > wrong with that patch, av_seek_frame_binary is O(log n), so except for
> > streamed content there is not much reason to try that as well.
> That has nothing to do with my patch, current code will always try
> av_seek_frame_binary if demuxer has read_timestamp and no seek function
> or if its seek function returned < 0.
?? Why do my suggestions to fix the problem in a "proper" way (i.e. without
removing the feature of falling back to possibly more reliable seek methods
as your patch does) have nothing to do with your patch?
> What about calling av_seek_frame_generic only for formats having
> AVFMT_GENERIC_INDEX ?
Well, IMO any such fixed problem does not solve what I feel is the real
problem: Some people will want fast seeks, others need them to be as
precise as possible. But solving that problem might be too much effort
just for this one issue.
Don't know what exactly AVFMT_GENERIC_INDEX is intended for, so also not
sure if that's a good use for it.
And what about av_seek_frame_binary? Still always calling it whenever
the "main" seek function is fails?
More information about the ffmpeg-devel