Commit 48b49e23 authored by Max Kellermann's avatar Max Kellermann

replay_gain: fall back to track gain if album gain is unavailable

parent 752dfb3d
...@@ -72,6 +72,7 @@ ver 0.16 (20??/??/??) ...@@ -72,6 +72,7 @@ ver 0.16 (20??/??/??)
- automatically convert to 16 bit samples - automatically convert to 16 bit samples
* replay gain: * replay gain:
- reimplemented as a filter plugin - reimplemented as a filter plugin
- fall back to track gain if album gain is unavailable
* log unused/unknown block parameters * log unused/unknown block parameters
* removed the deprecated "error_file" option * removed the deprecated "error_file" option
* save state when stopped * save state when stopped
......
...@@ -184,9 +184,10 @@ replay_gain_filter_set_info(struct filter *_filter, ...@@ -184,9 +184,10 @@ replay_gain_filter_set_info(struct filter *_filter,
struct replay_gain_filter *filter = struct replay_gain_filter *filter =
(struct replay_gain_filter *)_filter; (struct replay_gain_filter *)_filter;
if (info != NULL) if (info != NULL) {
filter->info = *info; filter->info = *info;
else replay_gain_info_complete(&filter->info);
} else
replay_gain_info_init(&filter->info); replay_gain_info_init(&filter->info);
replay_gain_filter_update(filter); replay_gain_filter_update(filter);
......
...@@ -35,3 +35,11 @@ replay_gain_tuple_scale(const struct replay_gain_tuple *tuple, float preamp) ...@@ -35,3 +35,11 @@ replay_gain_tuple_scale(const struct replay_gain_tuple *tuple, float preamp)
return scale; return scale;
} }
void
replay_gain_info_complete(struct replay_gain_info *info)
{
if (!replay_gain_tuple_defined(&info->tuples[REPLAY_GAIN_ALBUM]))
info->tuples[REPLAY_GAIN_ALBUM] =
info->tuples[REPLAY_GAIN_TRACK];
}
...@@ -63,4 +63,11 @@ replay_gain_tuple_defined(const struct replay_gain_tuple *tuple) ...@@ -63,4 +63,11 @@ replay_gain_tuple_defined(const struct replay_gain_tuple *tuple)
float float
replay_gain_tuple_scale(const struct replay_gain_tuple *tuple, float preamp); replay_gain_tuple_scale(const struct replay_gain_tuple *tuple, float preamp);
/**
* Attempt to auto-complete missing data. In particular, if album
* information is missing, track gain is used.
*/
void
replay_gain_info_complete(struct replay_gain_info *info);
#endif #endif
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment