s 3 c 6410カメラ画像ミラー問題ノート
1567 ワード
カメラのミラーリングの問題はいつもテストだけで深く研究していないことがよくあります最近見てv 4 l 2の下の関連定義を見つけましたまず上のコードこれはqt 4の上で使った他のステップですここではコードを貼りません
ここで直接FLIP_に設定Y_AXISは垂直方向に異なるカーネルバージョンを反転します.ここでvc設定が異なる可能性があります.ここでは2.6.38のバージョンを使用しています.
また水平方向反転V 4 L 2_CID_HFLIP
videodev 2.hではこの2つのマクロが定義されている
対応駆動
drivers/media/video/samsung/fimc/s3c_fimc_v4l2.c関数s 3 c_fimc_v4l2_s_ctrl中
アプリケーションの再コンパイルに関する問題解決
struct v4l2_control vc;
vc.id = V4L2_CID_VFLIP;
vc.value = 0;
/* Set up for mirror */
if (ioctl(fd, VIDIOC_S_CTRL, &vc) < 0) {
emit display_error(tr("VIDIOC_S_CTRL").arg(QString(strerror(errno))));
return -1;
}
ここで直接FLIP_に設定Y_AXISは垂直方向に異なるカーネルバージョンを反転します.ここでvc設定が異なる可能性があります.ここでは2.6.38のバージョンを使用しています.
また水平方向反転V 4 L 2_CID_HFLIP
videodev 2.hではこの2つのマクロが定義されている
#define V4L2_CID_HFLIP (V4L2_CID_BASE+20)
#define V4L2_CID_VFLIP (V4L2_CID_BASE+21)
対応駆動
drivers/media/video/samsung/fimc/s3c_fimc_v4l2.c関数s 3 c_fimc_v4l2_s_ctrl中
case V4L2_CID_HFLIP:
frame->flip = FLIP_X_AXIS;
ctrl->rot90 = 0;
s3c_fimc_change_rotate(ctrl);
break;
case V4L2_CID_VFLIP:
frame->flip = FLIP_Y_AXIS;
ctrl->rot90 = 0;
s3c_fimc_change_rotate(ctrl);
break;
関数s 3 c_fimc_change_rotateの一番上には6410のCAMIFのCICOTRGFMTレジスタの14-15ビットがセットされますvoid s3c_fimc_change_rotate(struct s3c_fimc_control *ctrl)
{
u32 cfg;
if (ctrl->rot90)
s3c_fimc_set_rot90(ctrl);
if (ctrl->out_type == PATH_OUT_DMA) {
cfg = readl(ctrl->regs + S3C_CIPRTRGFMT);
cfg &= ~S3C_CIPRTRGFMT_FLIP_MASK;
cfg |= (ctrl->out_frame.flip << S3C_CIPRTRGFMT_FLIP_SHIFT);
writel(cfg, ctrl->regs + S3C_CIPRTRGFMT);
}
}
アプリケーションの再コンパイルに関する問題解決