in source/T31/T31VideoCapturer.c [57:76]
static int getPacket(IMPEncoderStream* pStream, IMPEncoderPack* pPack, uint8_t* pPacketBuf, size_t uPacketSize)
{
if (pStream == NULL || pPack == NULL || pPacketBuf == NULL || uPacketSize == 0 || pPack->length == 0) {
return -EINVAL;
}
/* virAddr is a ringbuffer, and the packet may be cut into 2 pieces. */
uint32_t uRemainingSize = pStream->streamSize - pPack->offset;
if (uRemainingSize < pPack->length) {
/* The packet is cut into 2 pieces. */
memcpy(pPacketBuf, (uint8_t*) (pStream->virAddr + pPack->offset), uRemainingSize);
memcpy(pPacketBuf + uRemainingSize, (uint8_t*) (pStream->virAddr), pPack->length - uRemainingSize);
} else {
/* The packet is a complete one. */
memcpy(pPacketBuf, (uint8_t*) (pStream->virAddr + pPack->offset), pPack->length);
}
return 0;
}