diff --git a/src/Makefile.am b/src/Makefile.am index 0e1bfe72..1efba30c 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -41,7 +41,7 @@ lms_SOURCES = \ $(srcdir)/ui/explore/TracksInfoView.cpp \ $(srcdir)/ui/explore/TracksView.cpp \ $(srcdir)/ui/resource/ImageResource.cpp \ - $(srcdir)/ui/resource/TranscodeResource.cpp \ + $(srcdir)/ui/resource/AudioResource.cpp \ $(srcdir)/utils/Config.cpp \ $(srcdir)/utils/Logger.cpp \ $(srcdir)/utils/Path.cpp \ diff --git a/src/av/AvTranscoder.hpp b/src/av/AvTranscoder.hpp index 144ea5d6..40df78fe 100644 --- a/src/av/AvTranscoder.hpp +++ b/src/av/AvTranscoder.hpp @@ -42,8 +42,6 @@ enum class Encoding }; std::string encodingToMimetype(Encoding encoding); -int encodingToInt(Encoding encoding); -Encoding encodingFromInt(int encoding); struct TranscodeParameters { diff --git a/src/database/User.cpp b/src/database/User.cpp index 2bd01e70..d108e103 100644 --- a/src/database/User.cpp +++ b/src/database/User.cpp @@ -28,6 +28,7 @@ const std::vector User::audioBitrates = { 64000, + 96000, 128000, 192000, 320000, diff --git a/src/ui/LmsApplication.cpp b/src/ui/LmsApplication.cpp index 9e6f3b40..9d49104d 100644 --- a/src/ui/LmsApplication.cpp +++ b/src/ui/LmsApplication.cpp @@ -46,7 +46,7 @@ #include "admin/UsersView.hpp" #include "resource/ImageResource.hpp" -#include "resource/TranscodeResource.hpp" +#include "resource/AudioResource.hpp" namespace UserInterface { @@ -78,7 +78,7 @@ LmsApplication::LmsApplication(const Wt::WEnvironment& env, Wt::Dbo::SqlConnecti _appGroups(appGroups), _scanner(scanner), _imageResource(nullptr), - _transcodeResource(nullptr) + _audioResource(nullptr) { auto bootstrapTheme = std::make_unique(); bootstrapTheme->setVersion(Wt::BootstrapVersion::v3); @@ -329,7 +329,7 @@ LmsApplication::createHome() } _imageResource = std::make_shared(); - _transcodeResource = std::make_shared(); + _audioResource = std::make_shared(); setConfirmCloseMessage(Wt::WString::tr("Lms.quit-confirm")); diff --git a/src/ui/LmsApplication.hpp b/src/ui/LmsApplication.hpp index 00b5a07d..7d0ca982 100644 --- a/src/ui/LmsApplication.hpp +++ b/src/ui/LmsApplication.hpp @@ -35,7 +35,7 @@ namespace UserInterface { -class TranscodeResource; +class AudioResource; class ImageResource; // Events that can be listen to anywhere in the application @@ -75,7 +75,7 @@ class LmsApplication : public Wt::WApplication // Session application data std::shared_ptr getImageResource() { return _imageResource; } - std::shared_ptr getTranscodeResource() { return _transcodeResource; } + std::shared_ptr getAudioResource() { return _audioResource; } Database::Handler& getDb() { return _db;} Wt::Dbo::Session& getDboSession() { return _db.getSession();} @@ -122,7 +122,7 @@ class LmsApplication : public Wt::WApplication Auth* _auth; Scanner::MediaScanner& _scanner; std::shared_ptr _imageResource; - std::shared_ptr _transcodeResource; + std::shared_ptr _audioResource; bool _isAdmin = false; }; diff --git a/src/ui/MediaPlayer.cpp b/src/ui/MediaPlayer.cpp index 6afa3f8c..6cceaaf1 100644 --- a/src/ui/MediaPlayer.cpp +++ b/src/ui/MediaPlayer.cpp @@ -26,7 +26,7 @@ #include "resource/ImageResource.hpp" -#include "resource/TranscodeResource.hpp" +#include "resource/AudioResource.hpp" #include "LmsApplication.hpp" @@ -65,7 +65,7 @@ MediaPlayer::loadTrack(Database::IdType trackId, bool play) { Av::MediaFile mediaFile(track->getPath()); - auto resource = LmsApp->getTranscodeResource()->getUrl(trackId, Av::Encoding::MP3); + auto resource = LmsApp->getAudioResource()->getUrl(trackId); auto imgResource = LmsApp->getImageResource()->getTrackUrl(trackId, 64); std::ostringstream oss; @@ -77,7 +77,7 @@ MediaPlayer::loadTrack(Database::IdType trackId, bool play) << "};"; oss << "LMS.mediaplayer.loadTrack(params, " << (play ? "true" : "false") << ")"; // true to autoplay - LMS_LOG(UI, DEBUG) << "Runing js = '" << oss.str() << "'"; + LMS_LOG(UI, DEBUG) << "Running js = '" << oss.str() << "'"; _title->setText(Wt::WString::fromUTF8(track->getName())); diff --git a/src/ui/resource/TranscodeResource.cpp b/src/ui/resource/AudioResource.cpp similarity index 83% rename from src/ui/resource/TranscodeResource.cpp rename to src/ui/resource/AudioResource.cpp index 82bda742..4bb294f0 100644 --- a/src/ui/resource/TranscodeResource.cpp +++ b/src/ui/resource/AudioResource.cpp @@ -17,7 +17,7 @@ * along with LMS. If not, see . */ -#include "TranscodeResource.hpp" +#include "AudioResource.hpp" #include @@ -30,21 +30,21 @@ namespace UserInterface { -TranscodeResource:: ~TranscodeResource() +AudioResource:: ~AudioResource() { beingDeleted(); } std::string -TranscodeResource::getUrl(Database::IdType trackId, Av::Encoding encoding) const +AudioResource::getUrl(Database::IdType trackId) const { - std::string res = url()+ "&trackid=" + std::to_string(trackId) + "&encoding=" + std::to_string(Av::encodingToInt(encoding)); + std::string res = url()+ "&trackid=" + std::to_string(trackId); return res; } void -TranscodeResource::handleRequest(const Wt::Http::Request& request, +AudioResource::handleRequest(const Wt::Http::Request& request, Wt::Http::Response& response) { std::shared_ptr transcoder; @@ -77,14 +77,6 @@ TranscodeResource::handleRequest(const Wt::Http::Request& request, auto offsetStr = request.getParameter("offset"); if (offsetStr) parameters.offset = std::chrono::seconds(std::stol(*offsetStr)); - - auto encodingStr = request.getParameter("encoding"); - if (encodingStr) - parameters.encoding = Av::encodingFromInt(std::stol(*encodingStr)); - - auto streamStr = request.getParameter("stream"); - if (streamStr) - parameters.stream = std::stol(*streamStr); } catch (std::exception &e) { @@ -107,6 +99,22 @@ TranscodeResource::handleRequest(const Wt::Http::Request& request, } parameters.bitrate = LmsApp->getUser()->getAudioBitrate(); + + switch (LmsApp->getUser()->getAudioEncoding()) + { + case Database::AudioEncoding::OGA: + parameters.encoding = Av::Encoding::OGA; + break; + case Database::AudioEncoding::WEBMA: + parameters.encoding = Av::Encoding::WEBMA; + break; + case Database::AudioEncoding::MP3: + parameters.encoding = Av::Encoding::MP3; + break; + case Database::AudioEncoding::AUTO: + default: + parameters.encoding = Av::Encoding::MP3; + } transcoder = std::make_shared(track->getPath(), parameters); } diff --git a/src/ui/resource/TranscodeResource.hpp b/src/ui/resource/AudioResource.hpp similarity index 86% rename from src/ui/resource/TranscodeResource.hpp rename to src/ui/resource/AudioResource.hpp index 6867db91..0b8e4226 100644 --- a/src/ui/resource/TranscodeResource.hpp +++ b/src/ui/resource/AudioResource.hpp @@ -19,8 +19,6 @@ #pragma once -#include - #include #include "av/AvTranscoder.hpp" @@ -31,12 +29,12 @@ namespace UserInterface { -class TranscodeResource : public Wt::WResource +class AudioResource : public Wt::WResource { public: - ~TranscodeResource(); + ~AudioResource(); - std::string getUrl(Database::IdType trackId, Av::Encoding encoding) const; + std::string getUrl(Database::IdType trackId) const; void handleRequest(const Wt::Http::Request& request, Wt::Http::Response& response);