パフォーマンス上の理由から、Android でビデオ 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 クラスに誘導しないでください。
ヒントをありがとう、セビー