Commit Diff
Diff:
aecca17ce0a487ea94b7e3f0c8e5387c1fce31e7
4d8a06d41dc96cb9b17dcbf3a20477dfb5566b82
Commit:
4d8a06d41dc96cb9b17dcbf3a20477dfb5566b82
Tree:
9046de38cfd845afe923c1d3428459e948e98729
Author:
Omar Polo <op@omarpolo.com>
Date:
Fri Jun 10 07:30:11 2022 UTC
Message:
don't change params if they're the same

avoids a sio_stop in the common case of switching from song that needs
similar params (such as tracks in the same album.)
commit - aecca17ce0a487ea94b7e3f0c8e5387c1fce31e7
commit + 4d8a06d41dc96cb9b17dcbf3a20477dfb5566b82
blob - 186f54ae4a4834635ab06530b67e187941817d95
blob + 3b31d13e0fa20c8e21c70786a3f98c6a1895672b
--- player.c
+++ player.c
@@ -56,11 +56,18 @@ player_setup(int bits, int rate, int channels)
int
player_setup(int bits, int rate, int channels)
{
- struct sio_par par;
- int nfds;
+ static struct sio_par par;
+ int nfds, fpct;
log_debug("%s: bits=%d, rate=%d, channels=%d", __func__,
bits, rate, channels);
+
+ fpct = (rate*5)/100;
+
+ /* don't stop if the parameters are the same */
+ if (bits == par.bits && channels == par.pchan &&
+ par.rate - fpct <= rate && rate <= par.rate + fpct)
+ goto end;
again:
if (!stopped) {
@@ -95,6 +102,7 @@ again:
/* TODO: check the sample rate? */
+end:
if (!sio_start(hdl)) {
log_warn("sio_start");
return -1;
Omar Polo