diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 3625032a..1db2463a 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -774,14 +774,15 @@ SOURCES organise/organiseerrordialog.cpp transcoder/transcoder.cpp transcoder/transcodedialog.cpp - transcoder/transcoderoptionsaac.cpp transcoder/transcoderoptionsdialog.cpp transcoder/transcoderoptionsflac.cpp - transcoder/transcoderoptionsmp3.cpp + transcoder/transcoderoptionswavpack.cpp + transcoder/transcoderoptionsvorbis.cpp transcoder/transcoderoptionsopus.cpp transcoder/transcoderoptionsspeex.cpp - transcoder/transcoderoptionsvorbis.cpp - transcoder/transcoderoptionswma.cpp + transcoder/transcoderoptionsaac.cpp + transcoder/transcoderoptionsasf.cpp + transcoder/transcoderoptionsmp3.cpp settings/transcodersettingspage.cpp HEADERS organise/organise.h @@ -800,11 +801,12 @@ UI transcoder/transcoderoptionsaac.ui transcoder/transcoderoptionsdialog.ui transcoder/transcoderoptionsflac.ui - transcoder/transcoderoptionsmp3.ui + transcoder/transcoderoptionswavpack.ui + transcoder/transcoderoptionsvorbis.ui transcoder/transcoderoptionsopus.ui transcoder/transcoderoptionsspeex.ui - transcoder/transcoderoptionsvorbis.ui - transcoder/transcoderoptionswma.ui + transcoder/transcoderoptionsasf.ui + transcoder/transcoderoptionsmp3.ui settings/transcodersettingspage.ui ) diff --git a/src/core/mainwindow.cpp b/src/core/mainwindow.cpp index a7b612af..5c2fd019 100644 --- a/src/core/mainwindow.cpp +++ b/src/core/mainwindow.cpp @@ -360,6 +360,7 @@ MainWindow::MainWindow(Application *app, SystemTrayIcon *tray_icon, OSD *osd, co ui_->action_cover_manager->setIcon(IconLoader::Load("document-download")); ui_->action_edit_track->setIcon(IconLoader::Load("edit-rename")); ui_->action_equalizer->setIcon(IconLoader::Load("equalizer")); + ui_->action_transcoder->setIcon(IconLoader::Load("tools-wizard")); ui_->action_update_collection->setIcon(IconLoader::Load("view-refresh")); ui_->action_full_collection_scan->setIcon(IconLoader::Load("view-refresh")); ui_->action_settings->setIcon(IconLoader::Load("configure")); @@ -411,10 +412,11 @@ MainWindow::MainWindow(Application *app, SystemTrayIcon *tray_icon, OSD *osd, co connect(ui_->action_add_folder, SIGNAL(triggered()), SLOT(AddFolder())); connect(ui_->action_cover_manager, SIGNAL(triggered()), SLOT(ShowCoverManager())); connect(ui_->action_equalizer, SIGNAL(triggered()), equalizer_.get(), SLOT(show())); + connect(ui_->action_transcoder, SIGNAL(triggered()), SLOT(ShowTranscodeDialog())); connect(ui_->action_jump, SIGNAL(triggered()), ui_->playlist->view(), SLOT(JumpToCurrentlyPlayingTrack())); connect(ui_->action_update_collection, SIGNAL(triggered()), app_->collection(), SLOT(IncrementalScan())); connect(ui_->action_full_collection_scan, SIGNAL(triggered()), app_->collection(), SLOT(FullScan())); - //connect(ui_->action_add_files_to_transcoder, SIGNAL(triggered()), SLOT(AddFilesToTranscoder())); + connect(ui_->action_add_files_to_transcoder, SIGNAL(triggered()), SLOT(AddFilesToTranscoder())); connect(ui_->action_toggle_scrobbling, SIGNAL(triggered()), app_->scrobbler(), SLOT(ToggleScrobbling())); connect(app_->scrobbler(), SIGNAL(ErrorMessage(QString)), SLOT(ShowErrorDialog(QString))); @@ -569,12 +571,12 @@ MainWindow::MainWindow(Application *app, SystemTrayIcon *tray_icon, OSD *osd, co playlist_menu_->addAction(ui_->action_renumber_tracks); playlist_menu_->addAction(ui_->action_selection_set_value); playlist_menu_->addAction(ui_->action_auto_complete_tags); - //playlist_menu_->addAction(ui_->action_add_files_to_transcoder); + playlist_menu_->addAction(ui_->action_add_files_to_transcoder); playlist_menu_->addSeparator(); #ifdef HAVE_GSTREAMER playlist_copy_to_collection_ = playlist_menu_->addAction(IconLoader::Load("edit-copy"), tr("Copy to collection..."), this, SLOT(PlaylistCopyToCollection())); playlist_move_to_collection_ = playlist_menu_->addAction(IconLoader::Load("go-jump"), tr("Move to collection..."), this, SLOT(PlaylistMoveToCollection())); - //playlist_organise_ = playlist_menu_->addAction(IconLoader::Load("edit-copy"), tr("Organise files..."), this, SLOT(PlaylistMoveToCollection())); + playlist_organise_ = playlist_menu_->addAction(IconLoader::Load("edit-copy"), tr("Organise files..."), this, SLOT(PlaylistMoveToCollection())); #ifndef Q_OS_WIN playlist_copy_to_device_ = playlist_menu_->addAction(IconLoader::Load("device"), tr("Copy to device..."), this, SLOT(PlaylistCopyToDevice())); #endif @@ -1429,7 +1431,7 @@ void MainWindow::PlaylistRightClick(const QPoint &global_pos, const QModelIndex #ifdef HAVE_GSTREAMER playlist_copy_to_collection_->setVisible(false); playlist_move_to_collection_->setVisible(false); - //playlist_organise_->setVisible(false); + playlist_organise_->setVisible(false); #ifndef Q_OS_WIN playlist_copy_to_device_->setVisible(false); #endif @@ -1493,7 +1495,9 @@ void MainWindow::PlaylistRightClick(const QPoint &global_pos, const QModelIndex // Is it a collection item? PlaylistItemPtr item = app_->playlist_manager()->current()->item_at(source_index.row()); if (item->IsLocalCollectionItem() && item->Metadata().id() != -1) { - //playlist_organise_->setVisible(editable); +#ifdef HAVE_GSTREAMER + playlist_organise_->setVisible(editable); +#endif playlist_show_in_collection_->setVisible(editable); playlist_open_in_browser_->setVisible(true); } diff --git a/src/core/mainwindow.h b/src/core/mainwindow.h index b7d324fb..a593e8e8 100644 --- a/src/core/mainwindow.h +++ b/src/core/mainwindow.h @@ -350,7 +350,7 @@ signals: QAction *playlist_play_pause_; QAction *playlist_stop_after_; QAction *playlist_undoredo_; - //QAction *playlist_organise_; + QAction *playlist_organise_; QAction *playlist_show_in_collection_; #ifdef HAVE_GSTREAMER QAction *playlist_copy_to_collection_; diff --git a/src/core/mainwindow.ui b/src/core/mainwindow.ui index 7d7fa719..3a4f5ef9 100644 --- a/src/core/mainwindow.ui +++ b/src/core/mainwindow.ui @@ -407,7 +407,7 @@ 0 0 1131 - 24 + 27 @@ -429,7 +429,7 @@ - &Playlist + P&laylist @@ -449,7 +449,7 @@ - &Help + Help @@ -461,6 +461,7 @@ + @@ -613,7 +614,7 @@ - Open &audio CD... + Open audio &CD... @@ -646,6 +647,11 @@ &Equalizer + + + &Transcode Music + + Add &folder... @@ -749,6 +755,20 @@ Remove &unavailable tracks from playlist + + + false + + + Add file(s) to transcoder + + + Add file to transcoder + + + Ctrl+Shift+T + + diff --git a/src/organise/organisedialog.cpp b/src/organise/organisedialog.cpp index ad1ba015..ac7a18a5 100644 --- a/src/organise/organisedialog.cpp +++ b/src/organise/organisedialog.cpp @@ -67,7 +67,7 @@ using std::shared_ptr; using std::stable_sort; -const char *OrganiseDialog::kDefaultFormat = "%artist/%album{ (Disc %disc)}/{%track - }%title.%extension"; +const char *OrganiseDialog::kDefaultFormat = "%artist/%album{ (Disc %disc)}/{%track - }%artist - %album - %title.%extension"; const char *OrganiseDialog::kSettingsGroup = "OrganiseDialog"; OrganiseDialog::OrganiseDialog(TaskManager *task_manager, QWidget *parent) diff --git a/src/settings/transcodersettingspage.cpp b/src/settings/transcodersettingspage.cpp index f1032cc5..b32801a4 100644 --- a/src/settings/transcodersettingspage.cpp +++ b/src/settings/transcodersettingspage.cpp @@ -22,13 +22,14 @@ #include "core/iconloader.h" #include "settingspage.h" -#include "transcoder/transcoderoptionsaac.h" #include "transcoder/transcoderoptionsflac.h" -#include "transcoder/transcoderoptionsmp3.h" +#include "transcoder/transcoderoptionswavpack.h" +#include "transcoder/transcoderoptionsvorbis.h" #include "transcoder/transcoderoptionsopus.h" #include "transcoder/transcoderoptionsspeex.h" -#include "transcoder/transcoderoptionsvorbis.h" -#include "transcoder/transcoderoptionswma.h" +#include "transcoder/transcoderoptionsaac.h" +#include "transcoder/transcoderoptionsasf.h" +#include "transcoder/transcoderoptionsmp3.h" #include "transcodersettingspage.h" #include "ui_transcodersettingspage.h" @@ -45,21 +46,23 @@ TranscoderSettingsPage::~TranscoderSettingsPage() { } void TranscoderSettingsPage::Load() { - ui_->transcoding_aac->Load(); ui_->transcoding_flac->Load(); - ui_->transcoding_mp3->Load(); - ui_->transcoding_speex->Load(); + ui_->transcoding_wavpack->Load(); ui_->transcoding_vorbis->Load(); - ui_->transcoding_wma->Load(); ui_->transcoding_opus->Load(); + ui_->transcoding_speex->Load(); + ui_->transcoding_aac->Load(); + ui_->transcoding_asf->Load(); + ui_->transcoding_mp3->Load(); } void TranscoderSettingsPage::Save() { - ui_->transcoding_aac->Save(); ui_->transcoding_flac->Save(); - ui_->transcoding_mp3->Save(); - ui_->transcoding_speex->Save(); + ui_->transcoding_wavpack->Save(); ui_->transcoding_vorbis->Save(); - ui_->transcoding_wma->Save(); ui_->transcoding_opus->Save(); + ui_->transcoding_speex->Save(); + ui_->transcoding_aac->Save(); + ui_->transcoding_asf->Save(); + ui_->transcoding_mp3->Save(); } diff --git a/src/settings/transcodersettingspage.h b/src/settings/transcodersettingspage.h index 033cf3b2..8460c0d7 100644 --- a/src/settings/transcodersettingspage.h +++ b/src/settings/transcodersettingspage.h @@ -47,4 +47,4 @@ private: Ui_TranscoderSettingsPage* ui_; }; -#endif // TRANSCODERSETTINGSPAGE_H +#endif // TRANSCODERSETTINGSPAGE_H diff --git a/src/settings/transcodersettingspage.ui b/src/settings/transcodersettingspage.ui index d4b477ea..744e11dc 100644 --- a/src/settings/transcodersettingspage.ui +++ b/src/settings/transcodersettingspage.ui @@ -15,7 +15,7 @@ - + These settings are used in the "Transcode Music" dialog, and when converting music before copying it to a device. @@ -27,9 +27,184 @@ - 0 + 5 - + + + FLAC + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + + + + WavPack + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + + + + Vorbis + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + + + + Opus + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + + + + Speex + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + + + + AAC + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + + + + ASF (WMA) + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + + MP3 @@ -54,156 +229,6 @@ - - - Vorbis - - - - 0 - - - 0 - - - 0 - - - 0 - - - 0 - - - - - - - - - FLAC - - - - 0 - - - 0 - - - 0 - - - 0 - - - 0 - - - - - - - - - Speex - - - - 0 - - - 0 - - - 0 - - - 0 - - - 0 - - - - - - - - - AAC - - - - 0 - - - 0 - - - 0 - - - 0 - - - 0 - - - - - - - - - WMA - - - - 0 - - - 0 - - - 0 - - - 0 - - - 0 - - - - - - - - - Opus - - - - 0 - - - 0 - - - 0 - - - 0 - - - 0 - - - - - - @@ -234,15 +259,21 @@ 1 - TranscoderOptionsFlac + TranscoderOptionsFLAC QWidget
transcoder/transcoderoptionsflac.h
1
- TranscoderOptionsWma + TranscoderOptionsWavPack QWidget -
transcoder/transcoderoptionswma.h
+
transcoder/transcoderoptionswavpack.h
+ 1 +
+ + TranscoderOptionsASF + QWidget +
transcoder/transcoderoptionsasf.h
1
diff --git a/src/transcoder/transcodedialog.cpp b/src/transcoder/transcodedialog.cpp index e7064619..1e63c313 100644 --- a/src/transcoder/transcodedialog.cpp +++ b/src/transcoder/transcodedialog.cpp @@ -106,8 +106,7 @@ TranscodeDialog::TranscodeDialog(QWidget *parent) QString last_output_format = s.value("last_output_format", "audio/x-vorbis").toString(); for (int i = 0; i < ui_->format->count(); ++i) { - if (last_output_format == - ui_->format->itemData(i).value().codec_mimetype_) { + if (last_output_format == ui_->format->itemData(i).value().codec_mimetype_) { ui_->format->setCurrentIndex(i); break; } diff --git a/src/transcoder/transcoder.cpp b/src/transcoder/transcoder.cpp index aee7d748..caba5b57 100644 --- a/src/transcoder/transcoder.cpp +++ b/src/transcoder/transcoder.cpp @@ -202,7 +202,9 @@ void Transcoder::JobState::PostFinished(bool success) { } Transcoder::Transcoder(QObject *parent, const QString &settings_postfix) - : QObject(parent), max_threads_(QThread::idealThreadCount()), settings_postfix_(settings_postfix) { + : QObject(parent), + max_threads_(QThread::idealThreadCount()), + settings_postfix_(settings_postfix) { if (JobFinishedEvent::sEventType == -1) JobFinishedEvent::sEventType = QEvent::registerEventType(); @@ -223,15 +225,16 @@ Transcoder::Transcoder(QObject *parent, const QString &settings_postfix) QList Transcoder::GetAllPresets() { QList ret; - ret << PresetForFileType(Song::FileType_FLAC); - ret << PresetForFileType(Song::FileType_MP4); - ret << PresetForFileType(Song::FileType_MPEG); - ret << PresetForFileType(Song::FileType_OggVorbis); - ret << PresetForFileType(Song::FileType_OggFlac); - ret << PresetForFileType(Song::FileType_OggSpeex); - ret << PresetForFileType(Song::FileType_ASF); ret << PresetForFileType(Song::FileType_WAV); + ret << PresetForFileType(Song::FileType_FLAC); + ret << PresetForFileType(Song::FileType_WavPack); + ret << PresetForFileType(Song::FileType_OggFlac); + ret << PresetForFileType(Song::FileType_OggVorbis); ret << PresetForFileType(Song::FileType_OggOpus); + ret << PresetForFileType(Song::FileType_OggSpeex); + ret << PresetForFileType(Song::FileType_MPEG); + ret << PresetForFileType(Song::FileType_MP4); + ret << PresetForFileType(Song::FileType_ASF); return ret; } @@ -239,24 +242,26 @@ QList Transcoder::GetAllPresets() { TranscoderPreset Transcoder::PresetForFileType(Song::FileType type) { switch (type) { - case Song::FileType_FLAC: - return TranscoderPreset(type, tr("FLAC"), "flac", "audio/x-flac"); - case Song::FileType_MP4: - return TranscoderPreset(type, tr("M4A AAC"), "mp4", "audio/mpeg, mpegversion=(int)4", "audio/mp4"); - case Song::FileType_MPEG: - return TranscoderPreset(type, tr("MP3"), "mp3", "audio/mpeg, mpegversion=(int)1, layer=(int)3"); - case Song::FileType_OggVorbis: - return TranscoderPreset(type, tr("Ogg Vorbis"), "ogg", "audio/x-vorbis", "application/ogg"); - case Song::FileType_OggFlac: - return TranscoderPreset(type, tr("Ogg FLAC"), "ogg", "audio/x-flac", "application/ogg"); - case Song::FileType_OggSpeex: - return TranscoderPreset(type, tr("Ogg Speex"), "spx", "audio/x-speex", "application/ogg"); - case Song::FileType_OggOpus: - return TranscoderPreset(type, tr("Ogg Opus"), "opus", "audio/x-opus", "application/ogg"); - case Song::FileType_ASF: - return TranscoderPreset(type, tr("Windows Media audio"), "wma", "audio/x-wma", "video/x-ms-asf"); case Song::FileType_WAV: - return TranscoderPreset(type, tr("Wav"), "wav", QString(), "audio/x-wav"); + return TranscoderPreset(type, "Wav", "wav", QString(), "audio/x-wav"); + case Song::FileType_FLAC: + return TranscoderPreset(type, "FLAC", "flac", "audio/x-flac"); + case Song::FileType_WavPack: + return TranscoderPreset(type, "WavPack", "wv", "audio/x-wavpack"); + case Song::FileType_OggFlac: + return TranscoderPreset(type, "Ogg FLAC", "ogg", "audio/x-flac", "application/ogg"); + case Song::FileType_OggVorbis: + return TranscoderPreset(type, "Ogg Vorbis", "ogg", "audio/x-vorbis", "application/ogg"); + case Song::FileType_OggOpus: + return TranscoderPreset(type, "Ogg Opus", "opus", "audio/x-opus", "application/ogg"); + case Song::FileType_OggSpeex: + return TranscoderPreset(type, "Ogg Speex", "spx", "audio/x-speex", "application/ogg"); + case Song::FileType_MPEG: + return TranscoderPreset(type, "MP3", "mp3", "audio/mpeg, mpegversion=(int)1, layer=(int)3"); + case Song::FileType_MP4: + return TranscoderPreset(type, "M4A AAC", "mp4", "audio/mpeg, mpegversion=(int)4", "audio/mp4"); + case Song::FileType_ASF: + return TranscoderPreset(type, "Windows Media audio", "wma", "audio/x-wma", "video/x-ms-asf"); default: qLog(Warning) << "Unsupported format in PresetForFileType:" << type; return TranscoderPreset(); @@ -269,9 +274,9 @@ Song::FileType Transcoder::PickBestFormat(QList supported) { if (supported.isEmpty()) return Song::FileType_Unknown; QList best_formats; - best_formats << Song::FileType_MPEG; - best_formats << Song::FileType_OggVorbis; - best_formats << Song::FileType_ASF; + best_formats << Song::FileType_FLAC; + best_formats << Song::FileType_OggFlac; + best_formats << Song::FileType_WavPack; for (Song::FileType type : best_formats) { if (supported.isEmpty() || supported.contains(type)) return type; @@ -413,13 +418,13 @@ bool Transcoder::StartJob(const Job &job) { if (!state->pipeline_) return false; // Create all the elements - GstElement *src = CreateElement("filesrc", state->pipeline_); - GstElement *decode = CreateElement("decodebin", state->pipeline_); - GstElement *convert = CreateElement("audioconvert", state->pipeline_); + GstElement *src = CreateElement("filesrc", state->pipeline_); + GstElement *decode = CreateElement("decodebin", state->pipeline_); + GstElement *convert = CreateElement("audioconvert", state->pipeline_); GstElement *resample = CreateElement("audioresample", state->pipeline_); GstElement *codec = CreateElementForMimeType("Codec/Encoder/Audio", job.preset.codec_mimetype_, state->pipeline_); GstElement *muxer = CreateElementForMimeType("Codec/Muxer", job.preset.muxer_mimetype_, state->pipeline_); - GstElement *sink = CreateElement("filesink", state->pipeline_); + GstElement *sink = CreateElement("filesink", state->pipeline_); if (!src || !decode || !convert || !sink) return false; @@ -558,7 +563,7 @@ void Transcoder::SetElementProperties(const QString &name, GObject *object) { s.beginGroup("Transcoder/" + name + settings_postfix_); guint properties_count = 0; - GParamSpec **properties = g_object_class_list_properties( G_OBJECT_GET_CLASS(object), &properties_count); + GParamSpec **properties = g_object_class_list_properties(G_OBJECT_GET_CLASS(object), &properties_count); for (int i = 0; i < properties_count; ++i) { GParamSpec *property = properties[i]; diff --git a/src/transcoder/transcoderoptionsaac.cpp b/src/transcoder/transcoderoptionsaac.cpp index db36a53c..063022fc 100644 --- a/src/transcoder/transcoderoptionsaac.cpp +++ b/src/transcoder/transcoderoptionsaac.cpp @@ -48,7 +48,7 @@ void TranscoderOptionsAAC::Load() { QSettings s; s.beginGroup(kSettingsGroup + settings_postfix_); - ui_->bitrate_slider->setValue(s.value("bitrate", 128000).toInt() / 1000); + ui_->bitrate_slider->setValue(s.value("bitrate", 320000).toInt() / 1000); ui_->profile->setCurrentIndex(s.value("profile", 2).toInt() - 1); ui_->tns->setChecked(s.value("tns", false).toBool()); ui_->midside->setChecked(s.value("midside", true).toBool()); diff --git a/src/transcoder/transcoderoptionswma.cpp b/src/transcoder/transcoderoptionsasf.cpp similarity index 76% rename from src/transcoder/transcoderoptionswma.cpp rename to src/transcoder/transcoderoptionsasf.cpp index 877e831f..f6698a17 100644 --- a/src/transcoder/transcoderoptionswma.cpp +++ b/src/transcoder/transcoderoptionsasf.cpp @@ -28,30 +28,30 @@ #include #include "transcoder/transcoderoptionsinterface.h" -#include "transcoderoptionswma.h" -#include "ui_transcoderoptionswma.h" +#include "transcoderoptionsasf.h" +#include "ui_transcoderoptionsasf.h" -const char *TranscoderOptionsWma::kSettingsGroup = "Transcoder/ffenc_wmav2"; +const char *TranscoderOptionsASF::kSettingsGroup = "Transcoder/ffenc_wmav2"; -TranscoderOptionsWma::TranscoderOptionsWma(QWidget *parent) - : TranscoderOptionsInterface(parent), ui_(new Ui_TranscoderOptionsWma) { +TranscoderOptionsASF::TranscoderOptionsASF(QWidget *parent) + : TranscoderOptionsInterface(parent), ui_(new Ui_TranscoderOptionsASF) { ui_->setupUi(this); } -TranscoderOptionsWma::~TranscoderOptionsWma() { +TranscoderOptionsASF::~TranscoderOptionsASF() { delete ui_; } -void TranscoderOptionsWma::Load() { +void TranscoderOptionsASF::Load() { QSettings s; s.beginGroup(kSettingsGroup + settings_postfix_); - ui_->bitrate_slider->setValue(s.value("bitrate", 128000).toInt() / 1000); + ui_->bitrate_slider->setValue(s.value("bitrate", 320000).toInt() / 1000); } -void TranscoderOptionsWma::Save() { +void TranscoderOptionsASF::Save() { QSettings s; s.beginGroup(kSettingsGroup + settings_postfix_); diff --git a/src/transcoder/transcoderoptionswma.h b/src/transcoder/transcoderoptionsasf.h similarity index 75% rename from src/transcoder/transcoderoptionswma.h rename to src/transcoder/transcoderoptionsasf.h index 1eb146ea..f1faa648 100644 --- a/src/transcoder/transcoderoptionswma.h +++ b/src/transcoder/transcoderoptionsasf.h @@ -18,8 +18,8 @@ * */ -#ifndef TRANSCODEROPTIONSWMA_H -#define TRANSCODEROPTIONSWMA_H +#ifndef TRANSCODEROPTIONSASF_H +#define TRANSCODEROPTIONSASF_H #include "config.h" @@ -27,12 +27,12 @@ #include "transcoderoptionsinterface.h" -class Ui_TranscoderOptionsWma; +class Ui_TranscoderOptionsASF; -class TranscoderOptionsWma : public TranscoderOptionsInterface { +class TranscoderOptionsASF : public TranscoderOptionsInterface { public: - TranscoderOptionsWma(QWidget *parent = nullptr); - ~TranscoderOptionsWma(); + TranscoderOptionsASF(QWidget *parent = nullptr); + ~TranscoderOptionsASF(); void Load(); void Save(); @@ -40,7 +40,7 @@ class TranscoderOptionsWma : public TranscoderOptionsInterface { private: static const char *kSettingsGroup; - Ui_TranscoderOptionsWma *ui_; + Ui_TranscoderOptionsASF *ui_; }; -#endif // TRANSCODEROPTIONSWMA_H +#endif // TRANSCODEROPTIONSASF_H diff --git a/src/transcoder/transcoderoptionswma.ui b/src/transcoder/transcoderoptionsasf.ui similarity index 95% rename from src/transcoder/transcoderoptionswma.ui rename to src/transcoder/transcoderoptionsasf.ui index a6b47eb1..afe7c3f3 100644 --- a/src/transcoder/transcoderoptionswma.ui +++ b/src/transcoder/transcoderoptionsasf.ui @@ -1,7 +1,7 @@ - TranscoderOptionsWma - + TranscoderOptionsASF + 0 diff --git a/src/transcoder/transcoderoptionsdialog.cpp b/src/transcoder/transcoderoptionsdialog.cpp index 83563d25..f39830e2 100644 --- a/src/transcoder/transcoderoptionsdialog.cpp +++ b/src/transcoder/transcoderoptionsdialog.cpp @@ -28,30 +28,34 @@ #include #include "transcoderoptionsinterface.h" -#include "transcoderoptionsaac.h" #include "transcoderoptionsdialog.h" #include "transcoderoptionsflac.h" -#include "transcoderoptionsmp3.h" +#include "transcoderoptionswavpack.h" +#include "transcoderoptionsvorbis.h" #include "transcoderoptionsopus.h" #include "transcoderoptionsspeex.h" -#include "transcoderoptionsvorbis.h" -#include "transcoderoptionswma.h" +#include "transcoderoptionsasf.h" +#include "transcoderoptionsaac.h" +#include "transcoderoptionsmp3.h" #include "ui_transcoderoptionsdialog.h" TranscoderOptionsDialog::TranscoderOptionsDialog(Song::FileType type, QWidget *parent) - : QDialog(parent), ui_(new Ui_TranscoderOptionsDialog), options_(nullptr) { + : QDialog(parent), + ui_(new Ui_TranscoderOptionsDialog), + options_(nullptr) { ui_->setupUi(this); switch (type) { case Song::FileType_FLAC: - case Song::FileType_OggFlac: options_ = new TranscoderOptionsFlac(this); break; - case Song::FileType_MP4: options_ = new TranscoderOptionsAAC(this); break; - case Song::FileType_MPEG: options_ = new TranscoderOptionsMP3(this); break; - case Song::FileType_OggVorbis: options_ = new TranscoderOptionsVorbis(this); break; - case Song::FileType_OggOpus: options_ = new TranscoderOptionsOpus(this); break; - case Song::FileType_OggSpeex: options_ = new TranscoderOptionsSpeex(this); break; - case Song::FileType_ASF: options_ = new TranscoderOptionsWma(this); break; + case Song::FileType_OggFlac: options_ = new TranscoderOptionsFLAC(this); break; + case Song::FileType_WavPack: options_ = new TranscoderOptionsWavPack(this); break; + case Song::FileType_OggVorbis: options_ = new TranscoderOptionsVorbis(this); break; + case Song::FileType_OggOpus: options_ = new TranscoderOptionsOpus(this); break; + case Song::FileType_OggSpeex: options_ = new TranscoderOptionsSpeex(this); break; + case Song::FileType_MP4: options_ = new TranscoderOptionsAAC(this); break; + case Song::FileType_MPEG: options_ = new TranscoderOptionsMP3(this); break; + case Song::FileType_ASF: options_ = new TranscoderOptionsASF(this); break; default: break; } diff --git a/src/transcoder/transcoderoptionsflac.cpp b/src/transcoder/transcoderoptionsflac.cpp index e2c84d2e..c6c574d8 100644 --- a/src/transcoder/transcoderoptionsflac.cpp +++ b/src/transcoder/transcoderoptionsflac.cpp @@ -31,25 +31,25 @@ #include "transcoderoptionsflac.h" #include "ui_transcoderoptionsflac.h" -const char *TranscoderOptionsFlac::kSettingsGroup = "Transcoder/flacenc"; +const char *TranscoderOptionsFLAC::kSettingsGroup = "Transcoder/flacenc"; -TranscoderOptionsFlac::TranscoderOptionsFlac(QWidget *parent) - : TranscoderOptionsInterface(parent), ui_(new Ui_TranscoderOptionsFlac) { +TranscoderOptionsFLAC::TranscoderOptionsFLAC(QWidget *parent) + : TranscoderOptionsInterface(parent), ui_(new Ui_TranscoderOptionsFLAC) { ui_->setupUi(this); } -TranscoderOptionsFlac::~TranscoderOptionsFlac() { +TranscoderOptionsFLAC::~TranscoderOptionsFLAC() { delete ui_; } -void TranscoderOptionsFlac::Load() { +void TranscoderOptionsFLAC::Load() { QSettings s; s.beginGroup(kSettingsGroup + settings_postfix_); ui_->quality->setValue(s.value("quality", 5).toInt()); } -void TranscoderOptionsFlac::Save() { +void TranscoderOptionsFLAC::Save() { QSettings s; s.beginGroup(kSettingsGroup + settings_postfix_); diff --git a/src/transcoder/transcoderoptionsflac.h b/src/transcoder/transcoderoptionsflac.h index 2db1282e..ee2cdbba 100644 --- a/src/transcoder/transcoderoptionsflac.h +++ b/src/transcoder/transcoderoptionsflac.h @@ -27,12 +27,12 @@ #include "transcoderoptionsinterface.h" -class Ui_TranscoderOptionsFlac; +class Ui_TranscoderOptionsFLAC; -class TranscoderOptionsFlac : public TranscoderOptionsInterface { +class TranscoderOptionsFLAC : public TranscoderOptionsInterface { public: - TranscoderOptionsFlac(QWidget *parent = nullptr); - ~TranscoderOptionsFlac(); + TranscoderOptionsFLAC(QWidget *parent = nullptr); + ~TranscoderOptionsFLAC(); void Load(); void Save(); @@ -40,7 +40,7 @@ class TranscoderOptionsFlac : public TranscoderOptionsInterface { private: static const char *kSettingsGroup; - Ui_TranscoderOptionsFlac *ui_; + Ui_TranscoderOptionsFLAC *ui_; }; #endif // TRANSCODEROPTIONSFLAC_H diff --git a/src/transcoder/transcoderoptionsflac.ui b/src/transcoder/transcoderoptionsflac.ui index 9e0e07ab..ae91d644 100644 --- a/src/transcoder/transcoderoptionsflac.ui +++ b/src/transcoder/transcoderoptionsflac.ui @@ -1,7 +1,7 @@ - TranscoderOptionsFlac - + TranscoderOptionsFLAC + 0 diff --git a/src/transcoder/transcoderoptionsmp3.cpp b/src/transcoder/transcoderoptionsmp3.cpp index 7c2d1832..a64e419d 100644 --- a/src/transcoder/transcoderoptionsmp3.cpp +++ b/src/transcoder/transcoderoptionsmp3.cpp @@ -62,8 +62,8 @@ void TranscoderOptionsMP3::Load() { ui_->target_bitrate->setChecked(true); } - ui_->quality_spinbox->setValue(s.value("quality", 4.0).toFloat()); - ui_->bitrate_slider->setValue(s.value("bitrate", 128).toInt()); + ui_->quality_spinbox->setValue(s.value("quality", 10).toFloat()); + ui_->bitrate_slider->setValue(s.value("bitrate", 320).toInt()); ui_->cbr->setChecked(s.value("cbr", true).toBool()); ui_->encoding_engine_quality->setCurrentIndex(s.value("encoding-engine-quality", 1).toInt()); ui_->mono->setChecked(s.value("mono", false).toBool()); diff --git a/src/transcoder/transcoderoptionsopus.cpp b/src/transcoder/transcoderoptionsopus.cpp index 130999d9..c3a03c08 100644 --- a/src/transcoder/transcoderoptionsopus.cpp +++ b/src/transcoder/transcoderoptionsopus.cpp @@ -47,7 +47,7 @@ void TranscoderOptionsOpus::Load() { QSettings s; s.beginGroup(kSettingsGroup + settings_postfix_); - ui_->bitrate_slider->setValue(s.value("bitrate", 128000).toInt() / 1000); + ui_->bitrate_slider->setValue(s.value("bitrate", 320000).toInt() / 1000); } void TranscoderOptionsOpus::Save() { diff --git a/src/transcoder/transcoderoptionsspeex.cpp b/src/transcoder/transcoderoptionsspeex.cpp index 458b8241..772f294d 100644 --- a/src/transcoder/transcoderoptionsspeex.cpp +++ b/src/transcoder/transcoderoptionsspeex.cpp @@ -52,7 +52,7 @@ void TranscoderOptionsSpeex::Load() { QSettings s; s.beginGroup(kSettingsGroup + settings_postfix_); - ui_->quality_slider->setValue(s.value("quality", 8).toInt()); + ui_->quality_slider->setValue(s.value("quality", 10).toInt()); ui_->bitrate_slider->setValue(s.value("bitrate", 0).toInt() / 1000); ui_->mode->setCurrentIndex(s.value("mode", 0).toInt()); ui_->vbr->setChecked(s.value("vbr", false).toBool()); diff --git a/src/transcoder/transcoderoptionsvorbis.cpp b/src/transcoder/transcoderoptionsvorbis.cpp index c171ad7c..ebde1533 100644 --- a/src/transcoder/transcoderoptionsvorbis.cpp +++ b/src/transcoder/transcoderoptionsvorbis.cpp @@ -59,7 +59,7 @@ void TranscoderOptionsVorbis::Load() { GET_BITRATE(max_bitrate, "max-bitrate"); #undef GET_BITRATE - ui_->quality_slider->setValue(s.value("quality", 0.3).toDouble() * 10); + ui_->quality_slider->setValue(s.value("quality", 1.0).toDouble() * 10); ui_->managed->setChecked(s.value("managed", false).toBool()); ui_->max_bitrate_slider->setValue(max_bitrate); ui_->min_bitrate_slider->setValue(min_bitrate); diff --git a/src/transcoder/transcoderoptionswavpack.cpp b/src/transcoder/transcoderoptionswavpack.cpp new file mode 100644 index 00000000..96b101f4 --- /dev/null +++ b/src/transcoder/transcoderoptionswavpack.cpp @@ -0,0 +1,54 @@ +/* + * Strawberry Music Player + * Copyright 2018, Jonas Kvinge + * + * Strawberry 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. + * + * Strawberry 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 Strawberry. If not, see . + * + */ + +#include "config.h" + +#include +#include +#include +#include +#include +#include + +#include "transcoderoptionsinterface.h" +#include "transcoderoptionswavpack.h" +#include "ui_transcoderoptionswavpack.h" + +const char *TranscoderOptionsWavPack::kSettingsGroup = "Transcoder/wavpackenc"; + +TranscoderOptionsWavPack::TranscoderOptionsWavPack(QWidget *parent) + : TranscoderOptionsInterface(parent), ui_(new Ui_TranscoderOptionsWavPack) { + ui_->setupUi(this); +} + +TranscoderOptionsWavPack::~TranscoderOptionsWavPack() { + delete ui_; +} + +void TranscoderOptionsWavPack::Load() { + QSettings s; + s.beginGroup(kSettingsGroup + settings_postfix_); + s.endGroup(); +} + +void TranscoderOptionsWavPack::Save() { + QSettings s; + s.beginGroup(kSettingsGroup + settings_postfix_); + s.endGroup(); +} diff --git a/src/transcoder/transcoderoptionswavpack.h b/src/transcoder/transcoderoptionswavpack.h new file mode 100644 index 00000000..5afbba40 --- /dev/null +++ b/src/transcoder/transcoderoptionswavpack.h @@ -0,0 +1,45 @@ +/* + * Strawberry Music Player + * Copyright 2018, Jonas Kvinge + * + * Strawberry 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. + * + * Strawberry 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 Strawberry. If not, see . + * + */ + +#ifndef TRANSCODEROPTIONSWAVPACK_H +#define TRANSCODEROPTIONSWAVPACK_H + +#include "config.h" + +#include + +#include "transcoderoptionsinterface.h" + +class Ui_TranscoderOptionsWavPack; + +class TranscoderOptionsWavPack : public TranscoderOptionsInterface { + public: + TranscoderOptionsWavPack(QWidget *parent = nullptr); + ~TranscoderOptionsWavPack(); + + void Load(); + void Save(); + +private: + static const char *kSettingsGroup; + + Ui_TranscoderOptionsWavPack *ui_; +}; + +#endif // TRANSCODEROPTIONSWAVPACK_H diff --git a/src/transcoder/transcoderoptionswavpack.ui b/src/transcoder/transcoderoptionswavpack.ui new file mode 100644 index 00000000..092f596b --- /dev/null +++ b/src/transcoder/transcoderoptionswavpack.ui @@ -0,0 +1,24 @@ + + + TranscoderOptionsWavPack + + + + 0 + 0 + 400 + 102 + + + + Form + + + + + + + + + +