-// general case
- Con_DPrintf("ResampleSfx: resampling sound %s\n", sfx->name);
- samplefrac = 0;
- fracstep = stepscale*256;
- if (sc->stereo) // LordHavoc: stereo sound support
- {
- if (sc->width == 2)
- {
- for (i=0 ; i<outcount*2 ;)
- {
- srcsample = samplefrac >> 8;
- samplefrac += fracstep;
- srcsample <<= 1;
- ((short *)sc->data)[i++] = LittleShort ( ((short *)data)[srcsample++] ); // left
- ((short *)sc->data)[i++] = LittleShort ( ((short *)data)[srcsample ] ); // right
- }
- }
- else
- {
- for (i=0 ; i<outcount*2 ;)
- {
- srcsample = samplefrac >> 8;
- samplefrac += fracstep;
- srcsample <<= 1;
- ((signed char *)sc->data)[i++] = ((int)( (unsigned char)(data[srcsample++]) - 128) << 8) >> 8; // left
- ((signed char *)sc->data)[i++] = ((int)( (unsigned char)(data[srcsample ]) - 128) << 8) >> 8; // right
- }
- }
- }
- else
- {
- if (sc->width == 2)
- {
- for (i=0 ; i<outcount ; i++)
- {
- srcsample = samplefrac >> 8;
- samplefrac += fracstep;
- ((short *)sc->data)[i] = LittleShort ( ((short *)data)[srcsample] );
- }
- }
- else
- {
- for (i=0 ; i<outcount ; i++)
- {
- srcsample = samplefrac >> 8;
- samplefrac += fracstep;
- ((signed char *)sc->data)[i] = ((int)( (unsigned char)(data[srcsample]) - 128) << 8) >> 8;
- }
- }
- }