diff --git a/Makefile.am b/Makefile.am index e1767f70f..a1be6a38d 100644 --- a/Makefile.am +++ b/Makefile.am @@ -1198,6 +1198,7 @@ endif if ENABLE_FLAC libdecoder_a_SOURCES += \ + src/lib/xiph/FlacAudioFormat.hxx \ src/lib/xiph/FlacMetadataIterator.hxx \ src/lib/xiph/FlacIOHandle.cxx src/lib/xiph/FlacIOHandle.hxx \ src/lib/xiph/FlacMetadataChain.cxx src/lib/xiph/FlacMetadataChain.hxx \ diff --git a/src/decoder/plugins/FlacPcm.cxx b/src/decoder/plugins/FlacPcm.cxx index f52c42b31..b6c988da4 100644 --- a/src/decoder/plugins/FlacPcm.cxx +++ b/src/decoder/plugins/FlacPcm.cxx @@ -20,37 +20,17 @@ #include "config.h" #include "FlacPcm.hxx" #include "CheckAudioFormat.hxx" +#include "lib/xiph/FlacAudioFormat.hxx" #include "util/RuntimeError.hxx" #include "util/ConstBuffer.hxx" #include -static SampleFormat -flac_sample_format(unsigned bits_per_sample) -{ - switch (bits_per_sample) { - case 8: - return SampleFormat::S8; - - case 16: - return SampleFormat::S16; - - case 24: - return SampleFormat::S24_P32; - - case 32: - return SampleFormat::S32; - - default: - return SampleFormat::UNDEFINED; - } -} - void FlacPcmImport::Open(unsigned sample_rate, unsigned bits_per_sample, unsigned channels) { - auto sample_format = flac_sample_format(bits_per_sample); + auto sample_format = FlacSampleFormat(bits_per_sample); if (sample_format == SampleFormat::UNDEFINED) throw FormatRuntimeError("Unsupported FLAC bit depth: %u", bits_per_sample); diff --git a/src/lib/xiph/FlacAudioFormat.hxx b/src/lib/xiph/FlacAudioFormat.hxx new file mode 100644 index 000000000..afe81adac --- /dev/null +++ b/src/lib/xiph/FlacAudioFormat.hxx @@ -0,0 +1,46 @@ +/* + * Copyright 2003-2018 The Music Player Daemon Project + * http://www.musicpd.org + * + * 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 2 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, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + */ + +#ifndef MPD_FLAC_AUDIO_FORMAT_HXX +#define MPD_FLAC_AUDIO_FORMAT_HXX + +#include "pcm/SampleFormat.hxx" + +constexpr inline SampleFormat +FlacSampleFormat(unsigned bits_per_sample) noexcept +{ + switch (bits_per_sample) { + case 8: + return SampleFormat::S8; + + case 16: + return SampleFormat::S16; + + case 24: + return SampleFormat::S24_P32; + + case 32: + return SampleFormat::S32; + + default: + return SampleFormat::UNDEFINED; + } +} + +#endif