diff --git a/approot/messages.xml b/approot/messages.xml
index d4ca3e70..e0a253c0 100644
--- a/approot/messages.xml
+++ b/approot/messages.xml
@@ -114,14 +114,15 @@
Account
Audio
-Auto
Bitrate
Cannot save using a demo account!
Encoding
-MP3
-OGA
+Auto
+MP3
+Ogg/Opus
+Ogg/Vorbis
+WebM/Vorbis
Settings
-WEBMA
New settings saved!
diff --git a/approot/messages_fr.xml b/approot/messages_fr.xml
index 07a736e8..0c5eddbc 100644
--- a/approot/messages_fr.xml
+++ b/approot/messages_fr.xml
@@ -118,10 +118,12 @@
Bitrate
Impossible de sauvegarder en utilisant un compte de démo !
Encodage
-MP3
-OGA
+Auto
+MP3
+Ogg/Opus
+Ogg/Vorbis
+WebM/Vorbis
Paramètres
-WEBMA
Paramètres sauvegardés !
diff --git a/src/Makefile.am b/src/Makefile.am
index 3b990c7e..f7c70bd8 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -11,6 +11,8 @@ lms_SOURCES = \
$(srcdir)/av/AvInfo.hpp \
$(srcdir)/av/AvTranscoder.cpp \
$(srcdir)/av/AvTranscoder.hpp \
+ $(srcdir)/av/AvTypes.cpp \
+ $(srcdir)/av/AvTypes.hpp \
$(srcdir)/cover/CoverArtGrabber.cpp \
$(srcdir)/cover/CoverArtGrabber.hpp \
$(srcdir)/database/Artist.cpp \
diff --git a/src/av/AvInfo.hpp b/src/av/AvInfo.hpp
index 7e0e79ed..acdfae43 100644
--- a/src/av/AvInfo.hpp
+++ b/src/av/AvInfo.hpp
@@ -38,7 +38,7 @@ extern "C"
#include
#include
-#include "utils/Exception.hpp"
+#include "AvTypes.hpp"
namespace Av
{
@@ -57,12 +57,6 @@ struct StreamInfo
std::size_t bitrate;
};
-class AvException : public LmsException
-{
- public:
- AvException(const std::string& msg) : LmsException(msg) {}
-};
-
class MediaFileException : public AvException
{
public:
diff --git a/src/av/AvTranscoder.cpp b/src/av/AvTranscoder.cpp
index e4213c03..84ccae8e 100644
--- a/src/av/AvTranscoder.cpp
+++ b/src/av/AvTranscoder.cpp
@@ -29,54 +29,6 @@ namespace Av {
#define LMS_LOG_TRANSCODE(sev) LMS_LOG(TRANSCODE, INFO) << "[" << _id << "] - "
-struct EncodingInfo
-{
- Encoding encoding;
- std::string mimetype;
- int id;
-};
-
-static std::vector encodingInfos =
-{
- {Encoding::MP3, "audio/mp3", 0},
- {Encoding::OGA, "audio/ogg", 1},
- {Encoding::WEBMA, "audio/webm", 3},
- {Encoding::M4A, "audio/mp4", 5},
-};
-
-std::string encodingToMimetype(Encoding encoding)
-{
- for (auto encodingInfo : encodingInfos)
- {
- if (encodingInfo.encoding == encoding)
- return encodingInfo.mimetype;
- }
-
- throw AvException("Invalid encoding");
-}
-
-int encodingToInt(Encoding encoding)
-{
- for (auto encodingInfo : encodingInfos)
- {
- if (encodingInfo.encoding == encoding)
- return encodingInfo.id;
- }
-
- throw AvException("Invalid encoding");
-}
-
-Encoding encodingFromInt(int encodingId)
-{
- for (auto encodingInfo : encodingInfos)
- {
- if (encodingInfo.id == encodingId)
- return encodingInfo.encoding;
- }
-
- throw AvException("Invalid encodingId");
-}
-
// TODO, parametrize?
static const std::vector execNames =
{
@@ -176,28 +128,27 @@ Transcoder::start()
args.push_back("mp3");
break;
- case Encoding::OGA:
+ case Encoding::OGG_OPUS:
+ args.push_back("-acodec");
+ args.push_back("libopus");
+ args.push_back("-f");
+ args.push_back("ogg");
+ break;
+
+ case Encoding::OGG_VORBIS:
args.push_back("-acodec");
args.push_back("libvorbis");
args.push_back("-f");
args.push_back("ogg");
break;
- case Encoding::WEBMA:
- args.push_back("-codec:a");
+ case Encoding::WEBM_VORBIS:
+ args.push_back("-acodec");
args.push_back("libvorbis");
args.push_back("-f");
args.push_back("webm");
break;
- case Encoding::M4A:
- args.push_back("-acodec");
- args.push_back("aac");
- args.push_back("-f");
- args.push_back("mp4");
- args.push_back("-strict");
- args.push_back("experimental");
- break;
default:
return false;
diff --git a/src/av/AvTranscoder.hpp b/src/av/AvTranscoder.hpp
index fb30ace9..b089183f 100644
--- a/src/av/AvTranscoder.hpp
+++ b/src/av/AvTranscoder.hpp
@@ -28,20 +28,11 @@
#include
#include "AvInfo.hpp"
+#include "AvTypes.hpp"
namespace Av {
-enum class Encoding
-{
- OGA,
- OGV,
- MP3,
- WEBMA,
- M4A,
-};
-
-std::string encodingToMimetype(Encoding encoding);
struct TranscodeParameters
{
diff --git a/src/av/AvTypes.cpp b/src/av/AvTypes.cpp
new file mode 100644
index 00000000..d6d2499b
--- /dev/null
+++ b/src/av/AvTypes.cpp
@@ -0,0 +1,44 @@
+/*
+ * Copyright (C) 2019 Emeric Poupon
+ *
+ * This file is part of LMS.
+ *
+ * LMS 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.
+ *
+ * LMS 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 LMS. If not, see .
+ */
+
+#include "AvTypes.hpp"
+
+#include