From 1d5d2a9f4bef34c917c9464da4713fe6e5c8d3e9 Mon Sep 17 00:00:00 2001 From: Goldenkrew3000 Date: Fri, 10 Oct 2025 19:11:59 +1000 Subject: [PATCH] Added Calf LV2 config options and fixed memory leaks --- src/config.json | 26 +++++++++++++++++++++++--- src/configHandler.c | 24 ++++++++++++++++++++++++ src/configHandler.h | 1 + 3 files changed, 48 insertions(+), 3 deletions(-) diff --git a/src/config.json b/src/config.json index 4dd9cbc..1666bfc 100644 --- a/src/config.json +++ b/src/config.json @@ -1,20 +1,24 @@ { "opensubsonic_server": { "protocol": "https", - "server": "server.com", - "username": "", + "server": "aaa.bbb.com", + "username": "user", "password": "" }, "scrobbler": { "listenbrainz_enable": true, "listenbrainz_token": "", "lastfm_enable": true, - "lastfm_username": "", + "lastfm_username": "aarch64", "lastfm_password": "", "lastfm_api_key": "", "lastfm_api_secret": "", "lastfm_session_key": "" }, + "discord_rpc": { + "enable": true, + "method": 0 + }, "audio": { "equalizer": { "enable": true, @@ -72,6 +76,22 @@ "reverb": { "enable": true, "wetDryMix": 15.0 + }, + "lv2": { + "lsp_para_x32_lr": { + "filter_name": "lsp-plug-in-plugins-lv2-para-equalizer-x32-lr", + "filter_type_left": "ftl-", + "filter_type_right": "ftr-", + "gain_left": "gl-", + "gain_right": "gr-", + "quality_left": "ql-", + "quality_right": "qr-", + "frequency_left": "fl-", + "frequency_right": "fr-" + }, + "calf_reverb": { + "filter_name": "calf-sourceforge-net-plugins-Reverb" + } } } } diff --git a/src/configHandler.c b/src/configHandler.c index 2d93158..da8d780 100644 --- a/src/configHandler.c +++ b/src/configHandler.c @@ -57,6 +57,7 @@ int configHandler_Read(configHandler_config_t** configObj) { (*configObj)->lv2_parax32_quality_right = NULL; (*configObj)->lv2_parax32_frequency_left = NULL; (*configObj)->lv2_parax32_frequency_right = NULL; + (*configObj)->lv2_reverb_filter_name = NULL; // Set internal configuration values (*configObj)->internal_opensubsonic_version = strdup("1.8.0"); @@ -424,6 +425,19 @@ int configHandler_Read(configHandler_config_t** configObj) { (*configObj)->lv2_parax32_frequency_right = strdup(lsp_para_x32_lr_frequency_right->valuestring); } + // Make an object from calf_reverb + cJSON* calf_reverb_root = cJSON_GetObjectItemCaseSensitive(lv2_root, "calf_reverb"); + if (calf_reverb_root == NULL) { + logger_log_error(__func__, "Error parsing JSON - calf_reverb does not exist."); + cJSON_Delete(root); + return 1; + } + + cJSON* calf_reverb_filter_name = cJSON_GetObjectItemCaseSensitive(lv2_root, "filter_name"); + if (cJSON_IsString(calf_reverb_filter_name) && calf_reverb_filter_name->valuestring != NULL) { + (*configObj)->lv2_reverb_filter_name = strdup(calf_reverb_filter_name->valuestring); + } + cJSON_Delete(root); logger_log_general(__func__, "Successfully read configuration file."); return 0; @@ -445,5 +459,15 @@ void configHandler_Free(configHandler_config_t** configObj) { if ((*configObj)->lastfm_api_secret != NULL) { free((*configObj)->lastfm_api_secret); } if ((*configObj)->lastfm_api_session_key != NULL) { free((*configObj)->lastfm_api_session_key); } if ((*configObj)->audio_equalizer_graph != NULL) { free((*configObj)->audio_equalizer_graph); } + if ((*configObj)->lv2_parax32_filter_name != NULL) { free((*configObj)->lv2_parax32_filter_name); } + if ((*configObj)->lv2_parax32_filter_type_left != NULL) { free((*configObj)->lv2_parax32_filter_type_left); } + if ((*configObj)->lv2_parax32_filter_type_right != NULL) { free((*configObj)->lv2_parax32_filter_type_right); } + if ((*configObj)->lv2_parax32_gain_left != NULL) { free((*configObj)->lv2_parax32_gain_left); } + if ((*configObj)->lv2_parax32_gain_right != NULL) { free((*configObj)->lv2_parax32_gain_right); } + if ((*configObj)->lv2_parax32_quality_left != NULL) { free((*configObj)->lv2_parax32_quality_left); } + if ((*configObj)->lv2_parax32_quality_right != NULL) { free((*configObj)->lv2_parax32_quality_right); } + if ((*configObj)->lv2_parax32_frequency_left != NULL) { free((*configObj)->lv2_parax32_frequency_left); } + if ((*configObj)->lv2_parax32_frequency_right != NULL) { free((*configObj)->lv2_parax32_frequency_right); } + if ((*configObj)->lv2_reverb_filter_name != NULL) { free((*configObj)->lv2_reverb_filter_name); } if (*configObj != NULL) { free(*configObj); } } diff --git a/src/configHandler.h b/src/configHandler.h index 7ab26a5..d8c9374 100644 --- a/src/configHandler.h +++ b/src/configHandler.h @@ -55,6 +55,7 @@ typedef struct { char* lv2_parax32_quality_right; char* lv2_parax32_frequency_left; char* lv2_parax32_frequency_right; + char* lv2_reverb_filter_name; // LV2 Calf Reeverb LV2 Name } configHandler_config_t; int configHandler_Read(configHandler_config_t** config);