diff options
author | Chris Robinson <[email protected]> | 2018-12-08 14:22:20 -0800 |
---|---|---|
committer | Chris Robinson <[email protected]> | 2018-12-08 14:22:20 -0800 |
commit | c9f5617f06503d951b3ed808cf07fb6362a7f8d1 (patch) | |
tree | 69fa576f29e7394aa76ebf08453c2d06d4bdbb6a /Alc | |
parent | fc8da0c16b34a964c637c721ff944e8e6a5f3277 (diff) |
Avoid several uses of memset
Diffstat (limited to 'Alc')
-rw-r--r-- | Alc/alc.cpp | 4 | ||||
-rw-r--r-- | Alc/backends/coreaudio.cpp | 2 | ||||
-rw-r--r-- | Alc/backends/wasapi.cpp | 2 | ||||
-rw-r--r-- | Alc/backends/winmm.cpp | 4 | ||||
-rw-r--r-- | Alc/bformatdec.cpp | 6 | ||||
-rw-r--r-- | Alc/bformatdec.h | 4 | ||||
-rw-r--r-- | Alc/bs2b.cpp | 2 | ||||
-rw-r--r-- | Alc/effects/reverb.cpp | 6 | ||||
-rw-r--r-- | Alc/panning.cpp | 40 | ||||
-rw-r--r-- | Alc/ringbuffer.cpp | 2 |
10 files changed, 33 insertions, 39 deletions
diff --git a/Alc/alc.cpp b/Alc/alc.cpp index 810cba10..1d36dcbd 100644 --- a/Alc/alc.cpp +++ b/Alc/alc.cpp @@ -1263,8 +1263,8 @@ static void alc_deinit(void) alc_cleanup(); - memset(&PlaybackBackend, 0, sizeof(PlaybackBackend)); - memset(&CaptureBackend, 0, sizeof(CaptureBackend)); + PlaybackBackend = BackendInfo{}; + CaptureBackend = BackendInfo{}; for(i = 0;i < BackendListSize;i++) BackendList[i].getFactory().deinit(); diff --git a/Alc/backends/coreaudio.cpp b/Alc/backends/coreaudio.cpp index f5574965..b2f6d2d3 100644 --- a/Alc/backends/coreaudio.cpp +++ b/Alc/backends/coreaudio.cpp @@ -68,7 +68,7 @@ static void ALCcoreAudioPlayback_Construct(ALCcoreAudioPlayback *self, ALCdevice SET_VTABLE2(ALCcoreAudioPlayback, ALCbackend, self); self->FrameSize = 0; - memset(&self->Format, 0, sizeof(self->Format)); + self->Format = AudioStreamBasicDescription{}; } static void ALCcoreAudioPlayback_Destruct(ALCcoreAudioPlayback *self) diff --git a/Alc/backends/wasapi.cpp b/Alc/backends/wasapi.cpp index 04afe807..b928682f 100644 --- a/Alc/backends/wasapi.cpp +++ b/Alc/backends/wasapi.cpp @@ -637,7 +637,7 @@ FORCE_ALIGN int ALCwasapiPlayback_mixerProc(ALCwasapiPlayback *self) ALCboolean MakeExtensible(WAVEFORMATEXTENSIBLE *out, const WAVEFORMATEX *in) { - memset(out, 0, sizeof(*out)); + *out = WAVEFORMATEXTENSIBLE{}; if(in->wFormatTag == WAVE_FORMAT_EXTENSIBLE) *out = *(const WAVEFORMATEXTENSIBLE*)in; else if(in->wFormatTag == WAVE_FORMAT_PCM) diff --git a/Alc/backends/winmm.cpp b/Alc/backends/winmm.cpp index c88a43b6..32cabbde 100644 --- a/Alc/backends/winmm.cpp +++ b/Alc/backends/winmm.cpp @@ -246,7 +246,7 @@ ALCenum ALCwinmmPlayback_open(ALCwinmmPlayback *self, const ALCchar *deviceName) UINT DeviceID{static_cast<UINT>(std::distance(PlaybackDevices.cbegin(), iter))}; retry_open: - memset(&self->Format, 0, sizeof(WAVEFORMATEX)); + self->Format = WAVEFORMATEX{}; if(device->FmtType == DevFmtFloat) { self->Format.wFormatTag = WAVE_FORMAT_IEEE_FLOAT; @@ -554,7 +554,7 @@ ALCenum ALCwinmmCapture_open(ALCwinmmCapture *self, const ALCchar *deviceName) return ALC_INVALID_ENUM; } - memset(&self->Format, 0, sizeof(WAVEFORMATEX)); + self->Format = WAVEFORMATEX{}; self->Format.wFormatTag = (device->FmtType == DevFmtFloat) ? WAVE_FORMAT_IEEE_FLOAT : WAVE_FORMAT_PCM; self->Format.nChannels = ChannelsFromDevFmt(device->FmtChans, device->mAmbiOrder); diff --git a/Alc/bformatdec.cpp b/Alc/bformatdec.cpp index 7af3a864..60e52b1b 100644 --- a/Alc/bformatdec.cpp +++ b/Alc/bformatdec.cpp @@ -170,7 +170,7 @@ void BFormatDec::reset(const AmbDecConf *conf, ALsizei chancount, ALuint srate, mUpSampler[3].Gains[LF_BAND] = 0.0f; } - memset(&mMatrix, 0, sizeof(mMatrix)); + mMatrix = MatrixU{}; if(conf->FreqBands == 1) { mDualBand = AL_FALSE; @@ -358,7 +358,7 @@ void AmbiUpsampler::reset(const ALCdevice *device, const ALfloat w_scale, const mXOver[0].init(400.0f / (float)device->Frequency); std::fill(std::begin(mXOver)+1, std::end(mXOver), mXOver[0]); - memset(mGains, 0, sizeof(mGains)); + mGains.fill({}); if(device->Dry.CoeffCount > 0) { ALfloat encgains[8][MAX_OUTPUT_CHANNELS]; @@ -411,6 +411,6 @@ void AmbiUpsampler::process(ALfloat (*RESTRICT OutBuffer)[BUFFERSIZE], const ALs mXOver[i].process(mSamples[HF_BAND], mSamples[LF_BAND], InSamples[i], SamplesToDo); for(ALsizei j{0};j < OutChannels;j++) - MixRowSamples(OutBuffer[j], mGains[i][j], mSamples, sNumBands, 0, SamplesToDo); + MixRowSamples(OutBuffer[j], mGains[i][j].data(), mSamples, sNumBands, 0, SamplesToDo); } } diff --git a/Alc/bformatdec.h b/Alc/bformatdec.h index 73754be8..f2cdcdfb 100644 --- a/Alc/bformatdec.h +++ b/Alc/bformatdec.h @@ -41,7 +41,7 @@ public: private: ALuint mEnabled; /* Bitfield of enabled channels. */ - union { + union MatrixU { alignas(16) ALfloat Dual[MAX_OUTPUT_CHANNELS][sNumBands][MAX_AMBI_COEFFS]; alignas(16) ALfloat Single[MAX_OUTPUT_CHANNELS][MAX_AMBI_COEFFS]; } mMatrix; @@ -89,7 +89,7 @@ private: BandSplitter mXOver[4]; - ALfloat mGains[4][MAX_OUTPUT_CHANNELS][sNumBands]; + std::array<std::array<std::array<ALfloat,sNumBands>,MAX_OUTPUT_CHANNELS>,4> mGains; public: void reset(const ALCdevice *device, const ALfloat w_scale, const ALfloat xyz_scale); diff --git a/Alc/bs2b.cpp b/Alc/bs2b.cpp index 1307e5c1..b1833b8c 100644 --- a/Alc/bs2b.cpp +++ b/Alc/bs2b.cpp @@ -127,7 +127,7 @@ int bs2b_get_srate(struct bs2b *bs2b) void bs2b_clear(struct bs2b *bs2b) { - std::memset(&bs2b->last_sample, 0, sizeof(bs2b->last_sample)); + std::fill(std::begin(bs2b->last_sample), std::end(bs2b->last_sample), bs2b::t_last_sample{}); } /* bs2b_clear */ void bs2b_cross_feed(struct bs2b *bs2b, float *RESTRICT Left, float *RESTRICT Right, int SamplesToDo) diff --git a/Alc/effects/reverb.cpp b/Alc/effects/reverb.cpp index ce7a9946..b5e6dd94 100644 --- a/Alc/effects/reverb.cpp +++ b/Alc/effects/reverb.cpp @@ -821,14 +821,12 @@ static ALvoid Update3DPanning(const ALCdevice *Device, const ALfloat *Reflection */ rot = GetTransformFromVector(ReflectionsPan); MATRIX_MULT(transform, rot, A2B); - memset(&State->mEarly.PanGain, 0, sizeof(State->mEarly.PanGain)); for(i = 0;i < MAX_EFFECT_CHANNELS;i++) ComputePanGains(&Device->FOAOut, transform.m[i], earlyGain, State->mEarly.PanGain[i]); rot = GetTransformFromVector(LateReverbPan); MATRIX_MULT(transform, rot, A2B); - memset(&State->mLate.PanGain, 0, sizeof(State->mLate.PanGain)); for(i = 0;i < MAX_EFFECT_CHANNELS;i++) ComputePanGains(&Device->FOAOut, transform.m[i], lateGain, State->mLate.PanGain[i]); @@ -1379,11 +1377,13 @@ void ReverbState::process(ALsizei SamplesToDo, const ALfloat (*RESTRICT SamplesI todo &= ~3; /* Convert B-Format to A-Format for processing. */ - memset(afmt, 0, sizeof(*afmt)*NUM_LINES); for(c = 0;c < NUM_LINES;c++) + { + std::fill(std::begin(afmt[c]), std::end(afmt[c]), 0.0f); MixRowSamples(afmt[c], B2A.m[c], SamplesIn, MAX_EFFECT_CHANNELS, base, todo ); + } /* Process the samples for reverb. */ for(c = 0;c < NUM_LINES;c++) diff --git a/Alc/panning.cpp b/Alc/panning.cpp index f970799b..a8d593ce 100644 --- a/Alc/panning.cpp +++ b/Alc/panning.cpp @@ -26,6 +26,8 @@ #include <ctype.h> #include <assert.h> +#include <algorithm> + #include "alMain.h" #include "alAuxEffectSlot.h" #include "alu.h" @@ -147,29 +149,25 @@ void CalcAmbiCoeffs(const ALfloat y, const ALfloat z, const ALfloat x, const ALf } -void ComputePanningGainsMC(const ChannelConfig *chancoeffs, ALsizei numchans, ALsizei numcoeffs, const ALfloat*RESTRICT coeffs, ALfloat ingain, ALfloat gains[MAX_OUTPUT_CHANNELS]) +void ComputePanningGainsMC(const ChannelConfig *chancoeffs, ALsizei numchans, ALsizei numcoeffs, const ALfloat*RESTRICT coeffs, ALfloat ingain, ALfloat (&gains)[MAX_OUTPUT_CHANNELS]) { - ALsizei i, j; - + ALsizei i; for(i = 0;i < numchans;i++) { float gain = 0.0f; - for(j = 0;j < numcoeffs;j++) + for(ALsizei j{0};j < numcoeffs;j++) gain += chancoeffs[i][j]*coeffs[j]; gains[i] = clampf(gain, 0.0f, 1.0f) * ingain; } - for(;i < MAX_OUTPUT_CHANNELS;i++) - gains[i] = 0.0f; + std::fill(std::begin(gains)+i, std::end(gains), 0.0f); } -void ComputePanningGainsBF(const BFChannelConfig *chanmap, ALsizei numchans, const ALfloat*RESTRICT coeffs, ALfloat ingain, ALfloat gains[MAX_OUTPUT_CHANNELS]) +void ComputePanningGainsBF(const BFChannelConfig *chanmap, ALsizei numchans, const ALfloat*RESTRICT coeffs, ALfloat ingain, ALfloat (&gains)[MAX_OUTPUT_CHANNELS]) { ALsizei i; - for(i = 0;i < numchans;i++) gains[i] = chanmap[i].Scale * coeffs[chanmap[i].Index] * ingain; - for(;i < MAX_OUTPUT_CHANNELS;i++) - gains[i] = 0.0f; + std::fill(std::begin(gains)+i, std::end(gains), 0.0f); } @@ -543,7 +541,7 @@ static void InitPanning(ALCdevice *device) /* FOA output is always ACN+N3D for higher-order ambisonic output. * The upsampler expects this and will convert it for output. */ - memset(&device->FOAOut.Ambi, 0, sizeof(device->FOAOut.Ambi)); + device->FOAOut.Ambi = AmbiConfig{}; for(i = 0;i < 4;i++) { device->FOAOut.Ambi.Map[i].Scale = 1.0f; @@ -588,7 +586,7 @@ static void InitPanning(ALCdevice *device) xyz_scale = (device->Dry.CoeffCount > 9) ? XYZ_SCALE_3H0P : (device->Dry.CoeffCount > 4) ? XYZ_SCALE_2H0P : 1.0f; - memset(&device->FOAOut.Ambi, 0, sizeof(device->FOAOut.Ambi)); + device->FOAOut.Ambi = AmbiConfig{}; for(i = 0;i < device->Dry.NumChannels;i++) { device->FOAOut.Ambi.Coeffs[i][0] = device->Dry.Ambi.Coeffs[i][0] * w_scale; @@ -671,7 +669,7 @@ static void InitCustomPanning(ALCdevice *device, const AmbDecConf *conf, const A device->Dry.CoeffCount = (conf->ChanMask > 0x1ff) ? 16 : (conf->ChanMask > 0xf) ? 9 : 4; - memset(&device->FOAOut.Ambi, 0, sizeof(device->FOAOut.Ambi)); + device->FOAOut.Ambi = AmbiConfig{}; for(i = 0;i < device->Dry.NumChannels;i++) { device->FOAOut.Ambi.Coeffs[i][0] = device->Dry.Ambi.Coeffs[i][0] * w_scale; @@ -734,7 +732,7 @@ static void InitHQPanning(ALCdevice *device, const AmbDecConf *conf, const ALsiz } else { - memset(&device->FOAOut.Ambi, 0, sizeof(device->FOAOut.Ambi)); + device->FOAOut.Ambi = AmbiConfig{}; if((conf->ChanMask&AMBI_PERIPHONIC_MASK)) { count = 4; @@ -869,7 +867,7 @@ static void InitHrtfPanning(ALCdevice *device) if(device->AmbiUp) { - memset(&device->FOAOut.Ambi, 0, sizeof(device->FOAOut.Ambi)); + device->FOAOut.Ambi = AmbiConfig{}; for(i = 0;i < 4;i++) { device->FOAOut.Ambi.Map[i].Scale = 1.0f; @@ -1207,15 +1205,11 @@ no_hrtf: void aluInitEffectPanning(ALeffectslot *slot) { - ALsizei i; - - memset(slot->ChanMap, 0, sizeof(slot->ChanMap)); - slot->NumChannels = 0; - - for(i = 0;i < MAX_EFFECT_CHANNELS;i++) + ALsizei i{0}; + for(auto &chanmap : slot->ChanMap) { - slot->ChanMap[i].Scale = 1.0f; - slot->ChanMap[i].Index = i; + chanmap.Scale = 1.0f; + chanmap.Index = i++; } slot->NumChannels = i; } diff --git a/Alc/ringbuffer.cpp b/Alc/ringbuffer.cpp index db44f8ae..5ee2616f 100644 --- a/Alc/ringbuffer.cpp +++ b/Alc/ringbuffer.cpp @@ -84,7 +84,7 @@ void ll_ringbuffer_reset(ll_ringbuffer_t *rb) { rb->write_ptr.store(0, std::memory_order_relaxed); rb->read_ptr.store(0, std::memory_order_relaxed); - memset(rb->buf, 0, (rb->size_mask+1)*rb->elem_size); + std::fill_n(rb->buf+0, (rb->size_mask+1)*rb->elem_size, 0); } |