+ {
+ for (i=0 ; i<outcount ; i++)
+ {
+ srcsample = samplefrac >> 8;
+ a = in[srcsample ];
+ if (srcsample+1 >= srclength)
+ b = 0;
+ else
+ b = in[srcsample+1];
+ sample = (((b - a) * (samplefrac & 255)) >> 8) + a;
+ *out++ = (short) sample;
+ samplefrac += fracstep;
+ }
+ }
+ }
+ else
+ {
+ signed char *out = (void *)sc->data;
+ unsigned char *in = (void *)data;
+ if (sc->stereo) // LordHavoc: stereo sound support
+ {
+ for (i=0 ; i<outcount ; i++)
+ {
+ srcsample = (samplefrac >> 8) << 1;
+ a = (int) in[srcsample ] - 128;
+ if (srcsample+2 >= srclength)
+ b = 0;
+ else
+ b = (int) in[srcsample+2] - 128;
+ sample = (((b - a) * (samplefrac & 255)) >> 8) + a;
+ *out++ = (signed char) sample;
+ a = (int) in[srcsample+1] - 128;
+ if (srcsample+2 >= srclength)
+ b = 0;
+ else
+ b = (int) in[srcsample+3] - 128;
+ sample = (((b - a) * (samplefrac & 255)) >> 8) + a;
+ *out++ = (signed char) sample;
+ samplefrac += fracstep;
+ }
+ }