[gst-devel] seeking VBR
xavier.bestel at free.fr
Wed Nov 27 04:15:02 CET 2002
Le mer 27/11/2002 Ã 12:27, Joshua N Pritikin a Ã©critÂ :
> On Wed, Nov 27, 2002 at 11:53:59AM +0100, Xavier Bestel wrote:
> > Le mer 27/11/2002 Ã 11:09, Joshua N Pritikin a Ã©critÂ :
> > > OK, but there are still some steps remaining to achieve frame-accurate
> > > seek with only an I-frame index:
> > >
> > > * Seek to the nearest I-frame
> > > * Decode the I-frame, but don't display it
> > > * Decode, but don't display the intermediate P & B frames
> > > * Once the desired frame is found then resume normal playback
> > IMHO all this should only be done by the app. The app would just ask
> > "what's the I frame just before that point" and seek there, then it
> > would decode until it reaches the desired time point. This would enable
> > some apps to do something useful with the decoded frames (even if they
> > are not displayed), e.g. cache them.
> Yah, that's fine too. However, we still need to provide an API
> to accomplish it. Currently, i don't think there is a way to tell
> xvideosink to skip the next 3 frames or osssink to drop the next
> 3/25 seconds. (Correct me if i am mistaken.) Something like a
> semi-flush event?
Just disconnect it for 3 frames ?
> > Some apps
> > will want to save some other metadata about the mpeg, and want to avoid
> > to have a gazillion metafiles. Nautilus could integrate the timecache in
> > its metadata.
> What use cases do you have in mind? Nautilus can store a tar of
> XML & binary data in its metadata-cache just as easily as any other
> format, no?
I was thinking about an NLE who could save other informations (corrected
ratio, etc.) with the timecache.
But the more I think about it, the more I feel the "right" solution is
input-plugin dependant: saving would vary very much depending on where
the data comes from. A streaming client or a file plugin won't do the
same thing. The gnome-vfs plugin should take advantage of the nautilus
> > Plus, some apps don't need the certainty info (e.g. a NLE
> > will always start indexing from beginning, so its indexes will be
> > certain).
> The certainty flags consume an insignificant amount of space. i don't
> see any reason to omit them, even if they remain unused.
> Another idea which is probably obvious: When we convert fuzzy or uncertain
> data into certain data, maybe we can avoid changing all the values.
> For example, if all timestamps are changing by a constant amount
> then we can add a timestamp_base field to the TimeCacheGroup and
> only update this one value.
Mmh .. this seems unnecessary complex. I don't think doing a bunch of
additions to convert the timestamps from relative to absolute will have
any mesurable cost.
More information about the gstreamer-devel