Skip to content
Snippets Groups Projects
Commit b7eddf40 authored by Alexandre Savard's avatar Alexandre Savard
Browse files

[#3614] Mkae sure readpointer are not added twice in ring buffer

parent ec9d698f
Branches
Tags
No related merge requests found
...@@ -49,21 +49,24 @@ struct wavhdr { ...@@ -49,21 +49,24 @@ struct wavhdr {
}; };
AudioRecord::AudioRecord() AudioRecord::AudioRecord() : fp (NULL)
, channels_ (1)
, byteCounter_ (0)
, sndSmplRate_ (8000)
, nbSamplesMic_ (0)
, nbSamplesSpk_ (0)
, nbSamplesMax_ (3000)
, recordingEnabled_ (false)
, mixBuffer_ (NULL)
, micBuffer_ (NULL)
, spkBuffer_ (NULL)
{ {
sndSmplRate_ = 8000;
channels_ = 1;
byteCounter_ = 0;
recordingEnabled_ = false;
fp = 0;
nbSamplesMax_ = 3000;
createFilename();
mixBuffer_ = new SFLDataFormat[nbSamplesMax_]; mixBuffer_ = new SFLDataFormat[nbSamplesMax_];
micBuffer_ = new SFLDataFormat[nbSamplesMax_]; micBuffer_ = new SFLDataFormat[nbSamplesMax_];
spkBuffer_ = new SFLDataFormat[nbSamplesMax_]; spkBuffer_ = new SFLDataFormat[nbSamplesMax_];
createFilename();
} }
AudioRecord::~AudioRecord() AudioRecord::~AudioRecord()
...@@ -82,7 +85,6 @@ void AudioRecord::setSndSamplingRate (int smplRate) ...@@ -82,7 +85,6 @@ void AudioRecord::setSndSamplingRate (int smplRate)
void AudioRecord::setRecordingOption (FILE_TYPE type, SOUND_FORMAT format, int sndSmplRate, std::string path) void AudioRecord::setRecordingOption (FILE_TYPE type, SOUND_FORMAT format, int sndSmplRate, std::string path)
{ {
fileType_ = type; fileType_ = type;
sndFormat_ = format; sndFormat_ = format;
channels_ = 1; channels_ = 1;
......
...@@ -149,6 +149,8 @@ RingBuffer* MainBuffer::getRingBuffer (CallID call_id) ...@@ -149,6 +149,8 @@ RingBuffer* MainBuffer::getRingBuffer (CallID call_id)
RingBuffer* MainBuffer::createRingBuffer (CallID call_id) RingBuffer* MainBuffer::createRingBuffer (CallID call_id)
{ {
_debug ("BufferManager: Create ring buffer %s", call_id.c_str());
RingBuffer* newRingBuffer = new RingBuffer (SIZEBUF, call_id); RingBuffer* newRingBuffer = new RingBuffer (SIZEBUF, call_id);
_ringBufferMap.insert (pair<CallID, RingBuffer*> (call_id, newRingBuffer)); _ringBufferMap.insert (pair<CallID, RingBuffer*> (call_id, newRingBuffer));
...@@ -184,6 +186,8 @@ void MainBuffer::bindCallID (CallID call_id1, CallID call_id2) ...@@ -184,6 +186,8 @@ void MainBuffer::bindCallID (CallID call_id1, CallID call_id2)
ost::MutexLock guard (_mutex); ost::MutexLock guard (_mutex);
_debug ("BufferManager: Bind calls %s, %s", call_id1.c_str(), call_id2.c_str());
RingBuffer* ring_buffer; RingBuffer* ring_buffer;
CallIDSet* callid_set; CallIDSet* callid_set;
...@@ -233,12 +237,12 @@ void MainBuffer::unBindCallID (CallID call_id1, CallID call_id2) ...@@ -233,12 +237,12 @@ void MainBuffer::unBindCallID (CallID call_id1, CallID call_id2)
ost::MutexLock guard (_mutex); ost::MutexLock guard (_mutex);
_debug ("BufferManager: Unbind calls %s, %s", call_id1.c_str(), call_id2.c_str());
removeCallIDfromSet (call_id1, call_id2); removeCallIDfromSet (call_id1, call_id2);
removeCallIDfromSet (call_id2, call_id1); removeCallIDfromSet (call_id2, call_id1);
RingBuffer* ringbuffer; RingBuffer* ringbuffer = getRingBuffer (call_id2);
ringbuffer = getRingBuffer (call_id2);
if (ringbuffer) { if (ringbuffer) {
...@@ -254,6 +258,7 @@ void MainBuffer::unBindCallID (CallID call_id1, CallID call_id2) ...@@ -254,6 +258,7 @@ void MainBuffer::unBindCallID (CallID call_id1, CallID call_id2)
ringbuffer = getRingBuffer (call_id1); ringbuffer = getRingBuffer (call_id1);
if (ringbuffer) { if (ringbuffer) {
ringbuffer->removeReadPointer (call_id2); ringbuffer->removeReadPointer (call_id2);
if (ringbuffer->getNbReadPointer() == 0) { if (ringbuffer->getNbReadPointer() == 0) {
......
...@@ -179,7 +179,7 @@ RingBuffer::storeReadPointer (int pointer_value, CallID call_id) ...@@ -179,7 +179,7 @@ RingBuffer::storeReadPointer (int pointer_value, CallID call_id)
void void
RingBuffer::createReadPointer (CallID call_id) RingBuffer::createReadPointer (CallID call_id)
{ {
if (!hasThisReadPointer (call_id))
_readpointer.insert (pair<CallID, int> (call_id, mEnd)); _readpointer.insert (pair<CallID, int> (call_id, mEnd));
} }
...@@ -188,11 +188,10 @@ RingBuffer::createReadPointer (CallID call_id) ...@@ -188,11 +188,10 @@ RingBuffer::createReadPointer (CallID call_id)
void void
RingBuffer::removeReadPointer (CallID call_id) RingBuffer::removeReadPointer (CallID call_id)
{ {
ReadPointer::iterator iter = _readpointer.find (call_id);
if (iter != _readpointer.end())
_readpointer.erase (call_id); _readpointer.erase (iter);
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment