1.定义内存页大小为4kb
#define TEST_SYSTEM_PAGE_SIZE 4096
2.设置内存按页对齐
int test_size = 128;
struct v4l2_buffer buf;
buf.length = ((test_size + TEST_SYSTEM_PAGE_SIZE - 1) & (~(TEST_SYSTEM_PAGE_SIZE - 1)));
3.c++源代码实现文件test.cpp
#include <string.h>
#include <linux/videodev2.h>
#include <stdio.h>
#define TEST_SYSTEM_PAGE_SIZE 4096
int main()
{
int test_size = 128;
struct v4l2_buffer buf;
memset(&buf, 0, sizeof(buf));
buf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
buf.memory = V4L2_MEMORY_USERPTR;
buf.length = ((test_size + TEST_SYSTEM_PAGE_SIZE - 1) & (~(TEST_SYSTEM_PAGE_SIZE - 1)));
printf("buf.length = %d\n", buf.length);
return 0;
}
4.运行结果:
buf.length = 4096