diff --git a/Source/Core/Core/Config/GraphicsSettings.cpp b/Source/Core/Core/Config/GraphicsSettings.cpp index 3913176f2b..30ed2d6959 100644 --- a/Source/Core/Core/Config/GraphicsSettings.cpp +++ b/Source/Core/Core/Config/GraphicsSettings.cpp @@ -50,7 +50,7 @@ const ConfigInfo GFX_DUMP_FORMAT{{System::GFX, "Settings", "DumpFor const ConfigInfo GFX_DUMP_CODEC{{System::GFX, "Settings", "DumpCodec"}, ""}; const ConfigInfo GFX_DUMP_ENCODER{{System::GFX, "Settings", "DumpEncoder"}, ""}; const ConfigInfo GFX_DUMP_PATH{{System::GFX, "Settings", "DumpPath"}, ""}; -const ConfigInfo GFX_BITRATE_KBPS{{System::GFX, "Settings", "BitrateKbps"}, 2500}; +const ConfigInfo GFX_BITRATE_KBPS{{System::GFX, "Settings", "BitrateKbps"}, 25000}; const ConfigInfo GFX_INTERNAL_RESOLUTION_FRAME_DUMPS{ {System::GFX, "Settings", "InternalResolutionFrameDumps"}, false}; const ConfigInfo GFX_ENABLE_GPU_TEXTURE_DECODING{ diff --git a/Source/Core/DolphinQt/CMakeLists.txt b/Source/Core/DolphinQt/CMakeLists.txt index 1275e0adae..1bf9844ff6 100644 --- a/Source/Core/DolphinQt/CMakeLists.txt +++ b/Source/Core/DolphinQt/CMakeLists.txt @@ -73,6 +73,8 @@ add_executable(dolphin-emu Config/Graphics/GraphicsBool.h Config/Graphics/GraphicsChoice.cpp Config/Graphics/GraphicsChoice.h + Config/Graphics/GraphicsInteger.cpp + Config/Graphics/GraphicsInteger.h Config/Graphics/GraphicsRadio.cpp Config/Graphics/GraphicsRadio.h Config/Graphics/GraphicsSlider.cpp diff --git a/Source/Core/DolphinQt/Config/Graphics/AdvancedWidget.cpp b/Source/Core/DolphinQt/Config/Graphics/AdvancedWidget.cpp index 86aad9fc68..f84885798f 100644 --- a/Source/Core/DolphinQt/Config/Graphics/AdvancedWidget.cpp +++ b/Source/Core/DolphinQt/Config/Graphics/AdvancedWidget.cpp @@ -7,6 +7,8 @@ #include #include #include +#include +#include #include #include "Core/Config/GraphicsSettings.h" @@ -16,6 +18,7 @@ #include "DolphinQt/Config/Graphics/GraphicsBool.h" #include "DolphinQt/Config/Graphics/GraphicsChoice.h" +#include "DolphinQt/Config/Graphics/GraphicsInteger.h" #include "DolphinQt/Config/Graphics/GraphicsWindow.h" #include "DolphinQt/Settings.h" @@ -66,13 +69,10 @@ void AdvancedWidget::CreateWidgets() m_load_custom_textures = new GraphicsBool(tr("Load Custom Textures"), Config::GFX_HIRES_TEXTURES); m_prefetch_custom_textures = new GraphicsBool(tr("Prefetch Custom Textures"), Config::GFX_CACHE_HIRES_TEXTURES); - m_use_fullres_framedumps = new GraphicsBool(tr("Internal Resolution Frame Dumps"), - Config::GFX_INTERNAL_RESOLUTION_FRAME_DUMPS); m_dump_efb_target = new GraphicsBool(tr("Dump EFB Target"), Config::GFX_DUMP_EFB_TARGET); m_disable_vram_copies = new GraphicsBool(tr("Disable EFB VRAM Copies"), Config::GFX_HACK_DISABLE_COPY_TO_VRAM); m_enable_freelook = new GraphicsBool(tr("Free Look"), Config::GFX_FREE_LOOK); - m_dump_use_ffv1 = new GraphicsBool(tr("Frame Dumps Use FFV1"), Config::GFX_USE_FFV1); utility_layout->addWidget(m_load_custom_textures, 0, 0); utility_layout->addWidget(m_prefetch_custom_textures, 0, 1); @@ -83,9 +83,21 @@ void AdvancedWidget::CreateWidgets() utility_layout->addWidget(m_dump_textures, 2, 0); utility_layout->addWidget(m_dump_efb_target, 2, 1); - utility_layout->addWidget(m_use_fullres_framedumps, 3, 0); + // Frame dumping + auto* dump_box = new QGroupBox(tr("Frame Dumping")); + auto* dump_layout = new QGridLayout(); + dump_box->setLayout(dump_layout); + + m_use_fullres_framedumps = new GraphicsBool(tr("Dump at Internal Resolution"), + Config::GFX_INTERNAL_RESOLUTION_FRAME_DUMPS); + m_dump_use_ffv1 = new GraphicsBool(tr("Use Lossless Codec (FFV1)"), Config::GFX_USE_FFV1); + m_dump_bitrate = new GraphicsInteger(0, 1000000, Config::GFX_BITRATE_KBPS, 1000); + + dump_layout->addWidget(m_use_fullres_framedumps, 0, 0); #if defined(HAVE_FFMPEG) - utility_layout->addWidget(m_dump_use_ffv1, 3, 1); + dump_layout->addWidget(m_dump_use_ffv1, 0, 1); + dump_layout->addWidget(new QLabel(tr("Bitrate (kbps):")), 1, 0); + dump_layout->addWidget(m_dump_bitrate, 1, 1); #endif // Misc. @@ -120,6 +132,7 @@ void AdvancedWidget::CreateWidgets() main_layout->addWidget(debugging_box); main_layout->addWidget(utility_box); + main_layout->addWidget(dump_box); main_layout->addWidget(misc_box); main_layout->addWidget(experimental_box); main_layout->addStretch(); @@ -130,19 +143,22 @@ void AdvancedWidget::CreateWidgets() void AdvancedWidget::ConnectWidgets() { connect(m_load_custom_textures, &QCheckBox::toggled, this, &AdvancedWidget::SaveSettings); + connect(m_dump_use_ffv1, &QCheckBox::toggled, this, &AdvancedWidget::SaveSettings); connect(m_enable_prog_scan, &QCheckBox::toggled, this, &AdvancedWidget::SaveSettings); } void AdvancedWidget::LoadSettings() { m_prefetch_custom_textures->setEnabled(Config::Get(Config::GFX_HIRES_TEXTURES)); + m_dump_bitrate->setEnabled(!Config::Get(Config::GFX_USE_FFV1)); + m_enable_prog_scan->setChecked(Config::Get(Config::SYSCONF_PROGRESSIVE_SCAN)); } void AdvancedWidget::SaveSettings() { - const auto hires_enabled = Config::Get(Config::GFX_HIRES_TEXTURES); - m_prefetch_custom_textures->setEnabled(hires_enabled); + m_prefetch_custom_textures->setEnabled(Config::Get(Config::GFX_HIRES_TEXTURES)); + m_dump_bitrate->setEnabled(!Config::Get(Config::GFX_USE_FFV1)); Config::SetBase(Config::SYSCONF_PROGRESSIVE_SCAN, m_enable_prog_scan->isChecked()); } diff --git a/Source/Core/DolphinQt/Config/Graphics/AdvancedWidget.h b/Source/Core/DolphinQt/Config/Graphics/AdvancedWidget.h index acfbc78392..1c973c58ed 100644 --- a/Source/Core/DolphinQt/Config/Graphics/AdvancedWidget.h +++ b/Source/Core/DolphinQt/Config/Graphics/AdvancedWidget.h @@ -8,6 +8,7 @@ class GraphicsWindow; class QCheckBox; +class QSpinBox; class AdvancedWidget final : public GraphicsWidget { @@ -36,11 +37,14 @@ private: QCheckBox* m_prefetch_custom_textures; QCheckBox* m_dump_efb_target; QCheckBox* m_disable_vram_copies; - QCheckBox* m_dump_use_ffv1; QCheckBox* m_load_custom_textures; - QCheckBox* m_use_fullres_framedumps; QCheckBox* m_enable_freelook; + // Frame dumping + QCheckBox* m_dump_use_ffv1; + QCheckBox* m_use_fullres_framedumps; + QSpinBox* m_dump_bitrate; + // Misc QCheckBox* m_enable_cropping; QCheckBox* m_enable_prog_scan; diff --git a/Source/Core/DolphinQt/Config/Graphics/GraphicsInteger.cpp b/Source/Core/DolphinQt/Config/Graphics/GraphicsInteger.cpp new file mode 100644 index 0000000000..cabca80d52 --- /dev/null +++ b/Source/Core/DolphinQt/Config/Graphics/GraphicsInteger.cpp @@ -0,0 +1,39 @@ +// Copyright 2019 Dolphin Emulator Project +// Licensed under GPLv2+ +// Refer to the license.txt file included. + +#include "DolphinQt/Config/Graphics/GraphicsInteger.h" + +#include + +#include "Common/Config/Config.h" + +#include "DolphinQt/Settings.h" + +GraphicsInteger::GraphicsInteger(int minimum, int maximum, const Config::ConfigInfo& setting, + int step) + : QSpinBox(), m_setting(setting) +{ + setMinimum(minimum); + setMaximum(maximum); + setSingleStep(step); + + setValue(Config::Get(setting)); + + connect(this, static_cast(&GraphicsInteger::valueChanged), this, + &GraphicsInteger::Update); + + connect(&Settings::Instance(), &Settings::ConfigChanged, [this] { + QFont bf = font(); + bf.setBold(Config::GetActiveLayerForConfig(m_setting) != Config::LayerType::Base); + setFont(bf); + + const QSignalBlocker blocker(this); + setValue(Config::Get(m_setting)); + }); +} + +void GraphicsInteger::Update(int value) +{ + Config::SetBaseOrCurrent(m_setting, value); +} diff --git a/Source/Core/DolphinQt/Config/Graphics/GraphicsInteger.h b/Source/Core/DolphinQt/Config/Graphics/GraphicsInteger.h new file mode 100644 index 0000000000..84de36d406 --- /dev/null +++ b/Source/Core/DolphinQt/Config/Graphics/GraphicsInteger.h @@ -0,0 +1,24 @@ +// Copyright 2019 Dolphin Emulator Project +// Licensed under GPLv2+ +// Refer to the license.txt file included. + +#pragma once + +#include + +namespace Config +{ +template +struct ConfigInfo; +} + +class GraphicsInteger : public QSpinBox +{ + Q_OBJECT +public: + GraphicsInteger(int minimum, int maximum, const Config::ConfigInfo& setting, int step = 1); + void Update(int value); + +private: + const Config::ConfigInfo& m_setting; +}; diff --git a/Source/Core/DolphinQt/DolphinQt.vcxproj b/Source/Core/DolphinQt/DolphinQt.vcxproj index 151c4032c7..2deb34cffc 100644 --- a/Source/Core/DolphinQt/DolphinQt.vcxproj +++ b/Source/Core/DolphinQt/DolphinQt.vcxproj @@ -97,6 +97,7 @@ + @@ -215,6 +216,7 @@ + @@ -299,6 +301,7 @@ + @@ -507,4 +510,4 @@ - + \ No newline at end of file