mirror of
https://github.com/badaix/snapcast.git
synced 2025-05-16 18:46:15 +02:00
stream is shared_ptr
This commit is contained in:
parent
0c5646679e
commit
3fe88b7440
10 changed files with 17 additions and 17 deletions
|
@ -92,7 +92,7 @@ void Controller::onMessageReceived(ClientConnection* connection, const msg::Base
|
||||||
|
|
||||||
logO << "Codec: " << headerChunk_->codec << "\n";
|
logO << "Codec: " << headerChunk_->codec << "\n";
|
||||||
decoder_.reset(nullptr);
|
decoder_.reset(nullptr);
|
||||||
stream_.reset(nullptr);
|
stream_ = nullptr;
|
||||||
player_.reset(nullptr);
|
player_.reset(nullptr);
|
||||||
|
|
||||||
if (headerChunk_->codec == "pcm")
|
if (headerChunk_->codec == "pcm")
|
||||||
|
@ -109,15 +109,15 @@ void Controller::onMessageReceived(ClientConnection* connection, const msg::Base
|
||||||
sampleFormat_ = decoder_->setHeader(headerChunk_.get());
|
sampleFormat_ = decoder_->setHeader(headerChunk_.get());
|
||||||
logState << "sampleformat: " << sampleFormat_.rate << ":" << sampleFormat_.bits << ":" << sampleFormat_.channels << "\n";
|
logState << "sampleformat: " << sampleFormat_.rate << ":" << sampleFormat_.bits << ":" << sampleFormat_.channels << "\n";
|
||||||
|
|
||||||
stream_.reset(new Stream(sampleFormat_));
|
stream_ = make_shared<Stream>(sampleFormat_);
|
||||||
stream_->setBufferLen(serverSettings_->getBufferMs() - latency_);
|
stream_->setBufferLen(serverSettings_->getBufferMs() - latency_);
|
||||||
|
|
||||||
#ifdef HAS_ALSA
|
#ifdef HAS_ALSA
|
||||||
player_.reset(new AlsaPlayer(pcmDevice_, stream_.get()));
|
player_.reset(new AlsaPlayer(pcmDevice_, stream_));
|
||||||
#elif HAS_OPENSL
|
#elif HAS_OPENSL
|
||||||
player_.reset(new OpenslPlayer(pcmDevice_, stream_.get()));
|
player_.reset(new OpenslPlayer(pcmDevice_, stream_));
|
||||||
#elif HAS_COREAUDIO
|
#elif HAS_COREAUDIO
|
||||||
player_.reset(new CoreAudioPlayer(pcmDevice_, stream_.get()));
|
player_.reset(new CoreAudioPlayer(pcmDevice_, stream_));
|
||||||
#else
|
#else
|
||||||
throw SnapException("No audio player support");
|
throw SnapException("No audio player support");
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -66,7 +66,7 @@ private:
|
||||||
PcmDevice pcmDevice_;
|
PcmDevice pcmDevice_;
|
||||||
int latency_;
|
int latency_;
|
||||||
std::unique_ptr<ClientConnection> clientConnection_;
|
std::unique_ptr<ClientConnection> clientConnection_;
|
||||||
std::unique_ptr<Stream> stream_;
|
std::shared_ptr<Stream> stream_;
|
||||||
std::unique_ptr<Decoder> decoder_;
|
std::unique_ptr<Decoder> decoder_;
|
||||||
std::unique_ptr<Player> player_;
|
std::unique_ptr<Player> player_;
|
||||||
std::shared_ptr<msg::ServerSettings> serverSettings_;
|
std::shared_ptr<msg::ServerSettings> serverSettings_;
|
||||||
|
|
|
@ -26,7 +26,7 @@
|
||||||
|
|
||||||
using namespace std;
|
using namespace std;
|
||||||
|
|
||||||
AlsaPlayer::AlsaPlayer(const PcmDevice& pcmDevice, Stream* stream) :
|
AlsaPlayer::AlsaPlayer(const PcmDevice& pcmDevice, std::shared_ptr<Stream> stream) :
|
||||||
Player(pcmDevice, stream), handle_(NULL), buff_(NULL)
|
Player(pcmDevice, stream), handle_(NULL), buff_(NULL)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
|
@ -30,7 +30,7 @@
|
||||||
class AlsaPlayer : public Player
|
class AlsaPlayer : public Player
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
AlsaPlayer(const PcmDevice& pcmDevice, Stream* stream);
|
AlsaPlayer(const PcmDevice& pcmDevice, std::shared_ptr<Stream> stream);
|
||||||
virtual ~AlsaPlayer();
|
virtual ~AlsaPlayer();
|
||||||
|
|
||||||
/// Set audio volume in range [0..1]
|
/// Set audio volume in range [0..1]
|
||||||
|
|
|
@ -31,7 +31,7 @@ void callback(void *custom_data, AudioQueueRef queue, AudioQueueBufferRef buffer
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
CoreAudioPlayer::CoreAudioPlayer(const PcmDevice& pcmDevice, Stream* stream) :
|
CoreAudioPlayer::CoreAudioPlayer(const PcmDevice& pcmDevice, std::shared_ptr<Stream> stream) :
|
||||||
Player(pcmDevice, stream),
|
Player(pcmDevice, stream),
|
||||||
ms_(100),
|
ms_(100),
|
||||||
pubStream_(stream)
|
pubStream_(stream)
|
||||||
|
|
|
@ -37,7 +37,7 @@
|
||||||
class CoreAudioPlayer : public Player
|
class CoreAudioPlayer : public Player
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
CoreAudioPlayer(const PcmDevice& pcmDevice, Stream* stream);
|
CoreAudioPlayer(const PcmDevice& pcmDevice, std::shared_ptr<Stream> stream);
|
||||||
virtual ~CoreAudioPlayer();
|
virtual ~CoreAudioPlayer();
|
||||||
|
|
||||||
void playerCallback(AudioQueueRef queue, AudioQueueBufferRef bufferRef);
|
void playerCallback(AudioQueueRef queue, AudioQueueBufferRef bufferRef);
|
||||||
|
@ -49,7 +49,7 @@ protected:
|
||||||
size_t ms_;
|
size_t ms_;
|
||||||
size_t frames_;
|
size_t frames_;
|
||||||
size_t buff_size_;
|
size_t buff_size_;
|
||||||
Stream* pubStream_;
|
std::shared_ptr<Stream> pubStream_;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -43,7 +43,7 @@ static void bqPlayerCallback(SLAndroidSimpleBufferQueueItf bq, void *context)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
OpenslPlayer::OpenslPlayer(const PcmDevice& pcmDevice, Stream* stream) :
|
OpenslPlayer::OpenslPlayer(const PcmDevice& pcmDevice, std::shared_ptr<Stream> stream) :
|
||||||
Player(pcmDevice, stream),
|
Player(pcmDevice, stream),
|
||||||
engineObject(NULL),
|
engineObject(NULL),
|
||||||
engineEngine(NULL),
|
engineEngine(NULL),
|
||||||
|
|
|
@ -35,7 +35,7 @@ typedef int (*AndroidAudioCallback)(short *buffer, int num_samples);
|
||||||
class OpenslPlayer : public Player
|
class OpenslPlayer : public Player
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
OpenslPlayer(const PcmDevice& pcmDevice, Stream* stream);
|
OpenslPlayer(const PcmDevice& pcmDevice, std::shared_ptr<Stream> stream);
|
||||||
virtual ~OpenslPlayer();
|
virtual ~OpenslPlayer();
|
||||||
|
|
||||||
virtual void start();
|
virtual void start();
|
||||||
|
@ -69,7 +69,7 @@ protected:
|
||||||
size_t ms_;
|
size_t ms_;
|
||||||
size_t frames_;
|
size_t frames_;
|
||||||
size_t buff_size;
|
size_t buff_size;
|
||||||
Stream* pubStream_;
|
std::shared_ptr<Stream> pubStream_;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -26,7 +26,7 @@
|
||||||
using namespace std;
|
using namespace std;
|
||||||
|
|
||||||
|
|
||||||
Player::Player(const PcmDevice& pcmDevice, Stream* stream) :
|
Player::Player(const PcmDevice& pcmDevice, std::shared_ptr<Stream> stream) :
|
||||||
active_(false),
|
active_(false),
|
||||||
stream_(stream),
|
stream_(stream),
|
||||||
pcmDevice_(pcmDevice),
|
pcmDevice_(pcmDevice),
|
||||||
|
|
|
@ -36,7 +36,7 @@
|
||||||
class Player
|
class Player
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
Player(const PcmDevice& pcmDevice, Stream* stream);
|
Player(const PcmDevice& pcmDevice, std::shared_ptr<Stream> stream);
|
||||||
virtual ~Player();
|
virtual ~Player();
|
||||||
|
|
||||||
/// Set audio volume in range [0..1]
|
/// Set audio volume in range [0..1]
|
||||||
|
@ -59,7 +59,7 @@ protected:
|
||||||
void adjustVolume(char* buffer, size_t frames);
|
void adjustVolume(char* buffer, size_t frames);
|
||||||
|
|
||||||
std::atomic<bool> active_;
|
std::atomic<bool> active_;
|
||||||
Stream* stream_;
|
std::shared_ptr<Stream> stream_;
|
||||||
std::thread playerThread_;
|
std::thread playerThread_;
|
||||||
PcmDevice pcmDevice_;
|
PcmDevice pcmDevice_;
|
||||||
double volume_;
|
double volume_;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue