snapcast/stream.h
(no author) ec2fd4d930 mini buffer
git-svn-id: svn://elaine/murooma/trunk@142 d8a302eb-03bc-478d-80e4-98257eca68ef
2014-08-04 20:38:59 +00:00

48 lines
892 B
C++

#ifndef STREAM_H
#define STREAM_H
#include <deque>
#include <mutex>
#include <condition_variable>
#include <vector>
#include "doubleBuffer.h"
#include "chunk.h"
#include "timeUtils.h"
class Stream
{
public:
Stream();
void addChunk(Chunk* chunk);
Chunk* getNextChunk();
time_point_ms getNextPlayerChunk(short* outputBuffer, int correction = 0);
void getSilentPlayerChunk(short* outputBuffer);
void getChunk(short* outputBuffer, double outputBufferDacTime, unsigned long framesPerBuffer);
void setBufferLen(size_t bufferLenMs);
private:
void sleepMs(int ms);
int sleep;
std::deque<Chunk*> chunks;
std::mutex mtx;
std::mutex mutex;
std::unique_lock<std::mutex>* pLock;
std::condition_variable cv;
DoubleBuffer<int>* pMiniBuffer;
DoubleBuffer<int>* pBuffer;
DoubleBuffer<int>* pShortBuffer;
int median;
int shortMedian;
time_t lastUpdate;
int bufferMs;
};
#endif