diff --git a/client/controller.cpp b/client/controller.cpp index c8515112..b901355d 100644 --- a/client/controller.cpp +++ b/client/controller.cpp @@ -159,9 +159,9 @@ void Controller::worker() else if (headerChunk->codec == "flac") decoder_ = new FlacDecoder(); sampleFormat_ = decoder_->setHeader(headerChunk.get()); - logO << "sample rate : " << sampleFormat_.rate << "Hz\n"; - logO << "bits per sample: " << sampleFormat_.bits << "\n"; - logO << "channels : " << sampleFormat_.channels << "\n"; + logO << "sample rate: " << sampleFormat_.rate << "Hz\n"; + logO << "bits/sample: " << sampleFormat_.bits << "\n"; + logO << "channels : " << sampleFormat_.channels << "\n"; msg::Request timeReq(kTime); for (size_t n=0; n<50 && active_; ++n) diff --git a/server/debian/changelog b/server/debian/changelog index 2bd21237..0fa6f373 100644 --- a/server/debian/changelog +++ b/server/debian/changelog @@ -2,12 +2,16 @@ snapserver (0.5.0-beta-1) unstable; urgency=low * Features -Added .default file - -Remote control API + -Remote control API (JSON) -Android Snapclient with remote control + -PCM reader is configured by URI: path, name, codec, sample format, ... * Bugfixes -TODO * General - -TODO + -SnapCast is renamed to Snapcast, SnapClient => Snapclient, SnapServer => Snapserver + -Snapcast protocol: + Less messaging: SampleFormat, Command, Ack, String + -Removed dependency to boost -- Johannes Pohl Tue, 29 Dec 2015 12:00:00 +0200 diff --git a/server/snapServer.cpp b/server/snapServer.cpp index 5e6f95a6..d8bda674 100644 --- a/server/snapServer.cpp +++ b/server/snapServer.cpp @@ -49,28 +49,30 @@ int main(int argc, char* argv[]) std::string pcmStream = "pipe:///tmp/snapfifo?name=default"; int processPriority(-3); - Switch helpSwitch("h", "help", "produce help message"); - Switch versionSwitch("v", "version", "show version number"); - Value portValue("p", "port", "server port", settings.port, &settings.port); + Switch helpSwitch("h", "help", "Produce help message"); + Switch versionSwitch("v", "version", "Show version number"); + Value portValue("p", "port", "Server port", settings.port, &settings.port); Value controlPortValue("", "controlPort", "Remote control port", settings.controlPort, &settings.controlPort); - Value sampleFormatValue("s", "sampleformat", "sample format", settings.sampleFormat); - Value codecValue("c", "codec", "transport codec [flac|ogg|pcm][:options]\nType codec:? to get codec specific options", settings.codec, &settings.codec); - Value fifoValue("f", "fifo", "name of the input fifo file", pcmStream, &pcmStream); - Implicit daemonOption("d", "daemon", "daemonize\noptional process priority [-20..19]", 0, &processPriority); - Value bufferValue("b", "buffer", "buffer [ms]", settings.bufferMs, &settings.bufferMs); - Value pipeBufferValue("", "pipeReadBuffer", "pipe read buffer [ms]", settings.pipeReadMs, &settings.pipeReadMs); + Value streamValue("s", "stream", "URI of the PCM input stream.\nFormat: TYPE://host/path?name=NAME\n[&codec=CODEC]\n[&sampleformat=SAMPLEFORMAT]", pcmStream, &pcmStream); + + Value sampleFormatValue("", "sampleformat", "Default sample format", settings.sampleFormat); + Value codecValue("", "codec", "Default transport codec\n(flac|ogg|pcm)[:options]\nType codec:? to get codec specific options", settings.codec, &settings.codec); + Value streamBufferValue("", "streamBuffer", "Default stream read buffer [ms]", settings.streamReadMs, &settings.streamReadMs); + + Value bufferValue("b", "buffer", "Buffer [ms]", settings.bufferMs, &settings.bufferMs); + Implicit daemonOption("d", "daemon", "Daemonize\noptional process priority [-20..19]", 0, &processPriority); OptionParser op("Allowed options"); op.add(helpSwitch) .add(versionSwitch) .add(portValue) .add(controlPortValue) + .add(streamValue) .add(sampleFormatValue) .add(codecValue) - .add(fifoValue) - .add(daemonOption) + .add(streamBufferValue) .add(bufferValue) - .add(pipeBufferValue); + .add(daemonOption); try { @@ -100,13 +102,13 @@ int main(int argc, char* argv[]) exit(EXIT_SUCCESS); } - if (!fifoValue.isSet()) - settings.pcmStreams.push_back(fifoValue.getValue()); + if (!streamValue.isSet()) + settings.pcmStreams.push_back(streamValue.getValue()); - for (size_t n=0; n reader(PcmReaderFactory::createPcmReader(this, streamUri, settings_.sampleFormat, settings_.codec, settings_.pipeReadMs)); + shared_ptr reader(PcmReaderFactory::createPcmReader(this, streamUri, settings_.sampleFormat, settings_.codec, settings_.streamReadMs)); pcmReader_.push_back(reader); pcmReader_.back()->start(); } diff --git a/server/streamServer.h b/server/streamServer.h index 267f12bd..233b2f1f 100644 --- a/server/streamServer.h +++ b/server/streamServer.h @@ -49,7 +49,7 @@ struct StreamServerSettings codec("flac"), bufferMs(1000), sampleFormat("48000:16:2"), - pipeReadMs(20) + streamReadMs(20) { } size_t port; @@ -58,7 +58,7 @@ struct StreamServerSettings std::string codec; int32_t bufferMs; std::string sampleFormat; - size_t pipeReadMs; + size_t streamReadMs; };