mirror of
https://github.com/badaix/snapcast.git
synced 2025-05-30 01:16:16 +02:00
recover if no chunks are available
This commit is contained in:
parent
25acbc1717
commit
0f9c86c7c2
2 changed files with 25 additions and 11 deletions
|
@ -84,20 +84,29 @@ void OpenslPlayer::playerCallback(SLAndroidSimpleBufferQueueItf bq)
|
|||
|
||||
// diff = 0;
|
||||
// chronos::usec delay((250 - diff) * 1000);
|
||||
|
||||
// while (active_ && !stream_->waitForChunk(100))
|
||||
// logO << "Waiting for chunk\n";
|
||||
|
||||
if (!active_)
|
||||
return;
|
||||
|
||||
chronos::usec delay(150 * 1000);
|
||||
|
||||
if (pubStream_->getPlayerChunk(buffer[curBuffer], delay, frames_))
|
||||
if (!pubStream_->getPlayerChunk(buffer[curBuffer], delay, frames_))
|
||||
{
|
||||
|
||||
SLresult result;
|
||||
do
|
||||
{
|
||||
result = (*bq)->Enqueue(bq, buffer[curBuffer], buff_size);
|
||||
if (result == SL_RESULT_BUFFER_INSUFFICIENT)
|
||||
usleep(1000);
|
||||
}
|
||||
while (result == SL_RESULT_BUFFER_INSUFFICIENT);
|
||||
logO << "Failed to get chunk. Playing silence.\n";
|
||||
memset(buffer[curBuffer], 0, buff_size);
|
||||
}
|
||||
|
||||
while (active_)
|
||||
{
|
||||
SLresult result = (*bq)->Enqueue(bq, buffer[curBuffer], buff_size);
|
||||
if (result == SL_RESULT_BUFFER_INSUFFICIENT)
|
||||
usleep(1000);
|
||||
else
|
||||
break;
|
||||
}
|
||||
|
||||
curBuffer ^= 1; // Switch buffer
|
||||
}
|
||||
|
||||
|
@ -256,12 +265,14 @@ void OpenslPlayer::uninitOpensl()
|
|||
|
||||
void OpenslPlayer::start()
|
||||
{
|
||||
active_ = true;
|
||||
initOpensl();
|
||||
}
|
||||
|
||||
|
||||
void OpenslPlayer::stop()
|
||||
{
|
||||
active_ = false;
|
||||
uninitOpensl();
|
||||
}
|
||||
|
||||
|
|
|
@ -82,6 +82,9 @@ void Stream::addChunk(msg::PcmChunk* chunk)
|
|||
|
||||
bool Stream::waitForChunk(size_t ms) const
|
||||
{
|
||||
if (!chunks_.empty())
|
||||
return true;
|
||||
|
||||
std::unique_lock<std::mutex> lck(cvMutex_);
|
||||
cv_.wait_for(lck, std::chrono::milliseconds(ms));
|
||||
return !chunks_.empty();
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue