主题中讨论的其他器件:TVP5158
您好!
我有一个定制的8107电路板、已经过修改、可接受2个 SDI 输入。 在使用供应商提供的闭源代码脚本后、我勉强决定尝试实施我自己的解决方案、以获得更多功能和更好的控制(以及更少的错误)。
我正在尝试修改 demo_vcap_venc_vdis.c (demo id demo_vCAP_VENC_VDIS_HD)、以支持至少一个当前来自 SDI 的720p60输入。 最后、我需要支持两个、但首先我需要使其正常工作。 我只需要编码到磁盘、对显示或后续解码不感兴趣。 如果可能,可以稍后使用文本刻录。
我正在使用 DVR RDK v 4.0、我知道我的硬件是 NVR 选项。
尝试按如下方式初始化系统:
VSYS_PARAMS_S vsysParams;
vCAP_PARAMS_S vcapParams;
VENC_PARAMS_S vencParams;
VDIS_PARAMS_S vdisParams;
uint32 useCase、demoId;
uint32 chid、resolationClass;
uint16 osdFormat[ALG_LINK_OSD_MAX_CH];
if (hdDemo)
demoId = demo_vCAP_VENC_VDIS;
其他
demoId = demo_vCAP_VENC_VDIS_HD;
VSYS_params_init (vsysParams);
useCase = VSYS_USECASE_MULTICHN_HD_VCCP_VENC;
//useCase = VSYS_USECASE_MULTICHN_Progressive_VCCP_VDIS_VENC_VDEC_D1_AND_CIF;
vcap_params_init (vcapParams);
Venc_params_init (vencParams);
VDIS_params_init (vdisParams);
{
gDemo_info.maxVcapChannels = 1;
gDemo_info.maxVdisChannels = 0;
gDemo_info.maxVencChannels = 1;
gDemo_info.maxVdecChannels = 0;
vcapParams.numChn = 1;
vcapParams.deviceParams[0].portEnable = true;
vcapParams.deviceParams[0].portMode = VCAP 模式 BT656_8BIT_YUV422;
vcapParams.deviceParams[0].dataFormat = VCAP_MULTICHN_OPEN_SINGLE_CHN;
vcapParams.deviceParams[0].signalType = VS_AUTO_DETECT;
vencParams.numPrimaryChn = 1;
vencParams.numSecondaryChn = 0;
vdisParams.numChannels = 0;
}
vsysParams.systemUseCase = useCase;
vsysParams.enableCapture = true;
vsysParams.enableNsf = false;
vsysParams.enableEncode = true;
vsysParams.enableDecode = false;
vsysParams.enableNullSrc = false;
vsysParams.numDeis = 0;
{
vsysParams.numSwm=1 ;
vsysParams.numDisspays = 1;
vsysParams.enableSecondaryOut = false;/*不用于此用例*/
vsysParams.enableMjpegEnc = false;
vsysParams.enableOsd = false;
vsysParams.enableScd = false;
}
if (vsysParams.enableSecondaryOut)
{
if (vsysParams.enableMjpegEnc =false)
gDemo_info.maxVencChannels *= 2;
其他
gDemo_info.maxVencChannels *= 3;
}
vdisParams.deviceParams[VDIS_DEV_HDMI].resolution = VSYS_STD_720p_60;
printf ("---------------- 频道详细信息--- \n");
printf ("捕获通道=>%d\n"、vcapParams.numChn);
printf ("Enc channels => Primary %d、Secondary %d\n"、vencParams.numPrimaryChn、vencParams.numSecondaryChn);
printf ("Disp Channels =>%d\n"、vdisParams.numChannels);
printf ("------------------------------------------ \n");
VSYS_INIT (vsysParams);
vcap_init (vcapParams);
Venc_init (vencParams);
{
DEMO_swMsGenerateLayout (VDIS_DEV_HDMI、0、gDemo_info.maxVdisChannels、
DEMO_LAY_MODE_7CH_1CH、
vdisParams.PingicParams[0]、true、
gDemo_info.Type、
VDIS_getSwMsLayoutResolution (VDIS_DEV_HDMI);
vdisParams.嵌 合 Params[0].userSetDefaultSWMLayout = true;
}
VDIS_INIT (vdisParams);
resolionClass = demo_scd_resolution_class_CIF;
if (vsysParams.enableScd =true)
{
SCD_bitsWriteCreate (useCase、resolationClass);
}
/*插入将处理位流交换的应用特定模块*/
VcapVenc_bitsWriteCreate();
/*插入将处理视频帧交换的应用特定模块*/
printf ("VcapVenc_ipcFramesCreate\n");
VcapVenc_ipcFramesCreate (useCase);
printf ("VcapVenc_ipcFramesInSetCbInfo\n");
VcapVenc_ipcFramesInSetCbInfo();
/*配置显示*/
VSYS_configureDisplay();
/*创建链接实例并连接组块*/
printf ("创建链接实例并连接组件块...\n");
VSYS_CREATE ();
printf ("创建了 VSYS。\n");
…
并在尝试使用以下输出调用 VcapVenc_ipcFramesInSetCbInfo()时遇到崩溃:
-------- 频道详细信息---
捕捉通道=> 1
ENC 通道=>初级1、次级0
Disp CHANNELS => 0
------------------------------------------
0:系统:正在进行系统通用初始化!!!
0:系统:正在进行 IPC 初始化!!
19:系统:CPU [DSP]在此平台上不可用!!
19:系统:CPU [VIDE-M3] syslink proc ID 是[0]!!!
19:系统:CPU [VPSS-M3] syslink proc ID 是[1]!!!
19:系统:CPU [host] syslink proc ID 是[2]!!!
19:系统:创建 MSGQ 堆[IPC_MSGQ_MSG_HIP_3]...
21:系统:创建 MSGQ [host_MSGQ]...
23:系统:创建 MSGQ [host_ack_MSGQ]...
25:系统:打开 MSGQ [VIDE-M3_MSGQ]...
25:系统:打开 MSGQ [VPSS-M3_MSGQ]...
26:系统:通知注册到[VIDEO-M3]第0行,事件15...
27:系统:通知寄存器到[VPSS-M3]行0,事件15...
28:系统:IPC 初始化完成!!
29:系统:在区域0中创建 ListMP [HOST_IPC_OUT_24]...
31:系统:在区域0中创建 ListMP [HOST_IPC_IN_24]...
32:系统:ListElem Shared Addr = 0x40778300
33:系统:在区域0中创建 ListMP [HOST_IPC_OUT_25]...
35:系统:在区域0中创建 ListMP [HOST_IPC_IN_25]...
37:系统:ListElem Shared Addr = 0x407d3f80
39:系统:在区域0中创建 ListMP [HOST_IPC_OUT_19]...
40:系统:在区域0中创建 ListMP [HOST_IPC_IN_19]...
42:系统:ListElem Shared Addr = 0x4082fc00
43:系统:在区域0中创建 ListMP [HOST_IPC_OUT_20]...
45:系统:在区域0中创建 ListMP [HOST_IPC_IN_20]...
47:系统:ListElem Shared Addr = 0x4087d780
48:系统:在区域0中创建 ListMP [HOST_IPC_OUT_21]...
50:系统:在区域0中创建 ListMP [HOST_IPC_IN_21]...
51:系统:ListElem Shared Addr = 0x408cb300
55:系统:系统通用初始化完成!!!
[host] HDMI 控制器:正在初始化
[host] HDMI Ctrl :已初始化
启用文件写入(是- y /否- n):n
文件写入已禁用!!!
VcapVenc_ipcFramesCreate
[主机] MCFW_IPCFRAMES:VcapVenc_ipcFramesSendRecvFxn:entered...VcapVenc_ipcFramesInSetCbInfo
创建链接实例并连接组块...
[主机]
ThreadName:SystemLink_tskMain_3000003f、ThreadID:1820
JTW 进入 SystemLink_tskMain
9056:!!从内核[VPSS-M3]关闭!!!
SystemLink_CopySlaveCoreExceptionContext:120
[0x3fe2d000:40960]的 mmap
mmap virt address:0x40087750
总线错误
我知道这里有很多问题、但希望获得任何有关其他演示代码的帮助/片段/说明。
也许我可以尝试更新的 RDK、但我还没有找到网站上的任何链接。
提前感谢、
Dmitry