Skip to content
Permalink
Browse files

[all] align the frame data to the page boundary

  • Loading branch information
gnif committed Jan 13, 2020
1 parent 17df1eb commit 984676299135bdab590acfaa00067902b319ecfb
Showing with 9 additions and 4 deletions.
  1. +1 −1 VERSION
  2. +5 −1 c-host/src/app.c
  3. +1 −1 client/src/main.c
  4. +1 −0 common/include/common/KVMFR.h
  5. +1 −1 obs/lg.c
@@ -1 +1 @@
B1-92-g0d29527758+1
B1-94-g17df1ebc6b+1
@@ -109,6 +109,7 @@ static int frameThread(void * opaque)
bool repeatFrame = false;
int frameIndex = 0;
CaptureFrame frame = { 0 };
const long pageSize = sysinfo_getPageSize();

(void)frameIndex;
(void)repeatFrame;
@@ -182,9 +183,12 @@ static int frameThread(void * opaque)
fi->height = frame.height;
fi->stride = frame.stride;
fi->pitch = frame.pitch;
fi->offset = pageSize - sizeof(FrameBuffer);
frameValid = true;

FrameBuffer fb = (FrameBuffer)(fi + 1);
// put the framebuffer on the border of the next page
// this is to allow for aligned DMA transfers by the receiver
FrameBuffer fb = (FrameBuffer)(((uint8_t*)fi) + fi->offset);
framebuffer_prepare(fb);

/* we post and then get the frame, this is intentional! */
@@ -440,7 +440,7 @@ static int frameThread(void * unused)
updatePositionInfo();
}

FrameBuffer fb = (FrameBuffer)(frame + 1);
FrameBuffer fb = (FrameBuffer)(((uint8_t*)frame) + frame->offset);
if (!state.lgr->on_frame_event(state.lgrData, lgrFormat, fb))
{
DEBUG_ERROR("renderer on frame event returned failure");
@@ -60,5 +60,6 @@ typedef struct KVMFRFrame
uint32_t height; // the height
uint32_t stride; // the row stride (zero if compressed data)
uint32_t pitch; // the row pitch (stride in bytes or the compressed frame size)
uint32_t offset; // offset from the start of this header to the FrameBuffer header
}
KVMFRFrame;
@@ -164,7 +164,7 @@ static void lgVideoTick(void * data, float seconds)
}
}

FrameBuffer fb = (FrameBuffer)(frame + 1);
FrameBuffer fb = (FrameBuffer)(((uint8_t*)frame) + frame->offset);

uint8_t *texData;
uint32_t linesize;

0 comments on commit 9846762

Please sign in to comment.
You can’t perform that action at this time.