Added Calf LV2 config options and fixed memory leaks

This commit is contained in:
2025-10-10 19:11:59 +10:00
parent 0d1db29baa
commit 1d5d2a9f4b
3 changed files with 48 additions and 3 deletions

View File

@@ -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"
}
}
}
}

View File

@@ -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); }
}

View File

@@ -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);