After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 631389 - [flacparse] backport/check corner case fixes done in flacdec
[flacparse] backport/check corner case fixes done in flacdec
Status: RESOLVED FIXED
Product: GStreamer
Classification: Platform
Component: gst-plugins-bad
git master
Other Linux
: Normal enhancement
: 0.10.21
Assigned To: GStreamer Maintainers
GStreamer Maintainers
Depends on:
Blocks: 616921
 
 
Reported: 2010-10-05 09:37 UTC by Tim-Philipp Müller
Modified: 2010-11-17 14:47 UTC
See Also:
GNOME target: ---
GNOME version: ---



Description Tim-Philipp Müller 2010-10-05 09:37:18 UTC
I have a vague memory of misc. corner case fixes we've done in flacdec to fix various things. Now that flacparse is autoplugged, we should go through the fixes done to flacdec and make sure they work in flacparse too.

IIRC most of those were about figuring out the correct duration in all cases (where header has no duration, where header has wrong duration/file is truncated). Finding the last frame and extracting the sample number from that should do the trick. BaseParse should support that if it doesn't do that already (where that = framed formats that have some sort of timestamp/position marker in the frame header).

Should probably also implement seek table support.
Comment 1 Sebastian Dröge (slomo) 2010-10-25 12:25:35 UTC
Yes, seek table support *must* be implemented before moving flacparse to good and always use it. Otherwise seeking always requires to read the complete file up to the target position.

Do you have any details about the other things in flacdec?
Comment 2 Mark Nauwelaerts 2010-11-17 14:47:35 UTC
AFAIK, not having a seektable need not require reading the whole file (at least if not accurate seeking); an estimate (bitrate-based) seek will be done.

I could not (obviously) find other tricks in flacdec, so the following should cover the above (if not, reopen):


commit 36cbbd94c614ed2b341e075a5f1d43cb75b884cd
Author: Mark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>
Date:   Tue Nov 16 12:11:53 2010 +0100

    flacparse: parse seektable
    
    Fixes #631389 (partially).

commit 9b6439a36c6d0a19c03adbbed78ebc4f8c949e3c
Author: Mark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>
Date:   Wed Nov 17 14:30:09 2010 +0100

    baseparse: enhancements for timestamp marked framed formats
    
    That is, as such formats allow subclass to extract position from frame,
    it is possible to extract duration (if not otherwise provided)
    from (near) last frame, and a seek can fairly accurately target the required
    position.
    
    Fixes #631389.