codec: flac: fix playback of certain files

rockbox-gerrit-noreply--- via rockbox-cvs <[email protected]> Thu, 23 Jul 2026 21:06:49 -0400
Newsgroups gmane.comp.systems.archos.rockbox.cvs
Message-ID <[email protected]>
commit 958e84c042fe8f0392b89317711fcc73bd573e64
Author: Roman Artiukhin <[email protected]>
Date:   Thu Jul 23 19:41:40 2026 +0300

    codec: flac: fix playback of certain files
    
    Use flac_seek by time even when elapsedtime is 0, and apply it as a fallback for failed offset seeks since it provides more robust error recovery.
    
    Change-Id: I438888fba02bda38137f3f1347bb1f657ef9c166

diff --git a/lib/rbcodec/codecs/flac.c b/lib/rbcodec/codecs/flac.c
index 0a9d535c3e..00d4dd71ca 100644
--- a/lib/rbcodec/codecs/flac.c
+++ b/lib/rbcodec/codecs/flac.c
@@ -490,9 +490,7 @@ enum codec_status codec_run(void)
     ci->configure(DSP_SET_STEREO_MODE, fc.channels == 1 ?
                   STEREO_MONO : STEREO_NONINTERLEAVED);
     codec_set_replaygain(ci->id3);
-
-    if (samplesdone || !elapsedtime) {
-        flac_seek_offset(&fc, samplesdone);
+    if (samplesdone && flac_seek_offset(&fc, samplesdone)) {
         samplesdone=fc.samplenumber+fc.blocksize;
         elapsedtime=((uint64_t)samplesdone*1000)/(ci->id3->frequency);
     }
-- 
rockbox-cvs mailing list
[email protected]
https://lists.haxx.se/mailman/listinfo/rockbox-cvs