Problème :
Après la correction de la race condition précédente, les fichiers étaient créés
sur disque mais la lecture commençait immédiatement, avant qu'il y ait
suffisamment de données. Cela causait des erreurs FLAC "Expected one more byte"
car le décodeur essayait de lire un fichier incomplet.
Solution - Prébuffering :
Attendre qu'une quantité minimale de données (512 KB par défaut, ~5 secondes de
FLAC) soit téléchargée avant que add_from_url() et add_from_reader() retournent
le pk. Cela permet au cache progressif de fonctionner correctement : le fichier
a suffisamment de données pour commencer la lecture pendant que le téléchargement
continue en arrière-plan.
Changements :
- Ajout d'un champ min_prebuffer_size dans Cache<C> (défaut: 512 KB)
- Ajout de méthodes set_prebuffer_size() et get_prebuffer_size()
- Ajout de la constante DEFAULT_PREBUFFER_SIZE (512 KB)
- Modification de add_from_url() : utilise wait_until_min_size()
- Modification de add_from_reader() : utilise wait_until_min_size()
- Cas où download déjà en cours : attend également le prébuffering
Résultat testé :
✓ L'exemple play_and_cache fonctionne sans erreur FLAC
✓ Le prébuffering garantit suffisamment de données avant la lecture
✓ Le cache progressif fonctionne : lecture pendant le téléchargement
✓ Configurable : peut être ajusté selon les besoins (0 = désactivé)