mirror of
https://github.com/badaix/snapcast.git
synced 2025-05-12 08:36:43 +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 + "\"");
|
throw SnapException("Unknown stream: \"" + component + "\"");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!streams_.empty())
|
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_);
|
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;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
active_stream_ = nullptr;
|
active_stream_ = streams_.front();
|
||||||
setState(ReaderState::kIdle);
|
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
|
} // namespace streamreader
|
||||||
|
|
|
@ -54,6 +54,9 @@ protected:
|
||||||
void onResync(const PcmStream* pcmStream, double ms) override;
|
void onResync(const PcmStream* pcmStream, double ms) override;
|
||||||
|
|
||||||
protected:
|
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::vector<std::shared_ptr<PcmStream>> streams_;
|
||||||
std::shared_ptr<PcmStream> active_stream_;
|
std::shared_ptr<PcmStream> active_stream_;
|
||||||
std::mutex mutex_;
|
std::mutex mutex_;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue