diff options
| author | Dave Bryant <bryant@rockbox.org> | 2005-07-25 03:34:25 +0000 |
|---|---|---|
| committer | Dave Bryant <bryant@rockbox.org> | 2005-07-25 03:34:25 +0000 |
| commit | c5ebc8e4e4610c2be312a4c687d3a7b294c2a310 (patch) | |
| tree | 2e6725c8f3105ee9f8d9fcd02ed25771322468c3 /apps | |
| parent | 49775a46028bf3baaf21ec7eb58d11c344188594 (diff) | |
| download | rockbox-c5ebc8e4e4610c2be312a4c687d3a7b294c2a310.zip rockbox-c5ebc8e4e4610c2be312a4c687d3a7b294c2a310.tar.gz rockbox-c5ebc8e4e4610c2be312a4c687d3a7b294c2a310.tar.bz2 rockbox-c5ebc8e4e4610c2be312a4c687d3a7b294c2a310.tar.xz | |
Added ReplayGain support to WavPack, including a small fix to dsp.c
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@7237 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps')
| -rw-r--r-- | apps/codecs/wavpack.c | 12 | ||||
| -rw-r--r-- | apps/dsp.c | 2 | ||||
| -rw-r--r-- | apps/metadata.c | 33 |
3 files changed, 36 insertions, 11 deletions
diff --git a/apps/codecs/wavpack.c b/apps/codecs/wavpack.c index f76ac5a..30638f9 100644 --- a/apps/codecs/wavpack.c +++ b/apps/codecs/wavpack.c @@ -77,12 +77,14 @@ enum codec_status codec_start(struct codec_api* api) while (!*rb->taginfo_ready && !ci->stop_codec) ci->sleep(1); - if (ci->id3->frequency != NATIVE_FREQUENCY) { - ci->configure(DSP_SET_FREQUENCY, (long *)(ci->id3->frequency)); - ci->configure(CODEC_DSP_ENABLE, (bool *)true); - } else { - ci->configure(CODEC_DSP_ENABLE, (bool *)false); + if (ci->id3->frequency != NATIVE_FREQUENCY || + ci->global_settings->replaygain) { + ci->configure(CODEC_DSP_ENABLE, (bool *)true); + ci->configure(DSP_SET_FREQUENCY, (long *)(ci->id3->frequency)); + codec_set_replaygain(rb->id3); } + else + ci->configure(CODEC_DSP_ENABLE, (bool *)false); /* Create a decoder instance */ wpc = WavpackOpenFileInput (read_callback, error); @@ -397,7 +397,7 @@ static void apply_gain(long* src[], int count) *d0++ = FRACMUL_8(*s0++, gain); } - if (s0 != s1) + if (src [0] != src [1]) { for (i = 0; i < count; i++) { diff --git a/apps/metadata.c b/apps/metadata.c index 09bcb55..409bdf8 100644 --- a/apps/metadata.c +++ b/apps/metadata.c @@ -520,11 +520,34 @@ static bool get_apetag_info (struct mp3entry *entry, int fd) if (get_apetag_item (&temp_apetag, "track", temp_buffer, rem_space)) entry->tracknum = atoi (temp_buffer); - if (get_apetag_item (&temp_apetag, "artist", temp_buffer, rem_space)) { - UTF8ToAnsi (entry->artist = temp_buffer); - str_space = strlen (temp_buffer) + 1; - temp_buffer += str_space; - rem_space -= str_space; + if (get_apetag_item (&temp_apetag, "replaygain_track_peak", temp_buffer, rem_space)) + entry->track_peak = get_replaypeak (temp_buffer); + + if (get_apetag_item (&temp_apetag, "replaygain_album_peak", temp_buffer, rem_space)) + entry->album_peak = get_replaypeak (temp_buffer); + + if (rem_space > 1 && + get_apetag_item (&temp_apetag, "replaygain_track_gain", temp_buffer, rem_space)) { + entry->track_gain = get_replaygain (entry->track_gain_str = temp_buffer); + str_space = strlen (temp_buffer) + 1; + temp_buffer += str_space; + rem_space -= str_space; + } + + if (rem_space > 1 && + get_apetag_item (&temp_apetag, "replaygain_album_gain", temp_buffer, rem_space)) { + entry->album_gain = get_replaygain (entry->album_gain_str = temp_buffer); + str_space = strlen (temp_buffer) + 1; + temp_buffer += str_space; + rem_space -= str_space; + } + + if (rem_space > 1 && + get_apetag_item (&temp_apetag, "artist", temp_buffer, rem_space)) { + UTF8ToAnsi (entry->artist = temp_buffer); + str_space = strlen (temp_buffer) + 1; + temp_buffer += str_space; + rem_space -= str_space; } if (rem_space > 1 && |