if(ceshi_flag==0)
{
memset(&task, 0, sizeof(task));
task.output.width = 640;
task.output.height = 480;
task.output.format = v4l2_fourcc('N', 'V', '1', '2');
fd_ipu = open("/dev/mxc_ipu", O_RDWR, 0);
if (fd_ipu < 0) {
printf("open ipu dev fail\n");
return -1;
}
osize = task.output.paddr =
task.output.width * task.output.height
* fmt_to_bpp(task.output.format)/8;
ret = ioctl(fd_ipu, IPU_ALLOC, &task.output.paddr);
if (ret < 0) {
printf("ioctl IPU_ALLOC fail\n");
return -1;
}
outbuf = mmap(0, osize, PROT_READ | PROT_WRITE,
MAP_SHARED, fd_ipu, task.output.paddr);
if (!outbuf) {
printf("mmap fail\n");
return -1;
}
task.input.width = 1920;
task.input.height = 1080;
task.input.format = v4l2_fourcc('N', 'V', '1', '2');
isize = task.input.paddr =
task.input.width * task.input.height
* fmt_to_bpp(task.input.format)/8;
ret = ioctl(fd_ipu, IPU_ALLOC, &task.input.paddr);
if (ret < 0) {
printf("ioctl IPU_ALLOC fail: (errno = %d)\n", errno);
return -1;
}
inbuf = mmap(0, isize, PROT_READ | PROT_WRITE,
MAP_SHARED, fd_ipu, task.input.paddr);
if (!inbuf) {
printf("mmap fail\n");
return -1;
}
memcpy(inbuf,pic_track_5640,sizeof(pic_track_5640));
ret = ioctl(fd_ipu, IPU_QUEUE_TASK, &task);
if (ret < 0) {
printf("ioct IPU_QUEUE_TASK fail\n");
}
ceshi_flag=1;
process_image_5640(outbuf,osize);
}
ipu缩小程序
最新推荐文章于 2024-03-15 14:52:21 发布