DecoderAPI: _replay_gain() returns void
Let the function decoder_replay_gain() update decoder_control::replay_gain_db instead of letting each decoder plugin take care for that.
This commit is contained in:
parent
73f6fc428a
commit
46ed91b53d
|
@ -519,11 +519,10 @@ decoder_tag(G_GNUC_UNUSED struct decoder *decoder, struct input_stream *is,
|
||||||
return cmd;
|
return cmd;
|
||||||
}
|
}
|
||||||
|
|
||||||
float
|
void
|
||||||
decoder_replay_gain(struct decoder *decoder,
|
decoder_replay_gain(struct decoder *decoder,
|
||||||
const struct replay_gain_info *replay_gain_info)
|
const struct replay_gain_info *replay_gain_info)
|
||||||
{
|
{
|
||||||
float return_db = 0;
|
|
||||||
assert(decoder != NULL);
|
assert(decoder != NULL);
|
||||||
|
|
||||||
if (replay_gain_info != NULL) {
|
if (replay_gain_info != NULL) {
|
||||||
|
@ -532,7 +531,7 @@ decoder_replay_gain(struct decoder *decoder,
|
||||||
serial = 1;
|
serial = 1;
|
||||||
|
|
||||||
if (REPLAY_GAIN_OFF != replay_gain_mode) {
|
if (REPLAY_GAIN_OFF != replay_gain_mode) {
|
||||||
return_db = 20.0 * log10f(
|
decoder->dc->replay_gain_db = 20.0 * log10f(
|
||||||
replay_gain_tuple_scale(
|
replay_gain_tuple_scale(
|
||||||
&replay_gain_info->tuples[replay_gain_get_real_mode()],
|
&replay_gain_info->tuples[replay_gain_get_real_mode()],
|
||||||
replay_gain_preamp, replay_gain_missing_preamp,
|
replay_gain_preamp, replay_gain_missing_preamp,
|
||||||
|
@ -551,19 +550,16 @@ decoder_replay_gain(struct decoder *decoder,
|
||||||
}
|
}
|
||||||
} else
|
} else
|
||||||
decoder->replay_gain_serial = 0;
|
decoder->replay_gain_serial = 0;
|
||||||
|
|
||||||
return return_db;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
decoder_mixramp(struct decoder *decoder, float replay_gain_db,
|
decoder_mixramp(struct decoder *decoder,
|
||||||
char *mixramp_start, char *mixramp_end)
|
char *mixramp_start, char *mixramp_end)
|
||||||
{
|
{
|
||||||
assert(decoder != NULL);
|
assert(decoder != NULL);
|
||||||
struct decoder_control *dc = decoder->dc;
|
struct decoder_control *dc = decoder->dc;
|
||||||
assert(dc != NULL);
|
assert(dc != NULL);
|
||||||
|
|
||||||
dc->replay_gain_db = replay_gain_db;
|
|
||||||
dc_mixramp_start(dc, mixramp_start);
|
dc_mixramp_start(dc, mixramp_start);
|
||||||
dc_mixramp_end(dc, mixramp_end);
|
dc_mixramp_end(dc, mixramp_end);
|
||||||
}
|
}
|
||||||
|
|
|
@ -109,7 +109,6 @@ void flac_metadata_common_cb(const FLAC__StreamMetadata * block,
|
||||||
struct replay_gain_info rgi;
|
struct replay_gain_info rgi;
|
||||||
char *mixramp_start;
|
char *mixramp_start;
|
||||||
char *mixramp_end;
|
char *mixramp_end;
|
||||||
float replay_gain_db = 0;
|
|
||||||
|
|
||||||
switch (block->type) {
|
switch (block->type) {
|
||||||
case FLAC__METADATA_TYPE_STREAMINFO:
|
case FLAC__METADATA_TYPE_STREAMINFO:
|
||||||
|
@ -118,10 +117,10 @@ void flac_metadata_common_cb(const FLAC__StreamMetadata * block,
|
||||||
|
|
||||||
case FLAC__METADATA_TYPE_VORBIS_COMMENT:
|
case FLAC__METADATA_TYPE_VORBIS_COMMENT:
|
||||||
if (flac_parse_replay_gain(&rgi, block))
|
if (flac_parse_replay_gain(&rgi, block))
|
||||||
replay_gain_db = decoder_replay_gain(data->decoder, &rgi);
|
decoder_replay_gain(data->decoder, &rgi);
|
||||||
|
|
||||||
if (flac_parse_mixramp(&mixramp_start, &mixramp_end, block))
|
if (flac_parse_mixramp(&mixramp_start, &mixramp_end, block))
|
||||||
decoder_mixramp(data->decoder, replay_gain_db,
|
decoder_mixramp(data->decoder,
|
||||||
mixramp_start, mixramp_end);
|
mixramp_start, mixramp_end);
|
||||||
|
|
||||||
if (data->tag != nullptr)
|
if (data->tag != nullptr)
|
||||||
|
|
|
@ -359,15 +359,14 @@ static void mp3_parse_id3(struct mp3_data *data, size_t tagsize,
|
||||||
struct replay_gain_info rgi;
|
struct replay_gain_info rgi;
|
||||||
char *mixramp_start;
|
char *mixramp_start;
|
||||||
char *mixramp_end;
|
char *mixramp_end;
|
||||||
float replay_gain_db = 0;
|
|
||||||
|
|
||||||
if (parse_id3_replay_gain_info(&rgi, id3_tag)) {
|
if (parse_id3_replay_gain_info(&rgi, id3_tag)) {
|
||||||
replay_gain_db = decoder_replay_gain(data->decoder, &rgi);
|
decoder_replay_gain(data->decoder, &rgi);
|
||||||
data->found_replay_gain = true;
|
data->found_replay_gain = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (parse_id3_mixramp(&mixramp_start, &mixramp_end, id3_tag))
|
if (parse_id3_mixramp(&mixramp_start, &mixramp_end, id3_tag))
|
||||||
decoder_mixramp(data->decoder, replay_gain_db,
|
decoder_mixramp(data->decoder,
|
||||||
mixramp_start, mixramp_end);
|
mixramp_start, mixramp_end);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -152,9 +152,8 @@ decoder_tag(struct decoder *decoder, struct input_stream *is,
|
||||||
* @param decoder the decoder object
|
* @param decoder the decoder object
|
||||||
* @param rgi the replay_gain_info object; may be NULL to invalidate
|
* @param rgi the replay_gain_info object; may be NULL to invalidate
|
||||||
* the previous replay gain values
|
* the previous replay gain values
|
||||||
* @return the replay gain adjustment used
|
|
||||||
*/
|
*/
|
||||||
float
|
void
|
||||||
decoder_replay_gain(struct decoder *decoder,
|
decoder_replay_gain(struct decoder *decoder,
|
||||||
const struct replay_gain_info *replay_gain_info);
|
const struct replay_gain_info *replay_gain_info);
|
||||||
|
|
||||||
|
@ -162,12 +161,11 @@ decoder_replay_gain(struct decoder *decoder,
|
||||||
* Store MixRamp tags.
|
* Store MixRamp tags.
|
||||||
*
|
*
|
||||||
* @param decoder the decoder object
|
* @param decoder the decoder object
|
||||||
* @param replay_gain_db the ReplayGain adjustment used for this song
|
|
||||||
* @param mixramp_start the mixramp_start tag; may be NULL to invalidate
|
* @param mixramp_start the mixramp_start tag; may be NULL to invalidate
|
||||||
* @param mixramp_end the mixramp_end tag; may be NULL to invalidate
|
* @param mixramp_end the mixramp_end tag; may be NULL to invalidate
|
||||||
*/
|
*/
|
||||||
void
|
void
|
||||||
decoder_mixramp(struct decoder *decoder, float replay_gain_db,
|
decoder_mixramp(struct decoder *decoder,
|
||||||
char *mixramp_start, char *mixramp_end);
|
char *mixramp_start, char *mixramp_end);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -113,7 +113,7 @@ decoder_tag(G_GNUC_UNUSED struct decoder *decoder,
|
||||||
return DECODE_COMMAND_NONE;
|
return DECODE_COMMAND_NONE;
|
||||||
}
|
}
|
||||||
|
|
||||||
float
|
void
|
||||||
decoder_replay_gain(G_GNUC_UNUSED struct decoder *decoder,
|
decoder_replay_gain(G_GNUC_UNUSED struct decoder *decoder,
|
||||||
const struct replay_gain_info *replay_gain_info)
|
const struct replay_gain_info *replay_gain_info)
|
||||||
{
|
{
|
||||||
|
@ -127,13 +127,10 @@ decoder_replay_gain(G_GNUC_UNUSED struct decoder *decoder,
|
||||||
if (replay_gain_tuple_defined(tuple))
|
if (replay_gain_tuple_defined(tuple))
|
||||||
g_printerr("replay_gain[track]: gain=%f peak=%f\n",
|
g_printerr("replay_gain[track]: gain=%f peak=%f\n",
|
||||||
tuple->gain, tuple->peak);
|
tuple->gain, tuple->peak);
|
||||||
|
|
||||||
return 0.0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
decoder_mixramp(G_GNUC_UNUSED struct decoder *decoder,
|
decoder_mixramp(G_GNUC_UNUSED struct decoder *decoder,
|
||||||
G_GNUC_UNUSED float replay_gain_db,
|
|
||||||
char *mixramp_start, char *mixramp_end)
|
char *mixramp_start, char *mixramp_end)
|
||||||
{
|
{
|
||||||
g_free(mixramp_start);
|
g_free(mixramp_start);
|
||||||
|
|
|
@ -118,16 +118,14 @@ decoder_tag(G_GNUC_UNUSED struct decoder *decoder,
|
||||||
return DECODE_COMMAND_NONE;
|
return DECODE_COMMAND_NONE;
|
||||||
}
|
}
|
||||||
|
|
||||||
float
|
void
|
||||||
decoder_replay_gain(G_GNUC_UNUSED struct decoder *decoder,
|
decoder_replay_gain(G_GNUC_UNUSED struct decoder *decoder,
|
||||||
G_GNUC_UNUSED const struct replay_gain_info *replay_gain_info)
|
G_GNUC_UNUSED const struct replay_gain_info *replay_gain_info)
|
||||||
{
|
{
|
||||||
return 0.0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
decoder_mixramp(G_GNUC_UNUSED struct decoder *decoder,
|
decoder_mixramp(G_GNUC_UNUSED struct decoder *decoder,
|
||||||
G_GNUC_UNUSED float replay_gain_db,
|
|
||||||
char *mixramp_start, char *mixramp_end)
|
char *mixramp_start, char *mixramp_end)
|
||||||
{
|
{
|
||||||
g_free(mixramp_start);
|
g_free(mixramp_start);
|
||||||
|
|
|
@ -139,7 +139,7 @@ decoder_tag(G_GNUC_UNUSED struct decoder *decoder,
|
||||||
return DECODE_COMMAND_NONE;
|
return DECODE_COMMAND_NONE;
|
||||||
}
|
}
|
||||||
|
|
||||||
float
|
void
|
||||||
decoder_replay_gain(G_GNUC_UNUSED struct decoder *decoder,
|
decoder_replay_gain(G_GNUC_UNUSED struct decoder *decoder,
|
||||||
const struct replay_gain_info *replay_gain_info)
|
const struct replay_gain_info *replay_gain_info)
|
||||||
{
|
{
|
||||||
|
@ -153,13 +153,10 @@ decoder_replay_gain(G_GNUC_UNUSED struct decoder *decoder,
|
||||||
if (replay_gain_tuple_defined(tuple))
|
if (replay_gain_tuple_defined(tuple))
|
||||||
g_printerr("replay_gain[track]: gain=%f peak=%f\n",
|
g_printerr("replay_gain[track]: gain=%f peak=%f\n",
|
||||||
tuple->gain, tuple->peak);
|
tuple->gain, tuple->peak);
|
||||||
|
|
||||||
return 0.0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
decoder_mixramp(G_GNUC_UNUSED struct decoder *decoder,
|
decoder_mixramp(G_GNUC_UNUSED struct decoder *decoder,
|
||||||
G_GNUC_UNUSED float replay_gain_db,
|
|
||||||
char *mixramp_start, char *mixramp_end)
|
char *mixramp_start, char *mixramp_end)
|
||||||
{
|
{
|
||||||
g_free(mixramp_start);
|
g_free(mixramp_start);
|
||||||
|
|
Loading…
Reference in New Issue