你好,我先在做dm8168拼接,是这样的我采集四路视频同时创建以NULLSRC,我将拼接视频放在NULLSRC中并显示流程如下
Capture (YUV422I) 16CH D1 60fps
|
|
NULL SRC (YUV420SP) |
| | +————+ | | | | | MERGE
|
|
STITCH
|
|
| | | SW Mosaic SC5 YUV422I) |
OSD GRPX0 | | | On-Chip HDMI 1080p60
,部分代码如下
for(i=0; i<nullSrcPrm.inputInfo.numCh; i++)
{
System_LinkChInfo *pChInfo;
pChInfo = &nullSrcPrm.inputInfo.chInfo[i];
pChInfo->dataFormat = SYSTEM_DF_YUV420SP_UV;//SYSTEM_DF_YUV420P;//SYSTEM_DF_YUV422P;
pChInfo->memType = SYSTEM_MT_NONTILEDMEM;
pChInfo->startX = 0;//48;
pChInfo->startY = 0;//32;
pChInfo->width = 1920;//stitchSrcWide;
pChInfo->height = 1080;//stitchSrcHeight;
pChInfo->pitch[0] = SystemUtils_align(pChInfo->width+pChInfo->startX, SYSTEM_BUFFER_ALIGNMENT);
pChInfo->pitch[1] = pChInfo->pitch[0];
pChInfo->pitch[2] = 0;
pChInfo->scanFormat = SYSTEM_SF_PROGRESSIVE; }
当我存放两幅图像时正常,
但是我拼接的图像分辨率大于1920 ,大约是3680*720,所以修改如下时
for(i=0; i<nullSrcPrm.inputInfo.numCh; i++)
{
System_LinkChInfo *pChInfo;
pChInfo = &nullSrcPrm.inputInfo.chInfo[i];
pChInfo->dataFormat = SYSTEM_DF_YUV420SP_UV;//SYSTEM_DF_YUV420P;//SYSTEM_DF_YUV422P;
pChInfo->memType = SYSTEM_MT_NONTILEDMEM;
pChInfo->startX = 0;//48;
pChInfo->startY = 0;//32;
pChInfo->width = 3920;//stitchSrcWide;
pChInfo->height = 1080;//stitchSrcHeight;
pChInfo->pitch[0] = SystemUtils_align(pChInfo->width+pChInfo->startX, SYSTEM_BUFFER_ALIGNMENT);
pChInfo->pitch[1] = pChInfo->pitch[0];
pChInfo->pitch[2] = 0;
pChInfo->scanFormat = SYSTEM_SF_PROGRESSIVE;
}
当代码初始化失败,这时还没有开始拼接,请NULLSRC创建空视频分辨率有限制吗,还是其他原因导致?
谢谢
Chris Meng:
你好,
SWMS输入不支持大于1080p的图像。你可以先使用MPscalar把大于1080p的图像缩小到1080p后在输入SWMS.
user4722282:
回复 Chris Meng:
你好
我添加了mpscalar,视频出现色差问题。代码如下
nullSrcPrm.outQueParams.nextLink = mergeId; nullSrcPrm.timerPeriod = 1; nullSrcPrm.inputInfo.numCh = 1;//16 for(i=0; i<nullSrcPrm.inputInfo.numCh; i++) { System_LinkChInfo *pChInfo;
pChInfo = &nullSrcPrm.inputInfo.chInfo[i];
pChInfo->dataFormat = SYSTEM_DF_YUV420SP_UV;//SYSTEM_DF_YUV420P;//SYSTEM_DF_YUV422P; pChInfo->memType = SYSTEM_MT_NONTILEDMEM; pChInfo->startX = 0;//48; pChInfo->startY = 0;//32; pChInfo->width = 3840;//1920;//stitchSrcWide; pChInfo->height = 1080*3/4;//stitchSrcHeight; pChInfo->pitch[0] = SystemUtils_align(pChInfo->width+pChInfo->startX, SYSTEM_BUFFER_ALIGNMENT); pChInfo->pitch[1] = pChInfo->pitch[0]; pChInfo->pitch[2] = 0; pChInfo->scanFormat = SYSTEM_SF_PROGRESSIVE; }
………
mpSclrPrm.inQueParams.prevLinkId = gVcapModuleContext.ipcFramesOutVpssId[1];//gMultiCh_VdecVdisObj.mergeId; mpSclrPrm.pathId = MP_SCLR_LINK_SC5;//P_SCLR_LINK_SEC1_SC4_VIP1; mpSclrPrm.numCh = 1; mpSclrPrm.enableLineSkip = FALSE;
mpSclrPrm.outQueParams.nextLink = gVdisModuleContext.swMsId[0];;
具体流程如下,我获取4个摄像头视频,同时申请一个3840*1080空视频,将拼接视频放入mpscalar,我发现控视频经过MPscalar处理后变绿色,无论我是否将拼接视频放入,下面是拼接视频放入后照片
user4722282:
回复 user4722282:
上图是没执行拼接照片,请问为什么大分辨率视频经过mpscalar处理后出现绿色
Chris Meng:
回复 user4722282:
你好,
DVR RDK 4.01如果解码大于1080p的video,显示的时候就会使用mpscalar。同样大小的video解码显示也有问题么?
如果是,你可以尝试调整 slice size,看是否有帮助?
另,新问题建议新起一个帖子。谢谢!