• Home
  • Raw
  • Download

Lines Matching +full:- +full:- +full:short

22     short *inputBuffer;
23 short *outputBuffer;
24 short *pitchBuffer;
25 short *downSampleBuffer;
69 short *samples, in scaleSamples()
76 while(numSamples--) { in scaleSamples()
80 } else if(value < -32767) { in scaleSamples()
81 value = -32767; in scaleSamples()
91 return stream->speed; in sonicGetSpeed()
99 stream->speed = speed; in sonicSetSpeed()
106 return stream->pitch; in sonicGetPitch()
114 stream->pitch = pitch; in sonicSetPitch()
121 return stream->rate; in sonicGetRate()
129 stream->rate = rate; in sonicSetRate()
131 stream->oldRatePosition = 0; in sonicSetRate()
132 stream->newRatePosition = 0; in sonicSetRate()
139 return stream->useChordPitch; in sonicGetChordPitch()
147 stream->useChordPitch = useChordPitch; in sonicSetChordPitch()
154 return stream->quality; in sonicGetQuality()
162 stream->quality = quality; in sonicSetQuality()
169 return stream->volume; in sonicGetVolume()
177 stream->volume = volume; in sonicSetVolume()
184 if(stream->inputBuffer != NULL) { in freeStreamBuffers()
185 free(stream->inputBuffer); in freeStreamBuffers()
187 if(stream->outputBuffer != NULL) { in freeStreamBuffers()
188 free(stream->outputBuffer); in freeStreamBuffers()
190 if(stream->pitchBuffer != NULL) { in freeStreamBuffers()
191 free(stream->pitchBuffer); in freeStreamBuffers()
193 if(stream->downSampleBuffer != NULL) { in freeStreamBuffers()
194 free(stream->downSampleBuffer); in freeStreamBuffers()
216 stream->inputBufferSize = maxRequired; in allocateStreamBuffers()
217 stream->inputBuffer = (short *)calloc(maxRequired, sizeof(short)*numChannels); in allocateStreamBuffers()
218 if(stream->inputBuffer == NULL) { in allocateStreamBuffers()
222 stream->outputBufferSize = maxRequired; in allocateStreamBuffers()
223 stream->outputBuffer = (short *)calloc(maxRequired, sizeof(short)*numChannels); in allocateStreamBuffers()
224 if(stream->outputBuffer == NULL) { in allocateStreamBuffers()
228 stream->pitchBufferSize = maxRequired; in allocateStreamBuffers()
229 stream->pitchBuffer = (short *)calloc(maxRequired, sizeof(short)*numChannels); in allocateStreamBuffers()
230 if(stream->pitchBuffer == NULL) { in allocateStreamBuffers()
234 stream->downSampleBuffer = (short *)calloc(maxRequired, sizeof(short)); in allocateStreamBuffers()
235 if(stream->downSampleBuffer == NULL) { in allocateStreamBuffers()
239 stream->sampleRate = sampleRate; in allocateStreamBuffers()
240 stream->numChannels = numChannels; in allocateStreamBuffers()
241 stream->oldRatePosition = 0; in allocateStreamBuffers()
242 stream->newRatePosition = 0; in allocateStreamBuffers()
243 stream->minPeriod = minPeriod; in allocateStreamBuffers()
244 stream->maxPeriod = maxPeriod; in allocateStreamBuffers()
245 stream->maxRequired = maxRequired; in allocateStreamBuffers()
246 stream->prevPeriod = 0; in allocateStreamBuffers()
264 stream->speed = 1.0f; in sonicCreateStream()
265 stream->pitch = 1.0f; in sonicCreateStream()
266 stream->volume = 1.0f; in sonicCreateStream()
267 stream->rate = 1.0f; in sonicCreateStream()
268 stream->oldRatePosition = 0; in sonicCreateStream()
269 stream->newRatePosition = 0; in sonicCreateStream()
270 stream->useChordPitch = 0; in sonicCreateStream()
271 stream->quality = 0; in sonicCreateStream()
279 return stream->sampleRate; in sonicGetSampleRate()
289 allocateStreamBuffers(stream, sampleRate, stream->numChannels); in sonicSetSampleRate()
296 return stream->numChannels; in sonicGetNumChannels()
306 allocateStreamBuffers(stream, stream->sampleRate, numChannels); in sonicSetNumChannels()
314 if(stream->numOutputSamples + numSamples > stream->outputBufferSize) { in enlargeOutputBufferIfNeeded()
315 stream->outputBufferSize += (stream->outputBufferSize >> 1) + numSamples; in enlargeOutputBufferIfNeeded()
316 stream->outputBuffer = (short *)realloc(stream->outputBuffer, in enlargeOutputBufferIfNeeded()
317 stream->outputBufferSize*sizeof(short)*stream->numChannels); in enlargeOutputBufferIfNeeded()
318 if(stream->outputBuffer == NULL) { in enlargeOutputBufferIfNeeded()
330 if(stream->numInputSamples + numSamples > stream->inputBufferSize) { in enlargeInputBufferIfNeeded()
331 stream->inputBufferSize += (stream->inputBufferSize >> 1) + numSamples; in enlargeInputBufferIfNeeded()
332 stream->inputBuffer = (short *)realloc(stream->inputBuffer, in enlargeInputBufferIfNeeded()
333 stream->inputBufferSize*sizeof(short)*stream->numChannels); in enlargeInputBufferIfNeeded()
334 if(stream->inputBuffer == NULL) { in enlargeInputBufferIfNeeded()
347 short *buffer; in addFloatSamplesToInputBuffer()
348 int count = numSamples*stream->numChannels; in addFloatSamplesToInputBuffer()
356 buffer = stream->inputBuffer + stream->numInputSamples*stream->numChannels; in addFloatSamplesToInputBuffer()
357 while(count--) { in addFloatSamplesToInputBuffer()
360 stream->numInputSamples += numSamples; in addFloatSamplesToInputBuffer()
367 short *samples, in addShortSamplesToInputBuffer()
376 memcpy(stream->inputBuffer + stream->numInputSamples*stream->numChannels, samples, in addShortSamplesToInputBuffer()
377 numSamples*sizeof(short)*stream->numChannels); in addShortSamplesToInputBuffer()
378 stream->numInputSamples += numSamples; in addShortSamplesToInputBuffer()
388 short *buffer; in addUnsignedCharSamplesToInputBuffer()
389 int count = numSamples*stream->numChannels; in addUnsignedCharSamplesToInputBuffer()
397 buffer = stream->inputBuffer + stream->numInputSamples*stream->numChannels; in addUnsignedCharSamplesToInputBuffer()
398 while(count--) { in addUnsignedCharSamplesToInputBuffer()
399 *buffer++ = (*samples++ - 128) << 8; in addUnsignedCharSamplesToInputBuffer()
401 stream->numInputSamples += numSamples; in addUnsignedCharSamplesToInputBuffer()
410 int remainingSamples = stream->numInputSamples - position; in removeInputSamples()
413 memmove(stream->inputBuffer, stream->inputBuffer + position*stream->numChannels, in removeInputSamples()
414 remainingSamples*sizeof(short)*stream->numChannels); in removeInputSamples()
416 stream->numInputSamples = remainingSamples; in removeInputSamples()
422 short *samples, in copyToOutput()
428 memcpy(stream->outputBuffer + stream->numOutputSamples*stream->numChannels, in copyToOutput()
429 samples, numSamples*sizeof(short)*stream->numChannels); in copyToOutput()
430 stream->numOutputSamples += numSamples; in copyToOutput()
440 int numSamples = stream->remainingInputToCopy; in copyInputToOutput()
442 if(numSamples > stream->maxRequired) { in copyInputToOutput()
443 numSamples = stream->maxRequired; in copyInputToOutput()
445 if(!copyToOutput(stream, stream->inputBuffer + position*stream->numChannels, in copyInputToOutput()
449 stream->remainingInputToCopy -= numSamples; in copyInputToOutput()
460 int numSamples = stream->numOutputSamples; in sonicReadFloatFromStream()
462 short *buffer; in sonicReadFloatFromStream()
469 remainingSamples = numSamples - maxSamples; in sonicReadFloatFromStream()
472 buffer = stream->outputBuffer; in sonicReadFloatFromStream()
473 count = numSamples*stream->numChannels; in sonicReadFloatFromStream()
474 while(count--) { in sonicReadFloatFromStream()
478 memmove(stream->outputBuffer, stream->outputBuffer + numSamples*stream->numChannels, in sonicReadFloatFromStream()
479 remainingSamples*sizeof(short)*stream->numChannels); in sonicReadFloatFromStream()
481 stream->numOutputSamples = remainingSamples; in sonicReadFloatFromStream()
485 /* Read short data out of the stream. Sometimes no data will be available, and zero
489 short *samples, in sonicReadShortFromStream()
492 int numSamples = stream->numOutputSamples; in sonicReadShortFromStream()
499 remainingSamples = numSamples - maxSamples; in sonicReadShortFromStream()
502 memcpy(samples, stream->outputBuffer, numSamples*sizeof(short)*stream->numChannels); in sonicReadShortFromStream()
504 memmove(stream->outputBuffer, stream->outputBuffer + numSamples*stream->numChannels, in sonicReadShortFromStream()
505 remainingSamples*sizeof(short)*stream->numChannels); in sonicReadShortFromStream()
507 stream->numOutputSamples = remainingSamples; in sonicReadShortFromStream()
518 int numSamples = stream->numOutputSamples; in sonicReadUnsignedCharFromStream()
520 short *buffer; in sonicReadUnsignedCharFromStream()
527 remainingSamples = numSamples - maxSamples; in sonicReadUnsignedCharFromStream()
530 buffer = stream->outputBuffer; in sonicReadUnsignedCharFromStream()
531 count = numSamples*stream->numChannels; in sonicReadUnsignedCharFromStream()
532 while(count--) { in sonicReadUnsignedCharFromStream()
536 memmove(stream->outputBuffer, stream->outputBuffer + numSamples*stream->numChannels, in sonicReadUnsignedCharFromStream()
537 remainingSamples*sizeof(short)*stream->numChannels); in sonicReadUnsignedCharFromStream()
539 stream->numOutputSamples = remainingSamples; in sonicReadUnsignedCharFromStream()
549 int maxRequired = stream->maxRequired; in sonicFlushStream()
550 int remainingSamples = stream->numInputSamples; in sonicFlushStream()
551 float speed = stream->speed/stream->pitch; in sonicFlushStream()
552 float rate = stream->rate*stream->pitch; in sonicFlushStream()
553 int expectedOutputSamples = stream->numOutputSamples + in sonicFlushStream()
554 (int)((remainingSamples/speed + stream->numPitchSamples)/rate + 0.5f); in sonicFlushStream()
560 memset(stream->inputBuffer + remainingSamples*stream->numChannels, 0, in sonicFlushStream()
561 2*maxRequired*sizeof(short)*stream->numChannels); in sonicFlushStream()
562 stream->numInputSamples += 2*maxRequired; in sonicFlushStream()
567 if(stream->numOutputSamples > expectedOutputSamples) { in sonicFlushStream()
568 stream->numOutputSamples = expectedOutputSamples; in sonicFlushStream()
571 stream->numInputSamples = 0; in sonicFlushStream()
572 stream->remainingInputToCopy = 0; in sonicFlushStream()
573 stream->numPitchSamples = 0; in sonicFlushStream()
581 return stream->numOutputSamples; in sonicSamplesAvailable()
585 the down-sample buffer. If numChannels is greater than one, mix the channels
589 short *samples, in downSampleInput()
592 int numSamples = stream->maxRequired/skip; in downSampleInput()
593 int samplesPerValue = stream->numChannels*skip; in downSampleInput()
596 short *downSamples = stream->downSampleBuffer; in downSampleInput()
611 short *samples, in findPitchPeriodInRange()
618 short *s, *p, sVal, pVal; in findPitchPeriodInRange()
629 diff += sVal >= pVal? (unsigned short)(sVal - pVal) : in findPitchPeriodInRange()
630 (unsigned short)(pVal - sVal); in findPitchPeriodInRange()
658 if(minDiff == 0 || stream->prevPeriod == 0) { in prevPeriodBetter()
666 if(minDiff*2 <= stream->prevMinDiff*3) { in prevPeriodBetter()
671 if(minDiff <= stream->prevMinDiff) { in prevPeriodBetter()
684 short *samples, in findPitchPeriod()
687 int minPeriod = stream->minPeriod; in findPitchPeriod()
688 int maxPeriod = stream->maxPeriod; in findPitchPeriod()
689 int sampleRate = stream->sampleRate; in findPitchPeriod()
694 if(sampleRate > SONIC_AMDF_FREQ && stream->quality == 0) { in findPitchPeriod()
697 if(stream->numChannels == 1 && skip == 1) { in findPitchPeriod()
701 period = findPitchPeriodInRange(stream->downSampleBuffer, minPeriod/skip, in findPitchPeriod()
705 minPeriod = period - (skip << 2); in findPitchPeriod()
707 if(minPeriod < stream->minPeriod) { in findPitchPeriod()
708 minPeriod = stream->minPeriod; in findPitchPeriod()
710 if(maxPeriod > stream->maxPeriod) { in findPitchPeriod()
711 maxPeriod = stream->maxPeriod; in findPitchPeriod()
713 if(stream->numChannels == 1) { in findPitchPeriod()
718 period = findPitchPeriodInRange(stream->downSampleBuffer, minPeriod, in findPitchPeriod()
724 retPeriod = stream->prevPeriod; in findPitchPeriod()
728 stream->prevMinDiff = minDiff; in findPitchPeriod()
729 stream->prevPeriod = period; in findPitchPeriod()
738 short *out, in overlapAdd()
739 short *rampDown, in overlapAdd()
740 short *rampUp) in overlapAdd()
742 short *o, *u, *d; in overlapAdd()
752 *o = *d*(1.0f - ratio) + *u*ratio; in overlapAdd()
754 *o = (*d*(numSamples - t) + *u*t)/numSamples; in overlapAdd()
769 short *out, in overlapAddWithSeparation()
770 short *rampDown, in overlapAddWithSeparation()
771 short *rampUp) in overlapAddWithSeparation()
773 short *o, *u, *d; in overlapAddWithSeparation()
782 *o = *d*(numSamples - t)/numSamples; in overlapAddWithSeparation()
785 *o = (*d*(numSamples - t) + *u*(t - separation))/numSamples; in overlapAddWithSeparation()
789 *o = *u*(t - separation)/numSamples; in overlapAddWithSeparation()
802 int numSamples = stream->numOutputSamples - originalNumOutputSamples; in moveNewSamplesToPitchBuffer()
803 int numChannels = stream->numChannels; in moveNewSamplesToPitchBuffer()
805 if(stream->numPitchSamples + numSamples > stream->pitchBufferSize) { in moveNewSamplesToPitchBuffer()
806 stream->pitchBufferSize += (stream->pitchBufferSize >> 1) + numSamples; in moveNewSamplesToPitchBuffer()
807 stream->pitchBuffer = (short *)realloc(stream->pitchBuffer, in moveNewSamplesToPitchBuffer()
808 stream->pitchBufferSize*sizeof(short)*numChannels); in moveNewSamplesToPitchBuffer()
809 if(stream->pitchBuffer == NULL) { in moveNewSamplesToPitchBuffer()
813 memcpy(stream->pitchBuffer + stream->numPitchSamples*numChannels, in moveNewSamplesToPitchBuffer()
814 stream->outputBuffer + originalNumOutputSamples*numChannels, in moveNewSamplesToPitchBuffer()
815 numSamples*sizeof(short)*numChannels); in moveNewSamplesToPitchBuffer()
816 stream->numOutputSamples = originalNumOutputSamples; in moveNewSamplesToPitchBuffer()
817 stream->numPitchSamples += numSamples; in moveNewSamplesToPitchBuffer()
826 int numChannels = stream->numChannels; in removePitchSamples()
827 short *source = stream->pitchBuffer + numSamples*numChannels; in removePitchSamples()
832 if(numSamples != stream->numPitchSamples) { in removePitchSamples()
833 memmove(stream->pitchBuffer, source, (stream->numPitchSamples - in removePitchSamples()
834 numSamples)*sizeof(short)*numChannels); in removePitchSamples()
836 stream->numPitchSamples -= numSamples; in removePitchSamples()
845 float pitch = stream->pitch; in adjustPitch()
846 int numChannels = stream->numChannels; in adjustPitch()
849 short *out, *rampDown, *rampUp; in adjustPitch()
851 if(stream->numOutputSamples == originalNumOutputSamples) { in adjustPitch()
857 while(stream->numPitchSamples - position >= stream->maxRequired) { in adjustPitch()
858 period = findPitchPeriod(stream, stream->pitchBuffer + position*numChannels, 0); in adjustPitch()
863 out = stream->outputBuffer + stream->numOutputSamples*numChannels; in adjustPitch()
865 rampDown = stream->pitchBuffer + position*numChannels; in adjustPitch()
866 rampUp = stream->pitchBuffer + (position + period - newPeriod)*numChannels; in adjustPitch()
869 rampDown = stream->pitchBuffer + position*numChannels; in adjustPitch()
870 rampUp = stream->pitchBuffer + position*numChannels; in adjustPitch()
871 separation = newPeriod - period; in adjustPitch()
874 stream->numOutputSamples += newPeriod; in adjustPitch()
882 static short interpolate( in interpolate()
884 short *in, in interpolate()
888 short left = *in; in interpolate()
889 short right = in[stream->numChannels]; in interpolate()
890 int position = stream->newRatePosition*oldSampleRate; in interpolate()
891 int leftPosition = stream->oldRatePosition*newSampleRate; in interpolate()
892 int rightPosition = (stream->oldRatePosition + 1)*newSampleRate; in interpolate()
893 int ratio = rightPosition - position; in interpolate()
894 int width = rightPosition - leftPosition; in interpolate()
896 return (ratio*left + (width - ratio)*right)/width; in interpolate()
905 int newSampleRate = stream->sampleRate/rate; in adjustRate()
906 int oldSampleRate = stream->sampleRate; in adjustRate()
907 int numChannels = stream->numChannels; in adjustRate()
909 short *in, *out; in adjustRate()
917 if(stream->numOutputSamples == originalNumOutputSamples) { in adjustRate()
924 for(position = 0; position < stream->numPitchSamples - 1; position++) { in adjustRate()
925 while((stream->oldRatePosition + 1)*newSampleRate > in adjustRate()
926 stream->newRatePosition*oldSampleRate) { in adjustRate()
930 out = stream->outputBuffer + stream->numOutputSamples*numChannels; in adjustRate()
931 in = stream->pitchBuffer + position; in adjustRate()
936 stream->newRatePosition++; in adjustRate()
937 stream->numOutputSamples++; in adjustRate()
939 stream->oldRatePosition++; in adjustRate()
940 if(stream->oldRatePosition == oldSampleRate) { in adjustRate()
941 stream->oldRatePosition = 0; in adjustRate()
942 if(stream->newRatePosition != newSampleRate) { in adjustRate()
944 "Assertion failed: stream->newRatePosition != newSampleRate\n"); in adjustRate()
947 stream->newRatePosition = 0; in adjustRate()
958 short *samples, in skipPitchPeriod()
963 int numChannels = stream->numChannels; in skipPitchPeriod()
966 newSamples = period/(speed - 1.0f); in skipPitchPeriod()
969 stream->remainingInputToCopy = period*(2.0f - speed)/(speed - 1.0f); in skipPitchPeriod()
974 overlapAdd(newSamples, numChannels, stream->outputBuffer + in skipPitchPeriod()
975 stream->numOutputSamples*numChannels, samples, samples + period*numChannels); in skipPitchPeriod()
976 stream->numOutputSamples += newSamples; in skipPitchPeriod()
983 short *samples, in insertPitchPeriod()
988 short *out; in insertPitchPeriod()
989 int numChannels = stream->numChannels; in insertPitchPeriod()
992 newSamples = period*speed/(1.0f - speed); in insertPitchPeriod()
995 stream->remainingInputToCopy = period*(2.0f*speed - 1.0f)/(1.0f - speed); in insertPitchPeriod()
1000 out = stream->outputBuffer + stream->numOutputSamples*numChannels; in insertPitchPeriod()
1001 memcpy(out, samples, period*sizeof(short)*numChannels); in insertPitchPeriod()
1002 out = stream->outputBuffer + (stream->numOutputSamples + period)*numChannels; in insertPitchPeriod()
1004 stream->numOutputSamples += period + newSamples; in insertPitchPeriod()
1014 short *samples; in changeSpeed()
1015 int numSamples = stream->numInputSamples; in changeSpeed()
1017 int maxRequired = stream->maxRequired; in changeSpeed()
1019 if(stream->numInputSamples < maxRequired) { in changeSpeed()
1023 if(stream->remainingInputToCopy > 0) { in changeSpeed()
1027 samples = stream->inputBuffer + position*stream->numChannels; in changeSpeed()
1050 int originalNumOutputSamples = stream->numOutputSamples; in processStreamInput()
1051 float speed = stream->speed/stream->pitch; in processStreamInput()
1052 float rate = stream->rate; in processStreamInput()
1054 if(!stream->useChordPitch) { in processStreamInput()
1055 rate *= stream->pitch; in processStreamInput()
1060 if(!copyToOutput(stream, stream->inputBuffer, stream->numInputSamples)) { in processStreamInput()
1063 stream->numInputSamples = 0; in processStreamInput()
1065 if(stream->useChordPitch) { in processStreamInput()
1066 if(stream->pitch != 1.0f) { in processStreamInput()
1076 if(stream->volume != 1.0f) { in processStreamInput()
1078 scaleSamples(stream->outputBuffer + originalNumOutputSamples*stream->numChannels, in processStreamInput()
1079 (stream->numOutputSamples - originalNumOutputSamples)*stream->numChannels, in processStreamInput()
1080 stream->volume); in processStreamInput()
1097 /* Simple wrapper around sonicWriteFloatToStream that does the short to float
1101 short *samples, in sonicWriteShortToStream()
1123 /* This is a non-stream oriented interface to just change the speed of a sound sample */
1150 /* This is a non-stream oriented interface to just change the speed of a sound sample */
1152 short *samples, in sonicChangeShortSpeed()