[host] correct YUV output, do not copy padding bytes

This commit is contained in:
Geoffrey McRae 2018-07-28 07:48:10 +10:00
parent b899a65726
commit d292d46fcb
2 changed files with 11 additions and 6 deletions

View File

@ -594,7 +594,7 @@ GrabStatus Capture::DXGI::GrabFrameYUV420(struct FrameInfo & frame, struct Curso
return GRAB_STATUS_ERROR;
}
const unsigned int size = desc.Height * mapping.RowPitch;
const unsigned int size = desc.Height * desc.Width;
if (size > remain)
{
m_deviceContext->Unmap(m_texture[i], 0);
@ -602,10 +602,15 @@ GrabStatus Capture::DXGI::GrabFrameYUV420(struct FrameInfo & frame, struct Curso
return GRAB_STATUS_ERROR;
}
memcpySSE(data, mapping.pData, size);
data += size;
remain -= size;
const uint8_t * src = (uint8_t *)mapping.pData;
for(unsigned int y = 0; y < desc.Height; ++y)
{
memcpySSE(data, src, desc.Width);
data += desc.Width;
src += mapping.RowPitch;
}
m_deviceContext->Unmap(m_texture[i], 0);
remain -= size;
}
frame.pitch = m_width;

View File

@ -129,8 +129,8 @@ bool TextureConverter::Initialize(
if (m_texFormats[i] == DXGI_FORMAT_UNKNOWN)
continue;
texDesc .Format = m_texFormats[i];
targetDesc.Format = m_texFormats[i];
texDesc .Format = m_texFormats[i];
targetDesc.Format = m_texFormats[i];
shaderDesc.Format = m_texFormats[i];
result = device->CreateTexture2D(&texDesc, NULL, &m_targetTexture[i]);