#ifndef PCM_READER_FACTORY_H #define PCM_READER_FACTORY_H #include "pcm_stream.hpp" #include #include #include #include typedef std::shared_ptr PcmStreamPtr; class StreamManager { public: StreamManager(PcmListener* pcmListener, boost::asio::io_context& ioc, const std::string& defaultSampleFormat, const std::string& defaultCodec, size_t defaultChunkBufferMs = 20); PcmStreamPtr addStream(const std::string& uri); void removeStream(const std::string& name); void start(); void stop(); const std::vector& getStreams(); const PcmStreamPtr getDefaultStream(); const PcmStreamPtr getStream(const std::string& id); json toJson() const; private: std::vector streams_; PcmListener* pcmListener_; std::string sampleFormat_; std::string codec_; size_t chunkBufferMs_; boost::asio::io_context& ioc_; }; #endif