* #11964: mainbuffer/ringbuffer: cleanup API

This commit is contained in:
Tristan Matthews
2012-06-04 17:10:01 -04:00
parent 9ae35e0867
commit 61bf390868
13 changed files with 389 additions and 407 deletions

View File

@ -588,14 +588,14 @@ void AlsaLayer::playback(int maxSamples)
unsigned int mainBufferSampleRate = Manager::instance().getMainBuffer()->getInternalSamplingRate();
bool resample = sampleRate_ != mainBufferSampleRate;
int toGet = Manager::instance().getMainBuffer()->availForGet(MainBuffer::DEFAULT_ID);
int toPut = maxSamples * sizeof(SFLDataFormat);
size_t toGet = Manager::instance().getMainBuffer()->availableForGet(MainBuffer::DEFAULT_ID);
const size_t toPut = maxSamples * sizeof(SFLDataFormat);
if (toGet <= 0) { // no audio available, play tone or silence
AudioLoop *tone = Manager::instance().getTelephoneTone();
AudioLoop *file_tone = Manager::instance().getTelephoneFile();
SFLDataFormat *out = (SFLDataFormat *) malloc(toPut);
SFLDataFormat *out = static_cast<SFLDataFormat *>(malloc(toPut));
if (tone) {
tone->getNext(out, maxSamples, getPlaybackGain());
@ -613,7 +613,7 @@ void AlsaLayer::playback(int maxSamples)
// play the regular sound samples
int maxNbBytesToGet = toPut;
size_t maxNbBytesToGet = toPut;
// Compute maximal value to get from the ring buffer
double resampleFactor = 1.0;
@ -655,7 +655,7 @@ void AlsaLayer::audioCallback()
int playbackAvailSmpl = snd_pcm_avail_update(playbackHandle_);
int playbackAvailBytes = playbackAvailSmpl * sizeof(SFLDataFormat);
int toGet = urgentRingBuffer_.AvailForGet(MainBuffer::DEFAULT_ID);
int toGet = urgentRingBuffer_.availableForGet(MainBuffer::DEFAULT_ID);
if (toGet > 0) {
// Urgent data (dtmf, incoming call signal) come first.
@ -663,7 +663,7 @@ void AlsaLayer::audioCallback()
toGet = playbackAvailBytes;
SFLDataFormat *out = (SFLDataFormat*) malloc(toGet);
urgentRingBuffer_.Get(out, toGet, MainBuffer::DEFAULT_ID);
urgentRingBuffer_.get(out, toGet, MainBuffer::DEFAULT_ID);
AudioLayer::applyGain(out, toGet / sizeof(SFLDataFormat), getPlaybackGain());
write(out, toGet, playbackHandle_);

View File

@ -66,7 +66,7 @@ void AudioLayer::flushUrgent()
void AudioLayer::putUrgent(void* buffer, int toCopy)
{
ost::MutexLock guard(mutex_);
urgentRingBuffer_.Put(buffer, toCopy);
urgentRingBuffer_.put(buffer, toCopy);
}
void AudioLayer::applyGain(SFLDataFormat *src , int samples, int gain)

View File

@ -65,11 +65,11 @@ void AudioRecorder::run()
buffer.assign(0);
while (running_) {
size_t availBytes = mbuffer_->availForGet(recorderId_);
mbuffer_->getData(buffer.data(), std::min(availBytes, buffer.size()), recorderId_);
const size_t availableBytes = mbuffer_->availableForGet(recorderId_);
mbuffer_->getData(buffer.data(), std::min(availableBytes, buffer.size()), recorderId_);
if (availBytes > 0)
arecord_->recData(buffer.data(), availBytes / sizeof(SFLDataFormat));
if (availableBytes > 0)
arecord_->recData(buffer.data(), availableBytes / sizeof(SFLDataFormat));
Thread::sleep(20);
}

View File

@ -152,13 +152,13 @@ int AudioRtpRecordHandler::processDataEncode()
// compute nb of byte to get coresponding to 1 audio frame
int samplesToGet = resampleFactor * getCodecFrameSize();
int bytesToGet = samplesToGet * sizeof(SFLDataFormat);
const size_t bytesToGet = samplesToGet * sizeof(SFLDataFormat);
if (Manager::instance().getMainBuffer()->availForGet(id_) < bytesToGet)
if (Manager::instance().getMainBuffer()->availableForGet(id_) < bytesToGet)
return 0;
SFLDataFormat *micData = audioRtpRecord_.decData_.data();
int bytes = Manager::instance().getMainBuffer()->getData(micData, bytesToGet, id_);
const size_t bytes = Manager::instance().getMainBuffer()->getData(micData, bytesToGet, id_);
#ifdef RECTODISK
rtpNotResampled.write((const char *)micData, bytes);

View File

@ -103,6 +103,12 @@ RingBuffer* MainBuffer::getRingBuffer(const std::string & call_id)
return (iter != ringBufferMap_.end()) ? iter->second : NULL;
}
const RingBuffer* MainBuffer::getRingBuffer(const std::string & call_id) const
{
RingBufferMap::const_iterator iter = ringBufferMap_.find(call_id);
return (iter != ringBufferMap_.end()) ? iter->second : NULL;
}
void MainBuffer::createRingBuffer(const std::string &call_id)
{
if (!getRingBuffer(call_id))
@ -162,7 +168,7 @@ void MainBuffer::unBindCallID(const std::string & call_id1, const std::string &
if (ringbuffer) {
ringbuffer->removeReadPointer(call_id1);
if (ringbuffer->getNbReadPointer() == 0) {
if (ringbuffer->hasNoReadPointers()) {
removeCallIDSet(call_id2);
removeRingBuffer(call_id2);
}
@ -173,7 +179,7 @@ void MainBuffer::unBindCallID(const std::string & call_id1, const std::string &
if (ringbuffer) {
ringbuffer->removeReadPointer(call_id2);
if (ringbuffer->getNbReadPointer() == 0) {
if (ringbuffer->hasNoReadPointers()) {
removeCallIDSet(call_id1);
removeRingBuffer(call_id1);
}
@ -191,7 +197,7 @@ void MainBuffer::unBindHalfDuplexOut(const std::string & process_id, const std::
if (ringbuffer) {
ringbuffer->removeReadPointer(process_id);
if (ringbuffer->getNbReadPointer() == 0) {
if (ringbuffer->hasNoReadPointers()) {
removeCallIDSet(call_id);
removeRingBuffer(call_id);
}
@ -222,17 +228,17 @@ void MainBuffer::unBindAll(const std::string & call_id)
}
}
void MainBuffer::putData(void *buffer, int toCopy, const std::string &call_id)
void MainBuffer::putData(void *buffer, size_t toCopy, const std::string &call_id)
{
ost::MutexLock guard(mutex_);
RingBuffer* ring_buffer = getRingBuffer(call_id);
if (ring_buffer)
ring_buffer->Put(buffer, toCopy);
ring_buffer->put(buffer, toCopy);
}
int MainBuffer::getData(void *buffer, int toCopy, const std::string &call_id)
size_t MainBuffer::getData(void *buffer, size_t toCopy, const std::string &call_id)
{
ost::MutexLock guard(mutex_);
@ -252,18 +258,18 @@ int MainBuffer::getData(void *buffer, int toCopy, const std::string &call_id)
} else {
memset(buffer, 0, toCopy);
int size = 0;
size_t size = 0;
for (CallIDSet::iterator iter_id = callid_set->begin();
iter_id != callid_set->end(); ++iter_id) {
int nbSmplToCopy = toCopy / sizeof(SFLDataFormat);
size_t nbSmplToCopy = toCopy / sizeof(SFLDataFormat);
SFLDataFormat mixBuffer[nbSmplToCopy];
memset(mixBuffer, 0, toCopy);
size = getDataByID(mixBuffer, toCopy, *iter_id, call_id);
if (size > 0) {
SFLDataFormat *dest = static_cast<SFLDataFormat*>(buffer);
for (int k = 0; k < nbSmplToCopy; ++k)
for (size_t k = 0; k < nbSmplToCopy; ++k)
dest[k] += mixBuffer[k];
}
}
@ -272,13 +278,13 @@ int MainBuffer::getData(void *buffer, int toCopy, const std::string &call_id)
}
}
int MainBuffer::getDataByID(void *buffer, int toCopy, const std::string & call_id, const std::string & reader_id)
size_t MainBuffer::getDataByID(void *buffer, size_t toCopy, const std::string & call_id, const std::string & reader_id)
{
RingBuffer* ring_buffer = getRingBuffer(call_id);
return ring_buffer ? ring_buffer->Get(buffer, toCopy, reader_id) : 0;
return ring_buffer ? ring_buffer->get(buffer, toCopy, reader_id) : 0;
}
int MainBuffer::availForGet(const std::string & call_id)
size_t MainBuffer::availableForGet(const std::string &call_id)
{
ost::MutexLock guard(mutex_);
@ -293,39 +299,39 @@ int MainBuffer::availForGet(const std::string & call_id)
if ((call_id != DEFAULT_ID) && (*iter_id == call_id))
DEBUG("This problem should not occur since we have %ld elements", callid_set->size());
return availForGetByID(*iter_id, call_id);
return availableForGetByID(*iter_id, call_id);
} else {
int avail_bytes = INT_MAX;
size_t availableBytes = INT_MAX;
for (CallIDSet::iterator i = callid_set->begin(); i != callid_set->end(); ++i) {
const int nb_bytes = availForGetByID(*i, call_id);
const size_t nbBytes = availableForGetByID(*i, call_id);
if (nb_bytes != 0)
avail_bytes = std::min(avail_bytes, nb_bytes);
if (nbBytes != 0)
availableBytes = std::min(availableBytes, nbBytes);
}
return avail_bytes != INT_MAX ? avail_bytes : 0;
return availableBytes != INT_MAX ? availableBytes : 0;
}
}
int MainBuffer::availForGetByID(const std::string &call_id,
const std::string &reader_id)
size_t MainBuffer::availableForGetByID(const std::string &call_id,
const std::string &reader_id) const
{
if (call_id != DEFAULT_ID and reader_id == call_id)
ERROR("RingBuffer has a readpointer on itself");
RingBuffer* ringbuffer = getRingBuffer(call_id);
const RingBuffer* ringbuffer = getRingBuffer(call_id);
if (ringbuffer == NULL) {
ERROR("RingBuffer does not exist");
return 0;
} else
return ringbuffer->AvailForGet(reader_id);
return ringbuffer->availableForGet(reader_id);
}
int MainBuffer::discard(int toDiscard, const std::string &call_id)
size_t MainBuffer::discard(size_t toDiscard, const std::string &call_id)
{
ost::MutexLock guard(mutex_);
@ -340,12 +346,12 @@ int MainBuffer::discard(int toDiscard, const std::string &call_id)
return toDiscard;
}
void MainBuffer::discardByID(int toDiscard, const std::string & call_id, const std::string & reader_id)
void MainBuffer::discardByID(size_t toDiscard, const std::string & call_id, const std::string & reader_id)
{
RingBuffer* ringbuffer = getRingBuffer(call_id);
if (ringbuffer)
ringbuffer->Discard(toDiscard, reader_id);
ringbuffer->discard(toDiscard, reader_id);
}
void MainBuffer::flush(const std::string & call_id)

View File

@ -82,13 +82,13 @@ class MainBuffer {
void unBindAll(const std::string &call_id);
void putData(void *buffer, int toCopy, const std::string &call_id);
void putData(void *buffer, size_t toCopy, const std::string &call_id);
int getData(void *buffer, int toCopy, const std::string &call_id);
size_t getData(void *buffer, size_t toCopy, const std::string &call_id);
int availForGet(const std::string &call_id);
size_t availableForGet(const std::string &call_id);
int discard(int toDiscard, const std::string &call_id);
size_t discard(size_t toDiscard, const std::string &call_id);
void flush(const std::string &call_id);
@ -119,12 +119,13 @@ class MainBuffer {
void removeRingBuffer(const std::string &call_id);
RingBuffer* getRingBuffer(const std::string &call_id);
const RingBuffer* getRingBuffer(const std::string & call_id) const;
int getDataByID(void *buffer, int toCopy, const std::string &call_id, const std::string &reader_id);
size_t getDataByID(void *buffer, size_t toCopy, const std::string &call_id, const std::string &reader_id);
int availForGetByID(const std::string &call_id, const std::string &reader_id);
size_t availableForGetByID(const std::string &call_id, const std::string &reader_id) const;
void discardByID(int toDiscard, const std::string &call_id, const std::string &reader_id);
void discardByID(size_t toDiscard, const std::string &call_id, const std::string &reader_id);
void flushByID(const std::string &call_id, const std::string &reader_id);

View File

@ -326,7 +326,7 @@ void PulseLayer::writeToSpeaker()
notifyIncomingCall();
size_t urgentBytes = urgentRingBuffer_.AvailForGet(MainBuffer::DEFAULT_ID);
size_t urgentBytes = urgentRingBuffer_.availableForGet(MainBuffer::DEFAULT_ID);
if (urgentBytes > writableBytes)
urgentBytes = writableBytes;
@ -334,7 +334,7 @@ void PulseLayer::writeToSpeaker()
void *data = 0;
if (urgentBytes) {
pa_stream_begin_write(s, &data, &urgentBytes);
urgentRingBuffer_.Get(data, urgentBytes, MainBuffer::DEFAULT_ID);
urgentRingBuffer_.get(data, urgentBytes, MainBuffer::DEFAULT_ID);
applyGain(static_cast<SFLDataFormat *>(data), urgentBytes / sizeof(SFLDataFormat), getPlaybackGain());
pa_stream_write(s, data, urgentBytes, NULL, 0, PA_SEEK_RELATIVE);
// Consume the regular one as well (same amount of bytes)
@ -357,7 +357,7 @@ void PulseLayer::writeToSpeaker()
flushUrgent(); // flush remaining samples in _urgentRingBuffer
size_t availSamples = Manager::instance().getMainBuffer()->availForGet(MainBuffer::DEFAULT_ID) / sizeof(SFLDataFormat);
size_t availSamples = Manager::instance().getMainBuffer()->availableForGet(MainBuffer::DEFAULT_ID) / sizeof(SFLDataFormat);
if (availSamples == 0) {
pa_stream_begin_write(s, &data, &writableBytes);

View File

@ -39,28 +39,19 @@
#include "logger.h"
#include "ringbuffer.h"
// corespond to 106 ms (about 5 rtp packets)
#define MIN_BUFFER_SIZE 1280
int RingBuffer::count_rb = 0;
namespace {
// corresponds to 106 ms (about 5 rtp packets)
const size_t MIN_BUFFER_SIZE = 1280;
}
// Create a ring buffer with 'size' bytes
RingBuffer::RingBuffer(int size, const std::string &call_id) : endPos_(0)
RingBuffer::RingBuffer(size_t size, const std::string &call_id) :
endPos_(0)
, bufferSize_(size > MIN_BUFFER_SIZE ? size : MIN_BUFFER_SIZE)
, buffer_(NULL)
, readpointer_()
, buffer_(bufferSize_)
, readpointers_()
, buffer_id_(call_id)
, buffer_input_rec(0)
, buffer_output_rec(0)
{
buffer_ = new unsigned char[bufferSize_];
count_rb++;
}
RingBuffer::~RingBuffer()
{
delete[] buffer_;
}
{}
void
RingBuffer::flush(const std::string &call_id)
@ -74,19 +65,18 @@ RingBuffer::flushAll()
{
ReadPointer::iterator iter;
for (iter = readpointer_.begin(); iter != readpointer_.end(); ++iter)
for (iter = readpointers_.begin(); iter != readpointers_.end(); ++iter)
iter->second = endPos_;
}
int
RingBuffer::putLen()
size_t
RingBuffer::putLength() const
{
int startPos = (readpointer_.size() >= 1) ? getSmallestReadPointer() : 0;
const size_t startPos = (not readpointers_.empty()) ? getSmallestReadPointer() : 0;
return (endPos_ + bufferSize_ - startPos) % bufferSize_;
}
int
RingBuffer::getLen(const std::string &call_id)
size_t RingBuffer::getLength(const std::string &call_id) const
{
return (endPos_ + bufferSize_ - getReadPointer(call_id)) % bufferSize_;
}
@ -97,27 +87,26 @@ RingBuffer::debug()
DEBUG("Start=%d; End=%d; BufferSize=%d", getSmallestReadPointer(), endPos_, bufferSize_);
}
int
RingBuffer::getReadPointer(const std::string &call_id)
size_t RingBuffer::getReadPointer(const std::string &call_id) const
{
if (getNbReadPointer() == 0)
if (hasNoReadPointers())
return 0;
ReadPointer::iterator iter = readpointer_.find(call_id);
return (iter != readpointer_.end()) ? iter->second : 0;
ReadPointer::const_iterator iter = readpointers_.find(call_id);
return (iter != readpointers_.end()) ? iter->second : 0;
}
int
RingBuffer::getSmallestReadPointer()
size_t
RingBuffer::getSmallestReadPointer() const
{
if (getNbReadPointer() == 0)
if (hasNoReadPointers())
return 0;
int smallest = bufferSize_;
size_t smallest = bufferSize_;
ReadPointer::iterator iter;
ReadPointer::const_iterator iter;
for (iter = readpointer_.begin(); iter != readpointer_.end(); ++iter)
for (iter = readpointers_.begin(); iter != readpointers_.end(); ++iter)
if (iter->second < smallest)
smallest = iter->second;
@ -125,11 +114,11 @@ RingBuffer::getSmallestReadPointer()
}
void
RingBuffer::storeReadPointer(int pointer_value, const std::string &call_id)
RingBuffer::storeReadPointer(size_t pointer_value, const std::string &call_id)
{
ReadPointer::iterator iter = readpointer_.find(call_id);
ReadPointer::iterator iter = readpointers_.find(call_id);
if (iter != readpointer_.end())
if (iter != readpointers_.end())
iter->second = pointer_value;
else
DEBUG("Cannot find \"%s\" readPointer in \"%s\" ringbuffer", call_id.c_str(), buffer_id_.c_str());
@ -140,31 +129,30 @@ void
RingBuffer::createReadPointer(const std::string &call_id)
{
if (!hasThisReadPointer(call_id))
readpointer_.insert(std::pair<std::string, int> (call_id, endPos_));
readpointers_.insert(std::pair<std::string, int> (call_id, endPos_));
}
void
RingBuffer::removeReadPointer(const std::string &call_id)
{
ReadPointer::iterator iter = readpointer_.find(call_id);
ReadPointer::iterator iter = readpointers_.find(call_id);
if (iter != readpointer_.end())
readpointer_.erase(iter);
if (iter != readpointers_.end())
readpointers_.erase(iter);
}
bool
RingBuffer::hasThisReadPointer(const std::string &call_id)
RingBuffer::hasThisReadPointer(const std::string &call_id) const
{
return readpointer_.find(call_id) != readpointer_.end();
return readpointers_.find(call_id) != readpointers_.end();
}
int
RingBuffer::getNbReadPointer()
bool RingBuffer::hasNoReadPointers() const
{
return readpointer_.size();
return readpointers_.empty();
}
//
@ -173,24 +161,24 @@ RingBuffer::getNbReadPointer()
// This one puts some data inside the ring buffer.
void
RingBuffer::Put(void* buffer, int toCopy)
RingBuffer::put(void* buffer, size_t toCopy)
{
int len = putLen();
const size_t len = putLength();
if (toCopy > bufferSize_ - len)
toCopy = bufferSize_ - len;
unsigned char *src = (unsigned char *) buffer;
unsigned char *src = static_cast<unsigned char *>(buffer);
int pos = endPos_;
size_t pos = endPos_;
while (toCopy) {
int block = toCopy;
size_t block = toCopy;
if (block > bufferSize_ - pos) // Wrap block around ring ?
block = bufferSize_ - pos; // Fill in to the end of the buffer
memcpy(buffer_ + pos, src, block);
memcpy(&(*buffer_.begin()) + pos, src, block);
src += block;
pos = (pos + block) % bufferSize_;
toCopy -= block;
@ -202,41 +190,40 @@ RingBuffer::Put(void* buffer, int toCopy)
// For the reader only:
//
int
RingBuffer::AvailForGet(const std::string &call_id)
size_t
RingBuffer::availableForGet(const std::string &call_id) const
{
// Used space
return getLen(call_id);
return getLength(call_id);
}
// Get will move 'toCopy' bytes from the internal FIFO to 'buffer'
int
RingBuffer::Get(void *buffer, int toCopy, const std::string &call_id)
size_t
RingBuffer::get(void *buffer, size_t toCopy, const std::string &call_id)
{
if (getNbReadPointer() == 0)
if (hasNoReadPointers())
return 0;
if (!hasThisReadPointer(call_id))
if (not hasThisReadPointer(call_id))
return 0;
int len = getLen(call_id);
const size_t len = getLength(call_id);
if (toCopy > len)
toCopy = len;
int copied = toCopy;
const size_t copied = toCopy;
unsigned char *dest = (unsigned char *) buffer;
int startPos = getReadPointer(call_id);
size_t startPos = getReadPointer(call_id);
while (toCopy) {
int block = toCopy;
while (toCopy > 0) {
size_t block = toCopy;
if (block > bufferSize_ - startPos)
block = bufferSize_ - startPos;
memcpy(dest, buffer_ + startPos, block);
memcpy(dest, &(*buffer_.begin()) + startPos, block);
dest += block;
startPos = (startPos + block) % bufferSize_;
toCopy -= block;
@ -246,15 +233,15 @@ RingBuffer::Get(void *buffer, int toCopy, const std::string &call_id)
return copied;
}
int
RingBuffer::Discard(int toDiscard, const std::string &call_id)
size_t
RingBuffer::discard(size_t toDiscard, const std::string &call_id)
{
int len = getLen(call_id);
size_t len = getLength(call_id);
if (toDiscard > len)
toDiscard = len;
int startPos = (getReadPointer(call_id) + toDiscard) % bufferSize_;
size_t startPos = (getReadPointer(call_id) + toDiscard) % bufferSize_;
storeReadPointer(startPos, call_id);

View File

@ -23,10 +23,11 @@
#define __RING_BUFFER__
#include <fstream>
#include <vector>
#include <map>
#include "noncopyable.h"
typedef std::map<std::string, int> ReadPointer;
typedef std::map<std::string, size_t> ReadPointer;
class RingBuffer {
public:
@ -34,12 +35,7 @@ class RingBuffer {
* Constructor
* @param size Size of the buffer to create
*/
RingBuffer(int size, const std::string &call_id);
/**
* Destructor
*/
~RingBuffer();
RingBuffer(size_t size, const std::string &call_id);
std::string getBufferId() const {
return buffer_id_;
@ -55,24 +51,24 @@ class RingBuffer {
/**
* Get read pointer coresponding to this call
*/
int getReadPointer(const std::string &call_id);
size_t getReadPointer(const std::string &call_id) const;
/**
* Get the whole readpointer list for this ringbuffer
*/
ReadPointer* getReadPointerList() {
return &readpointer_;
return &readpointers_;
}
/**
* Return the smalest readpointer. Usefull to evaluate if ringbuffer is full
*/
int getSmallestReadPointer();
size_t getSmallestReadPointer() const;
/**
* Move readpointer forward by pointer_value
*/
void storeReadPointer(int pointer_value, const std::string &call_id);
void storeReadPointer(size_t pointer_value, const std::string &call_id);
/**
* Add a new readpointer for this ringbuffer
@ -87,45 +83,45 @@ class RingBuffer {
/**
* Test if readpointer coresponding to this call is still active
*/
bool hasThisReadPointer(const std::string &call_id);
bool hasThisReadPointer(const std::string &call_id) const;
int getNbReadPointer();
bool hasNoReadPointers() const;
/**
* Write data in the ring buffer
* @param buffer Data to copied
* @param toCopy Number of bytes to copy
*/
void Put(void* buffer, int toCopy);
void put(void* buffer, size_t toCopy);
/**
* To get how much space is available in the buffer to read in
* @return int The available size
*/
int AvailForGet(const std::string &call_id);
size_t availableForGet(const std::string &call_id) const;
/**
* Get data in the ring buffer
* @param buffer Data to copied
* @param toCopy Number of bytes to copy
* @return int Number of bytes copied
* @return size_t Number of bytes copied
*/
int Get(void* buffer, int toCopy, const std::string &call_id);
size_t get(void* buffer, size_t toCopy, const std::string &call_id);
/**
* Discard data from the buffer
* @param toDiscard Number of bytes to discard
* @return int Number of bytes discarded
* @return size_t Number of bytes discarded
*/
int Discard(int toDiscard, const std::string &call_id);
size_t discard(size_t toDiscard, const std::string &call_id);
/**
* Total length of the ring buffer
* Total length of the ring buffer which is available for "putting"
* @return int
*/
int putLen();
size_t putLength() const;
int getLen(const std::string &call_id);
size_t getLength(const std::string &call_id) const;
/**
* Debug function print mEnd, mStart, mBufferSize
@ -136,23 +132,16 @@ class RingBuffer {
NON_COPYABLE(RingBuffer);
/** Pointer on the last data */
int endPos_;
size_t endPos_;
/** Buffer size */
int bufferSize_;
size_t bufferSize_;
/** Data */
unsigned char *buffer_;
std::vector<unsigned char> buffer_;
ReadPointer readpointer_;
ReadPointer readpointers_;
std::string buffer_id_;
friend class MainBufferTest;
public:
std::fstream *buffer_input_rec;
std::fstream *buffer_output_rec;
static int count_rb;
};

View File

@ -26,14 +26,13 @@
#include <speex/speex_preprocess.h>
#include "manager.h"
// number of samples (20 ms)
#define EC_FRAME_SIZE 160
// number of sample to process, (800 à 4000 samples, 100 to 500 ms)
#define EC_FILTER_LENGTH 800
namespace {
const int SPEEX_SAMPLE_RATE = 8000;
const int RINGBUFFER_SIZE = 100000;
// number of samples (20 ms)
const size_t EC_FRAME_SIZE = 160;
// number of sample to process, (800 à 4000 samples, 100 to 500 ms)
const size_t EC_FILTER_LENGTH = 800;
}
SpeexEchoCancel::SpeexEchoCancel() :
@ -66,7 +65,7 @@ SpeexEchoCancel::~SpeexEchoCancel()
speex_preprocess_state_destroy(preState_);
}
void SpeexEchoCancel::putData(SFLDataFormat *inputData, int samples)
void SpeexEchoCancel::putData(SFLDataFormat *inputData, size_t samples)
{
if (spkrStopped_) {
micData_.flushAll();
@ -74,15 +73,15 @@ void SpeexEchoCancel::putData(SFLDataFormat *inputData, int samples)
spkrStopped_ = false;
}
spkrData_.Put(inputData, samples * sizeof(SFLDataFormat));
spkrData_.put(inputData, samples * sizeof(SFLDataFormat));
}
int SpeexEchoCancel::process(SFLDataFormat *inputData, SFLDataFormat *outputData, int samples)
int SpeexEchoCancel::process(SFLDataFormat *inputData, SFLDataFormat *outputData, size_t samples)
{
if (spkrStopped_)
return 0;
const int byteSize = EC_FRAME_SIZE * sizeof(SFLDataFormat);
const size_t byteSize = EC_FRAME_SIZE * sizeof(SFLDataFormat);
// init temporary buffers
memset(tmpSpkr_, 0, sizeof(tmpSpkr_));
@ -90,21 +89,21 @@ int SpeexEchoCancel::process(SFLDataFormat *inputData, SFLDataFormat *outputData
memset(tmpOut_, 0, sizeof(tmpOut_));
// Put mic data in ringbuffer
micData_.Put(inputData, samples * sizeof(SFLDataFormat));
micData_.put(inputData, samples * sizeof(SFLDataFormat));
// Store data for synchronization
int spkrAvail = spkrData_.AvailForGet(MainBuffer::DEFAULT_ID);
int micAvail = micData_.AvailForGet(MainBuffer::DEFAULT_ID);
size_t spkrAvail = spkrData_.availableForGet(MainBuffer::DEFAULT_ID);
size_t micAvail = micData_.availableForGet(MainBuffer::DEFAULT_ID);
if ((spkrAvail < (echoDelay_ + byteSize)) or micAvail < byteSize) {
micData_.Discard(byteSize, MainBuffer::DEFAULT_ID);
micData_.discard(byteSize, MainBuffer::DEFAULT_ID);
return 0;
}
spkrData_.Get(tmpSpkr_, byteSize, MainBuffer::DEFAULT_ID);
micData_.Get(tmpMic_, byteSize, MainBuffer::DEFAULT_ID);
spkrData_.get(tmpSpkr_, byteSize, MainBuffer::DEFAULT_ID);
micData_.get(tmpMic_, byteSize, MainBuffer::DEFAULT_ID);
for (int i = 0; i < EC_FRAME_SIZE; i++) {
for (size_t i = 0; i < EC_FRAME_SIZE; ++i) {
int32_t tmp = tmpSpkr_[i] * 3;
if (tmp > SHRT_MAX)
@ -118,13 +117,13 @@ int SpeexEchoCancel::process(SFLDataFormat *inputData, SFLDataFormat *outputData
speex_echo_cancellation(echoState_, tmpMic_, tmpSpkr_, tmpOut_);
speex_preprocess_run(preState_, reinterpret_cast<short *>(tmpOut_));
for (int i = 0; i < EC_FRAME_SIZE; i++)
for (size_t i = 0; i < EC_FRAME_SIZE; i++)
tmpOut_[i] *= 3;
memcpy(outputData, tmpOut_, byteSize);
spkrAvail = spkrData_.AvailForGet(MainBuffer::DEFAULT_ID);
micAvail = micData_.AvailForGet(MainBuffer::DEFAULT_ID);
spkrAvail = spkrData_.availableForGet(MainBuffer::DEFAULT_ID);
micAvail = micData_.availableForGet(MainBuffer::DEFAULT_ID);
return EC_FRAME_SIZE;
}

View File

@ -39,20 +39,20 @@ class SpeexEchoCancel {
* Add speaker data into internal buffer
* \param inputData containing far-end voice data to be sent to speakers
*/
void putData(SFLDataFormat *, int samples);
void putData(SFLDataFormat *, size_t samples);
/**
* Perform echo cancellation using internal buffers
* \param inputData containing mixed echo and voice data
* \param outputData containing
*/
int process(SFLDataFormat *, SFLDataFormat *, int samples);
int process(SFLDataFormat *, SFLDataFormat *, size_t samples);
private:
NON_COPYABLE(SpeexEchoCancel);
int echoDelay_;
int echoTailLength_;
size_t echoDelay_;
size_t echoTailLength_;
SpeexEchoState *echoState_;
SpeexPreprocessState *preState_;

View File

@ -166,9 +166,9 @@ IAXVoIPLink::sendAudioFromMic()
// we have to get 20ms of data from the mic *20/1000 = /50
// rate/50 shall be lower than IAX__20S_48KHZ_MAX
int bytesNeeded = mainBufferSampleRate * 20 / 1000 * sizeof(SFLDataFormat);
const size_t bytesNeeded = mainBufferSampleRate * 20 / 1000 * sizeof(SFLDataFormat);
if (Manager::instance().getMainBuffer()->availForGet(currentCall->getCallId()) < bytesNeeded)
if (Manager::instance().getMainBuffer()->availableForGet(currentCall->getCallId()) < bytesNeeded)
continue;
// Get bytes from micRingBuffer to data_from_mic

View File

@ -98,37 +98,37 @@ void MainBufferTest::testRingBufferReadPointer()
// test ring buffer read pointers (one per participant)
mainbuffer_->createRingBuffer(call_id);
test_ring_buffer = mainbuffer_->getRingBuffer(call_id);
CPPUNIT_ASSERT(test_ring_buffer->getNbReadPointer() == 0);
CPPUNIT_ASSERT(test_ring_buffer->hasNoReadPointers());
CPPUNIT_ASSERT(test_ring_buffer->getReadPointer(read_id) == (int) NULL);
// create a read pointer
test_ring_buffer->createReadPointer(read_id);
CPPUNIT_ASSERT(test_ring_buffer->getNbReadPointer() == 1);
CPPUNIT_ASSERT(!test_ring_buffer->hasNoReadPointers());
CPPUNIT_ASSERT(test_ring_buffer->getReadPointer(null_id) == (int) NULL);
CPPUNIT_ASSERT(test_ring_buffer->getReadPointer(read_id) == 0);
// store read pointer
test_ring_buffer->storeReadPointer(4, read_id);
CPPUNIT_ASSERT(test_ring_buffer->getNbReadPointer() == 1);
CPPUNIT_ASSERT(not test_ring_buffer->hasNoReadPointers());
CPPUNIT_ASSERT(test_ring_buffer->getReadPointer(read_id) == 4);
// recreate the same read pointer (should not add a pointer neither chage its value)
test_ring_buffer->createReadPointer(read_id);
CPPUNIT_ASSERT(test_ring_buffer->getNbReadPointer() == 1);
CPPUNIT_ASSERT(not test_ring_buffer->hasNoReadPointers());
test_ring_buffer->storeReadPointer(8, read_id);
CPPUNIT_ASSERT(test_ring_buffer->getReadPointer(read_id) == 8);
// test getSmallest read pointer (to get the length available to put data in the buffer)
test_ring_buffer->createReadPointer(other_id);
CPPUNIT_ASSERT(test_ring_buffer->getNbReadPointer() == 2);
CPPUNIT_ASSERT(not test_ring_buffer->hasNoReadPointers());
test_ring_buffer->storeReadPointer(4, other_id);
CPPUNIT_ASSERT(test_ring_buffer->getSmallestReadPointer() == 4);
// remove read pointers
test_ring_buffer->removeReadPointer(other_id);
CPPUNIT_ASSERT(test_ring_buffer->getNbReadPointer() == 1);
CPPUNIT_ASSERT(not test_ring_buffer->hasNoReadPointers());
test_ring_buffer->removeReadPointer(read_id);
CPPUNIT_ASSERT(test_ring_buffer->getNbReadPointer() == 0);
CPPUNIT_ASSERT(test_ring_buffer->hasNoReadPointers());
}
@ -224,71 +224,71 @@ void MainBufferTest::testRingBufferInt()
RingBuffer *test_ring_buffer = mainbuffer_->getRingBuffer(MainBuffer::DEFAULT_ID);
// initial state
CPPUNIT_ASSERT(test_ring_buffer->putLen() == 0);
CPPUNIT_ASSERT(test_ring_buffer->putLength() == 0);
CPPUNIT_ASSERT(test_ring_buffer->getReadPointer(MainBuffer::DEFAULT_ID) == 0);
// add some data
test_ring_buffer->Put(&testint1, sizeof(int));
CPPUNIT_ASSERT(test_ring_buffer->putLen() == sizeof(int));
test_ring_buffer->put(&testint1, sizeof(int));
CPPUNIT_ASSERT(test_ring_buffer->putLength() == sizeof(int));
CPPUNIT_ASSERT(test_ring_buffer->getReadPointer(MainBuffer::DEFAULT_ID) == 0);
// add some other data
test_ring_buffer->Put(&testint2, sizeof(int));
CPPUNIT_ASSERT(test_ring_buffer->putLen() == 2*sizeof(int));
test_ring_buffer->put(&testint2, sizeof(int));
CPPUNIT_ASSERT(test_ring_buffer->putLength() == 2*sizeof(int));
CPPUNIT_ASSERT(test_ring_buffer->getReadPointer(MainBuffer::DEFAULT_ID) == 0);
int testget = (int) NULL;
// get some data (without any read pointers)
CPPUNIT_ASSERT(test_ring_buffer->getNbReadPointer() == 0);
CPPUNIT_ASSERT(test_ring_buffer->AvailForGet(MainBuffer::DEFAULT_ID) == 2*sizeof(int));
CPPUNIT_ASSERT(test_ring_buffer->getLen(MainBuffer::DEFAULT_ID) == 2*sizeof(int));
CPPUNIT_ASSERT(test_ring_buffer->Get(&testget, sizeof(int), MainBuffer::DEFAULT_ID) == 0);
CPPUNIT_ASSERT(test_ring_buffer->AvailForGet(MainBuffer::DEFAULT_ID) == 2*sizeof(int));
CPPUNIT_ASSERT(test_ring_buffer->getLen(MainBuffer::DEFAULT_ID) == 2*sizeof(int));
CPPUNIT_ASSERT(test_ring_buffer->hasNoReadPointers());
CPPUNIT_ASSERT(test_ring_buffer->availableForGet(MainBuffer::DEFAULT_ID) == 2*sizeof(int));
CPPUNIT_ASSERT(test_ring_buffer->getLength(MainBuffer::DEFAULT_ID) == 2*sizeof(int));
CPPUNIT_ASSERT(test_ring_buffer->get(&testget, sizeof(int), MainBuffer::DEFAULT_ID) == 0);
CPPUNIT_ASSERT(test_ring_buffer->availableForGet(MainBuffer::DEFAULT_ID) == 2*sizeof(int));
CPPUNIT_ASSERT(test_ring_buffer->getLength(MainBuffer::DEFAULT_ID) == 2*sizeof(int));
CPPUNIT_ASSERT(testget == (int) NULL);
CPPUNIT_ASSERT(test_ring_buffer->getReadPointer(MainBuffer::DEFAULT_ID) == 0);
// get some data (with a read pointer)
CPPUNIT_ASSERT(test_ring_buffer->getNbReadPointer() == 0);
CPPUNIT_ASSERT(test_ring_buffer->hasNoReadPointers());
test_ring_buffer->createReadPointer(MainBuffer::DEFAULT_ID);
CPPUNIT_ASSERT(test_ring_buffer->getNbReadPointer() == 1);
CPPUNIT_ASSERT(test_ring_buffer->AvailForGet(MainBuffer::DEFAULT_ID) == 0);
CPPUNIT_ASSERT(test_ring_buffer->getLen(MainBuffer::DEFAULT_ID) == 0);
CPPUNIT_ASSERT(not test_ring_buffer->hasNoReadPointers());
CPPUNIT_ASSERT(test_ring_buffer->availableForGet(MainBuffer::DEFAULT_ID) == 0);
CPPUNIT_ASSERT(test_ring_buffer->getLength(MainBuffer::DEFAULT_ID) == 0);
// add some data
test_ring_buffer->Put(&testint1, sizeof(int));
CPPUNIT_ASSERT(test_ring_buffer->putLen() == sizeof(int));
test_ring_buffer->put(&testint1, sizeof(int));
CPPUNIT_ASSERT(test_ring_buffer->putLength() == sizeof(int));
CPPUNIT_ASSERT(test_ring_buffer->getReadPointer(MainBuffer::DEFAULT_ID) == 2*sizeof(int));
// add some other data
test_ring_buffer->Put(&testint2, sizeof(int));
CPPUNIT_ASSERT(test_ring_buffer->putLen() == 2*sizeof(int));
test_ring_buffer->put(&testint2, sizeof(int));
CPPUNIT_ASSERT(test_ring_buffer->putLength() == 2*sizeof(int));
CPPUNIT_ASSERT(test_ring_buffer->getReadPointer(MainBuffer::DEFAULT_ID) == 2*sizeof(int));
CPPUNIT_ASSERT(test_ring_buffer->Get(&testget, sizeof(int), MainBuffer::DEFAULT_ID) == sizeof(int));
CPPUNIT_ASSERT(test_ring_buffer->get(&testget, sizeof(int), MainBuffer::DEFAULT_ID) == sizeof(int));
// test flush data
test_ring_buffer->Put(&testint1, sizeof(int));
test_ring_buffer->put(&testint1, sizeof(int));
test_ring_buffer->flush(MainBuffer::DEFAULT_ID);
CPPUNIT_ASSERT(test_ring_buffer->putLen() == 0);
CPPUNIT_ASSERT(test_ring_buffer->getLen(MainBuffer::DEFAULT_ID) == 0);
CPPUNIT_ASSERT(test_ring_buffer->AvailForGet(MainBuffer::DEFAULT_ID) == 0);
CPPUNIT_ASSERT(test_ring_buffer->putLength() == 0);
CPPUNIT_ASSERT(test_ring_buffer->getLength(MainBuffer::DEFAULT_ID) == 0);
CPPUNIT_ASSERT(test_ring_buffer->availableForGet(MainBuffer::DEFAULT_ID) == 0);
CPPUNIT_ASSERT(test_ring_buffer->getReadPointer(MainBuffer::DEFAULT_ID) == 5*sizeof(int));
// test flush data
CPPUNIT_ASSERT(test_ring_buffer->putLen() == 0);
test_ring_buffer->Put(&testint1, sizeof(int));
CPPUNIT_ASSERT(test_ring_buffer->putLen() == sizeof(int));
CPPUNIT_ASSERT(test_ring_buffer->AvailForGet(MainBuffer::DEFAULT_ID) == sizeof(int));
CPPUNIT_ASSERT(test_ring_buffer->getLen(MainBuffer::DEFAULT_ID) == sizeof(int));
CPPUNIT_ASSERT(test_ring_buffer->putLength() == 0);
test_ring_buffer->put(&testint1, sizeof(int));
CPPUNIT_ASSERT(test_ring_buffer->putLength() == sizeof(int));
CPPUNIT_ASSERT(test_ring_buffer->availableForGet(MainBuffer::DEFAULT_ID) == sizeof(int));
CPPUNIT_ASSERT(test_ring_buffer->getLength(MainBuffer::DEFAULT_ID) == sizeof(int));
CPPUNIT_ASSERT(test_ring_buffer->getReadPointer(MainBuffer::DEFAULT_ID) == 5*sizeof(int));
test_ring_buffer->Discard(sizeof(int), MainBuffer::DEFAULT_ID);
CPPUNIT_ASSERT(test_ring_buffer->putLen() == 0);
CPPUNIT_ASSERT(test_ring_buffer->getLen(MainBuffer::DEFAULT_ID) == 0);
CPPUNIT_ASSERT(test_ring_buffer->AvailForGet(MainBuffer::DEFAULT_ID) == 0);
test_ring_buffer->discard(sizeof(int), MainBuffer::DEFAULT_ID);
CPPUNIT_ASSERT(test_ring_buffer->putLength() == 0);
CPPUNIT_ASSERT(test_ring_buffer->getLength(MainBuffer::DEFAULT_ID) == 0);
CPPUNIT_ASSERT(test_ring_buffer->availableForGet(MainBuffer::DEFAULT_ID) == 0);
CPPUNIT_ASSERT(test_ring_buffer->getReadPointer(MainBuffer::DEFAULT_ID) == 6*sizeof(int));
}
@ -307,60 +307,60 @@ void MainBufferTest::testRingBufferNonDefaultID()
RingBuffer* test_ring_buffer = mainbuffer_->getRingBuffer(MainBuffer::DEFAULT_ID);
test_ring_buffer->createReadPointer(test_id);
CPPUNIT_ASSERT(test_ring_buffer->putLen() == 0);
CPPUNIT_ASSERT(test_ring_buffer->putLength() == 0);
CPPUNIT_ASSERT(test_ring_buffer->getReadPointer(MainBuffer::DEFAULT_ID) == 0);
test_ring_buffer->Put(&testint1, sizeof(int));
CPPUNIT_ASSERT(test_ring_buffer->putLen() == sizeof(int));
test_ring_buffer->put(&testint1, sizeof(int));
CPPUNIT_ASSERT(test_ring_buffer->putLength() == sizeof(int));
CPPUNIT_ASSERT(test_ring_buffer->getReadPointer(MainBuffer::DEFAULT_ID) == 0);
test_ring_buffer->Put(&testint2, sizeof(int));
CPPUNIT_ASSERT(test_ring_buffer->putLen() == 2*sizeof(int));
test_ring_buffer->put(&testint2, sizeof(int));
CPPUNIT_ASSERT(test_ring_buffer->putLength() == 2*sizeof(int));
CPPUNIT_ASSERT(test_ring_buffer->getReadPointer(MainBuffer::DEFAULT_ID) == 0);
int testget;
CPPUNIT_ASSERT(test_ring_buffer->AvailForGet(test_id) == 2*sizeof(int));
CPPUNIT_ASSERT(test_ring_buffer->getLen(test_id) == 2*sizeof(int));
CPPUNIT_ASSERT(test_ring_buffer->Get(&testget, sizeof(int), test_id) == sizeof(int));
CPPUNIT_ASSERT(test_ring_buffer->AvailForGet(test_id) == sizeof(int));
CPPUNIT_ASSERT(test_ring_buffer->getLen(test_id) == sizeof(int));
CPPUNIT_ASSERT(test_ring_buffer->availableForGet(test_id) == 2*sizeof(int));
CPPUNIT_ASSERT(test_ring_buffer->getLength(test_id) == 2*sizeof(int));
CPPUNIT_ASSERT(test_ring_buffer->get(&testget, sizeof(int), test_id) == sizeof(int));
CPPUNIT_ASSERT(test_ring_buffer->availableForGet(test_id) == sizeof(int));
CPPUNIT_ASSERT(test_ring_buffer->getLength(test_id) == sizeof(int));
CPPUNIT_ASSERT(testget == testint1);
CPPUNIT_ASSERT(test_ring_buffer->getReadPointer(test_id) == sizeof(int));
CPPUNIT_ASSERT(test_ring_buffer->Get(&testget, 100, test_id) == sizeof(int));
CPPUNIT_ASSERT(test_ring_buffer->get(&testget, 100, test_id) == sizeof(int));
CPPUNIT_ASSERT(testget == testint2);
CPPUNIT_ASSERT(test_ring_buffer->AvailForGet(test_id) == 0);
CPPUNIT_ASSERT(test_ring_buffer->getLen(test_id) == 0);
CPPUNIT_ASSERT(test_ring_buffer->availableForGet(test_id) == 0);
CPPUNIT_ASSERT(test_ring_buffer->getLength(test_id) == 0);
CPPUNIT_ASSERT(test_ring_buffer->getReadPointer(test_id) == 2*sizeof(int));
// test flush data
CPPUNIT_ASSERT(test_ring_buffer->putLen() == 0);
test_ring_buffer->Put(&testint1, sizeof(int));
CPPUNIT_ASSERT(test_ring_buffer->putLen() == sizeof(int));
CPPUNIT_ASSERT(test_ring_buffer->AvailForGet(test_id) == sizeof(int));
CPPUNIT_ASSERT(test_ring_buffer->getLen(test_id) == sizeof(int));
CPPUNIT_ASSERT(test_ring_buffer->putLength() == 0);
test_ring_buffer->put(&testint1, sizeof(int));
CPPUNIT_ASSERT(test_ring_buffer->putLength() == sizeof(int));
CPPUNIT_ASSERT(test_ring_buffer->availableForGet(test_id) == sizeof(int));
CPPUNIT_ASSERT(test_ring_buffer->getLength(test_id) == sizeof(int));
test_ring_buffer->flush(test_id);
CPPUNIT_ASSERT(test_ring_buffer->putLen() == 0);
CPPUNIT_ASSERT(test_ring_buffer->getLen(test_id) == 0);
CPPUNIT_ASSERT(test_ring_buffer->AvailForGet(test_id) == 0);
CPPUNIT_ASSERT(test_ring_buffer->putLength() == 0);
CPPUNIT_ASSERT(test_ring_buffer->getLength(test_id) == 0);
CPPUNIT_ASSERT(test_ring_buffer->availableForGet(test_id) == 0);
CPPUNIT_ASSERT(test_ring_buffer->getReadPointer(test_id) == 3*sizeof(int));
// test flush data
CPPUNIT_ASSERT(test_ring_buffer->putLen() == 0);
test_ring_buffer->Put(&testint1, sizeof(int));
CPPUNIT_ASSERT(test_ring_buffer->putLen() == sizeof(int));
CPPUNIT_ASSERT(test_ring_buffer->AvailForGet(test_id) == sizeof(int));
CPPUNIT_ASSERT(test_ring_buffer->getLen(test_id) == sizeof(int));
CPPUNIT_ASSERT(test_ring_buffer->putLength() == 0);
test_ring_buffer->put(&testint1, sizeof(int));
CPPUNIT_ASSERT(test_ring_buffer->putLength() == sizeof(int));
CPPUNIT_ASSERT(test_ring_buffer->availableForGet(test_id) == sizeof(int));
CPPUNIT_ASSERT(test_ring_buffer->getLength(test_id) == sizeof(int));
CPPUNIT_ASSERT(test_ring_buffer->getReadPointer(test_id) == 3*sizeof(int));
test_ring_buffer->Discard(sizeof(int), test_id);
CPPUNIT_ASSERT(test_ring_buffer->putLen() == 0);
CPPUNIT_ASSERT(test_ring_buffer->getLen(test_id) == 0);
CPPUNIT_ASSERT(test_ring_buffer->AvailForGet(test_id) == 0);
test_ring_buffer->discard(sizeof(int), test_id);
CPPUNIT_ASSERT(test_ring_buffer->putLength() == 0);
CPPUNIT_ASSERT(test_ring_buffer->getLength(test_id) == 0);
CPPUNIT_ASSERT(test_ring_buffer->availableForGet(test_id) == 0);
CPPUNIT_ASSERT(test_ring_buffer->getReadPointer(test_id) == 4*sizeof(int));
test_ring_buffer->removeReadPointer(test_id);
@ -379,25 +379,25 @@ void MainBufferTest::testRingBufferFloat()
test_ring_buffer->createReadPointer(MainBuffer::DEFAULT_ID);
test_ring_buffer->Put(&testfloat1, sizeof(float));
CPPUNIT_ASSERT(test_ring_buffer->putLen() == sizeof(float));
test_ring_buffer->put(&testfloat1, sizeof(float));
CPPUNIT_ASSERT(test_ring_buffer->putLength() == sizeof(float));
test_ring_buffer->Put(&testfloat2, sizeof(float));
CPPUNIT_ASSERT(test_ring_buffer->putLen() == 2*sizeof(float));
test_ring_buffer->put(&testfloat2, sizeof(float));
CPPUNIT_ASSERT(test_ring_buffer->putLength() == 2*sizeof(float));
float testget;
CPPUNIT_ASSERT(test_ring_buffer->Get(&testget, sizeof(float), MainBuffer::DEFAULT_ID) == sizeof(float));
CPPUNIT_ASSERT(test_ring_buffer->getLen(MainBuffer::DEFAULT_ID) == sizeof(float));
CPPUNIT_ASSERT(test_ring_buffer->get(&testget, sizeof(float), MainBuffer::DEFAULT_ID) == sizeof(float));
CPPUNIT_ASSERT(test_ring_buffer->getLength(MainBuffer::DEFAULT_ID) == sizeof(float));
CPPUNIT_ASSERT(testget == testfloat1);
CPPUNIT_ASSERT(test_ring_buffer->Get(&testget, sizeof(float), MainBuffer::DEFAULT_ID) == sizeof(float));
CPPUNIT_ASSERT(test_ring_buffer->get(&testget, sizeof(float), MainBuffer::DEFAULT_ID) == sizeof(float));
CPPUNIT_ASSERT(testget == testfloat2);
CPPUNIT_ASSERT(test_ring_buffer->getLen(MainBuffer::DEFAULT_ID) == 0);
CPPUNIT_ASSERT(test_ring_buffer->getLength(MainBuffer::DEFAULT_ID) == 0);
test_ring_buffer->Put(&testfloat1, sizeof(float));
test_ring_buffer->put(&testfloat1, sizeof(float));
test_ring_buffer->flush(MainBuffer::DEFAULT_ID);
CPPUNIT_ASSERT(test_ring_buffer->putLen() == 0);
CPPUNIT_ASSERT(test_ring_buffer->putLength() == 0);
}
@ -413,8 +413,8 @@ void MainBufferTest::testTwoPointer()
int test_input = 12;
int test_output = 0;
input_buffer->Put(&test_input, sizeof(int));
CPPUNIT_ASSERT(output_buffer->Get(&test_output, sizeof(float), MainBuffer::DEFAULT_ID) == sizeof(float));
input_buffer->put(&test_input, sizeof(int));
CPPUNIT_ASSERT(output_buffer->get(&test_output, sizeof(float), MainBuffer::DEFAULT_ID) == sizeof(float));
CPPUNIT_ASSERT(test_input == test_output);
}
@ -469,15 +469,15 @@ void MainBufferTest::testBindUnbindBuffer()
ringbuffer = mainbuffer_->getRingBuffer(MainBuffer::DEFAULT_ID);
CPPUNIT_ASSERT(ringbuffer != NULL);
CPPUNIT_ASSERT(ringbuffer->getNbReadPointer() == 1);
iter_readpointer = ringbuffer->readpointer_.find(test_id1);
CPPUNIT_ASSERT(not ringbuffer->hasNoReadPointers());
iter_readpointer = ringbuffer->readpointers_.find(test_id1);
CPPUNIT_ASSERT(iter_readpointer->first == test_id1);
CPPUNIT_ASSERT(iter_readpointer->second == 0);
ringbuffer = mainbuffer_->getRingBuffer(test_id1);
CPPUNIT_ASSERT(ringbuffer != NULL);
CPPUNIT_ASSERT(ringbuffer->getNbReadPointer() == 1);
iter_readpointer = ringbuffer->readpointer_.find(MainBuffer::DEFAULT_ID);
CPPUNIT_ASSERT(not ringbuffer->hasNoReadPointers());
iter_readpointer = ringbuffer->readpointers_.find(MainBuffer::DEFAULT_ID);
CPPUNIT_ASSERT(iter_readpointer->first == MainBuffer::DEFAULT_ID);
CPPUNIT_ASSERT(iter_readpointer->second == 0);
@ -543,25 +543,25 @@ void MainBufferTest::testBindUnbindBuffer()
ringbuffer = mainbuffer_->getRingBuffer(MainBuffer::DEFAULT_ID);
CPPUNIT_ASSERT(ringbuffer != NULL);
CPPUNIT_ASSERT(ringbuffer->getNbReadPointer() == 2);
iter_readpointer = ringbuffer->readpointer_.find(test_id1);
CPPUNIT_ASSERT(not ringbuffer->hasNoReadPointers());
iter_readpointer = ringbuffer->readpointers_.find(test_id1);
CPPUNIT_ASSERT(iter_readpointer->first == test_id1);
CPPUNIT_ASSERT(iter_readpointer->second == 0);
iter_readpointer = ringbuffer->readpointer_.find(test_id2);
iter_readpointer = ringbuffer->readpointers_.find(test_id2);
CPPUNIT_ASSERT(iter_readpointer->first == test_id2);
CPPUNIT_ASSERT(iter_readpointer->second == 0);
ringbuffer = mainbuffer_->getRingBuffer(test_id1);
CPPUNIT_ASSERT(ringbuffer != NULL);
CPPUNIT_ASSERT(ringbuffer->getNbReadPointer() == 1);
iter_readpointer = ringbuffer->readpointer_.find(MainBuffer::DEFAULT_ID);
CPPUNIT_ASSERT(not ringbuffer->hasNoReadPointers());
iter_readpointer = ringbuffer->readpointers_.find(MainBuffer::DEFAULT_ID);
CPPUNIT_ASSERT(iter_readpointer->first == MainBuffer::DEFAULT_ID);
CPPUNIT_ASSERT(iter_readpointer->second == 0);
ringbuffer = mainbuffer_->getRingBuffer(test_id2);
CPPUNIT_ASSERT(ringbuffer != NULL);
CPPUNIT_ASSERT(ringbuffer->getNbReadPointer() == 1);
iter_readpointer = ringbuffer->readpointer_.find(MainBuffer::DEFAULT_ID);
CPPUNIT_ASSERT(not ringbuffer->hasNoReadPointers());
iter_readpointer = ringbuffer->readpointers_.find(MainBuffer::DEFAULT_ID);
CPPUNIT_ASSERT(iter_readpointer->first == MainBuffer::DEFAULT_ID);
CPPUNIT_ASSERT(iter_readpointer->second == 0);
@ -608,31 +608,31 @@ void MainBufferTest::testBindUnbindBuffer()
ringbuffer = mainbuffer_->getRingBuffer(MainBuffer::DEFAULT_ID);
CPPUNIT_ASSERT(ringbuffer != NULL);
CPPUNIT_ASSERT(ringbuffer->getNbReadPointer() == 2);
iter_readpointer = ringbuffer->readpointer_.find(test_id1);
CPPUNIT_ASSERT(not ringbuffer->hasNoReadPointers());
iter_readpointer = ringbuffer->readpointers_.find(test_id1);
CPPUNIT_ASSERT(iter_readpointer->first == test_id1);
CPPUNIT_ASSERT(iter_readpointer->second == 0);
iter_readpointer = ringbuffer->readpointer_.find(test_id2);
iter_readpointer = ringbuffer->readpointers_.find(test_id2);
CPPUNIT_ASSERT(iter_readpointer->first == test_id2);
CPPUNIT_ASSERT(iter_readpointer->second == 0);
ringbuffer = mainbuffer_->getRingBuffer(test_id1);
CPPUNIT_ASSERT(ringbuffer != NULL);
CPPUNIT_ASSERT(ringbuffer->getNbReadPointer() == 2);
iter_readpointer = ringbuffer->readpointer_.find(MainBuffer::DEFAULT_ID);
CPPUNIT_ASSERT(not ringbuffer->hasNoReadPointers());
iter_readpointer = ringbuffer->readpointers_.find(MainBuffer::DEFAULT_ID);
CPPUNIT_ASSERT(iter_readpointer->first == MainBuffer::DEFAULT_ID);
CPPUNIT_ASSERT(iter_readpointer->second == 0);
iter_readpointer = ringbuffer->readpointer_.find(test_id2);
iter_readpointer = ringbuffer->readpointers_.find(test_id2);
CPPUNIT_ASSERT(iter_readpointer->first == test_id2);
CPPUNIT_ASSERT(iter_readpointer->second == 0);
ringbuffer = mainbuffer_->getRingBuffer(test_id2);
CPPUNIT_ASSERT(ringbuffer != NULL);
CPPUNIT_ASSERT(ringbuffer->getNbReadPointer() == 2);
iter_readpointer = ringbuffer->readpointer_.find(MainBuffer::DEFAULT_ID);
CPPUNIT_ASSERT(not ringbuffer->hasNoReadPointers());
iter_readpointer = ringbuffer->readpointers_.find(MainBuffer::DEFAULT_ID);
CPPUNIT_ASSERT(iter_readpointer->first == MainBuffer::DEFAULT_ID);
CPPUNIT_ASSERT(iter_readpointer->second == 0);
iter_readpointer = ringbuffer->readpointer_.find(test_id1);
iter_readpointer = ringbuffer->readpointers_.find(test_id1);
CPPUNIT_ASSERT(iter_readpointer->first == test_id1);
CPPUNIT_ASSERT(iter_readpointer->second == 0);
@ -675,25 +675,25 @@ void MainBufferTest::testBindUnbindBuffer()
ringbuffer = mainbuffer_->getRingBuffer(MainBuffer::DEFAULT_ID);
CPPUNIT_ASSERT(ringbuffer != NULL);
CPPUNIT_ASSERT(ringbuffer->getNbReadPointer() == 2);
iter_readpointer = ringbuffer->readpointer_.find(test_id1);
CPPUNIT_ASSERT(not ringbuffer->hasNoReadPointers());
iter_readpointer = ringbuffer->readpointers_.find(test_id1);
CPPUNIT_ASSERT(iter_readpointer->first == test_id1);
CPPUNIT_ASSERT(iter_readpointer->second == 0);
iter_readpointer = ringbuffer->readpointer_.find(test_id2);
iter_readpointer = ringbuffer->readpointers_.find(test_id2);
CPPUNIT_ASSERT(iter_readpointer->first == test_id2);
CPPUNIT_ASSERT(iter_readpointer->second == 0);
ringbuffer = mainbuffer_->getRingBuffer(test_id1);
CPPUNIT_ASSERT(ringbuffer != NULL);
CPPUNIT_ASSERT(ringbuffer->getNbReadPointer() == 1);
iter_readpointer = ringbuffer->readpointer_.find(MainBuffer::DEFAULT_ID);
CPPUNIT_ASSERT(not ringbuffer->hasNoReadPointers());
iter_readpointer = ringbuffer->readpointers_.find(MainBuffer::DEFAULT_ID);
CPPUNIT_ASSERT(iter_readpointer->first == MainBuffer::DEFAULT_ID);
CPPUNIT_ASSERT(iter_readpointer->second == 0);
ringbuffer = mainbuffer_->getRingBuffer(test_id2);
CPPUNIT_ASSERT(ringbuffer != NULL);
CPPUNIT_ASSERT(ringbuffer->getNbReadPointer() == 1);
iter_readpointer = ringbuffer->readpointer_.find(MainBuffer::DEFAULT_ID);
CPPUNIT_ASSERT(not ringbuffer->hasNoReadPointers());
iter_readpointer = ringbuffer->readpointers_.find(MainBuffer::DEFAULT_ID);
CPPUNIT_ASSERT(iter_readpointer->first == MainBuffer::DEFAULT_ID);
CPPUNIT_ASSERT(iter_readpointer->second == 0);
@ -736,21 +736,21 @@ void MainBufferTest::testBindUnbindBuffer()
ringbuffer = mainbuffer_->getRingBuffer(MainBuffer::DEFAULT_ID);
CPPUNIT_ASSERT(ringbuffer != NULL);
CPPUNIT_ASSERT(ringbuffer->getNbReadPointer() == 1);
iter_readpointer = ringbuffer->readpointer_.find(test_id1);
CPPUNIT_ASSERT(not ringbuffer->hasNoReadPointers());
iter_readpointer = ringbuffer->readpointers_.find(test_id1);
CPPUNIT_ASSERT(iter_readpointer->first == test_id1);
CPPUNIT_ASSERT(iter_readpointer->second == 0);
iter_readpointer = ringbuffer->readpointer_.find(test_id2);
CPPUNIT_ASSERT(iter_readpointer == ringbuffer->readpointer_.end());
iter_readpointer = ringbuffer->readpointers_.find(test_id2);
CPPUNIT_ASSERT(iter_readpointer == ringbuffer->readpointers_.end());
ringbuffer = mainbuffer_->getRingBuffer(test_id1);
CPPUNIT_ASSERT(ringbuffer != NULL);
CPPUNIT_ASSERT(ringbuffer->getNbReadPointer() == 1);
iter_readpointer = ringbuffer->readpointer_.find(MainBuffer::DEFAULT_ID);
CPPUNIT_ASSERT(not ringbuffer->hasNoReadPointers());
iter_readpointer = ringbuffer->readpointers_.find(MainBuffer::DEFAULT_ID);
CPPUNIT_ASSERT(iter_readpointer->first == MainBuffer::DEFAULT_ID);
CPPUNIT_ASSERT(iter_readpointer->second == 0);
iter_readpointer = ringbuffer->readpointer_.find(test_id2);
CPPUNIT_ASSERT(iter_readpointer == ringbuffer->readpointer_.end());
iter_readpointer = ringbuffer->readpointers_.find(test_id2);
CPPUNIT_ASSERT(iter_readpointer == ringbuffer->readpointers_.end());
CPPUNIT_ASSERT(mainbuffer_->getRingBuffer(test_id2) == NULL);
@ -799,21 +799,21 @@ void MainBufferTest::testBindUnbindBuffer()
ringbuffer = mainbuffer_->getRingBuffer(MainBuffer::DEFAULT_ID);
CPPUNIT_ASSERT(ringbuffer != NULL);
CPPUNIT_ASSERT(ringbuffer->getNbReadPointer() == 1);
iter_readpointer = ringbuffer->readpointer_.find(test_id1);
CPPUNIT_ASSERT(not ringbuffer->hasNoReadPointers());
iter_readpointer = ringbuffer->readpointers_.find(test_id1);
CPPUNIT_ASSERT(iter_readpointer->first == test_id1);
CPPUNIT_ASSERT(iter_readpointer->second == 0);
iter_readpointer = ringbuffer->readpointer_.find(test_id2);
CPPUNIT_ASSERT(iter_readpointer == ringbuffer->readpointer_.end());
iter_readpointer = ringbuffer->readpointers_.find(test_id2);
CPPUNIT_ASSERT(iter_readpointer == ringbuffer->readpointers_.end());
ringbuffer = mainbuffer_->getRingBuffer(test_id1);
CPPUNIT_ASSERT(ringbuffer != NULL);
CPPUNIT_ASSERT(ringbuffer->getNbReadPointer() == 1);
iter_readpointer = ringbuffer->readpointer_.find(MainBuffer::DEFAULT_ID);
CPPUNIT_ASSERT(not ringbuffer->hasNoReadPointers());
iter_readpointer = ringbuffer->readpointers_.find(MainBuffer::DEFAULT_ID);
CPPUNIT_ASSERT(iter_readpointer->first == MainBuffer::DEFAULT_ID);
CPPUNIT_ASSERT(iter_readpointer->second == 0);
iter_readpointer = ringbuffer->readpointer_.find(test_id2);
CPPUNIT_ASSERT(iter_readpointer == ringbuffer->readpointer_.end());
iter_readpointer = ringbuffer->readpointers_.find(test_id2);
CPPUNIT_ASSERT(iter_readpointer == ringbuffer->readpointers_.end());
}
@ -831,22 +831,22 @@ void MainBufferTest::testGetPutDataByID()
int test_output = 0;
// put by MainBuffer::DEFAULT_ID get by test_id without preleminary put
CPPUNIT_ASSERT(mainbuffer_->availForGetByID(MainBuffer::DEFAULT_ID, test_id) == 0);
CPPUNIT_ASSERT(mainbuffer_->availableForGetByID(MainBuffer::DEFAULT_ID, test_id) == 0);
CPPUNIT_ASSERT(mainbuffer_->getDataByID(&test_output, sizeof(int), MainBuffer::DEFAULT_ID, test_id) == 0);
// put by MainBuffer::DEFAULT_ID, get by test_id
mainbuffer_->putData(&test_input1, sizeof(int), MainBuffer::DEFAULT_ID);
CPPUNIT_ASSERT(mainbuffer_->availForGetByID(MainBuffer::DEFAULT_ID, test_id) == sizeof(int));
CPPUNIT_ASSERT(mainbuffer_->availableForGetByID(MainBuffer::DEFAULT_ID, test_id) == sizeof(int));
// get by MainBuffer::DEFAULT_ID without preliminary input
CPPUNIT_ASSERT(mainbuffer_->availForGetByID(test_id, MainBuffer::DEFAULT_ID) == 0);
CPPUNIT_ASSERT(mainbuffer_->availableForGetByID(test_id, MainBuffer::DEFAULT_ID) == 0);
CPPUNIT_ASSERT(mainbuffer_->getDataByID(&test_output, 100, test_id, MainBuffer::DEFAULT_ID) == 0);
// pu by test_id get by test_id
mainbuffer_->putData(&test_input2, sizeof(int), test_id);
CPPUNIT_ASSERT(mainbuffer_->availForGetByID(test_id, MainBuffer::DEFAULT_ID) == sizeof(int));
CPPUNIT_ASSERT(mainbuffer_->availableForGetByID(test_id, MainBuffer::DEFAULT_ID) == sizeof(int));
CPPUNIT_ASSERT(mainbuffer_->getDataByID(&test_output, 100, test_id, MainBuffer::DEFAULT_ID) == sizeof(int));
CPPUNIT_ASSERT(mainbuffer_->availForGetByID(test_id, MainBuffer::DEFAULT_ID) == 0);
CPPUNIT_ASSERT(mainbuffer_->availableForGetByID(test_id, MainBuffer::DEFAULT_ID) == 0);
CPPUNIT_ASSERT(test_input2 == test_output);
// put/get by false id
@ -872,25 +872,25 @@ void MainBufferTest::testGetPutData()
int test_output;
// get by test_id without preleminary put
CPPUNIT_ASSERT(mainbuffer_->availForGet(test_id) == 0);
CPPUNIT_ASSERT(mainbuffer_->availableForGet(test_id) == 0);
CPPUNIT_ASSERT(mainbuffer_->getData(&test_output, 100, test_id) == 0);
// put by MainBuffer::DEFAULT_ID, get by test_id
mainbuffer_->putData(&test_input1, sizeof(int), MainBuffer::DEFAULT_ID);
CPPUNIT_ASSERT(mainbuffer_->availForGet(test_id) == sizeof(int));
CPPUNIT_ASSERT(mainbuffer_->availableForGet(test_id) == sizeof(int));
CPPUNIT_ASSERT(mainbuffer_->getData(&test_output, 100, test_id) == sizeof(int));
CPPUNIT_ASSERT(mainbuffer_->availForGet(test_id) == 0);
CPPUNIT_ASSERT(mainbuffer_->availableForGet(test_id) == 0);
CPPUNIT_ASSERT(test_input1 == test_output);
// get by MainBuffer::DEFAULT_ID without preleminary put
CPPUNIT_ASSERT(mainbuffer_->availForGet(MainBuffer::DEFAULT_ID) == 0);
CPPUNIT_ASSERT(mainbuffer_->availableForGet(MainBuffer::DEFAULT_ID) == 0);
CPPUNIT_ASSERT(mainbuffer_->getData(&test_output, sizeof(int), MainBuffer::DEFAULT_ID) == 0);
// put by test_id, get by MainBuffer::DEFAULT_ID
mainbuffer_->putData(&test_input2, sizeof(int), test_id);
CPPUNIT_ASSERT(mainbuffer_->availForGet(MainBuffer::DEFAULT_ID) == sizeof(int));
CPPUNIT_ASSERT(mainbuffer_->availableForGet(MainBuffer::DEFAULT_ID) == sizeof(int));
CPPUNIT_ASSERT(mainbuffer_->getData(&test_output, 100, MainBuffer::DEFAULT_ID) == sizeof(int));
CPPUNIT_ASSERT(mainbuffer_->availForGet(MainBuffer::DEFAULT_ID) == 0);
CPPUNIT_ASSERT(mainbuffer_->availableForGet(MainBuffer::DEFAULT_ID) == 0);
CPPUNIT_ASSERT(test_input2 == test_output);
mainbuffer_->unBindCallID(test_id, MainBuffer::DEFAULT_ID);
@ -910,13 +910,13 @@ void MainBufferTest::testDiscardFlush()
// int init_size;
mainbuffer_->putData(&test_input1, sizeof(int), test_id);
CPPUNIT_ASSERT(mainbuffer_->availForGet(MainBuffer::DEFAULT_ID) == sizeof(int));
CPPUNIT_ASSERT(mainbuffer_->availableForGet(MainBuffer::DEFAULT_ID) == sizeof(int));
mainbuffer_->discard(sizeof(int), MainBuffer::DEFAULT_ID);
CPPUNIT_ASSERT(mainbuffer_->availForGet(MainBuffer::DEFAULT_ID) == 0);
CPPUNIT_ASSERT(mainbuffer_->availableForGet(MainBuffer::DEFAULT_ID) == 0);
CPPUNIT_ASSERT(mainbuffer_->availForGet(test_id) == 0);
CPPUNIT_ASSERT(mainbuffer_->availableForGet(test_id) == 0);
mainbuffer_->discard(sizeof(int), test_id);
CPPUNIT_ASSERT(mainbuffer_->availForGet(test_id) == 0);
CPPUNIT_ASSERT(mainbuffer_->availableForGet(test_id) == 0);
CPPUNIT_ASSERT(mainbuffer_->getRingBuffer(test_id)->getReadPointer(MainBuffer::DEFAULT_ID) == sizeof(int));
CPPUNIT_ASSERT(mainbuffer_->getRingBuffer(test_id)->getReadPointer(test_id) == 0);
@ -980,59 +980,59 @@ void MainBufferTest::testRingBufferSeveralPointers()
int testoutput;
test_ring_buffer->Put(&testint1, sizeof(int));
CPPUNIT_ASSERT(test_ring_buffer->putLen() == sizeof(int));
CPPUNIT_ASSERT(test_ring_buffer->getLen(test_pointer1) == sizeof(int));
CPPUNIT_ASSERT(test_ring_buffer->getLen(test_pointer2) == sizeof(int));
CPPUNIT_ASSERT(test_ring_buffer->AvailForGet(test_pointer1) == sizeof(int));
CPPUNIT_ASSERT(test_ring_buffer->AvailForGet(test_pointer2) == sizeof(int));
test_ring_buffer->put(&testint1, sizeof(int));
CPPUNIT_ASSERT(test_ring_buffer->putLength() == sizeof(int));
CPPUNIT_ASSERT(test_ring_buffer->getLength(test_pointer1) == sizeof(int));
CPPUNIT_ASSERT(test_ring_buffer->getLength(test_pointer2) == sizeof(int));
CPPUNIT_ASSERT(test_ring_buffer->availableForGet(test_pointer1) == sizeof(int));
CPPUNIT_ASSERT(test_ring_buffer->availableForGet(test_pointer2) == sizeof(int));
test_ring_buffer->Put(&testint2, sizeof(int));
CPPUNIT_ASSERT(test_ring_buffer->putLen() == 2*sizeof(int));
CPPUNIT_ASSERT(test_ring_buffer->getLen(test_pointer1) == 2*sizeof(int));
CPPUNIT_ASSERT(test_ring_buffer->getLen(test_pointer2) == 2*sizeof(int));
CPPUNIT_ASSERT(test_ring_buffer->AvailForGet(test_pointer1) == 2*sizeof(int));
CPPUNIT_ASSERT(test_ring_buffer->AvailForGet(test_pointer2) == 2*sizeof(int));
test_ring_buffer->put(&testint2, sizeof(int));
CPPUNIT_ASSERT(test_ring_buffer->putLength() == 2*sizeof(int));
CPPUNIT_ASSERT(test_ring_buffer->getLength(test_pointer1) == 2*sizeof(int));
CPPUNIT_ASSERT(test_ring_buffer->getLength(test_pointer2) == 2*sizeof(int));
CPPUNIT_ASSERT(test_ring_buffer->availableForGet(test_pointer1) == 2*sizeof(int));
CPPUNIT_ASSERT(test_ring_buffer->availableForGet(test_pointer2) == 2*sizeof(int));
test_ring_buffer->Put(&testint3, sizeof(int));
CPPUNIT_ASSERT(test_ring_buffer->putLen() == 3*sizeof(int));
CPPUNIT_ASSERT(test_ring_buffer->getLen(test_pointer1) == 3*sizeof(int));
CPPUNIT_ASSERT(test_ring_buffer->getLen(test_pointer2) == 3*sizeof(int));
CPPUNIT_ASSERT(test_ring_buffer->AvailForGet(test_pointer1) == 3*sizeof(int));
CPPUNIT_ASSERT(test_ring_buffer->AvailForGet(test_pointer2) == 3*sizeof(int));
test_ring_buffer->put(&testint3, sizeof(int));
CPPUNIT_ASSERT(test_ring_buffer->putLength() == 3*sizeof(int));
CPPUNIT_ASSERT(test_ring_buffer->getLength(test_pointer1) == 3*sizeof(int));
CPPUNIT_ASSERT(test_ring_buffer->getLength(test_pointer2) == 3*sizeof(int));
CPPUNIT_ASSERT(test_ring_buffer->availableForGet(test_pointer1) == 3*sizeof(int));
CPPUNIT_ASSERT(test_ring_buffer->availableForGet(test_pointer2) == 3*sizeof(int));
test_ring_buffer->Put(&testint4, sizeof(int));
CPPUNIT_ASSERT(test_ring_buffer->putLen() == 4*sizeof(int));
CPPUNIT_ASSERT(test_ring_buffer->getLen(test_pointer1) == 4*sizeof(int));
CPPUNIT_ASSERT(test_ring_buffer->getLen(test_pointer2) == 4*sizeof(int));
CPPUNIT_ASSERT(test_ring_buffer->AvailForGet(test_pointer1) == 4*sizeof(int));
CPPUNIT_ASSERT(test_ring_buffer->AvailForGet(test_pointer2) == 4*sizeof(int));
test_ring_buffer->put(&testint4, sizeof(int));
CPPUNIT_ASSERT(test_ring_buffer->putLength() == 4*sizeof(int));
CPPUNIT_ASSERT(test_ring_buffer->getLength(test_pointer1) == 4*sizeof(int));
CPPUNIT_ASSERT(test_ring_buffer->getLength(test_pointer2) == 4*sizeof(int));
CPPUNIT_ASSERT(test_ring_buffer->availableForGet(test_pointer1) == 4*sizeof(int));
CPPUNIT_ASSERT(test_ring_buffer->availableForGet(test_pointer2) == 4*sizeof(int));
CPPUNIT_ASSERT(test_ring_buffer->Get(&testoutput, sizeof(int), test_pointer1) == sizeof(int));
CPPUNIT_ASSERT(test_ring_buffer->get(&testoutput, sizeof(int), test_pointer1) == sizeof(int));
CPPUNIT_ASSERT(testoutput == testint1);
CPPUNIT_ASSERT(test_ring_buffer->AvailForGet(test_pointer1) == 3*sizeof(int));
CPPUNIT_ASSERT(test_ring_buffer->AvailForGet(test_pointer2) == 4*sizeof(int));
CPPUNIT_ASSERT(test_ring_buffer->availableForGet(test_pointer1) == 3*sizeof(int));
CPPUNIT_ASSERT(test_ring_buffer->availableForGet(test_pointer2) == 4*sizeof(int));
CPPUNIT_ASSERT(test_ring_buffer->Get(&testoutput, sizeof(int), test_pointer2) == sizeof(int));
CPPUNIT_ASSERT(test_ring_buffer->get(&testoutput, sizeof(int), test_pointer2) == sizeof(int));
CPPUNIT_ASSERT(testoutput == testint1);
CPPUNIT_ASSERT(test_ring_buffer->AvailForGet(test_pointer1) == 3*sizeof(int));
CPPUNIT_ASSERT(test_ring_buffer->AvailForGet(test_pointer2) == 3*sizeof(int));
CPPUNIT_ASSERT(test_ring_buffer->availableForGet(test_pointer1) == 3*sizeof(int));
CPPUNIT_ASSERT(test_ring_buffer->availableForGet(test_pointer2) == 3*sizeof(int));
// However, we should no be alowed to read in our own ring buffer
// if we are either an AudioLayer or and RTP session
CPPUNIT_ASSERT(test_ring_buffer->AvailForGet(MainBuffer::DEFAULT_ID) == 4*sizeof(int));
CPPUNIT_ASSERT(test_ring_buffer->availableForGet(MainBuffer::DEFAULT_ID) == 4*sizeof(int));
// However, we should no be alowed to read in our own ring buffer
// if we are either an AudioLayer or and RTP session
CPPUNIT_ASSERT(test_ring_buffer->AvailForGet(MainBuffer::DEFAULT_ID) == 4*sizeof(int));
CPPUNIT_ASSERT(test_ring_buffer->availableForGet(MainBuffer::DEFAULT_ID) == 4*sizeof(int));
// However, we should no be alowed to read in our own ring buffer
// if we are either an AudioLayer or and RTP session
CPPUNIT_ASSERT(test_ring_buffer->AvailForGet(MainBuffer::DEFAULT_ID) == 4*sizeof(int));
CPPUNIT_ASSERT(test_ring_buffer->availableForGet(MainBuffer::DEFAULT_ID) == 4*sizeof(int));
CPPUNIT_ASSERT(test_ring_buffer->Discard(sizeof(int), test_pointer1) == sizeof(int));
CPPUNIT_ASSERT(test_ring_buffer->Discard(sizeof(int), test_pointer2) == sizeof(int));
CPPUNIT_ASSERT(test_ring_buffer->discard(sizeof(int), test_pointer1) == sizeof(int));
CPPUNIT_ASSERT(test_ring_buffer->discard(sizeof(int), test_pointer2) == sizeof(int));
test_ring_buffer->removeReadPointer(test_pointer1);
test_ring_buffer->removeReadPointer(test_pointer2);
@ -1071,13 +1071,13 @@ void MainBufferTest::testConference()
// ringbuffers
CPPUNIT_ASSERT(mainbuffer_->ringBufferMap_.size() == 2);
test_ring_buffer = mainbuffer_->getRingBuffer(MainBuffer::DEFAULT_ID);
CPPUNIT_ASSERT(test_ring_buffer->getNbReadPointer() == 1);
iter_readpointer = test_ring_buffer->readpointer_.find(test_id1);
CPPUNIT_ASSERT(not test_ring_buffer->hasNoReadPointers());
iter_readpointer = test_ring_buffer->readpointers_.find(test_id1);
CPPUNIT_ASSERT(iter_readpointer->first == test_id1);
CPPUNIT_ASSERT(iter_readpointer->second == 0);
test_ring_buffer = mainbuffer_->getRingBuffer(test_id1);
CPPUNIT_ASSERT(test_ring_buffer->getNbReadPointer() == 1);
iter_readpointer = test_ring_buffer->readpointer_.find(MainBuffer::DEFAULT_ID);
CPPUNIT_ASSERT(not test_ring_buffer->hasNoReadPointers());
iter_readpointer = test_ring_buffer->readpointers_.find(MainBuffer::DEFAULT_ID);
CPPUNIT_ASSERT(iter_readpointer->first == MainBuffer::DEFAULT_ID);
CPPUNIT_ASSERT(iter_readpointer->second == 0);
// callidmap
@ -1098,21 +1098,21 @@ void MainBufferTest::testConference()
// ringbuffers
CPPUNIT_ASSERT(mainbuffer_->ringBufferMap_.size() == 3);
test_ring_buffer = mainbuffer_->getRingBuffer(MainBuffer::DEFAULT_ID);
CPPUNIT_ASSERT(test_ring_buffer->getNbReadPointer() == 2);
iter_readpointer = test_ring_buffer->readpointer_.find(test_id1);
CPPUNIT_ASSERT(not test_ring_buffer->hasNoReadPointers());
iter_readpointer = test_ring_buffer->readpointers_.find(test_id1);
CPPUNIT_ASSERT(iter_readpointer->first == test_id1);
CPPUNIT_ASSERT(iter_readpointer->second == 0);
iter_readpointer = test_ring_buffer->readpointer_.find(test_id2);
iter_readpointer = test_ring_buffer->readpointers_.find(test_id2);
CPPUNIT_ASSERT(iter_readpointer->first == test_id2);
CPPUNIT_ASSERT(iter_readpointer->second == 0);
test_ring_buffer = mainbuffer_->getRingBuffer(test_id1);
CPPUNIT_ASSERT(test_ring_buffer->getNbReadPointer() == 1);
iter_readpointer = test_ring_buffer->readpointer_.find(MainBuffer::DEFAULT_ID);
CPPUNIT_ASSERT(not test_ring_buffer->hasNoReadPointers());
iter_readpointer = test_ring_buffer->readpointers_.find(MainBuffer::DEFAULT_ID);
CPPUNIT_ASSERT(iter_readpointer->first == MainBuffer::DEFAULT_ID);
CPPUNIT_ASSERT(iter_readpointer->second == 0);
test_ring_buffer = mainbuffer_->getRingBuffer(test_id2);
CPPUNIT_ASSERT(test_ring_buffer->getNbReadPointer() == 1);
iter_readpointer = test_ring_buffer->readpointer_.find(MainBuffer::DEFAULT_ID);
CPPUNIT_ASSERT(not test_ring_buffer->hasNoReadPointers());
iter_readpointer = test_ring_buffer->readpointers_.find(MainBuffer::DEFAULT_ID);
CPPUNIT_ASSERT(iter_readpointer->first == MainBuffer::DEFAULT_ID);
CPPUNIT_ASSERT(iter_readpointer->second == 0);
// callidmap
@ -1141,27 +1141,27 @@ void MainBufferTest::testConference()
// ringbuffers
CPPUNIT_ASSERT(mainbuffer_->ringBufferMap_.size() == 3);
test_ring_buffer = mainbuffer_->getRingBuffer(MainBuffer::DEFAULT_ID);
CPPUNIT_ASSERT(test_ring_buffer->getNbReadPointer() == 2);
iter_readpointer = test_ring_buffer->readpointer_.find(test_id1);
CPPUNIT_ASSERT(not test_ring_buffer->hasNoReadPointers());
iter_readpointer = test_ring_buffer->readpointers_.find(test_id1);
CPPUNIT_ASSERT(iter_readpointer->first == test_id1);
CPPUNIT_ASSERT(iter_readpointer->second == 0);
iter_readpointer = test_ring_buffer->readpointer_.find(test_id2);
iter_readpointer = test_ring_buffer->readpointers_.find(test_id2);
CPPUNIT_ASSERT(iter_readpointer->first == test_id2);
CPPUNIT_ASSERT(iter_readpointer->second == 0);
test_ring_buffer = mainbuffer_->getRingBuffer(test_id1);
CPPUNIT_ASSERT(test_ring_buffer->getNbReadPointer() == 2);
iter_readpointer = test_ring_buffer->readpointer_.find(MainBuffer::DEFAULT_ID);
CPPUNIT_ASSERT(not test_ring_buffer->hasNoReadPointers());
iter_readpointer = test_ring_buffer->readpointers_.find(MainBuffer::DEFAULT_ID);
CPPUNIT_ASSERT(iter_readpointer->first == MainBuffer::DEFAULT_ID);
CPPUNIT_ASSERT(iter_readpointer->second == 0);
iter_readpointer = test_ring_buffer->readpointer_.find(test_id2);
iter_readpointer = test_ring_buffer->readpointers_.find(test_id2);
CPPUNIT_ASSERT(iter_readpointer->first == test_id2);
CPPUNIT_ASSERT(iter_readpointer->second == 0);
test_ring_buffer = mainbuffer_->getRingBuffer(test_id2);
CPPUNIT_ASSERT(test_ring_buffer->getNbReadPointer() == 2);
iter_readpointer = test_ring_buffer->readpointer_.find(MainBuffer::DEFAULT_ID);
CPPUNIT_ASSERT(not test_ring_buffer->hasNoReadPointers());
iter_readpointer = test_ring_buffer->readpointers_.find(MainBuffer::DEFAULT_ID);
CPPUNIT_ASSERT(iter_readpointer->first == MainBuffer::DEFAULT_ID);
CPPUNIT_ASSERT(iter_readpointer->second == 0);
iter_readpointer = test_ring_buffer->readpointer_.find(test_id1);
iter_readpointer = test_ring_buffer->readpointers_.find(test_id1);
CPPUNIT_ASSERT(iter_readpointer->first == test_id1);
CPPUNIT_ASSERT(iter_readpointer->second == 0);
// callidmap
@ -1192,69 +1192,69 @@ void MainBufferTest::testConference()
// test putData default
int testint = 12;
CPPUNIT_ASSERT(mainbuffer_->availForGet(MainBuffer::DEFAULT_ID) == 0);
CPPUNIT_ASSERT(mainbuffer_->availForGet(test_id1) == 0);
CPPUNIT_ASSERT(mainbuffer_->availForGet(test_id2) == 0);
CPPUNIT_ASSERT(mainbuffer_->availableForGet(MainBuffer::DEFAULT_ID) == 0);
CPPUNIT_ASSERT(mainbuffer_->availableForGet(test_id1) == 0);
CPPUNIT_ASSERT(mainbuffer_->availableForGet(test_id2) == 0);
// put data test ring buffers
mainbuffer_->putData(&testint, sizeof(int), MainBuffer::DEFAULT_ID);
test_ring_buffer = mainbuffer_->getRingBuffer(MainBuffer::DEFAULT_ID);
CPPUNIT_ASSERT(test_ring_buffer->putLen() == sizeof(int));
CPPUNIT_ASSERT(test_ring_buffer->AvailForGet(test_id1) == sizeof(int));
CPPUNIT_ASSERT(test_ring_buffer->AvailForGet(test_id2) == sizeof(int));
CPPUNIT_ASSERT(test_ring_buffer->putLength() == sizeof(int));
CPPUNIT_ASSERT(test_ring_buffer->availableForGet(test_id1) == sizeof(int));
CPPUNIT_ASSERT(test_ring_buffer->availableForGet(test_id2) == sizeof(int));
test_ring_buffer = mainbuffer_->getRingBuffer(test_id1);
CPPUNIT_ASSERT(test_ring_buffer->putLen() == 0);
CPPUNIT_ASSERT(test_ring_buffer->AvailForGet(MainBuffer::DEFAULT_ID) == 0);
CPPUNIT_ASSERT(test_ring_buffer->AvailForGet(test_id2) == 0);
CPPUNIT_ASSERT(test_ring_buffer->putLength() == 0);
CPPUNIT_ASSERT(test_ring_buffer->availableForGet(MainBuffer::DEFAULT_ID) == 0);
CPPUNIT_ASSERT(test_ring_buffer->availableForGet(test_id2) == 0);
test_ring_buffer = mainbuffer_->getRingBuffer(test_id2);
CPPUNIT_ASSERT(test_ring_buffer->putLen() == 0);
CPPUNIT_ASSERT(test_ring_buffer->AvailForGet(MainBuffer::DEFAULT_ID) == 0);
CPPUNIT_ASSERT(test_ring_buffer->AvailForGet(test_id1) == 0);
CPPUNIT_ASSERT(test_ring_buffer->putLength() == 0);
CPPUNIT_ASSERT(test_ring_buffer->availableForGet(MainBuffer::DEFAULT_ID) == 0);
CPPUNIT_ASSERT(test_ring_buffer->availableForGet(test_id1) == 0);
// test mainbuffer availforget (get data even if some participant missing)
CPPUNIT_ASSERT(mainbuffer_->availForGet(MainBuffer::DEFAULT_ID) == 0);
CPPUNIT_ASSERT(mainbuffer_->availForGet(test_id1) == sizeof(int));
CPPUNIT_ASSERT(mainbuffer_->availForGet(test_id2) == sizeof(int));
CPPUNIT_ASSERT(mainbuffer_->availableForGet(MainBuffer::DEFAULT_ID) == 0);
CPPUNIT_ASSERT(mainbuffer_->availableForGet(test_id1) == sizeof(int));
CPPUNIT_ASSERT(mainbuffer_->availableForGet(test_id2) == sizeof(int));
//putdata test ring buffers
mainbuffer_->putData(&testint, 100, test_id1);
test_ring_buffer = mainbuffer_->getRingBuffer(MainBuffer::DEFAULT_ID);
CPPUNIT_ASSERT(test_ring_buffer->putLen() == sizeof(int));
CPPUNIT_ASSERT(test_ring_buffer->AvailForGet(test_id1) == sizeof(int));
CPPUNIT_ASSERT(test_ring_buffer->AvailForGet(test_id2) == sizeof(int));
CPPUNIT_ASSERT(test_ring_buffer->putLength() == sizeof(int));
CPPUNIT_ASSERT(test_ring_buffer->availableForGet(test_id1) == sizeof(int));
CPPUNIT_ASSERT(test_ring_buffer->availableForGet(test_id2) == sizeof(int));
test_ring_buffer = mainbuffer_->getRingBuffer(test_id1);
test_ring_buffer = mainbuffer_->getRingBuffer(test_id2);
CPPUNIT_ASSERT(test_ring_buffer->putLen() == 0);
CPPUNIT_ASSERT(test_ring_buffer->AvailForGet(MainBuffer::DEFAULT_ID) == 0);
CPPUNIT_ASSERT(test_ring_buffer->AvailForGet(test_id1) == 0);
CPPUNIT_ASSERT(test_ring_buffer->putLength() == 0);
CPPUNIT_ASSERT(test_ring_buffer->availableForGet(MainBuffer::DEFAULT_ID) == 0);
CPPUNIT_ASSERT(test_ring_buffer->availableForGet(test_id1) == 0);
mainbuffer_->putData(&testint, 100, test_id2);
test_ring_buffer = mainbuffer_->getRingBuffer(MainBuffer::DEFAULT_ID);
CPPUNIT_ASSERT(test_ring_buffer->putLen() == sizeof(int));
CPPUNIT_ASSERT(test_ring_buffer->AvailForGet(test_id1) == sizeof(int));
CPPUNIT_ASSERT(test_ring_buffer->AvailForGet(test_id2) == sizeof(int));
CPPUNIT_ASSERT(test_ring_buffer->putLength() == sizeof(int));
CPPUNIT_ASSERT(test_ring_buffer->availableForGet(test_id1) == sizeof(int));
CPPUNIT_ASSERT(test_ring_buffer->availableForGet(test_id2) == sizeof(int));
test_ring_buffer = mainbuffer_->getRingBuffer(test_id1);
test_ring_buffer = mainbuffer_->getRingBuffer(test_id2);
// test mainbuffer availforget
CPPUNIT_ASSERT(mainbuffer_->availForGet(test_id1) == sizeof(int));
CPPUNIT_ASSERT(mainbuffer_->availForGet(test_id2) == sizeof(int));
CPPUNIT_ASSERT(mainbuffer_->availableForGet(test_id1) == sizeof(int));
CPPUNIT_ASSERT(mainbuffer_->availableForGet(test_id2) == sizeof(int));
// test getData default id (audio layer)
test_ring_buffer = mainbuffer_->getRingBuffer(MainBuffer::DEFAULT_ID);
CPPUNIT_ASSERT(test_ring_buffer->putLen() == sizeof(int));
CPPUNIT_ASSERT(test_ring_buffer->AvailForGet(test_id1) == sizeof(int));
CPPUNIT_ASSERT(test_ring_buffer->AvailForGet(test_id2) == sizeof(int));
CPPUNIT_ASSERT(test_ring_buffer->putLength() == sizeof(int));
CPPUNIT_ASSERT(test_ring_buffer->availableForGet(test_id1) == sizeof(int));
CPPUNIT_ASSERT(test_ring_buffer->availableForGet(test_id2) == sizeof(int));
test_ring_buffer = mainbuffer_->getRingBuffer(test_id1);
test_ring_buffer = mainbuffer_->getRingBuffer(test_id2);
// test mainbuffer availforget
CPPUNIT_ASSERT(mainbuffer_->availForGet(test_id1) == sizeof(int));
CPPUNIT_ASSERT(mainbuffer_->availForGet(test_id2) == sizeof(int));
CPPUNIT_ASSERT(mainbuffer_->availableForGet(test_id1) == sizeof(int));
CPPUNIT_ASSERT(mainbuffer_->availableForGet(test_id2) == sizeof(int));
// test getData test_id1 (audio layer)
test_ring_buffer = mainbuffer_->getRingBuffer(MainBuffer::DEFAULT_ID);
CPPUNIT_ASSERT(test_ring_buffer->putLen() == sizeof(int));
CPPUNIT_ASSERT(test_ring_buffer->AvailForGet(test_id2) == sizeof(int));
CPPUNIT_ASSERT(test_ring_buffer->putLength() == sizeof(int));
CPPUNIT_ASSERT(test_ring_buffer->availableForGet(test_id2) == sizeof(int));
test_ring_buffer = mainbuffer_->getRingBuffer(test_id1);
test_ring_buffer = mainbuffer_->getRingBuffer(test_id2);
// test mainbuffer availforget
CPPUNIT_ASSERT(mainbuffer_->availForGet(test_id2) == sizeof(int));
CPPUNIT_ASSERT(mainbuffer_->availableForGet(test_id2) == sizeof(int));
// test getData test_id2 (audio layer)
test_ring_buffer = mainbuffer_->getRingBuffer(MainBuffer::DEFAULT_ID);
test_ring_buffer = mainbuffer_->getRingBuffer(test_id1);