mirror of
https://github.com/Rockbox/rockbox.git
synced 2025-12-09 21:25:19 -05:00
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
This commit is contained in:
parent
49775a4602
commit
c5ebc8e4e4
3 changed files with 36 additions and 11 deletions
|
|
@ -77,12 +77,14 @@ enum codec_status codec_start(struct codec_api* api)
|
||||||
while (!*rb->taginfo_ready && !ci->stop_codec)
|
while (!*rb->taginfo_ready && !ci->stop_codec)
|
||||||
ci->sleep(1);
|
ci->sleep(1);
|
||||||
|
|
||||||
if (ci->id3->frequency != NATIVE_FREQUENCY) {
|
if (ci->id3->frequency != NATIVE_FREQUENCY ||
|
||||||
ci->configure(DSP_SET_FREQUENCY, (long *)(ci->id3->frequency));
|
ci->global_settings->replaygain) {
|
||||||
ci->configure(CODEC_DSP_ENABLE, (bool *)true);
|
ci->configure(CODEC_DSP_ENABLE, (bool *)true);
|
||||||
} else {
|
ci->configure(DSP_SET_FREQUENCY, (long *)(ci->id3->frequency));
|
||||||
ci->configure(CODEC_DSP_ENABLE, (bool *)false);
|
codec_set_replaygain(rb->id3);
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
ci->configure(CODEC_DSP_ENABLE, (bool *)false);
|
||||||
|
|
||||||
/* Create a decoder instance */
|
/* Create a decoder instance */
|
||||||
wpc = WavpackOpenFileInput (read_callback, error);
|
wpc = WavpackOpenFileInput (read_callback, error);
|
||||||
|
|
|
||||||
|
|
@ -397,7 +397,7 @@ static void apply_gain(long* src[], int count)
|
||||||
*d0++ = FRACMUL_8(*s0++, gain);
|
*d0++ = FRACMUL_8(*s0++, gain);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (s0 != s1)
|
if (src [0] != src [1])
|
||||||
{
|
{
|
||||||
for (i = 0; i < count; i++)
|
for (i = 0; i < count; i++)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -520,7 +520,30 @@ static bool get_apetag_info (struct mp3entry *entry, int fd)
|
||||||
if (get_apetag_item (&temp_apetag, "track", temp_buffer, rem_space))
|
if (get_apetag_item (&temp_apetag, "track", temp_buffer, rem_space))
|
||||||
entry->tracknum = atoi (temp_buffer);
|
entry->tracknum = atoi (temp_buffer);
|
||||||
|
|
||||||
if (get_apetag_item (&temp_apetag, "artist", temp_buffer, rem_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);
|
UTF8ToAnsi (entry->artist = temp_buffer);
|
||||||
str_space = strlen (temp_buffer) + 1;
|
str_space = strlen (temp_buffer) + 1;
|
||||||
temp_buffer += str_space;
|
temp_buffer += str_space;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue