@@ -392,7 +392,7 @@ void ESP32_VS1053_Stream::_playFromRingBuffer()
392
392
393
393
const unsigned long start = millis ();
394
394
const auto MAX_TIME_MS = 15 ;
395
- // size_t bytesToDecoder = 0;
395
+ // size_t bytesToDecoder = 0;
396
396
while (_remainingBytes && _vs1053->data_request () && millis () - start < MAX_TIME_MS)
397
397
{
398
398
size_t size = 0 ;
@@ -404,7 +404,7 @@ void ESP32_VS1053_Stream::_playFromRingBuffer()
404
404
}
405
405
_vs1053->playChunk (data, size);
406
406
vRingbufferReturnItem (_ringbuffer_handle, data);
407
- // bytesToDecoder += size;
407
+ // bytesToDecoder += size;
408
408
_remainingBytes -= _remainingBytes > 0 ? size : 0 ;
409
409
}
410
410
log_d (" spend %lu ms stuffing %i bytes in decoder" , millis () - start, bytesToDecoder);
@@ -414,7 +414,7 @@ void ESP32_VS1053_Stream::_streamToRingBuffer(WiFiClient *const stream)
414
414
{
415
415
const auto MAX_TIME_MS = 10 ;
416
416
const auto start = millis ();
417
- // size_t bytesToRingBuffer = 0;
417
+ // size_t bytesToRingBuffer = 0;
418
418
while (stream && stream->available () && _musicDataPosition < _metaDataStart && millis () - start < MAX_TIME_MS)
419
419
{
420
420
const size_t BYTES_AVAILABLE = _metaDataStart ? _metaDataStart - _musicDataPosition : stream->available ();
@@ -432,7 +432,7 @@ void ESP32_VS1053_Stream::_streamToRingBuffer(WiFiClient *const stream)
432
432
return ;
433
433
}
434
434
435
- // bytesToRingBuffer += BYTES_IN_BUFFER;
435
+ // bytesToRingBuffer += BYTES_IN_BUFFER;
436
436
_musicDataPosition += _metaDataStart ? BYTES_IN_BUFFER : 0 ;
437
437
}
438
438
log_d (" spend %lu ms stuffing %i bytes in ringbuffer" , millis () - start, bytesToRingBuffer);
@@ -458,7 +458,7 @@ void ESP32_VS1053_Stream::_handleStream(WiFiClient *const stream)
458
458
{
459
459
const auto MAX_TIME_MS = 15 ;
460
460
const auto start = millis ();
461
- // size_t bytesToDecoder = 0;
461
+ // size_t bytesToDecoder = 0;
462
462
while (stream && stream->available () && _vs1053->data_request () && _remainingBytes &&
463
463
_musicDataPosition < _metaDataStart && millis () - start < MAX_TIME_MS)
464
464
{
@@ -472,7 +472,7 @@ void ESP32_VS1053_Stream::_handleStream(WiFiClient *const stream)
472
472
_vs1053->playChunk (_vs1053Buffer, BYTES_IN_BUFFER);
473
473
_remainingBytes -= _remainingBytes > 0 ? BYTES_IN_BUFFER : 0 ;
474
474
_musicDataPosition += _metaDataStart ? BYTES_IN_BUFFER : 0 ;
475
- // bytesToDecoder += BYTES_IN_BUFFER;
475
+ // bytesToDecoder += BYTES_IN_BUFFER;
476
476
}
477
477
log_d (" spend %lu ms stuffing %i bytes in decoder" , millis () - start, bytesToDecoder);
478
478
}
@@ -494,7 +494,7 @@ void ESP32_VS1053_Stream::_handleStream(WiFiClient *const stream)
494
494
void ESP32_VS1053_Stream::_chunkedStreamToRingBuffer (WiFiClient *const stream)
495
495
{
496
496
const auto MAX_TIME_MS = 10 ;
497
- // size_t bytesToRingBuffer = 0;
497
+ // size_t bytesToRingBuffer = 0;
498
498
const auto start = millis ();
499
499
while (stream && stream->available () && _bytesLeftInChunk && _musicDataPosition < _metaDataStart && millis () - start < MAX_TIME_MS)
500
500
{
@@ -514,7 +514,7 @@ void ESP32_VS1053_Stream::_chunkedStreamToRingBuffer(WiFiClient *const stream)
514
514
}
515
515
516
516
_bytesLeftInChunk -= BYTES_IN_BUFFER;
517
- // bytesToRingBuffer += BYTES_IN_BUFFER;
517
+ // bytesToRingBuffer += BYTES_IN_BUFFER;
518
518
_musicDataPosition += _metaDataStart ? BYTES_IN_BUFFER : 0 ;
519
519
}
520
520
log_d (" spend %lu ms stuffing %i bytes in ringbuffer" , millis () - start, bytesToRingBuffer);
@@ -549,7 +549,7 @@ void ESP32_VS1053_Stream::_handleChunkedStream(WiFiClient *const stream)
549
549
{
550
550
const auto MAX_TIME_MS = 15 ;
551
551
const auto start = millis ();
552
- // size_t bytesToDecoder = 0;
552
+ // size_t bytesToDecoder = 0;
553
553
while (stream && stream->available () && _bytesLeftInChunk && _vs1053->data_request () && _musicDataPosition < _metaDataStart && millis () - start < MAX_TIME_MS)
554
554
{
555
555
const size_t BYTES_AVAILABLE = min (_bytesLeftInChunk, (size_t )_metaDataStart - _musicDataPosition);
@@ -562,7 +562,7 @@ void ESP32_VS1053_Stream::_handleChunkedStream(WiFiClient *const stream)
562
562
_vs1053->playChunk (_vs1053Buffer, BYTES_IN_BUFFER);
563
563
_bytesLeftInChunk -= BYTES_IN_BUFFER;
564
564
_musicDataPosition += _metaDataStart ? BYTES_IN_BUFFER : 0 ;
565
- // bytesToDecoder += BYTES_IN_BUFFER;
565
+ // bytesToDecoder += BYTES_IN_BUFFER;
566
566
}
567
567
log_d (" spend %lu ms stuffing %i bytes in decoder" , millis () - start, bytesToDecoder);
568
568
}
@@ -644,11 +644,21 @@ void ESP32_VS1053_Stream::loop()
644
644
_eofStream ();
645
645
return ;
646
646
}
647
+ return ;
648
+ }
649
+
650
+ if (_ringbuffer_handle && stream && !stream->available ())
651
+ {
652
+ if (!_streamStalledTime)
653
+ {
654
+ _streamStalledTime = millis ();
655
+ _streamStalledTime += _streamStalledTime ? 0 : 1 ;
656
+ }
647
657
}
648
658
649
- if (_streamStalledTime)
659
+ if (stream && stream-> available () && _streamStalledTime)
650
660
{
651
- log_d (" Stream stalled for %lu ms" , millis () - _streamStalledTime);
661
+ log_w (" Stream stalled for %lu ms" , millis () - _streamStalledTime);
652
662
_streamStalledTime = 0 ;
653
663
}
654
664
0 commit comments