Update InputFrameMailbox.cpp
This commit is contained in:
@@ -90,11 +90,22 @@ bool InputFrameMailbox::SubmitFrame(const void* bytes, unsigned rowBytes, uint64
|
|||||||
|
|
||||||
Slot& slot = mSlots[slotIndex];
|
Slot& slot = mSlots[slotIndex];
|
||||||
const std::size_t destinationRowBytes = mConfig.rowBytes;
|
const std::size_t destinationRowBytes = mConfig.rowBytes;
|
||||||
const std::size_t copyRowBytes = (std::min)(static_cast<std::size_t>(rowBytes), destinationRowBytes);
|
const std::size_t sourceRowBytes = static_cast<std::size_t>(rowBytes);
|
||||||
const unsigned char* source = static_cast<const unsigned char*>(bytes);
|
const unsigned char* source = static_cast<const unsigned char*>(bytes);
|
||||||
for (unsigned y = 0; y < mConfig.height; ++y)
|
if (sourceRowBytes == destinationRowBytes)
|
||||||
{
|
{
|
||||||
std::memcpy(slot.bytes.data() + static_cast<std::size_t>(y) * destinationRowBytes, source + static_cast<std::size_t>(y) * rowBytes, copyRowBytes);
|
std::memcpy(slot.bytes.data(), source, destinationRowBytes * static_cast<std::size_t>(mConfig.height));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
const std::size_t copyRowBytes = (std::min)(sourceRowBytes, destinationRowBytes);
|
||||||
|
for (unsigned y = 0; y < mConfig.height; ++y)
|
||||||
|
{
|
||||||
|
std::memcpy(
|
||||||
|
slot.bytes.data() + static_cast<std::size_t>(y) * destinationRowBytes,
|
||||||
|
source + static_cast<std::size_t>(y) * sourceRowBytes,
|
||||||
|
copyRowBytes);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
slot.state = InputFrameSlotState::Ready;
|
slot.state = InputFrameSlotState::Ready;
|
||||||
|
|||||||
Reference in New Issue
Block a user