程序不知道改了哪里, 四个视频输入端口,必须在板子启动器插上摄像头,如果在板子启动后插摄像头,则监控没有画面、
for example, 摄像头a插入vin0口,启动板子,监控会有画面,拔掉摄像头a再插到vin0口,仍然能监控,但是如果插入到vin1,则没有监控画面了、怀疑是加载驱动的问题? 但是不知道到程序哪块找了、、、请指个方向~~~~~~~~~~~many many many thanks ~
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.
程序不知道改了哪里, 四个视频输入端口,必须在板子启动器插上摄像头,如果在板子启动后插摄像头,则监控没有画面、
for example, 摄像头a插入vin0口,启动板子,监控会有画面,拔掉摄像头a再插到vin0口,仍然能监控,但是如果插入到vin1,则没有监控画面了、怀疑是加载驱动的问题? 但是不知道到程序哪块找了、、、请指个方向~~~~~~~~~~~many many many thanks ~
你尝试一下这个:
在5158初始化的配置里面设置Output Formatter Control 2
01 Blue screen out when TVP5158 detects lost lock 或者
10 Force Blue screen out
这样的话,会强制输出蓝屏的。
你好,
DM36x的VPFE要求输入的时序是连续不变的。如果输入的时序发生变化,需要复位VPSS。
如果你插拔视频源,TVP5158的输出时序会有变化,这时候需要复位VPSS。
如果强制TVP5158输出蓝屏,当你插上视频源后,TVP5158的输出时序仍然会有变化,这时候仍然需要复位VPSS。
ocean cheng 说:程序不知道改了哪里, 四个视频输入端口,必须在板子启动器插上摄像头,如果在板子启动后插摄像头,则监控没有画面、
for example, 摄像头a插入vin0口,启动板子,监控会有画面,拔掉摄像头a再插到vin0口,仍然能监控,但是如果插入到vin1,则没有监控画面了、怀疑是加载驱动的问题? 但是不知道到程序哪块找了、、、请指个方向~~~~~~~~~~~many many many thanks ~
如果启动前插入摄像头就是好的,说明驱动是没什么问题的。
如果按默认的参数在网络发送时也有这个问题,必须先启动接收,再启动发送才正常。
这些都是由dmai里面的一个参数配置决定的,默认情况下先发一个I帧,然后发一堆P帧,前面的I帧丢了,就不能正常显示,这就是为什么必须先插上摄像头。我找找,稍后发给你
const VIDENC1_DynamicParams Venc1_DynamicParams_DEFAULT = {
//sizeof(IVIDENC1_DynamicParams), /* size */
sizeof(IH264VENC_DynamicParams), /* size */
720, /* inputHeight */
1280, /* inputWidth */
30000, /* refFrameRate */
30000, /* targetFrameRate */
6000000, /* targetBitRate */
30, /* intraFrameInterval */
XDM_ENCODE_AU, /* generateHeader */
0, /* captureWidth */
IVIDEO_NA_FRAME, /* forceFrame */
1, /* interFrameInterval */
0 /* mbDataFlag */
};
/******************************************************************************
* Venc1_create
******************************************************************************/
Venc1_Handle Venc1_create(Engine_Handle hEngine, Char *codecName,
VIDENC1_Params *params,
VIDENC1_DynamicParams *dynParams)
{
Venc1_Handle hVe;
VIDENC1_Status encStatus;
XDAS_Int32 status;
VIDENC1_Handle hEncode;
IH264VENC_DynamicParams *IH264DynParams;
if (hEngine == NULL || codecName == NULL ||
params == NULL || dynParams == NULL) {
Dmai_err0("Cannot pass null for engine, codec name, params or "
"dynamic params\n");
return NULL;
}
/* Allocate space for the object */
hVe = (Venc1_Handle)calloc(1, sizeof(Venc1_Object));
if (hVe == NULL) {
Dmai_err0("Failed to allocate space for Venc1 Object\n");
return NULL;
}
Dmai_dbg5("Creating encoder %s for max %dx%d bitrate %d ratectrl %d\n",
codecName, params->maxWidth, params->maxHeight,
params->maxBitRate, params->rateControlPreset);
/* Create video encoder instance */
hEncode = VIDENC1_create(hEngine, codecName, params);
if (hEncode == NULL) {
Dmai_err2("Failed to open video encode algorithm: %s (0x%x)\n",
codecName, Engine_getLastError(hEngine));
free(hVe);
return NULL;
}
Dmai_dbg3("Setting dynParams size %dx%d bitrate %d\n",
dynParams->inputWidth, dynParams->inputHeight,
dynParams->targetBitRate);
/* Set video encoder dynamic parameters */
encStatus.size = sizeof(VIDENC1_Status);
encStatus.data.buf = NULL;
IH264DynParams = &H264VENC_TI_IH264VENC_DYNAMICPARAMS;
memcpy(IH264DynParams, dynParams, sizeof(VIDENC1_DynamicParams) );
IH264DynParams ->idrFrameInterval = 25;
//status = VIDENC1_control(hEncode, XDM_SETPARAMS, dynParams, &encStatus);
status = VIDENC1_control(hEncode, XDM_SETPARAMS, (VIDENC1_DynamicParams*)IH264DynParams, &encStatus);
...
}