Martijn van Beurden wrote:

> Furthermore, I discovered
> another bug checking the OGG seektable bug that is mentioned in
> documentation_bugs.html, when encoding to OGG (with flac --ogg
> somefile.wav) the progress indication is broken. I can't
> remember this was the case with FLAC 1.2.1

Yes, flac.exe 1.2.1b writes progress info as expected. But I downloaded the
sources of flac 1.2.1, built it with MSVS2013 and it fails just as flac 1.3.0.
So probably that's because of changes in libogg (I use libogg 1.3.2).

There's a code in encoder_progress_callback() in src/flac/encode.c:

        if(e->total_samples_to_encode > 0 && !((frames_written-1) & 
e->stats_mask))
                print_stats(e);

e->stats_mask is 0x7 or 0xf or 0x3f. So every 8 or 16 or 64 of frames_written
flac prints progress stats (imho the values of stats_mask should be updated:
they're too small for current processors).

But with --ogg option, frames_written variable updates differently, so
"!((frames_written-1) & e->stats_mask)" is much more rarely equal to true.


A possible solution is to replace e->stats_mask with e->old_frames_written
and e->stats_frames_interval:

        if(e->total_samples_to_encode > 0
           && frames_written - e->old_frames_written > 
e->stats_frames_interval) {
                print_stats(e);
                e->old_frames_written = frames_written;
        }


Also, encoder_progress_callback() calculates e->compression_ratio
even when e->progress == 0.0, so it becomes 1.#INF.
_______________________________________________
flac-dev mailing list
flac-dev@xiph.org
http://lists.xiph.org/mailman/listinfo/flac-dev

Reply via email to