Merge pull request #825 from andreasb242/master

Fixed formatting and init all member
presentation
andreasb242 7 years ago committed by GitHub
commit bdb7a9d5f4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 12
      src/util/audio/AudioQueue.cpp
  2. 9
      src/util/audio/AudioQueue.h
  3. 5
      src/util/audio/AudioRecorder.cpp
  4. 16
      src/util/audio/AudioRecorder.h
  5. 7
      src/util/audio/PortAudioProducer.cpp
  6. 26
      src/util/audio/PortAudioProducer.h
  7. 11
      src/util/audio/SoxConsumer.cpp
  8. 20
      src/util/audio/SoxConsumer.h

@ -36,7 +36,7 @@ unsigned long AudioQueue::size()
return deque<int>::size();
}
void AudioQueue::push(int *samples, unsigned long nSamples)
void AudioQueue::push(int* samples, unsigned long nSamples)
{
XOJ_CHECK_TYPE(AudioQueue);
@ -66,13 +66,17 @@ std::vector<int> AudioQueue::pop(unsigned long nSamples)
void AudioQueue::signalEndOfStream()
{
XOJ_CHECK_TYPE(AudioQueue);
this->streamEnd = true;
this->notified = true;
this->lockCondition.notify_one();
}
void AudioQueue::waitForNewElements(std::unique_lock<std::mutex> &lock)
void AudioQueue::waitForNewElements(std::unique_lock<std::mutex>& lock)
{
XOJ_CHECK_TYPE(AudioQueue);
while (!this->notified)
{
this->lockCondition.wait(lock);
@ -81,10 +85,14 @@ void AudioQueue::waitForNewElements(std::unique_lock<std::mutex> &lock)
bool AudioQueue::hasStreamEnded()
{
XOJ_CHECK_TYPE(AudioQueue);
return this->streamEnd;
}
std::mutex &AudioQueue::syncMutex()
{
XOJ_CHECK_TYPE(AudioQueue);
return this->queueLock;
}

@ -24,23 +24,26 @@ public:
AudioQueue();
~AudioQueue();
public:
void reset();
bool empty();
unsigned long size();
void push(int *samples, unsigned long nSamples);
void push(int* samples, unsigned long nSamples);
std::vector<int> pop(unsigned long nSamples);
void signalEndOfStream();
void waitForNewElements(std::unique_lock<std::mutex> &lock);
void waitForNewElements(std::unique_lock<std::mutex>& lock);
bool hasStreamEnded();
std::mutex &syncMutex();
private:
XOJ_TYPE_ATTRIB;
protected:
std::mutex queueLock;
std::condition_variable lockCondition;
bool streamEnd = false;
bool notified = false;
XOJ_TYPE_ATTRIB;
};

@ -2,7 +2,8 @@
#include "AudioRecorder.h"
AudioRecorder::AudioRecorder(Settings *settings) : settings(settings)
AudioRecorder::AudioRecorder(Settings* settings)
: settings(settings)
{
XOJ_INIT_TYPE(AudioRecorder);
@ -51,4 +52,4 @@ void AudioRecorder::stop()
// Reset the queue for the next recording
this->audioQueue->reset();
}
}

@ -22,20 +22,22 @@
class AudioRecorder
{
public:
explicit AudioRecorder(Settings *settings);
explicit AudioRecorder(Settings* settings);
~AudioRecorder();
public:
void start(std::string filename);
void stop();
private:
XOJ_TYPE_ATTRIB;
protected:
Settings* settings;
AudioQueue *audioQueue;
PortAudioProducer *portAudioProducer;
SoxConsumer *soxConsumer;
private:
XOJ_TYPE_ATTRIB;
AudioQueue* audioQueue;
PortAudioProducer* portAudioProducer;
SoxConsumer* soxConsumer;
};

@ -38,10 +38,11 @@ std::list<DeviceInfo> PortAudioProducer::getInputDevices()
const DeviceInfo PortAudioProducer::getSelectedInputDevice()
{
XOJ_CHECK_TYPE(PortAudioProducer);
return DeviceInfo(&sys.deviceByIndex(this->selectedInputDevice), true);
}
void PortAudioProducer::setInputDevice(DeviceInfo deviceInfo)
{
XOJ_CHECK_TYPE(PortAudioProducer);
@ -80,7 +81,7 @@ void PortAudioProducer::startRecording()
this->inputStream->start();
}
int PortAudioProducer::recordCallback(const void *inputBuffer, void *outputBuffer, unsigned long framesPerBuffer, const PaStreamCallbackTimeInfo *timeInfo,
int PortAudioProducer::recordCallback(const void* inputBuffer, void* outputBuffer, unsigned long framesPerBuffer, const PaStreamCallbackTimeInfo* timeInfo,
PaStreamCallbackFlags statusFlags)
{
XOJ_CHECK_TYPE(PortAudioProducer);
@ -117,4 +118,4 @@ void PortAudioProducer::stopRecording()
// Allow new recording by removing the old one
delete this->inputStream;
this->inputStream = nullptr;
}
}

@ -26,37 +26,33 @@ class PortAudioProducer
{
public:
explicit PortAudioProducer(Settings *settings, AudioQueue *audioQueue);
~PortAudioProducer();
public:
std::list<DeviceInfo> getInputDevices();
const DeviceInfo getSelectedInputDevice();
void setInputDevice(DeviceInfo deviceInfo);
bool isRecording();
void startRecording();
int recordCallback(const void* inputBuffer, void* outputBuffer, unsigned long framesPerBuffer, const PaStreamCallbackTimeInfo* timeInfo, PaStreamCallbackFlags statusFlags);
void stopRecording();
int recordCallback(const void *inputBuffer, void *outputBuffer, unsigned long framesPerBuffer, const PaStreamCallbackTimeInfo * timeInfo, PaStreamCallbackFlags statusFlags);
private:
XOJ_TYPE_ATTRIB;
void stopRecording();
protected:
double sampleRate = 44100.0;
const unsigned long framesPerBuffer = 64;
portaudio::AutoSystem autoSys;
portaudio::System &sys;
Settings *settings;
AudioQueue *audioQueue;
portaudio::System& sys;
Settings* settings;
AudioQueue* audioQueue;
PaDeviceIndex selectedInputDevice;
unsigned int inputChannels;
PaDeviceIndex selectedInputDevice = 0;
unsigned int inputChannels = 0;
portaudio::MemFunCallbackStream<PortAudioProducer> *inputStream = nullptr;
private:
XOJ_TYPE_ATTRIB;
portaudio::MemFunCallbackStream<PortAudioProducer>* inputStream = nullptr;
};

@ -1,6 +1,7 @@
#include "SoxConsumer.h"
SoxConsumer::SoxConsumer(AudioQueue *audioQueue) : audioQueue(audioQueue)
SoxConsumer::SoxConsumer(AudioQueue* audioQueue)
: audioQueue(audioQueue)
{
XOJ_INIT_TYPE(SoxConsumer);
@ -18,11 +19,11 @@ SoxConsumer::~SoxConsumer()
XOJ_RELEASE_TYPE(SoxConsumer);
}
void SoxConsumer::start(std::string filename, double sampleRate, const DeviceInfo &inputDevice)
void SoxConsumer::start(std::string filename, double sampleRate, const DeviceInfo& inputDevice)
{
XOJ_CHECK_TYPE(SoxConsumer);
this->inputSignal = new sox_signalinfo_t;
this->inputSignal = new sox_signalinfo_t();
this->inputSignal->rate = sampleRate;
this->inputSignal->length = SOX_UNSPEC;
this->inputSignal->channels = (unsigned int) inputDevice.getInputChannels();
@ -46,7 +47,7 @@ void SoxConsumer::start(std::string filename, double sampleRate, const DeviceInf
while (!audioQueue->empty())
{
std::vector<int> tmpBuffer = audioQueue->pop(64ul * this->inputSignal->channels);
std::vector<int> tmpBuffer = audioQueue->pop(64ul * this->inputSignal->channels);
if (!tmpBuffer.empty())
{
@ -56,7 +57,6 @@ void SoxConsumer::start(std::string filename, double sampleRate, const DeviceInf
}
sox_close(this->outputFile);
});
}
@ -84,5 +84,4 @@ void SoxConsumer::stop()
{
this->consumerThread->join();
}
}

@ -27,20 +27,22 @@ class SoxConsumer
public:
explicit SoxConsumer(AudioQueue *audioQueue);
~SoxConsumer();
void start(std::string filename, double sampleRate, const DeviceInfo &inputDevice);
public:
void start(std::string filename, double sampleRate, const DeviceInfo& inputDevice);
void join();
void stop();
protected:protected:
sox_signalinfo_t *inputSignal = nullptr;
sox_format_t *outputFile = nullptr;
bool stopConsumer = false;
AudioQueue *audioQueue;
std::thread *consumerThread;
private:
XOJ_TYPE_ATTRIB;
protected:
sox_signalinfo_t* inputSignal = nullptr;
sox_format_t* outputFile = nullptr;
bool stopConsumer = false;
AudioQueue* audioQueue;
std::thread* consumerThread = nullptr;
};

Loading…
Cancel
Save