|
@@ -39,6 +39,7 @@ class chunkManager : public bell::Task {
|
|
|
public:
|
|
|
std::atomic<bool> isRunning = true;
|
|
|
std::atomic<bool> isPaused = true;
|
|
|
+ std::atomic<bool> discard = true;
|
|
|
chunkManager(std::shared_ptr<bell::CentralAudioBuffer> centralAudioBuffer, std::function<void()> trackHandler,
|
|
|
std::function<void(const uint8_t*, size_t)> dataHandler);
|
|
|
void teardown();
|
|
@@ -88,10 +89,11 @@ void chunkManager::runTask() {
|
|
|
if (lastHash != chunk->trackHash) {
|
|
|
CSPOT_LOG(info, "hash update %x => %x", lastHash, chunk->trackHash);
|
|
|
lastHash = chunk->trackHash;
|
|
|
+ discard = false;
|
|
|
trackHandler();
|
|
|
}
|
|
|
|
|
|
- dataHandler(chunk->pcmData, chunk->pcmSize);
|
|
|
+ if (!discard) dataHandler(chunk->pcmData, chunk->pcmSize);
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -223,6 +225,7 @@ esp_err_t cspotPlayer::handlePOST(httpd_req_t *request) {
|
|
|
void cspotPlayer::eventHandler(std::unique_ptr<cspot::SpircHandler::Event> event) {
|
|
|
switch (event->eventType) {
|
|
|
case cspot::SpircHandler::EventType::PLAYBACK_START: {
|
|
|
+ chunker->discard = true;
|
|
|
centralAudioBuffer->clearBuffer();
|
|
|
|
|
|
// we are not playing anymore
|