diff --git a/host/Capture/DXGI.cpp b/host/Capture/DXGI.cpp index b536b95e..41b58f3a 100644 --- a/host/Capture/DXGI.cpp +++ b/host/Capture/DXGI.cpp @@ -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; diff --git a/host/TextureConverter.cpp b/host/TextureConverter.cpp index fb3b0e4c..d89de72f 100644 --- a/host/TextureConverter.cpp +++ b/host/TextureConverter.cpp @@ -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]);