mirror of
https://github.com/Rockbox/rockbox.git
synced 2025-10-13 18:17:39 -04:00
audio: Add support for 192 and 176KHz playback
* SAMPR_CAPS_ALL -> SAMPR_CAPS_ALL_48/96/192 * All targets claiming SAMPR_CAPS_ALL now get appropriate subset * No need to explicitly define HAVE_PLAY_FREQ * Rates that are a multiple of 44 or 48KHz can be used for playback Inspired by a patch by Roman Stolyarov, but substantially rewritten by myself. Change-Id: Iaca7363521b1cb9921e047ba1004d3cbe9c9c23e
This commit is contained in:
parent
c2c59457e1
commit
01650b8bc9
32 changed files with 161 additions and 80 deletions
|
@ -3820,7 +3820,29 @@ void audio_set_crossfade(int enable)
|
|||
#ifdef HAVE_PLAY_FREQ
|
||||
static unsigned long audio_guess_frequency(struct mp3entry *id3)
|
||||
{
|
||||
return (id3->frequency % 4000) ? SAMPR_44 : SAMPR_48;
|
||||
switch (id3->frequency)
|
||||
{
|
||||
#if HAVE_PLAY_FREQ >= 48
|
||||
case 44100:
|
||||
return SAMPR_44;
|
||||
case 48000:
|
||||
return SAMPR_48;
|
||||
#endif
|
||||
#if HAVE_PLAY_FREQ >= 96
|
||||
case 88200:
|
||||
return SAMPR_88;
|
||||
case 96000:
|
||||
return SAMPR_96;
|
||||
#endif
|
||||
#if HAVE_PLAY_FREQ >= 192
|
||||
case 176400:
|
||||
return SAMPR_176;
|
||||
case 192000:
|
||||
return SAMPR_192;
|
||||
#endif
|
||||
default:
|
||||
return (id3->frequency % 4000) ? SAMPR_44 : SAMPR_48;
|
||||
}
|
||||
}
|
||||
|
||||
static void audio_change_frequency_callback(unsigned short id, void *data)
|
||||
|
@ -3858,7 +3880,15 @@ static void audio_change_frequency_callback(unsigned short id, void *data)
|
|||
|
||||
void audio_set_playback_frequency(int setting)
|
||||
{
|
||||
#if HAVE_PLAY_FREQ >= 192
|
||||
static const unsigned long play_sampr[] = { SAMPR_44, SAMPR_48, SAMPR_88, SAMPR_96, SAMPR_176, SAMPR_192 };
|
||||
#elif HAVE_PLAY_FREQ >= 96
|
||||
static const unsigned long play_sampr[] = { SAMPR_44, SAMPR_48, SAMPR_88, SAMPR_96 };
|
||||
#elif HAVE_PLAY_FREQ >= 48
|
||||
static const unsigned long play_sampr[] = { SAMPR_44, SAMPR_48 };
|
||||
#else
|
||||
#error "HAVE_PLAY_FREQ < 48 ??"
|
||||
#endif
|
||||
|
||||
if ((unsigned)setting > ARRAYLEN(play_sampr)) /* [0] is "automatic" */
|
||||
setting = 0;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue