1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
|
#include "XnLinkUnpackedS2DParser.h"
#include "XnShiftToDepth.h"
#include "XnLinkProtoUtils.h"
#include <XnLog.h>
namespace xn
{
LinkUnpackedS2DParser::LinkUnpackedS2DParser(const XnShiftToDepthTables& shiftToDepthTables) :
m_shiftToDepthTables(shiftToDepthTables)
{
}
LinkUnpackedS2DParser::~LinkUnpackedS2DParser()
{
}
XnStatus LinkUnpackedS2DParser::ParsePacketImpl(XnLinkFragmentation /*fragmentation*/,
const XnUInt8* pSrc,
const XnUInt8* pSrcEnd,
XnUInt8*& pDst,
const XnUInt8* pDstEnd)
{
XN_ASSERT(m_shiftToDepthTables.bIsInitialized);
XnStatus nRetVal = XN_STATUS_OK;
XnSizeT nPacketDataSize = pSrcEnd - pSrc;
if (pDst + nPacketDataSize > pDstEnd)
{
XN_ASSERT(FALSE);
return XN_STATUS_OUTPUT_BUFFER_OVERFLOW;
}
////////////////////////////////////////////
nRetVal = XnShiftToDepthConvert(&m_shiftToDepthTables,
reinterpret_cast<const XnUInt16*>(pSrc),
XnUInt32(nPacketDataSize / 2),
reinterpret_cast<OniDepthPixel*>(pDst));
XN_IS_STATUS_OK(nRetVal);
////////////////////////////////////////////
pDst += nPacketDataSize;
return XN_STATUS_OK;
}
}
|