mirror of
https://github.com/badaix/snapcast.git
synced 2025-06-14 16:51:43 +02:00
buffers
git-svn-id: svn://elaine/murooma/trunk@182 d8a302eb-03bc-478d-80e4-98257eca68ef
This commit is contained in:
parent
d3c79f93f0
commit
3e6a1e5b07
6 changed files with 22 additions and 20 deletions
|
@ -28,14 +28,14 @@ public:
|
||||||
return tmpBuffer[tmpBuffer.size() / 2];
|
return tmpBuffer[tmpBuffer.size() / 2];
|
||||||
}
|
}
|
||||||
|
|
||||||
T mean() const
|
double mean() const
|
||||||
{
|
{
|
||||||
if (buffer.empty())
|
if (buffer.empty())
|
||||||
return 0;
|
return 0;
|
||||||
double mean = 0.;
|
double mean = 0.;
|
||||||
for (size_t n=0; n<buffer.size(); ++n)
|
for (size_t n=0; n<buffer.size(); ++n)
|
||||||
mean += (float)buffer[n] / (float)buffer.size();
|
mean += (float)buffer[n] / (float)buffer.size();
|
||||||
return (T)mean;
|
return mean;
|
||||||
}
|
}
|
||||||
|
|
||||||
T percentil(unsigned int percentil) const
|
T percentil(unsigned int percentil) const
|
||||||
|
|
|
@ -46,9 +46,9 @@ void player()
|
||||||
cout << "connect\n";
|
cout << "connect\n";
|
||||||
tcp::socket s(io_service);
|
tcp::socket s(io_service);
|
||||||
s.connect(*iterator);
|
s.connect(*iterator);
|
||||||
void* wireChunk = (void*)malloc(sizeof(WireChunk));
|
|
||||||
while (true)
|
while (true)
|
||||||
{
|
{
|
||||||
|
void* wireChunk = (void*)malloc(sizeof(WireChunk));
|
||||||
size_t toRead = sizeof(WireChunk);
|
size_t toRead = sizeof(WireChunk);
|
||||||
size_t len = 0;
|
size_t len = 0;
|
||||||
do
|
do
|
||||||
|
|
|
@ -9,7 +9,7 @@ Stream::Stream() : sleep(0), median(0), shortMedian(0), lastUpdate(0), latencyMs
|
||||||
{
|
{
|
||||||
pBuffer = new DoubleBuffer<int>(1000);
|
pBuffer = new DoubleBuffer<int>(1000);
|
||||||
pShortBuffer = new DoubleBuffer<int>(200);
|
pShortBuffer = new DoubleBuffer<int>(200);
|
||||||
pMiniBuffer = new DoubleBuffer<int>(10);
|
pMiniBuffer = new DoubleBuffer<int>(20);
|
||||||
pCardBuffer = new DoubleBuffer<int>(50);
|
pCardBuffer = new DoubleBuffer<int>(50);
|
||||||
bufferMs = 500;
|
bufferMs = 500;
|
||||||
}
|
}
|
||||||
|
@ -175,24 +175,19 @@ void Stream::getPlayerChunk(short* outputBuffer, double outputBufferDacTime, uns
|
||||||
|
|
||||||
if (sleep == 0)
|
if (sleep == 0)
|
||||||
{
|
{
|
||||||
if (pBuffer->full() && (abs(median) <= 10) && (abs(median) > 1))
|
if (pBuffer->full() && (abs(median) > 1))
|
||||||
{
|
{
|
||||||
cout << "pBuffer->full() && (abs(median) <= 10) && (abs(median) > 1): " << abs(median) << "\n";
|
cout << "pBuffer->full() && (abs(median) > 1): " << median << "\n";
|
||||||
sleep = median;
|
sleep = median;
|
||||||
}
|
}
|
||||||
else if (pShortBuffer->full() && (abs(shortMedian) <= 10) && (abs(shortMedian) > 5))
|
else if (pShortBuffer->full() && (abs(shortMedian) > 5))
|
||||||
{
|
{
|
||||||
cout << "pShortBuffer->full() && (abs(shortMedian) <= 10) && (abs(shortMedian) > 5): " << abs(shortMedian) << "\n";
|
cout << "pShortBuffer->full() && (abs(shortMedian) > 5): " << shortMedian << "\n";
|
||||||
sleep = shortMedian;
|
sleep = shortMedian;
|
||||||
}
|
}
|
||||||
if (pShortBuffer->full() && (abs(shortMedian) > 10))
|
else if (pMiniBuffer->full() && (abs(pMiniBuffer->median()) > 50))
|
||||||
{
|
{
|
||||||
cout << "pShortBuffer->full() && (abs(shortMedian) > 10): " << abs(shortMedian) << "\n";
|
cout << "pMiniBuffer->full() && (abs(pMiniBuffer->mean()) > 50): " << pMiniBuffer->median() << "\n";
|
||||||
sleep = shortMedian;
|
|
||||||
}
|
|
||||||
else if (pMiniBuffer->full() && (abs(age) > 50) && (abs(pMiniBuffer->mean()) > 50))
|
|
||||||
{
|
|
||||||
cout << "pMiniBuffer->full() && (abs(age) > 50) && (abs(pMiniBuffer->mean()) > 50): " << abs(age) << "\n";
|
|
||||||
sleep = pMiniBuffer->mean();
|
sleep = pMiniBuffer->mean();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -212,8 +207,8 @@ void Stream::getPlayerChunk(short* outputBuffer, double outputBufferDacTime, uns
|
||||||
{
|
{
|
||||||
lastUpdate = now;
|
lastUpdate = now;
|
||||||
median = pBuffer->median();
|
median = pBuffer->median();
|
||||||
shortMedian = pShortBuffer->mean();
|
shortMedian = pShortBuffer->median();
|
||||||
std::cerr << "Chunk: " << age << "\t" << pMiniBuffer->mean() << "\t" << shortMedian << "\t" << median << /*"\tmean: " << pBuffer->mean() <<*/ "\t" << pBuffer->size() << "\t" << cardBuffer << "\t" << outputBufferDacTime*1000 << "\n";
|
std::cerr << "Chunk: " << age << "\t" << pMiniBuffer->median() << "\t" << shortMedian << "\t" << median << "\t" << pBuffer->size() << "\t" << cardBuffer << "\t" << outputBufferDacTime*1000 << "\n";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -29,7 +29,7 @@ private:
|
||||||
void resetBuffers();
|
void resetBuffers();
|
||||||
|
|
||||||
long lastTick;
|
long lastTick;
|
||||||
float sleep;
|
int sleep;
|
||||||
|
|
||||||
// int correction;
|
// int correction;
|
||||||
Queue<std::shared_ptr<Chunk>> chunks;
|
Queue<std::shared_ptr<Chunk>> chunks;
|
||||||
|
|
|
@ -3,9 +3,8 @@
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
|
|
||||||
|
|
||||||
Chunk::Chunk(WireChunk* _wireChunk) : idx(0)
|
Chunk::Chunk(WireChunk* _wireChunk) : idx(0), wireChunk(_wireChunk)
|
||||||
{
|
{
|
||||||
wireChunk = new WireChunk(*_wireChunk);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -72,6 +72,14 @@ static long getTickCount()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static long getuTickCount()
|
||||||
|
{
|
||||||
|
struct timespec now;
|
||||||
|
clock_gettime(CLOCK_MONOTONIC, &now);
|
||||||
|
return now.tv_sec*1000000 + now.tv_nsec / 1000;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue