projects
/
rtaudio.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Add maxOutSampleCount to WasapiResampler::Convert()
[rtaudio.git]
/
RtAudio.cpp
diff --git
a/RtAudio.cpp
b/RtAudio.cpp
index dce61fe9af0598a2d3c586ceb6c7fa847e0fbeaf..06bc8d8db2daa77c6a8bb753929bc6b32f9bc726 100644
(file)
--- a/
RtAudio.cpp
+++ b/
RtAudio.cpp
@@
-4073,7
+4073,7
@@
public:
#endif
}
#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 )
{
unsigned int inputBufferSize = _bytesPerSample * _channelCount * inSampleCount;
if ( _sampleRatio == 1 )
@@
-4086,6
+4086,15
@@
public:
unsigned int outputBufferSize = ( unsigned int ) ceilf( inputBufferSize * _sampleRatio ) + ( _bytesPerSample * _channelCount );
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;
IMFMediaBuffer* rInBuffer;
IMFSample* rInSample;
BYTE* rInByteBuffer = NULL;
@@
-5223,7
+5232,8
@@
void RtApiWasapi::wasapiThread()
captureResampler->Convert( stream_.deviceBuffer + deviceBufferOffset,
convBuffer,
samplesToPull,
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
convBufferSize += convSamples;
samplesToPull = 1; // now pull one sample at a time until we have stream_.bufferSize samples