/*** This file is part of snapcast Copyright (C) 2015 Johannes Pohl This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . ***/ #include #include #include #include "sampleFormat.h" #include "common/log.h" #include using namespace std; namespace msg { SampleFormat::SampleFormat() : BaseMessage(message_type::kSampleFormat) { } SampleFormat::SampleFormat(const std::string& format) : BaseMessage(message_type::kSampleFormat) { setFormat(format); } SampleFormat::SampleFormat(uint32_t sampleRate, uint16_t bitsPerSample, uint16_t channelCount) : BaseMessage(message_type::kSampleFormat) { setFormat(sampleRate, bitsPerSample, channelCount); } string SampleFormat::getFormat() const { stringstream ss; ss << rate << ":" << bits << ":" << channels; return ss.str(); } void SampleFormat::setFormat(const std::string& format) { std::vector strs; boost::split(strs, format, boost::is_any_of(":")); if (strs.size() == 3) setFormat( std::stoul(strs[0]), std::stoul(strs[1]), std::stoul(strs[2])); } void SampleFormat::setFormat(uint32_t rate, uint16_t bits, uint16_t channels) { //needs something like: 24_3 = 3 bytes, 24 = 4 bytes this->rate = rate; this->bits = bits; this->channels = channels; sampleSize = bits / 8; if (bits == 24) sampleSize = 4; frameSize = channels*sampleSize; logD << "SampleFormat: " << rate << ":" << bits << ":" << channels << "\n"; } }