diff --git a/client/controller.cpp b/client/controller.cpp index 1ae9953b..8222a0f0 100644 --- a/client/controller.cpp +++ b/client/controller.cpp @@ -31,6 +31,24 @@ #if defined(HAS_OPUS) #include "decoder/opus_decoder.hpp" #endif + +#ifdef HAS_ALSA +#include "player/alsa_player.hpp" +#include "player/alsa_player_test.hpp" +#endif +#ifdef HAS_OPENSL +#include "player/opensl_player.hpp" +#endif +#ifdef HAS_OBOE +#include "player/oboe_player.hpp" +#endif +#ifdef HAS_COREAUDIO +#include "player/coreaudio_player.hpp" +#endif +#ifdef WINDOWS +#include "player/wasapi_player.h" +#endif + #include "browseZeroConf/browse_mdns.hpp" #include "common/aixlog.hpp" #include "common/snap_exception.hpp" diff --git a/client/controller.hpp b/client/controller.hpp index 578fb56e..d87c764c 100644 --- a/client/controller.hpp +++ b/client/controller.hpp @@ -19,31 +19,17 @@ #ifndef CONTROLLER_H #define CONTROLLER_H +#include "client_connection.hpp" +#include "client_settings.hpp" #include "decoder/decoder.hpp" #include "message/message.hpp" #include "message/server_settings.hpp" #include "message/stream_tags.hpp" +#include "metadata.hpp" +#include "player/player.hpp" +#include "stream.hpp" #include #include -#ifdef HAS_ALSA -#include "player/alsa_player.hpp" -#endif -#ifdef HAS_OPENSL -#include "player/opensl_player.hpp" -#endif -#ifdef HAS_OBOE -#include "player/oboe_player.hpp" -#endif -#ifdef HAS_COREAUDIO -#include "player/coreaudio_player.hpp" -#endif -#ifdef WINDOWS -#include "player/wasapi_player.h" -#endif -#include "client_connection.hpp" -#include "client_settings.hpp" -#include "metadata.hpp" -#include "stream.hpp" using namespace std::chrono_literals; diff --git a/client/player/alsa_player.cpp b/client/player/alsa_player.cpp index 3d4cdcd8..0d356bbf 100644 --- a/client/player/alsa_player.cpp +++ b/client/player/alsa_player.cpp @@ -494,6 +494,13 @@ void AlsaPlayer::worker() } } + if (framesAvail < static_cast(frames_)) + { + this_thread::sleep_for(10ms); + continue; + } + + // LOG(TRACE, LOG_TAG) << "res: " << result << ", framesAvail: " << framesAvail << ", delay: " << framesDelay << ", frames: " << frames_ << "\n"; chronos::usec delay(static_cast(1000 * (double)framesDelay / format.msRate())); // LOG(TRACE, LOG_TAG) << "delay: " << framesDelay << ", delay[ms]: " << delay.count() / 1000 << ", avail: " << framesAvail << "\n"; diff --git a/common/queue.h b/common/queue.h index 154b1557..1beab462 100644 --- a/common/queue.h +++ b/common/queue.h @@ -41,15 +41,6 @@ public: return val; } - T front() - { - std::unique_lock mlock(mutex_); - while (queue_.empty()) - cond_.wait(mlock); - - return queue_.front(); - } - void abort_wait() { {