diff --git a/client/Makefile b/client/Makefile index 58074991..8cd8debe 100644 --- a/client/Makefile +++ b/client/Makefile @@ -34,7 +34,7 @@ endif DEBUG=-O3 -CXXFLAGS += $(ADD_CFLAGS) -std=c++0x -Wall -Wno-unused-function $(DEBUG) -DASIO_STANDALONE -DVERSION=\"$(VERSION)\" -I. -I.. -isystem ../externals/asio/asio/include -I../externals/popl/include -I../externals/aixlog/include -I../externals +CXXFLAGS += $(ADD_CFLAGS) -std=c++0x -Wall -Wno-unused-function $(DEBUG) -DHAS_FLAC -DHAS_OGG -DASIO_STANDALONE -DVERSION=\"$(VERSION)\" -I. -I.. -isystem ../externals/asio/asio/include -I../externals/popl/include -I../externals/aixlog/include -I../externals LDFLAGS = -logg -lFLAC OBJ = snapClient.o stream.o clientConnection.o timeProvider.o player/player.o decoder/pcmDecoder.o decoder/oggDecoder.o decoder/flacDecoder.o controller.o ../message/pcmChunk.o ../common/sampleFormat.o @@ -49,40 +49,39 @@ endif ifeq ($(TARGET), ANDROID) -CXX = $(NDK_DIR)/bin/arm-linux-androideabi-g++ -STRIP = $(NDK_DIR)/bin/arm-linux-androideabi-strip -CXXFLAGS += -pthread -DANDROID -DNO_CPP11_STRING -fPIC -DHAS_OGG -DHAS_TREMOR -DHAS_FLAC -DHAS_OPENSL -I$(NDK_DIR)/include -LDFLAGS = -L$(NDK_DIR)/lib -pie -lvorbisidec -logg -lFLAC -lOpenSLES +CXX = $(PROGRAM_PREFIX)clang++ +STRIP = $(PROGRAM_PREFIX)strip +CXXFLAGS += -pthread -DNO_CPP11_STRING -fPIC -DHAS_TREMOR -DHAS_OPENSL -I$(NDK_DIR)/include +LDFLAGS = -L$(NDK_DIR)/lib -pie -lvorbisidec -logg -lFLAC -lOpenSLES -latomic -llog OBJ += player/openslPlayer.o else ifeq ($(TARGET), OPENWRT) STRIP = echo -CXXFLAGS += -pthread -DNO_CPP11_STRING -DHAS_OGG -DHAS_TREMOR -DHAS_FLAC -DHAS_ALSA -DHAS_AVAHI -DHAS_DAEMON -LDFLAGS = -lasound -lvorbisidec -logg -lFLAC -lavahi-client -lavahi-common -latomic +CXXFLAGS += -pthread -DNO_CPP11_STRING -DHAS_TREMOR -DHAS_ALSA -DHAS_AVAHI -DHAS_DAEMON +LDFLAGS += -lasound -lvorbisidec -lavahi-client -lavahi-common -latomic OBJ += ../common/daemon.o player/alsaPlayer.o browseZeroConf/browseAvahi.o else ifeq ($(TARGET), BUILDROOT) -CXXFLAGS += -pthread -DNO_CPP11_STRING -DHAS_OGG -DHAS_TREMOR -DHAS_FLAC -DHAS_ALSA -DHAS_AVAHI -DHAS_DAEMON -LDFLAGS += -lasound -lvorbisidec -logg -lFLAC -lavahi-client -lavahi-common -latomic +CXXFLAGS += -pthread -DNO_CPP11_STRING -DHAS_TREMOR -DHAS_ALSA -DHAS_AVAHI -DHAS_DAEMON +LDFLAGS += -lasound -lvorbisidec -lavahi-client -lavahi-common -latomic OBJ += ../common/daemon.o player/alsaPlayer.o browseZeroConf/browseAvahi.o else ifeq ($(TARGET), MACOS) CXX = g++ STRIP = strip -CXXFLAGS += -DHAS_OGG -DHAS_VORBIS -DHAS_COREAUDIO -DFREEBSD -DMACOS -DHAS_BONJOUR -DHAS_DAEMON -I/usr/local/include -Wno-unused-local-typedef -Wno-deprecated -CXXFLAGS += -DHAS_OGG -DHAS_VORBIS -DHAS_FLAC -DHAS_COREAUDIO -DFREEBSD -DMACOS -DHAS_BONJOUR -DHAS_DAEMON -I/usr/local/include -Wno-unused-local-typedef -Wno-deprecated -LDFLAGS = -logg -lvorbis -lFLAC -L/usr/local/lib -framework AudioToolbox -framework CoreFoundation +CXXFLAGS += -DHAS_COREAUDIO -DHAS_VORBIS -DFREEBSD -DHAS_BONJOUR -DHAS_DAEMON -I/usr/local/include -Wno-unused-local-typedef -Wno-deprecated +LDFLAGS += -lvorbis -lFLAC -L/usr/local/lib -framework AudioToolbox -framework CoreAudio -framework CoreFoundation -framework IOKit OBJ += ../common/daemon.o player/coreAudioPlayer.o browseZeroConf/browseBonjour.o else CXX = g++ STRIP = strip -CXXFLAGS += -pthread -DHAS_OGG -DHAS_VORBIS -DHAS_FLAC -DHAS_ALSA -DHAS_AVAHI -DHAS_DAEMON -LDFLAGS = -lrt -lasound -logg -lvorbis -lFLAC -lavahi-client -lavahi-common -static-libgcc -static-libstdc++ +CXXFLAGS += -pthread -DHAS_VORBIS -DHAS_ALSA -DHAS_AVAHI -DHAS_DAEMON +LDFLAGS += -lrt -lasound -lvorbis -lavahi-client -lavahi-common -static-libgcc -static-libstdc++ -latomic OBJ += ../common/daemon.o player/alsaPlayer.o browseZeroConf/browseAvahi.o endif diff --git a/client/metadata.h b/client/metadata.h index 86361313..aedf393d 100644 --- a/client/metadata.h +++ b/client/metadata.h @@ -19,14 +19,6 @@ #ifndef METADATA_H #define METADATA_H -//#include -//#include -//#include -//#include -//#include -//#include -//#include -//#include #ifdef HAS_JSONRPCPP #include #else diff --git a/client/snapClient.cpp b/client/snapClient.cpp index 3f1ca53e..3459f33b 100644 --- a/client/snapClient.cpp +++ b/client/snapClient.cpp @@ -41,6 +41,30 @@ using namespace popl; volatile sig_atomic_t g_terminated = false; +PcmDevice getPcmDevice(const std::string& soundcard) +{ +#ifdef HAS_ALSA + vector pcmDevices = AlsaPlayer::pcm_list(); + + try + { + int soundcardIdx = cpt::stoi(soundcard); + for (auto dev: pcmDevices) + if (dev.idx == soundcardIdx) + return dev; + } + catch(...) + { + } + + for (auto dev: pcmDevices) + if (dev.name.find(soundcard) != string::npos) + return dev; +#endif + PcmDevice pcmDevice; + return pcmDevice; +} + int main (int argc, char **argv) { @@ -174,6 +198,17 @@ int main (int argc, char **argv) } #endif +/* TODO: Merge + PcmDevice pcmDevice = getPcmDevice(soundcard); +#if defined(HAS_ALSA) + if (pcmDevice.idx == -1) + { + cout << "soundcard \"" << soundcard << "\" not found\n"; +// exit(EXIT_FAILURE); + } +#endif +*/ + PcmDevice pcmDevice; pcmDevice.idx = 1; if (soundcardValue->is_set()) diff --git a/server/Makefile b/server/Makefile index 3774179f..50b52781 100644 --- a/server/Makefile +++ b/server/Makefile @@ -34,7 +34,7 @@ endif DEBUG=-O3 -CXXFLAGS += $(ADD_CFLAGS) -std=c++0x -Wall -Wno-unused-function $(DEBUG) -DASIO_STANDALONE -DVERSION=\"$(VERSION)\" -I. -I.. -isystem ../externals/asio/asio/include -I../externals/popl/include -I../externals/aixlog/include -I../externals/jsonrpcpp/lib -I../externals +CXXFLAGS += $(ADD_CFLAGS) -std=c++0x -Wall -Wno-unused-function $(DEBUG) -DHAS_FLAC -DHAS_OGG -DHAS_VORBIS -DHAS_VORBIS_ENC -DASIO_STANDALONE -DVERSION=\"$(VERSION)\" -I. -I.. -isystem ../externals/asio/asio/include -I../externals/popl/include -I../externals/aixlog/include -I../externals/jsonrpcpp/lib -I../externals LDFLAGS = -lvorbis -lvorbisenc -logg -lFLAC OBJ = snapServer.o config.o controlServer.o controlSession.o streamServer.o streamSession.o streamreader/streamUri.o streamreader/streamManager.o streamreader/pcmStream.o streamreader/pipeStream.o streamreader/fileStream.o streamreader/processStream.o streamreader/airplayStream.o streamreader/spotifyStream.o streamreader/watchdog.o encoder/encoderFactory.o encoder/flacEncoder.o encoder/pcmEncoder.o encoder/oggEncoder.o ../common/sampleFormat.o ../message/pcmChunk.o ../externals/jsonrpcpp/lib/jsonrp.o ../common/base64.o @@ -50,13 +50,13 @@ ifeq ($(TARGET), ANDROID) CXX = $(NDK_DIR)/bin/arm-linux-androideabi-g++ STRIP = $(NDK_DIR)/bin/arm-linux-androideabi-strip -CXXFLAGS += -pthread -DNO_CPP11_STRING -DHAS_FLAC -DHAS_OGG -DHAS_VORBIS -DHAS_VORBIS_ENC -fPIC -I$(NDK_DIR)/include +CXXFLAGS += -pthread -DNO_CPP11_STRING -fPIC -I$(NDK_DIR)/include LDFLAGS += -L$(NDK_DIR)/lib -pie -llog -latomic else ifeq ($(TARGET), OPENWRT) STRIP = echo -CXXFLAGS += -DNO_CPP11_STRING -DHAS_AVAHI -DHAS_DAEMON -DHAS_FLAC -DHAS_OGG -DHAS_VORBIS -DHAS_VORBIS_ENC -pthread +CXXFLAGS += -DNO_CPP11_STRING -DHAS_AVAHI -DHAS_DAEMON -pthread LDFLAGS += -lavahi-client -lavahi-common -latomic OBJ += ../common/daemon.o publishZeroConf/publishAvahi.o @@ -64,7 +64,7 @@ else ifeq ($(TARGET), FREEBSD) CXX = g++ STRIP = echo -CXXFLAGS += -DNO_CPP11_STRING -DHAS_AVAHI -DHAS_DAEMON -DHAS_FLAC -DHAS_OGG -DHAS_VORBIS -DHAS_VORBIS_ENC -pthread +CXXFLAGS += -DNO_CPP11_STRING -DHAS_AVAHI -DHAS_DAEMON -pthread LDFLAGS += -lrt -lavahi-client -lavahi-common -static-libgcc -static-libstdc++ -latomic OBJ += ../common/daemon.o publishZeroConf/publishAvahi.o @@ -72,7 +72,7 @@ else ifeq ($(TARGET), MACOS) CXX = g++ STRIP = strip -CXXFLAGS += -DFREEBSD -DHAS_BONJOUR -DHAS_DAEMON -DHAS_FLAC -DHAS_OGG -DHAS_VORBIS -DHAS_VORBIS_ENC -Wno-deprecated -I/usr/local/include +CXXFLAGS += -DFREEBSD -DHAS_BONJOUR -DHAS_DAEMON -Wno-deprecated -I/usr/local/include LDFLAGS += -L/usr/local/lib -framework CoreFoundation -framework IOKit OBJ += ../common/daemon.o publishZeroConf/publishBonjour.o @@ -80,7 +80,7 @@ else CXX = g++ STRIP = strip -CXXFLAGS += -DHAS_AVAHI -DHAS_DAEMON -DHAS_FLAC -pthread +CXXFLAGS += -DHAS_AVAHI -DHAS_DAEMON -pthread LDFLAGS = -lrt -lvorbis -lvorbisenc -logg -lFLAC -lavahi-client -lavahi-common -static-libgcc -static-libstdc++ OBJ += ../common/daemon.o publishZeroConf/publishAvahi.o