出于性能原因,我试图直接访问 android 中的 video 4 linux 设备并在其上执行传统的 v4l2 控制命令,根据我的 htc 需求,该设备被称为 /dev/msm_camera/config0 并且我设法打开它,但是当我在它上面尝试任何 ioctl 时,我总是得到“无效参数”,但它是在任何 linux 系统上都可以正常工作的相同代码,那么 android 有什么区别?以下是查询设备功能的代码示例:
static struct v4l2_capability x_vcap;
if (ioctl(x_conffd, VIDIOC_QUERYCAP, &x_vcap) < 0)
{
__android_log_write(ANDROID_LOG_ERROR, "libcamera", strerror(errno));
__android_log_write(ANDROID_LOG_ERROR, "libcamera", "Could not get camera capabitilites.");
}
else
{
__android_log_write(ANDROID_LOG_INFO, "libcamera", "Got capabilities.");
sprintf(message, "driver info: %s %d.%d.%d / %s @ %s", x_vcap.driver, (x_vcap.version >> 16) & 0xff, (x_vcap.version >> 8) & 0xff, x_vcap.version & 0xff, x_vcap.card, x_vcap.bus_info);
__android_log_write(ANDROID_LOG_INFO, "libcamera", message );
}
我真的需要访问 v4l2 以获得比 Camera java 类提供的更好的帧速率,所以请不要直接告诉我 Camera android 类。
感谢您的任何提示,sevy