mirror of
https://github.com/badaix/snapcast.git
synced 2025-05-10 15:46:42 +02:00
Enable control of meta streams
This commit is contained in:
parent
74b3e7d9a4
commit
cee6b2cfee
2 changed files with 23 additions and 6 deletions
|
@ -57,11 +57,11 @@ MetaStream::MetaStream(PcmListener* pcmListener, const std::vector<std::shared_p
|
|||
throw SnapException("Unknown stream: \"" + component + "\"");
|
||||
}
|
||||
|
||||
if (!streams_.empty())
|
||||
{
|
||||
active_stream_ = streams_.front();
|
||||
resampler_ = make_unique<Resampler>(active_stream_->getSampleFormat(), sampleFormat_);
|
||||
}
|
||||
if (streams_.empty())
|
||||
throw SnapException("Meta stream '" + getName() + "' must contain at least one stream");
|
||||
|
||||
active_stream_ = streams_.front();
|
||||
resampler_ = make_unique<Resampler>(active_stream_->getSampleFormat(), sampleFormat_);
|
||||
}
|
||||
|
||||
|
||||
|
@ -129,7 +129,7 @@ void MetaStream::onStateChanged(const PcmStream* pcmStream, ReaderState state)
|
|||
return;
|
||||
}
|
||||
}
|
||||
active_stream_ = nullptr;
|
||||
active_stream_ = streams_.front();
|
||||
setState(ReaderState::kIdle);
|
||||
}
|
||||
|
||||
|
@ -202,4 +202,18 @@ void MetaStream::onResync(const PcmStream* pcmStream, double ms)
|
|||
}
|
||||
|
||||
|
||||
void MetaStream::setProperty(const jsonrpcpp::Request& request, const StreamControl::OnResponse& response_handler)
|
||||
{
|
||||
std::lock_guard<std::mutex> lock(mutex_);
|
||||
active_stream_->setProperty(request, response_handler);
|
||||
}
|
||||
|
||||
|
||||
void MetaStream::control(const jsonrpcpp::Request& request, const StreamControl::OnResponse& response_handler)
|
||||
{
|
||||
std::lock_guard<std::mutex> lock(mutex_);
|
||||
active_stream_->control(request, response_handler);
|
||||
}
|
||||
|
||||
|
||||
} // namespace streamreader
|
||||
|
|
|
@ -54,6 +54,9 @@ protected:
|
|||
void onResync(const PcmStream* pcmStream, double ms) override;
|
||||
|
||||
protected:
|
||||
void setProperty(const jsonrpcpp::Request& request, const StreamControl::OnResponse& response_handler) override;
|
||||
void control(const jsonrpcpp::Request& request, const StreamControl::OnResponse& response_handler) override;
|
||||
|
||||
std::vector<std::shared_ptr<PcmStream>> streams_;
|
||||
std::shared_ptr<PcmStream> active_stream_;
|
||||
std::mutex mutex_;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue