diff --git a/server/streamreader/meta_stream.cpp b/server/streamreader/meta_stream.cpp index 4067348d..cfc2fdd1 100644 --- a/server/streamreader/meta_stream.cpp +++ b/server/streamreader/meta_stream.cpp @@ -57,11 +57,11 @@ MetaStream::MetaStream(PcmListener* pcmListener, const std::vector(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(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 lock(mutex_); + active_stream_->setProperty(request, response_handler); +} + + +void MetaStream::control(const jsonrpcpp::Request& request, const StreamControl::OnResponse& response_handler) +{ + std::lock_guard lock(mutex_); + active_stream_->control(request, response_handler); +} + + } // namespace streamreader diff --git a/server/streamreader/meta_stream.hpp b/server/streamreader/meta_stream.hpp index cebaca8c..f2537af6 100644 --- a/server/streamreader/meta_stream.hpp +++ b/server/streamreader/meta_stream.hpp @@ -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> streams_; std::shared_ptr active_stream_; std::mutex mutex_;