diff --git a/src/modules/audio/RecordingDevice.h b/src/modules/audio/RecordingDevice.h index e56fb2043..1cf4ba180 100644 --- a/src/modules/audio/RecordingDevice.h +++ b/src/modules/audio/RecordingDevice.h @@ -76,6 +76,11 @@ public: **/ virtual int getSampleCount() const = 0; + /** + * Gets the maximum number of samples that will be buffered, as set by start(). + **/ + virtual int getMaxSamples() const = 0; + /** * @return Sample rate for recording. **/ diff --git a/src/modules/audio/null/RecordingDevice.cpp b/src/modules/audio/null/RecordingDevice.cpp index f640993c9..bee6c0cc3 100644 --- a/src/modules/audio/null/RecordingDevice.cpp +++ b/src/modules/audio/null/RecordingDevice.cpp @@ -57,19 +57,24 @@ int RecordingDevice::getSampleCount() const return 0; } +int RecordingDevice::getMaxSamples() const +{ + return 0; +} + int RecordingDevice::getSampleRate() const { - return 8000; + return 0; } int RecordingDevice::getBitDepth() const { - return 16; + return 0; } int RecordingDevice::getChannels() const { - return 1; + return 0; } const char *RecordingDevice::getName() const diff --git a/src/modules/audio/null/RecordingDevice.h b/src/modules/audio/null/RecordingDevice.h index 85d5f2cd8..c138086b6 100644 --- a/src/modules/audio/null/RecordingDevice.h +++ b/src/modules/audio/null/RecordingDevice.h @@ -40,6 +40,7 @@ public: virtual void stop(); virtual love::sound::SoundData *getData(); virtual const char *getName() const; + virtual int getMaxSamples() const; virtual int getSampleCount() const; virtual int getSampleRate() const; virtual int getBitDepth() const; diff --git a/src/modules/audio/openal/RecordingDevice.cpp b/src/modules/audio/openal/RecordingDevice.cpp index cdc646e4f..8482ad320 100644 --- a/src/modules/audio/openal/RecordingDevice.cpp +++ b/src/modules/audio/openal/RecordingDevice.cpp @@ -49,11 +49,7 @@ RecordingDevice::RecordingDevice(const char *name) RecordingDevice::~RecordingDevice() { - if (!isRecording()) - return; - - alcCaptureStop(device); - alcCaptureCloseDevice(device); + stop(); } bool RecordingDevice::start(int samples, int sampleRate, int bitDepth, int channels) @@ -121,6 +117,11 @@ int RecordingDevice::getSampleCount() const return (int)samples; } +int RecordingDevice::getMaxSamples() const +{ + return samples; +} + int RecordingDevice::getSampleRate() const { return sampleRate; diff --git a/src/modules/audio/openal/RecordingDevice.h b/src/modules/audio/openal/RecordingDevice.h index 99a9d2137..9d6e27e35 100644 --- a/src/modules/audio/openal/RecordingDevice.h +++ b/src/modules/audio/openal/RecordingDevice.h @@ -57,6 +57,7 @@ public: virtual love::sound::SoundData *getData(); virtual const char *getName() const; virtual int getSampleCount() const; + virtual int getMaxSamples() const; virtual int getSampleRate() const; virtual int getBitDepth() const; virtual int getChannels() const; diff --git a/src/modules/audio/wrap_RecordingDevice.cpp b/src/modules/audio/wrap_RecordingDevice.cpp index 8cd5f4ded..fe86cbd16 100644 --- a/src/modules/audio/wrap_RecordingDevice.cpp +++ b/src/modules/audio/wrap_RecordingDevice.cpp @@ -36,7 +36,7 @@ int w_RecordingDevice_start(lua_State *L) { RecordingDevice *d = luax_checkrecordingdevice(L, 1); - int samples = d->getSampleCount(); + int samples = d->getMaxSamples(); int samplerate = d->getSampleRate(); int bitdepth = d->getBitDepth(); int channels = d->getChannels();