Das sieht soweit alles gut aus! @Joe91 gibt es noch etwas zum Testen, das für dich noch nicht so passt? Ich meine:
Ich würde Vorschlagen für alle Datein, wo das aktuell noch nicht geht, das einfach trotzdem so zu lassen und damit zu leben. Das Abwarten bis die mittlere Bitrate bekannt ist und dann dynamisch die Position zu setzten gefällt mir nicht so arg …
Bei fast allen Dateien, die ihr verwendet (mp3, m4a und flac) gibt es Metadaten mit der Bitrate. Ausnahmen sind selbst erstelle Dateien aus Streams die manuell bearbeitet wurden oder super alte mp3 Dateien ohne Xing oder Info Header.
Wenn ihr zur Bearbeitung von Dateien so etwas wie Audacity verwendet oder Codec Konvertierungsprogramme (mit ffmpeg auf aktuellen PCs) wird es nie Probleme geben.
Was noch fehlt sind in ogg gekapselte Dateien. Dazu wird im letzten OggS Block die Granule-Position und aus den ersten OggS Block die Samplerate ausgelesen. Daraus lässt sich Bitrate und Dauer berechnen. Das dauert aber noch etwas bis das in VORBIS und OPUS eingebaut ist.
a) In der Variable tiemeoutSetStartPos ist ein Typo
b) Was passiert mit Log_Println("not done yet", LOGLEVEL_NOTICE); ?
Verlieren werden wir beim Update halt die gespeicherten Hörbuchstände, aber ich denke das ist jetzt auch nicht fürchterlich dramatisch. Hab jetzt allerdings noch nicht getestet, was passiert, wenn im NVS eine sehr große Zahl (in Bytes) gespeichert ist und man nach dem Firmware-Update dann versucht, an diese Position zu springen.