/* * Copyright 2023 jacqueline * * SPDX-License-Identifier: GPL-3.0-only */ #include "codec.hpp" #include #include #include "foxenflac.hpp" #include "mad.hpp" #include "opus.hpp" #include "types.hpp" #include "vorbis.hpp" namespace codecs { auto CreateCodecForType(StreamType type) -> std::optional { switch (type) { case StreamType::kMp3: return new MadMp3Decoder(); case StreamType::kVorbis: return new TremorVorbisDecoder(); case StreamType::kFlac: return new FoxenFlacDecoder(); case StreamType::kOpus: return new XiphOpusDecoder(); default: return {}; } } } // namespace codecs