相关源码位置
https://gitee.com/ldl17/v4l2-learn/tree/master/v4l2loopback/examples/test_yuv
test_yuv这个例程主要目的是读取本地yuv数据给v4l2loopback,然后应用程序去读取摄像头数据
test_yuv源码拷贝与test,test里面只是写一帧,test_yuv里面则是根据设置的帧率延时读取数据而已。
while(fread(buffer, 1, framesize, in_fp) == framesize) {
write(fdwr, buffer, framesize);
//delay 30ms -> 30fps
usleep(FPS*1000);
frame_cnt ++;
}
关键代码在这里。
其实这个例程的思路是来源于v4l2loopback上的例程 yuv4mpeg_to_v4l2.c
https://gitee.com/ldl17/v4l2loopback/blob/develop/examples/yuv4mpeg_to_v4l2.c
因为我们是在嵌入式开发板上进行研究,所以也没有mplay这些应用。
test_yuv这个例程中还有一部分功能是解析Y4M格式的视频文件,其中y4m2nv12.c主要就是将y4m格式转换成nv12或者nv21,加这个转换的目的仅仅是为了学习y4m格式。
最后的测试中,会用v4l2_test读取video到数据,并保存。