This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
HI,chris meng.
我们现在想用DM8168的PCIe和另一片DM8168的PCIe进行级联,接收第二片DM8168的YUV数据。
PCIe
DM8168 主片<-------------------------DM8168从片
之前我们用单DM8168连接过FPGA,从FPGA给DM8168传递YUV视频,但是这种情况下,传递的是固定分辨率帧率YUV视频。
如果我们两片DM8168级联,第二片给第一片的分辨率有时候会变化,那第一片DM8168的IPCFrameOutHLOS LINK要如何动态修改输出分辨率?还是不用修改?
基本的link搭建如下:
DEI------------------------------------------------------->| ---------------------------|
| SWMS |
IPCFrameOut---->IPCFrameInVPSS------------>|-----------------------------|
上图中,SWMS负责进行画面拼接,但是SWMS内置的SCALER不进行任何缩放,送给SWMS的图像都已经缩放完成,也就是和合成画面中对应窗口尺寸相同了。
也就是DEI将画面缩放好了后,再送给SWMS,同样,IPCFrameOutLink送过来的图像,也是合成画面中对应窗口大小的YUV视频。
那如果进行画面切换的时候,我先进行DEI输出分辨率调整,再调整SWMS中窗口和通道映射关系,McFw DEMO中是这么做得。这里就没有太看懂,就是先DEI改分辨率,SWMS再改映射关系,那两者是怎么同步的?是M3VPSS里面做得同步?我是指可能DEI先改了输出分辨率,SWMS还没来得及修改映射关系,那是不是可能出现DEI送过来的图像和Mosaic中窗口大小不一致?
同样,如果IPCFrameOut送过来的视频,也动态修改了分辨率,我要怎么和SWMS同步?我是先修改SWMS的画面映射关系,再通过Vdis_putFullVideoFrames或者IpcFramesOutLink_putFullVideoFrames这样的函数送新的分辨率的视频?怎么知道谁先谁后?会不会有潜在不同步的可能性?还是同样的情况,就是可能送过去了新分辨率图像,但是我怎么知道SWMS也改好映射关系了?这个同步怎么实现?
SuitJune,
Link把frame传向下一个link的时候,frame都会有相应的info,在这个frameinfo里面就包含了这个frame的大小。对于SWMS,如果输入的frame大小变化,那它就可以根据这个信息来调整缩放比例(SWMS每个mosica输出的大小是固定的)。
谢谢!
但是如果IPFrameOutLink输出参数变了呢?比如时刻A输出720P图像,时刻B修改为输出D1分辨率图像,怎么通知后面?
IPCFrameOutLink没看到对应参数,就是分辨率动态修改命令。
SuitJune,
DVR RDK demo只在编解码做了动态分辨率切换,里面没有涉及到IPCFrameOut Link。如果需要改功能,你需要自己修改代码。
我说的不是DEMO功能,比如MCFW部分DEMO代码。
是LINK部分就没有对应命令描述,像DEI都有动态修改输出分辨率的命令项,但是IPCFrameOut,IPCFrameIn就没看到,您说的自己修改代码,是指到McFw LINK内部自己修改LINK内部的代码吗?比如自己添加修改输出分辨率的命令与实现代码?