@@ -267,15 +267,16 @@ static bool wav_to_float(const rwav_t* wav, float** pcm, size_t samples_out)
267267}
268268
269269static bool one_shot_resample (const float * in , size_t samples_in ,
270- unsigned rate , float * * out , size_t * samples_out )
270+ unsigned rate , const char * resampler_ident , enum resampler_quality quality ,
271+ float * * out , size_t * samples_out )
271272{
272273 struct resampler_data info ;
273274 void * data = NULL ;
274275 const retro_resampler_t * resampler = NULL ;
275276 float ratio = (double )s_rate / (double )rate ;
276277
277- if (!retro_resampler_realloc (& data , & resampler , NULL ,
278- RESAMPLER_QUALITY_DONTCARE , ratio ))
278+ if (!retro_resampler_realloc (& data , & resampler ,
279+ resampler_ident , quality , ratio ))
279280 return false;
280281
281282 /*
@@ -323,7 +324,8 @@ void audio_mixer_done(void)
323324 s_voices [i ].type = AUDIO_MIXER_TYPE_NONE ;
324325}
325326
326- audio_mixer_sound_t * audio_mixer_load_wav (void * buffer , int32_t size )
327+ audio_mixer_sound_t * audio_mixer_load_wav (void * buffer , int32_t size ,
328+ const char * resampler_ident , enum resampler_quality quality )
327329{
328330#ifdef HAVE_RWAV
329331 /* WAV data */
@@ -353,8 +355,9 @@ audio_mixer_sound_t* audio_mixer_load_wav(void *buffer, int32_t size)
353355 {
354356 float * resampled = NULL ;
355357
356- if (!one_shot_resample (pcm , samples ,
357- wav .samplerate , & resampled , & samples ))
358+ if (!one_shot_resample (pcm , samples , wav .samplerate ,
359+ resampler_ident , quality ,
360+ & resampled , & samples ))
358361 return NULL ;
359362
360363 memalign_free ((void * )pcm );
@@ -514,6 +517,8 @@ static bool audio_mixer_play_ogg(
514517 audio_mixer_sound_t * sound ,
515518 audio_mixer_voice_t * voice ,
516519 bool repeat , float volume ,
520+ const char * resampler_ident ,
521+ enum resampler_quality quality ,
517522 audio_mixer_stop_cb_t stop_cb )
518523{
519524 stb_vorbis_info info ;
@@ -537,7 +542,7 @@ static bool audio_mixer_play_ogg(
537542 ratio = (double )s_rate / (double )info .sample_rate ;
538543
539544 if (!retro_resampler_realloc (& resampler_data ,
540- & resamp , NULL , RESAMPLER_QUALITY_DONTCARE ,
545+ & resamp , resampler_ident , quality ,
541546 ratio ))
542547 goto error ;
543548 }
@@ -662,6 +667,8 @@ static bool audio_mixer_play_flac(
662667 audio_mixer_sound_t * sound ,
663668 audio_mixer_voice_t * voice ,
664669 bool repeat , float volume ,
670+ const char * resampler_ident ,
671+ enum resampler_quality quality ,
665672 audio_mixer_stop_cb_t stop_cb )
666673{
667674 float ratio = 1.0f ;
@@ -678,7 +685,7 @@ static bool audio_mixer_play_flac(
678685 ratio = (double )s_rate / (double )(dr_flac -> sampleRate );
679686
680687 if (!retro_resampler_realloc (& resampler_data ,
681- & resamp , NULL , RESAMPLER_QUALITY_DONTCARE ,
688+ & resamp , resampler_ident , quality ,
682689 ratio ))
683690 goto error ;
684691 }
@@ -723,6 +730,8 @@ static bool audio_mixer_play_mp3(
723730 audio_mixer_sound_t * sound ,
724731 audio_mixer_voice_t * voice ,
725732 bool repeat , float volume ,
733+ const char * resampler_ident ,
734+ enum resampler_quality quality ,
726735 audio_mixer_stop_cb_t stop_cb )
727736{
728737 float ratio = 1.0f ;
@@ -748,7 +757,7 @@ static bool audio_mixer_play_mp3(
748757 ratio = (double )s_rate / (double )(voice -> types .mp3 .stream .sampleRate );
749758
750759 if (!retro_resampler_realloc (& resampler_data ,
751- & resamp , NULL , RESAMPLER_QUALITY_DONTCARE ,
760+ & resamp , resampler_ident , quality ,
752761 ratio ))
753762 goto error ;
754763 }
@@ -786,8 +795,11 @@ static bool audio_mixer_play_mp3(
786795}
787796#endif
788797
789- audio_mixer_voice_t * audio_mixer_play (audio_mixer_sound_t * sound , bool repeat ,
790- float volume , audio_mixer_stop_cb_t stop_cb )
798+ audio_mixer_voice_t * audio_mixer_play (audio_mixer_sound_t * sound ,
799+ bool repeat , float volume ,
800+ const char * resampler_ident ,
801+ enum resampler_quality quality ,
802+ audio_mixer_stop_cb_t stop_cb )
791803{
792804 unsigned i ;
793805 bool res = false;
@@ -808,7 +820,8 @@ audio_mixer_voice_t* audio_mixer_play(audio_mixer_sound_t* sound, bool repeat,
808820 break ;
809821 case AUDIO_MIXER_TYPE_OGG :
810822#ifdef HAVE_STB_VORBIS
811- res = audio_mixer_play_ogg (sound , voice , repeat , volume , stop_cb );
823+ res = audio_mixer_play_ogg (sound , voice , repeat , volume ,
824+ resampler_ident , quality , stop_cb );
812825#endif
813826 break ;
814827 case AUDIO_MIXER_TYPE_MOD :
@@ -818,12 +831,14 @@ audio_mixer_voice_t* audio_mixer_play(audio_mixer_sound_t* sound, bool repeat,
818831 break ;
819832 case AUDIO_MIXER_TYPE_FLAC :
820833#ifdef HAVE_DR_FLAC
821- res = audio_mixer_play_flac (sound , voice , repeat , volume , stop_cb );
834+ res = audio_mixer_play_flac (sound , voice , repeat , volume ,
835+ resampler_ident , quality , stop_cb );
822836#endif
823837 break ;
824838 case AUDIO_MIXER_TYPE_MP3 :
825839#ifdef HAVE_DR_MP3
826- res = audio_mixer_play_mp3 (sound , voice , repeat , volume , stop_cb );
840+ res = audio_mixer_play_mp3 (sound , voice , repeat , volume ,
841+ resampler_ident , quality , stop_cb );
827842#endif
828843 break ;
829844 case AUDIO_MIXER_TYPE_NONE :
0 commit comments