aboutsummaryrefslogtreecommitdiffstats
path: root/Alc/backends/wasapi.cpp
diff options
context:
space:
mode:
authorChris Robinson <[email protected]>2018-12-27 12:55:43 -0800
committerChris Robinson <[email protected]>2018-12-27 12:55:43 -0800
commit1a4387d137acb57f69a2b5d073faf55d4a4c32ed (patch)
tree70b19a7ffa44c148c76996e3f715b0dff795dd4c /Alc/backends/wasapi.cpp
parent323cf58f02bd2a8a92006a5ee20014d2eb8ff3a9 (diff)
Return unique_ptrs instead of raw pointers
For the ring buffer, channel converter, and sample converter.
Diffstat (limited to 'Alc/backends/wasapi.cpp')
-rw-r--r--Alc/backends/wasapi.cpp33
1 files changed, 13 insertions, 20 deletions
diff --git a/Alc/backends/wasapi.cpp b/Alc/backends/wasapi.cpp
index e1783ef9..a7524ce1 100644
--- a/Alc/backends/wasapi.cpp
+++ b/Alc/backends/wasapi.cpp
@@ -1170,9 +1170,9 @@ struct ALCwasapiCapture final : public ALCbackend, WasapiProxy {
HANDLE mMsgEvent{nullptr};
- ChannelConverter *mChannelConv{nullptr};
- SampleConverter *mSampleConv{nullptr};
- RingBufferPtr mRing{nullptr};
+ ChannelConverterPtr mChannelConv;
+ SampleConverterPtr mSampleConv;
+ RingBufferPtr mRing;
std::atomic<int> mKillNow{AL_TRUE};
std::thread mThread;
@@ -1220,9 +1220,6 @@ void ALCwasapiCapture_Destruct(ALCwasapiCapture *self)
CloseHandle(self->mNotifyEvent);
self->mNotifyEvent = nullptr;
- DestroySampleConverter(&self->mSampleConv);
- DestroyChannelConverter(&self->mChannelConv);
-
ALCbackend_Destruct(STATIC_CAST(ALCbackend, self));
self->~ALCwasapiCapture();
}
@@ -1266,35 +1263,31 @@ FORCE_ALIGN int ALCwasapiCapture_recordProc(ALCwasapiCapture *self)
ERR("Failed to get capture buffer: 0x%08lx\n", hr);
else
{
- if(self->mChannelConv)
+ if(ChannelConverter *conv{self->mChannelConv.get()})
{
samples.resize(numsamples*2);
- ChannelConverterInput(self->mChannelConv, rdata, samples.data(), numsamples);
+ ChannelConverterInput(conv, rdata, samples.data(), numsamples);
rdata = reinterpret_cast<BYTE*>(samples.data());
}
auto data = ring->getWriteVector();
size_t dstframes;
- if(self->mSampleConv)
+ if(SampleConverter *conv{self->mSampleConv.get()})
{
const ALvoid *srcdata = rdata;
ALsizei srcframes = numsamples;
- dstframes = SampleConverterInput(self->mSampleConv,
- &srcdata, &srcframes, data.first.buf,
- (ALsizei)minz(data.first.len, INT_MAX)
- );
+ dstframes = SampleConverterInput(conv, &srcdata, &srcframes, data.first.buf,
+ (ALsizei)minz(data.first.len, INT_MAX));
if(srcframes > 0 && dstframes == data.first.len && data.second.len > 0)
{
/* If some source samples remain, all of the first dest
* block was filled, and there's space in the second
* dest block, do another run for the second block.
*/
- dstframes += SampleConverterInput(self->mSampleConv,
- &srcdata, &srcframes, data.second.buf,
- (ALsizei)minz(data.second.len, INT_MAX)
- );
+ dstframes += SampleConverterInput(conv, &srcdata, &srcframes,
+ data.second.buf, (ALsizei)minz(data.second.len, INT_MAX));
}
}
else
@@ -1576,8 +1569,8 @@ HRESULT ALCwasapiCapture::resetProxy()
return hr;
}
- DestroySampleConverter(&mSampleConv);
- DestroyChannelConverter(&mChannelConv);
+ mSampleConv = nullptr;
+ mChannelConv = nullptr;
if(wfx != nullptr)
{
@@ -1694,7 +1687,7 @@ HRESULT ALCwasapiCapture::resetProxy()
}
buffer_len = maxu(device->UpdateSize*device->NumUpdates, buffer_len);
- mRing.reset(ll_ringbuffer_create(buffer_len, device->frameSizeFromFmt(), false));
+ mRing = CreateRingBuffer(buffer_len, device->frameSizeFromFmt(), false);
if(!mRing)
{
ERR("Failed to allocate capture ring buffer\n");