mirror of
https://github.com/gnif/LookingGlass.git
synced 2024-11-22 05:27:20 +00:00
[host] nvfbc: fix incorrect metadata when resampling is enabled
This commit is contained in:
parent
3af2cf54d6
commit
5bba4dfab5
@ -66,7 +66,7 @@ struct iface
|
|||||||
|
|
||||||
unsigned int maxWidth , maxHeight;
|
unsigned int maxWidth , maxHeight;
|
||||||
unsigned int width , height;
|
unsigned int width , height;
|
||||||
unsigned int frameHeight;
|
unsigned int dataHeight;
|
||||||
bool resChanged, scale;
|
bool resChanged, scale;
|
||||||
unsigned int targetWidth, targetHeight;
|
unsigned int targetWidth, targetHeight;
|
||||||
|
|
||||||
@ -656,15 +656,15 @@ static CaptureResult nvfbc_waitFrame(CaptureFrame * frame,
|
|||||||
}
|
}
|
||||||
|
|
||||||
const unsigned int maxHeight = maxFrameSize / (this->shmStride * 4);
|
const unsigned int maxHeight = maxFrameSize / (this->shmStride * 4);
|
||||||
this->frameHeight = min(maxHeight, this->grabHeight);
|
this->dataHeight = min(maxHeight, this->grabHeight);
|
||||||
|
|
||||||
frame->formatVer = this->formatVer;
|
frame->formatVer = this->formatVer;
|
||||||
frame->screenWidth = this->width;
|
frame->screenWidth = this->width;
|
||||||
frame->screenHeight = this->height;
|
frame->screenHeight = this->height;
|
||||||
frame->dataWidth = this->width;
|
|
||||||
frame->dataHeight = this->height;
|
|
||||||
frame->frameWidth = this->grabWidth;
|
frame->frameWidth = this->grabWidth;
|
||||||
frame->frameHeight = this->frameHeight;
|
frame->frameHeight = this->grabHeight;
|
||||||
|
frame->dataWidth = this->grabWidth;
|
||||||
|
frame->dataHeight = this->dataHeight;
|
||||||
frame->truncated = maxHeight < this->grabHeight;
|
frame->truncated = maxHeight < this->grabHeight;
|
||||||
frame->pitch = this->shmStride * 4;
|
frame->pitch = this->shmStride * 4;
|
||||||
frame->stride = this->shmStride;
|
frame->stride = this->shmStride;
|
||||||
@ -693,7 +693,7 @@ static CaptureResult nvfbc_getFrame(FrameBuffer * frame, int frameIndex)
|
|||||||
for (unsigned int y = 0; y < h; ++y)
|
for (unsigned int y = 0; y < h; ++y)
|
||||||
{
|
{
|
||||||
const unsigned int ystart = y << this->diffShift;
|
const unsigned int ystart = y << this->diffShift;
|
||||||
const unsigned int yend = min(this->frameHeight, (y + 1)
|
const unsigned int yend = min(this->dataHeight, (y + 1)
|
||||||
<< this->diffShift);
|
<< this->diffShift);
|
||||||
|
|
||||||
for (unsigned int x = 0; x < w; )
|
for (unsigned int x = 0; x < w; )
|
||||||
@ -719,9 +719,9 @@ static CaptureResult nvfbc_getFrame(FrameBuffer * frame, int frameIndex)
|
|||||||
}
|
}
|
||||||
else if (this->grabStride != this->shmStride)
|
else if (this->grabStride != this->shmStride)
|
||||||
{
|
{
|
||||||
for (int y = 0; y < this->frameHeight; y += 64)
|
for (int y = 0; y < this->dataHeight; y += 64)
|
||||||
{
|
{
|
||||||
int yend = min(this->frameHeight, y + 128);
|
int yend = min(this->dataHeight, y + 128);
|
||||||
rectCopyUnaligned(frameData, this->frameBuffer, y, yend, 0, this->shmStride * 4,
|
rectCopyUnaligned(frameData, this->frameBuffer, y, yend, 0, this->shmStride * 4,
|
||||||
this->grabStride * 4, this->grabWidth * 4);
|
this->grabStride * 4, this->grabWidth * 4);
|
||||||
framebuffer_set_write_ptr(frame, yend * this->shmStride * 4);
|
framebuffer_set_write_ptr(frame, yend * this->shmStride * 4);
|
||||||
@ -731,7 +731,7 @@ static CaptureResult nvfbc_getFrame(FrameBuffer * frame, int frameIndex)
|
|||||||
framebuffer_write(
|
framebuffer_write(
|
||||||
frame,
|
frame,
|
||||||
this->frameBuffer,
|
this->frameBuffer,
|
||||||
this->frameHeight * this->grabInfo.dwBufferWidth * 4
|
this->dataHeight * this->grabInfo.dwBufferWidth * 4
|
||||||
);
|
);
|
||||||
|
|
||||||
for (int i = 0; i < LGMP_Q_FRAME_LEN; ++i)
|
for (int i = 0; i < LGMP_Q_FRAME_LEN; ++i)
|
||||||
|
Loading…
Reference in New Issue
Block a user