Minor cleanup on audio codecs

This commit is contained in:
emeric
2025-12-07 22:40:45 +01:00
parent 66e4f9ef92
commit 6d27f18f19
38 changed files with 521 additions and 553 deletions
+34 -34
View File
@@ -70,83 +70,83 @@ namespace lms::audio::ffmpeg
res[core::stringUtils::stringToUpper(tag->key)] = tag->value;
}
std::optional<core::media::ContainerType> avdemuxerToContainerType(std::string_view name)
std::optional<core::media::Container> avdemuxerToContainerType(std::string_view name)
{
if (name == "aiff")
return core::media::ContainerType::AIFF;
return core::media::Container::AIFF;
if (name == "ape")
return core::media::ContainerType::APE;
return core::media::Container::APE;
if (name.starts_with("asf"))
return core::media::ContainerType::ASF;
return core::media::Container::ASF;
if (name == "dsf")
return core::media::ContainerType::DSF;
return core::media::Container::DSF;
if (name == "flac")
return core::media::ContainerType::FLAC;
return core::media::Container::FLAC;
if (name.find("mp4") != std::string_view::npos)
return core::media::ContainerType::MP4;
return core::media::Container::MP4;
if (name.starts_with("mpc"))
return core::media::ContainerType::MPC;
return core::media::Container::MPC;
if (name == "mp3")
return core::media::ContainerType::MPEG;
return core::media::Container::MPEG;
if (name == "ogg")
return core::media::ContainerType::Ogg;
return core::media::Container::Ogg;
if (name == "shn")
return core::media::ContainerType::Shorten;
return core::media::Container::Shorten;
if (name == "tta")
return core::media::ContainerType::TrueAudio;
return core::media::Container::TrueAudio;
if (name == "wav")
return core::media::ContainerType::WAV;
return core::media::Container::WAV;
if (name == "wv")
return core::media::ContainerType::WavPack;
return core::media::Container::WavPack;
return std::nullopt;
}
std::optional<core::media::CodecType> avcodecToCodecType(AVCodecID codec)
std::optional<core::media::Codec> avcodecToCodecType(AVCodecID codec)
{
switch (codec)
{
case AV_CODEC_ID_AAC:
return core::media::CodecType::AAC;
return core::media::Codec::AAC;
case AV_CODEC_ID_AC3:
return core::media::CodecType::AC3;
return core::media::Codec::AC3;
case AV_CODEC_ID_ALAC:
return core::media::CodecType::ALAC;
return core::media::Codec::ALAC;
case AV_CODEC_ID_APE:
return core::media::CodecType::APE;
return core::media::Codec::APE;
case AV_CODEC_ID_DSD_LSBF:
case AV_CODEC_ID_DSD_LSBF_PLANAR:
case AV_CODEC_ID_DSD_MSBF:
case AV_CODEC_ID_DSD_MSBF_PLANAR:
return core::media::CodecType::DSD;
return core::media::Codec::DSD;
case AV_CODEC_ID_EAC3:
return core::media::CodecType::EAC3;
return core::media::Codec::EAC3;
case AV_CODEC_ID_FLAC:
return core::media::CodecType::FLAC;
return core::media::Codec::FLAC;
case AV_CODEC_ID_MP3:
return core::media::CodecType::MP3;
return core::media::Codec::MP3;
case AV_CODEC_ID_MP4ALS:
return core::media::CodecType::MP4ALS;
return core::media::Codec::MP4ALS;
case AV_CODEC_ID_MUSEPACK7:
return core::media::CodecType::MPC7;
return core::media::Codec::MPC7;
case AV_CODEC_ID_MUSEPACK8:
return core::media::CodecType::MPC8;
return core::media::Codec::MPC8;
case AV_CODEC_ID_OPUS:
return core::media::CodecType::Opus;
return core::media::Codec::Opus;
case AV_CODEC_ID_SHORTEN:
return core::media::CodecType::Shorten;
return core::media::Codec::Shorten;
case AV_CODEC_ID_VORBIS:
return core::media::CodecType::Vorbis;
return core::media::Codec::Vorbis;
case AV_CODEC_ID_WAVPACK:
return core::media::CodecType::WavPack;
return core::media::Codec::WavPack;
case AV_CODEC_ID_WMALOSSLESS:
return core::media::CodecType::WMA9Lossless;
return core::media::Codec::WMA9Lossless;
case AV_CODEC_ID_WMAPRO:
return core::media::CodecType::WMA9Pro;
return core::media::Codec::WMA9Pro;
case AV_CODEC_ID_WMAV1:
return core::media::CodecType::WMA1;
return core::media::Codec::WMA1;
case AV_CODEC_ID_WMAV2:
return core::media::CodecType::WMA2;
return core::media::Codec::WMA2;
default:
return std::nullopt;
+4 -4
View File
@@ -27,8 +27,8 @@
#include <string>
#include <vector>
#include "core/media/CodecType.hpp"
#include "core/media/ContainerType.hpp"
#include "core/media/Codec.hpp"
#include "core/media/Container.hpp"
extern "C"
{
@@ -45,7 +45,7 @@ namespace lms::audio::ffmpeg
struct ContainerInfo
{
std::optional<core::media::ContainerType> container;
std::optional<core::media::Container> container;
std::string containerName;
std::optional<std::size_t> bitrate;
@@ -55,7 +55,7 @@ namespace lms::audio::ffmpeg
struct StreamInfo
{
size_t index{};
std::optional<core::media::CodecType> codec;
std::optional<core::media::Codec> codec;
std::string codecName;
std::optional<size_t> bitrate;
+9 -9
View File
@@ -161,42 +161,42 @@ namespace lms::audio::ffmpeg
switch (_outputParams.format->container)
{
case core::media::ContainerType::FLAC:
case core::media::Container::FLAC:
args.emplace_back("flac");
break;
case core::media::ContainerType::Ogg:
case core::media::Container::Ogg:
args.emplace_back("ogg");
break;
case core::media::ContainerType::MPEG:
case core::media::Container::MPEG:
args.emplace_back("mp3");
break;
default:
throw Exception{ "Unsupported container type " + std::string{ core::media::containerTypeToString(_outputParams.format->container).str() } };
throw Exception{ "Unsupported container type " + std::string{ core::media::containerToString(_outputParams.format->container).str() } };
}
args.emplace_back("-acodec");
switch (_outputParams.format->codec)
{
case core::media::CodecType::MP3:
case core::media::Codec::MP3:
args.emplace_back("libmp3lame");
break;
case core::media::CodecType::Opus:
case core::media::Codec::Opus:
args.emplace_back("libopus");
break;
case core::media::CodecType::Vorbis:
case core::media::Codec::Vorbis:
args.emplace_back("libvorbis");
break;
case core::media::CodecType::FLAC:
case core::media::Codec::FLAC:
args.emplace_back("flac");
break;
default:
throw Exception{ "Unhandled codec type " + std::string{ codecTypeToString(_outputParams.format->codec).str() } };
throw Exception{ "Unhandled codec type " + std::string{ core::media::getCodecDesc(_outputParams.format->codec).name.str() } };
}
}