Browse Source

Add maxOutSampleCount to WasapiResampler::Convert()

fix-wasapi-resampler-crash
Marcus Tomlinson 5 years ago
parent
commit
6fd444c67c
1 changed files with 12 additions and 2 deletions
  1. +12
    -2
      RtAudio.cpp

+ 12
- 2
RtAudio.cpp View File

@@ -4073,7 +4073,7 @@ public:
#endif
}

void Convert( char* outBuffer, const char* inBuffer, unsigned int inSampleCount, unsigned int& outSampleCount )
void Convert( char* outBuffer, const char* inBuffer, unsigned int inSampleCount, unsigned int& outSampleCount, int maxOutSampleCount = -1 )
{
unsigned int inputBufferSize = _bytesPerSample * _channelCount * inSampleCount;
if ( _sampleRatio == 1 )
@@ -4086,6 +4086,15 @@ public:

unsigned int outputBufferSize = ( unsigned int ) ceilf( inputBufferSize * _sampleRatio ) + ( _bytesPerSample * _channelCount );

if ( maxOutSampleCount != -1 )
{
unsigned int maxOutputBufferSize = _bytesPerSample * _channelCount * maxOutSampleCount;
if ( outputBufferSize > maxOutputBufferSize )
{
outputBufferSize = maxOutputBufferSize;
}
}

IMFMediaBuffer* rInBuffer;
IMFSample* rInSample;
BYTE* rInByteBuffer = NULL;
@@ -5223,7 +5232,8 @@ void RtApiWasapi::wasapiThread()
captureResampler->Convert( stream_.deviceBuffer + deviceBufferOffset,
convBuffer,
samplesToPull,
convSamples );
convSamples,
stream_.bufferSize - convBufferSize );

convBufferSize += convSamples;
samplesToPull = 1; // now pull one sample at a time until we have stream_.bufferSize samples


Loading…
Cancel
Save