replay_gain: added mode "auto"
This commit is contained in:

committed by
Max Kellermann

parent
54dedef9cf
commit
92e66e5ab2
@@ -28,6 +28,7 @@
|
||||
#include "replay_gain_info.h"
|
||||
#include "replay_gain_config.h"
|
||||
#include "mixer_control.h"
|
||||
#include "playlist.h"
|
||||
|
||||
#include <assert.h>
|
||||
#include <string.h>
|
||||
@@ -114,7 +115,11 @@ replay_gain_filter_init(G_GNUC_UNUSED const struct config_param *param,
|
||||
filter_init(&filter->filter, &replay_gain_filter_plugin);
|
||||
filter->mixer = NULL;
|
||||
|
||||
filter->mode = replay_gain_mode;
|
||||
if (replay_gain_mode == REPLAY_GAIN_AUTO) {
|
||||
filter->mode = g_playlist.queue.random ? REPLAY_GAIN_TRACK : REPLAY_GAIN_ALBUM;
|
||||
} else {
|
||||
filter->mode = replay_gain_mode;
|
||||
}
|
||||
replay_gain_info_init(&filter->info);
|
||||
filter->volume = PCM_VOLUME_1;
|
||||
|
||||
@@ -161,10 +166,18 @@ replay_gain_filter_filter(struct filter *_filter,
|
||||
(struct replay_gain_filter *)_filter;
|
||||
bool success;
|
||||
void *dest;
|
||||
enum replay_gain_mode rg_mode;
|
||||
|
||||
/* check if the mode has been changed since the last call */
|
||||
if (filter->mode != replay_gain_mode) {
|
||||
filter->mode = replay_gain_mode;
|
||||
if (replay_gain_mode == REPLAY_GAIN_AUTO) {
|
||||
rg_mode = g_playlist.queue.random ? REPLAY_GAIN_TRACK : REPLAY_GAIN_ALBUM;
|
||||
} else {
|
||||
rg_mode = replay_gain_mode;
|
||||
}
|
||||
|
||||
if (filter->mode != rg_mode) {
|
||||
g_debug("replay gain mode has changed %d->%d\n", filter->mode, rg_mode);
|
||||
filter->mode = rg_mode;
|
||||
replay_gain_filter_update(filter);
|
||||
}
|
||||
|
||||
|
@@ -43,6 +43,9 @@ const char *
|
||||
replay_gain_get_mode_string(void)
|
||||
{
|
||||
switch (replay_gain_mode) {
|
||||
case REPLAY_GAIN_AUTO:
|
||||
return "auto";
|
||||
|
||||
case REPLAY_GAIN_OFF:
|
||||
return "off";
|
||||
|
||||
@@ -69,6 +72,8 @@ replay_gain_set_mode_string(const char *p)
|
||||
replay_gain_mode = REPLAY_GAIN_TRACK;
|
||||
else if (strcmp(p, "album") == 0)
|
||||
replay_gain_mode = REPLAY_GAIN_ALBUM;
|
||||
else if (strcmp(p, "auto") == 0)
|
||||
replay_gain_mode = REPLAY_GAIN_AUTO;
|
||||
else
|
||||
return false;
|
||||
|
||||
|
@@ -26,7 +26,8 @@
|
||||
#include <math.h>
|
||||
|
||||
enum replay_gain_mode {
|
||||
REPLAY_GAIN_OFF = -1,
|
||||
REPLAY_GAIN_AUTO = -2,
|
||||
REPLAY_GAIN_OFF,
|
||||
REPLAY_GAIN_ALBUM,
|
||||
REPLAY_GAIN_TRACK,
|
||||
};
|
||||
|
Reference in New Issue
Block a user