Features该驱动程序的一些特点包括:•通过媒体控制器API可以配置许多不同的管道,对应于i.MX支持的硬件视频捕获管道。•支持并行、BT.565和MIPICSI-2接口。•通过将管道配置到多个视频捕获接口,使用独立实体可以实现并发独立流。•通过IC任务sub怎么获取股票交易接口,devs进行缩放、颜色空间转换、水平和垂直翻转以及像旋转。•支持许多像素格式。•VDICsub怎么获取股票交易接口,dev支持运动补偿去隔行,具有三种运动补偿模式:低、中、高运动。定义了管道,允许直接从CSI将帧发送到VDICsubdev。今后也将支持通过输出/mem2mem设备将帧发送到VDIC的存储器缓冲区中。•包括FrameIntervalMonitor,可以纠正ADV718x视频解码器的垂直同步问题。
media-ctl -V ""ipu1_csi0_mux":2[fmt:UYVY2X8/1280x960]"
media-ctl -V ""ipu1_csi0":0[crop:(0,0)/640x480]"
media-ctl -V ""ipu1_csi0":0[compose:(0,0)/320x240]"
FrameSkippinginipuX_csiYCSI支持通过跳帧进行帧率抽取。帧率抽取是通过在汇接口和源接口处设置帧间隔来指定的。然后,ipuX_csiY实体将应用最佳帧跳过设置到CSI以实现源接口处所需的帧率。以下示例将假定的60Hz输入帧率减半到IDMAC输出源接口:
media-ctl -V ""ipu1_csi0":0[fmt:UYVY2X8/640x480@1/60]"
media-ctl -V ""ipu1_csi0":2[fmt:UYVY2X8/640x480@1/30]"
media-ctl-V:`media-ctl-V`用于显示MediaControllerAPI版本信息。这个命令会打印版本号以及其他相关信息,如下所示:
Media Controller API version 5.13.0
CapturePipelines以下描述了管道支持的各种用例。所示的链接不包括后端传感器、视频复用器或MIPICSI-2接收器链接。这取决于传感器接口的类型。这些管道从以下开始:对于并行传感器:sensor->ipuX_csiY_mux->…对于MIPICSI-2传感器:sensor->imx6-mipi-csi2->->…imx6-mipi-csi2接收器可能需要在发送到CSI之前将其路由到视频复用器,具体取决于MIPICSI-2虚拟通道,因此在圆括号中显示了ipuX_csiY_mux。UnprocessedVideoCapture将帧直接从传感器通过ipuX_csiYIDMAC源端口发送到相机设备接口节点,无需进行任何转换:->ipuX_csiY:2->ipuX_csiYcapture//:2表示的是ipuX_csiY的源接口2ICDirectConversions这个管道使用前处理编码实体直接将帧从CSI路由到IC,进行高达1024x1024分辨率的缩放、CSC、翻转和像旋转:->ipuX_csiY:1->0:ipuX_ic_prp:1->0:ipuX_ic_prpenc:1->ipuX_ic_prpenccaptureMotionCompensatedDe-interlace这个管道将帧从CSI直接发送到VDIC实体以支持运动补偿去隔行,进行高达1024x1024的缩放、CSC、翻转和旋转:->ipuX_csiY:1->0:ipuX_vdic:2->0:ipuX_ic_prp:2->0:ipuX_ic_prpvf:1->ipuX_ic_prpvfcapture
# Setup links for OV5642
media-ctl -l ""ov5642 1-0042":0 -> "ipu1_csi0_mux":1[1]"
media-ctl -l ""ipu1_csi0_mux":2 -> "ipu1_csi0":0[1]"
media-ctl -l ""ipu1_csi0":2 -> "ipu1_csi0 capture":0[1]"
# Setup links for OV5640
media-ctl -l ""ov5640 1-0040":0 -> "imx6-mipi-csi2":0[1]"
media-ctl -l ""imx6-mipi-csi2":2 -> "ipu1_csi1":0[1]"
media-ctl -l ""ipu1_csi1":2 -> "ipu1_csi1 capture":0[1]"
# Configure pads for OV5642 pipeline
media-ctl -V ""ov5642 1-0042":0 [fmt:YUYV2X8/640x480 field:none]"
media-ctl -V ""ipu1_csi0_mux":2 [fmt:YUYV2X8/640x480 field:none]"
media-ctl -V ""ipu1_csi0":2 [fmt:AYUV32/640x480 field:none]"
# Configure pads for OV5640 pipeline
media-ctl -V ""ov5640 1-0040":0 [fmt:UYVY2X8/640x480 field:none]"
media-ctl -V ""imx6-mipi-csi2":2 [fmt:UYVY2X8/640x480 field:none]"
media-ctl -V ""ipu1_csi1":2 [fmt:AYUV32/640x480 field:none]"
然后可以在捕获设备节点“ipu1_csi0capture”和“ipu1_csi1capture”上独立开始流式传输。v4l2-ctl工具可用于在捕获设备节点上选择任何支持的YUV像素格式,包括平面格式。i.MX6QSabreAutowithADV7180decoder在i.MX6QSabreAuto上,一个板载ADV7180SD解码器连接到内部视频MUX的并行总线输入,连接到IPU1CSI0。以下是配置从ADV7180视频解码器捕获NTSC720x480输入信号的管道的示例,使用简单交错模式。adv7180必须输出顺序或交替场:
# Setup links
media-ctl -l ""adv7180 3-0021":0 -> "ipu1_csi0_mux":1[1]"
media-ctl -l ""ipu1_csi0_mux":2 -> "ipu1_csi0":0[1]"
media-ctl -l ""ipu1_csi0":2 -> "ipu1_csi0 capture":0[1]"
# Configure pads
media-ctl -V ""adv7180 3-0021":0 [fmt:UYVY2X8/720x480 field:seq-bt]"
media-ctl -V ""ipu1_csi0_mux":2 [fmt:UYVY2X8/720x480]"
media-ctl -V ""ipu1_csi0":2 [fmt:AYUV32/720x480]"
# Configure "ipu1_csi0 capture" interface (assumed at /dev/video4)
v4l2-ctl -d4 --set-fmt-video=field=interlaced_bt
然后可以在/dev/video4上开始流式传输。v4l2-ctl工具也可用于选择/dev/video4上支持的任何YUV像素格式。以下是配置从ADV7180视频解码器捕获PAL720x576输入信号,使用运动补偿去交错的管道的示例。adv7180必须输出顺序或交替场。
# Setup links
media-ctl -l ""adv7180 3-0021":0 -> "ipu1_csi0_mux":1[1]"
media-ctl -l ""ipu1_csi0_mux":2 -> "ipu1_csi0":0[1]"
media-ctl -l ""ipu1_csi0":1 -> "ipu1_vdic":0[1]"
media-ctl -l ""ipu1_vdic":2 -> "ipu1_ic_prp":0[1]"
media-ctl -l ""ipu1_ic_prp":2 -> "ipu1_ic_prpvf":0[1]"
media-ctl -l ""ipu1_ic_prpvf":1 -> "ipu1_ic_prpvf capture":0[1]"
# Configure pads
media-ctl -V ""adv7180 3-0021":0 [fmt:UYVY2X8/720x576 field:seq-tb]"
media-ctl -V ""ipu1_csi0_mux":2 [fmt:UYVY2X8/720x576]"
media-ctl -V ""ipu1_csi0":1 [fmt:AYUV32/720x576]"
media-ctl -V ""ipu1_vdic":2 [fmt:AYUV32/720x576 field:none]"
media-ctl -V ""ipu1_ic_prp":2 [fmt:AYUV32/720x576 field:none]"
media-ctl -V ""ipu1_ic_prpvf":1 [fmt:AYUV32/720x576 field:none]"
# Configure "ipu1_ic_prpvf capture" interface (assumed at /dev/video2)
v4l2-ctl -d2 --set-fmt-video=field=none
然后可以在/dev/video2上开始流式传输。v4l2-ctl工具也可用于选择/dev/video2上支持的任何YUV像素格式。此平台可以将复合视频模拟输入连接到ADV7180的Aini.MX6DLSabreAutowithADV7180decoder在i.MX6DLSabreAuto上,一个板载ADV7180SD解码器连接到内部视频MUX的并行总线输入,连接到IPU1CSI0。以下是配置从ADV7180视频解码器捕获NTSC720x480输入信号的管道的示例,使用简单交错模式。adv7180必须输出顺序或交替场:
# Setup links
media-ctl -l ""adv7180 4-0021":0 -> "ipu1_csi0_mux":4[1]"
media-ctl -l ""ipu1_csi0_mux":5 -> "ipu1_csi0":0[1]"
media-ctl -l ""ipu1_csi0":2 -> "ipu1_csi0 capture":0[1]"
# Configure pads
media-ctl -V ""adv7180 4-0021":0 [fmt:UYVY2X8/720x480 field:seq-bt]"
media-ctl -V ""ipu1_csi0_mux":5 [fmt:UYVY2X8/720x480]"
media-ctl -V ""ipu1_csi0":2 [fmt:AYUV32/720x480]"
# Configure "ipu1_csi0 capture" interface (assumed at /dev/video0)
v4l2-ctl -d0 --set-fmt-video=field=interlaced_bt
然后可以在/dev/video0上开始流式传输。v4l2-ctl工具也可用于选择/dev/video0上支持的任何YUV像素格式。以下是配置从ADV7180视频解码器捕获PAL720x576输入信号,使用运动补偿去交错的管道的示例。adv7180必须输出顺序或交替场。
# Setup links
media-ctl -l ""adv7180 4-0021":0 -> "ipu1_csi0_mux":4[1]"
media-ctl -l ""ipu1_csi0_mux":5 -> "ipu1_csi0":0[1]"
media-ctl -l ""ipu1_csi0":1 -> "ipu1_vdic":0[1]"
media-ctl -l ""ipu1_vdic":2 -> "ipu1_ic_prp":0[1]"
media-ctl -l ""ipu1_ic_prp":2 -> "ipu1_ic_prpvf":0[1]"
media-ctl -l ""ipu1_ic_prpvf":1 -> "ipu1_ic_prpvf capture":0[1]"
# Configure pads
media-ctl -V ""adv7180 4-0021":0 [fmt:UYVY2X8/720x576 field:seq-tb]"
media-ctl -V ""ipu1_csi0_mux":5 [fmt:UYVY2X8/720x576]"
media-ctl -V ""ipu1_csi0":1 [fmt:AYUV32/720x576]"
media-ctl -V ""ipu1_vdic":2 [fmt:AYUV32/720x576 field:none]"
media-ctl -V ""ipu1_ic_prp":2 [fmt:AYUV32/720x576 field:none]"
media-ctl -V ""ipu1_ic_prpvf":1 [fmt:AYUV32/720x576 field:none]"
# Configure "ipu1_ic_prpvf capture" interface (assumed at /dev/video2)
v4l2-ctl -d2 --set-fmt-video=field=none
然后可以在/dev/video2上开始流式传输。v4l2-ctl工具也可用于选择/dev/video2上支持的任何YUV像素格式。此平台可以将复合视频模拟输入连接到ADV7180的Aini.MX6QSabreSDwithMIPICSI-2OV5640类似于i.MX6QSabreLite,i.MX6QSabreSD也支持IPU1CSI0上的并行接口OV5642模块和MIPICSI-2OV5640模块。OV5642连接到i2c总线而OV5640连接到i2c总线SabreSD的设备树包括用于并行OV5642和MIPICSI-2OV5640的OF,但截至本写作时,仅测试了MIPICSI-2OV5640,因此OV5642节点当前已禁用。OV5640模块连接到MIPI连接器J连接到SabreSD板的OV5640模块的NXP零件号为H12072以下是配置未处理的视频捕获管道,从OV5640捕获,传输到MIPICSI-2虚拟通道0的示例:
# Setup links
media-ctl -l ""ov5640 1-003c":0 -> "imx6-mipi-csi2":0[1]"
media-ctl -l ""imx6-mipi-csi2":1 -> "ipu1_csi0_mux":0[1]"
media-ctl -l ""ipu1_csi0_mux":2 -> "ipu1_csi0":0[1]"
media-ctl -l ""ipu1_csi0":2 -> "ipu1_csi0 capture":0[1]"
# Configure pads
media-ctl -V ""ov5640 1-003c":0 [fmt:UYVY2X8/640x480]"
media-ctl -V ""imx6-mipi-csi2":1 [fmt:UYVY2X8/640x480]"
media-ctl -V ""ipu1_csi0_mux":0 [fmt:UYVY2X8/640x480]"
media-ctl -V ""ipu1_csi0":0 [fmt:AYUV32/640x480]"
然后可以在“ipu1_csi0capture”节点上开始流式传输。v4l2-ctl工具可用于选择捕获设备节点上支持的任何像素格式。要确定与“ipu1_csi0捕获”对应的/dev/video节点是什么:
media-ctl -e "ipu1_csi0 capture"
/dev/video0
此案例中,/dev/video0是流式传输元素。通过v4l2-ctl启动流式传输:
v4l2-ctl --stream-mmap -d /dev/video0
使用Gstreamer开始流式传输并将内容发送到显示器:
gst-launch-1.0 v4l2src device=/dev/video0 ! kmssink
以下是配置直接转换管道,从OV5640捕获,传输到MIPICSI-2虚拟通道0的示例。它还显示IC输出的颜色空间转换和缩放。
# Setup links
media-ctl -l ""ov5640 1-003c":0 -> "imx6-mipi-csi2":0[1]"
media-ctl -l ""imx6-mipi-csi2":1 -> "ipu1_csi0_mux":0[1]"
media-ctl -l ""ipu1_csi0_mux":2 -> "ipu1_csi0":0[1]"
media-ctl -l ""ipu1_csi0":1 -> "ipu1_ic_prp":0[1]"
media-ctl -l ""ipu1_ic_prp":1 -> "ipu1_ic_prpenc":0[1]"
media-ctl -l ""ipu1_ic_prpenc":1 -> "ipu1_ic_prpenc capture":0[1]"
# Configure pads
media-ctl -V ""ov5640 1-003c":0 [fmt:UYVY2X8/640x480]"
media-ctl -V ""imx6-mipi-csi2":1 [fmt:UYVY2X8/640x480]"
media-ctl -V ""ipu1_csi0_mux":2 [fmt:UYVY2X8/640x480]"
media-ctl -V ""ipu1_csi0":1 [fmt:AYUV32/640x480]"
media-ctl -V ""ipu1_ic_prp":1 [fmt:AYUV32/640x480]"
media-ctl -V ""ipu1_ic_prpenc":1 [fmt:ARGB8888_1X32/800x600]"
# Set a format at the capture interface
v4l2-ctl -d /dev/video1 --set-fmt-video=pixelformat=RGB3
然后可以在“ipu1_ic_prpenccapture”节点上开始流式传输。要确定与“ipu1_ic_prpenccapture”对应的/dev/video节点是什么:
media-ctl -e "ipu1_ic_prpenc capture"
/dev/video1
在这种情况下,/dev/video1是流式传输元素。通过v4l2-ctl启动流式传输:
v4l2-ctl --stream-mmap -d /dev/video1
使用Gstreamer开始流式传输并将内容发送到显示器:
gst-launch-1.0 v4l2src device=/dev/video1 ! kmssink
KnownIssues当使用90度或270度旋转控制以接近IC调整器限制的1024x1024捕获分辨率,并且结合平面像素格式时,帧捕获通常会失败,而IDMAC通道没有结束帧中断。为了解决这个问题,在需要90度或270度旋转时,请使用较低分辨率和/或打包格式。
文章为作者独立观点,不代表 股票程序化软件自动交易接口观点