Skip to content

Commit

Permalink
feat: add option to disable audio processing
Browse files Browse the repository at this point in the history
Signed-off-by: Alexis Maiquez <[email protected]>
  • Loading branch information
Almamu committed Dec 14, 2023
1 parent bd5e452 commit c90cc4d
Show file tree
Hide file tree
Showing 6 changed files with 32 additions and 24 deletions.
35 changes: 15 additions & 20 deletions src/WallpaperEngine/Application/CApplicationContext.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -12,25 +12,17 @@

using namespace WallpaperEngine::Application;

struct option long_options [] = {{"screen-root", required_argument, nullptr, 'r'},
{"bg", required_argument, nullptr, 'b'},
{"window", required_argument, nullptr, 'w'},
{"pkg", required_argument, nullptr, 'p'},
{"dir", required_argument, nullptr, 'd'},
{"silent", no_argument, nullptr, 's'},
{"volume", required_argument, nullptr, 'v'},
{"help", no_argument, nullptr, 'h'},
{"fps", required_argument, nullptr, 'f'},
{"assets-dir", required_argument, nullptr, 'a'},
{"screenshot", required_argument, nullptr, 'c'},
{"list-properties", no_argument, nullptr, 'l'},
{"set-property", required_argument, nullptr, 'o'},
{"noautomute", no_argument, nullptr, 'm'},
{"no-fullscreen-pause", no_argument, nullptr, 'n'},
{"disable-mouse", no_argument, nullptr, 'e'},
{"scaling", required_argument, nullptr, 't'},
{"clamping", required_argument, nullptr, 't'},
{nullptr, 0, nullptr, 0}};
struct option long_options [] = {
{"screen-root", required_argument, nullptr, 'r'}, {"bg", required_argument, nullptr, 'b'},
{"window", required_argument, nullptr, 'w'}, {"pkg", required_argument, nullptr, 'p'},
{"dir", required_argument, nullptr, 'd'}, {"silent", no_argument, nullptr, 's'},
{"volume", required_argument, nullptr, 'v'}, {"help", no_argument, nullptr, 'h'},
{"fps", required_argument, nullptr, 'f'}, {"assets-dir", required_argument, nullptr, 'a'},
{"screenshot", required_argument, nullptr, 'c'}, {"list-properties", no_argument, nullptr, 'l'},
{"set-property", required_argument, nullptr, 'o'}, {"noautomute", no_argument, nullptr, 'm'},
{"no-audio-processing", no_argument, nullptr, 'g'}, {"no-fullscreen-pause", no_argument, nullptr, 'n'},
{"disable-mouse", no_argument, nullptr, 'e'}, {"scaling", required_argument, nullptr, 't'},
{"clamping", required_argument, nullptr, 't'}, {nullptr, 0, nullptr, 0}};

/* std::hash::operator() isn't constexpr, so it can't be used to get hash values as compile-time constants
* So here is customHash. It skips all spaces, so hashes for " find " and "fi nd" are the same
Expand Down Expand Up @@ -86,7 +78,7 @@ CApplicationContext::CApplicationContext (int argc, char* argv []) {
.scalingMode = WallpaperEngine::Render::CWallpaperState::TextureUVsScaling::DefaultUVs,
},
},
.audio = {.enabled = true, .volume = 15, .automute = true},
.audio = {.enabled = true, .volume = 15, .automute = true, .audioprocessing = true},
.mouse =
{
.enabled = true,
Expand Down Expand Up @@ -189,6 +181,8 @@ CApplicationContext::CApplicationContext (int argc, char* argv []) {

case 'm': this->settings.audio.automute = false; break;

case 'g': this->settings.audio.audioprocessing = false; break;

case 'e': this->settings.mouse.enabled = false; break;

case 't': {
Expand Down Expand Up @@ -305,6 +299,7 @@ void CApplicationContext::printHelp (const char* route) {
sLog.out ("\t--silent\t\t\t\t\tMutes all the sound the wallpaper might produce");
sLog.out ("\t--volume <amount>\t\t\tSets the volume for all the sounds in the background");
sLog.out ("\t--noautomute\t\t\t\tDisables the automute when an app is playing sound");
sLog.out ("\t--no-audio-processing\t\t\t\tDisables audio processing for backgrounds");
sLog.out ("\t--screen-root <screen name>\tDisplay as screen's background");
sLog.out (
"\t--window <geometry>\tRuns in window mode, geometry has to be XxYxWxH and sets the position and size of the window");
Expand Down
2 changes: 2 additions & 0 deletions src/WallpaperEngine/Application/CApplicationContext.h
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,8 @@ class CApplicationContext {
int volume;
/** If the audio must be muted if something else is playing sound */
bool automute;
/** If audio processing can be enabled or not */
bool audioprocessing;
} audio;

/**
Expand Down
11 changes: 8 additions & 3 deletions src/WallpaperEngine/Application/CWallpaperApplication.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -274,13 +274,18 @@ void CWallpaperApplication::show () {
videoDriver = x11Driver;
}

// stereo mix recorder for audio processing
WallpaperEngine::Audio::Drivers::Recorders::CPulseAudioPlaybackRecorder audioRecorder;
if (this->m_context.settings.audio.audioprocessing) {
this->audioRecorder = new WallpaperEngine::Audio::Drivers::Recorders::CPulseAudioPlaybackRecorder ();
} else {
this->audioRecorder = new WallpaperEngine::Audio::Drivers::Recorders::CPlaybackRecorder ();
}

// audio playing detector
WallpaperEngine::Audio::Drivers::Detectors::CPulseAudioPlayingDetector audioDetector (
this->m_context, videoDriver->getFullscreenDetector ());
// initialize sdl audio driver
audioDriver = new WallpaperEngine::Audio::Drivers::CSDLAudioDriver (this->m_context, audioDetector, audioRecorder);
audioDriver =
new WallpaperEngine::Audio::Drivers::CSDLAudioDriver (this->m_context, audioDetector, *this->audioRecorder);
// initialize audio context
audioContext = new WallpaperEngine::Audio::CAudioContext (*audioDriver);
// initialize render context
Expand Down
1 change: 1 addition & 0 deletions src/WallpaperEngine/Application/CWallpaperApplication.h
Original file line number Diff line number Diff line change
Expand Up @@ -116,6 +116,7 @@ class CWallpaperApplication {
/** Maps screens to backgrounds */
std::map<std::string, Core::CProject*> m_backgrounds;

WallpaperEngine::Audio::Drivers::Recorders::CPlaybackRecorder* audioRecorder;
WallpaperEngine::Render::Drivers::CVideoDriver* videoDriver;
WallpaperEngine::Input::CInputContext* inputContext;
WallpaperEngine::Audio::Drivers::CSDLAudioDriver* audioDriver;
Expand Down
Original file line number Diff line number Diff line change
@@ -1 +1,6 @@
#include "CPlaybackRecorder.h"

namespace WallpaperEngine::Audio::Drivers::Recorders {
void CPlaybackRecorder::update () {}

} // namespace WallpaperEngine::Audio::Drivers::Recorders
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ class CPlaybackRecorder {
public:
virtual ~CPlaybackRecorder () = default;

virtual void update () = 0;
virtual void update ();

float audio16 [16] = {0};
float audio32 [32] = {0};
Expand Down

0 comments on commit c90cc4d

Please sign in to comment.