snapcast/common/chunk.cpp
(no author) 6d29618701 x
git-svn-id: svn://elaine/murooma/trunk@173 d8a302eb-03bc-478d-80e4-98257eca68ef
2014-08-10 14:27:36 +00:00

46 lines
678 B
C++

#include "chunk.h"
#include <string.h>
#include <iostream>
Chunk::Chunk(WireChunk* _wireChunk) : idx(0)
{
wireChunk = new WireChunk(*_wireChunk);
}
Chunk::~Chunk()
{
delete wireChunk;
}
bool Chunk::isEndOfChunk()
{
return idx >= WIRE_CHUNK_SIZE;
}
bool Chunk::getNext(int16_t& _result)
{
if (isEndOfChunk())
return false;
_result = wireChunk->payload[idx++];
return true;
}
int Chunk::read(short* _outputBuffer, int _count)
{
int result = _count;
if (idx + _count > WIRE_CHUNK_SIZE)
result = WIRE_CHUNK_SIZE - idx;
if (_outputBuffer != NULL)
memcpy(_outputBuffer, &wireChunk->payload[idx], sizeof(int16_t)*result);
idx += result;
return result;
}