Hi Raphy,
Thank you for maintaining Squeezelite! It's a great piece of software.
Sorry to resurrect an old thread, but I wanted to express interest in squashing this bug if you were game to keep digging. My details:
* intermittent pauses in playback, about 20s long
* seems to happen most with long, low-bitrate, fixed-length (but streamed) content (ex. podcasts)
* occurs regardless of the "Cache HTTP(S) streams on disk" option in LMS
* a playerOutputUnderrun is logged in LMS and an STMo in Squeezelite
* the bug does not occur when a large streambuf value is used (-b 524288)
* both LMS (v8.2.0) and Squeezelite (v1.9.9-1392) are hosted on the same Windows 10 machine
With a small streambuf value of 262144 (my other command line flags are -r 96000-96000 -R vLE), the bug is reproducible by seeking to the last 30 minutes of this file and playing to the end: https://traffic.libsyn.com/secure/thebestshow/TBS_010422.mp3?dest-id=232563
Here's an example where LMS reports that it's reached the end of the stream:
This is the last message from stream_thread until the interruption:
streambuf is entirely full:
streambuf now begins to drain:
1863 bytes seem to be stuck in the streambuf, however:
outputbuf is almost drained:
outputbuf has underrun:
Notably, there are neither end of stream or error reading messages in the logs. I'm actually uncertain if this code runs:
https://github.com/ralph-irving/squeezelite/blob/874e4f97d979fbe9b396c1997730a1a2d6797964/stream.c#L407-L410
If the USE_SSL flag is on, doesn't _last_error() always evaluate to ERROR_WOULDBLOCK?
https://github.com/ralph-irving/squeezelite/blob/874e4f97d979fbe9b396c1997730a1a2d6797964/stream.c#L54
I have a visualization to share, but I'll save that for the next post. Thanks, again!
Thank you for maintaining Squeezelite! It's a great piece of software.
Sorry to resurrect an old thread, but I wanted to express interest in squashing this bug if you were game to keep digging. My details:
* intermittent pauses in playback, about 20s long
* seems to happen most with long, low-bitrate, fixed-length (but streamed) content (ex. podcasts)
* occurs regardless of the "Cache HTTP(S) streams on disk" option in LMS
* a playerOutputUnderrun is logged in LMS and an STMo in Squeezelite
* the bug does not occur when a large streambuf value is used (-b 524288)
* both LMS (v8.2.0) and Squeezelite (v1.9.9-1392) are hosted on the same Windows 10 machine
With a small streambuf value of 262144 (my other command line flags are -r 96000-96000 -R vLE), the bug is reproducible by seeking to the last 30 minutes of this file and playing to the end: https://traffic.libsyn.com/secure/thebestshow/TBS_010422.mp3?dest-id=232563
Here's an example where LMS reports that it's reached the end of the stream:
Code:
[22-01-14 15:54:35.8045] Slim::Player::Source::_readNextChunk (378) end of file or error on socket, song pos: 108940249 [22-01-14 15:54:35.8048] Slim::Player::Source::_readNextChunk (383) b0:6e:bf:c1:42:ef mark end of stream [22-01-14 15:54:35.8060] Slim::Player::StreamingController::_setStreamingState (2386) new streaming state STREAMOUT
Code:
[15:56:36.037] stream_thread:428 streambuf read 1800 bytes
Code:
[15:56:37.015] sendSTAT:200 received bytesL: 17235672 streambuf: 253143 outputbuf: 6478080 calc elapsed: 1689681 real elapsed: 1689703 (diff: -22) device: 29 delay: 31
Code:
[15:56:49.477] decode_thread:75 streambuf bytes: 129663 outputbuf space: 684959
Code:
[15:57:04.005] sendSTAT:200 received bytesL: 17235672 streambuf: 1863 outputbuf: 5025120 calc elapsed: 1716670 real elapsed: 1716687 (diff: -17) device: 29 delay: 0
Code:
[15:57:10.010] sendSTAT:200 received bytesL: 17235672 streambuf: 1863 outputbuf: 432480 calc elapsed: 1722666 real elapsed: 1722703 (diff: -37) device: 29 delay: 16
Code:
[15:57:11.011] sendSTAT:195 STAT: STMo [15:57:11.011] sendSTAT:200 received bytesL: 17235672 streambuf: 1863 outputbuf: 0 calc elapsed: 1723254 real elapsed: 1723703 (diff: -449) device: 29 delay: 31
https://github.com/ralph-irving/squeezelite/blob/874e4f97d979fbe9b396c1997730a1a2d6797964/stream.c#L407-L410
If the USE_SSL flag is on, doesn't _last_error() always evaluate to ERROR_WOULDBLOCK?
https://github.com/ralph-irving/squeezelite/blob/874e4f97d979fbe9b396c1997730a1a2d6797964/stream.c#L54
I have a visualization to share, but I'll save that for the next post. Thanks, again!
Comment