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];
|
||||
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);
|
||||
if (sourceRowBytes == destinationRowBytes)
|
||||
{
|
||||
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) * rowBytes, copyRowBytes);
|
||||
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;
|
||||
|
||||
Reference in New Issue
Block a user