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
This commit is contained in:
Roman Artiukhin 2026-07-23 19:41:40 +03:00
parent dbd53ef8ae
commit 958e84c042

View file

@ -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);
}