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.

bios6里面的capture的分辨率的宽和高的选择???

Other Parts Discussed in Thread: TVP5158

你好,在CaptureLink_drvCreateInst这个函数里面pVipCreateArgs->inDataFormat = pInstPrm->inDataFormat;这个值我不知道怎么从上面传过来,当我的分辨率大于1080p,它就默认是1080p

Int32 CaptureLink_drvCreateInst(CaptureLink_Obj * pObj, UInt16 instId)
{
CaptureLink_VipInstParams *pInstPrm;
CaptureLink_InstObj *pInst;
Vps_CaptCreateParams *pVipCreateArgs;
Vps_CaptOutInfo *pVipOutPrm;
CaptureLink_OutParams *pOutPrm;
System_LinkChInfo *pQueChInfo;
UInt16 queId, queChId, outId, chId, inWidth, inHeight;
FVID2_ScanFormat inScanFormat;

pInstPrm = &pObj->createArgs.vipInst[instId];
pInst = &pObj->instObj[instId];
pVipCreateArgs = &pInst->createArgs;

pInst->instId = pInstPrm->vipInstId;
pInst->numChPerOutput = pInstPrm->numChPerOutput;
pInst->enableTs = pInstPrm->enableTimestampInInterrupt;

CaptureLink_drvInitCreateArgs(pVipCreateArgs);

pVipCreateArgs->inDataFormat = pInstPrm->inDataFormat;/////////////////////////////////////////////////////////////

#if 1
int i = 100;
while(i--){
Vps_printf("pInstPrm->standard = %d\n",pInstPrm->standard);
}
#endif

memset(&pInst->vidDecCurStatus, 0, sizeof(pInst->vidDecCurStatus));

for(chId=0; chId<VPS_CAPT_CH_PER_PORT_MAX; chId++)
{
pInst->vidDecCurStatus[chId].chId = chId;
pInst->vidDecCurStatus[chId].vipInstId = pInst->instId;
}

if (pInstPrm->videoDecoderId == FVID2_VPS_VID_DEC_TVP5158_DRV)
{
inScanFormat = FVID2_SF_INTERLACED;

if(pObj->createArgs.enableSdCrop)
pInst->maxWidth = 704;
else
pInst->maxWidth = 720;

if (pObj->isPalMode)
pInst->maxHeight = 288;
else
pInst->maxHeight = 240;

inWidth = pInst->maxWidth;
inHeight = pInst->maxHeight;

pVipCreateArgs->videoCaptureMode =
VPS_CAPT_VIDEO_CAPTURE_MODE_MULTI_CH_PIXEL_MUX_EMBEDDED_SYNC;
pVipCreateArgs->videoIfMode = VPS_CAPT_VIDEO_IF_MODE_8BIT;

switch (pInstPrm->standard)
{
case FVID2_STD_CIF:
pInst->maxHeight = pInst->maxHeight/2 ;
inHeight = inHeight/2;
case FVID2_STD_HALF_D1:
pVipCreateArgs->numCh = 1;
pVipCreateArgs->videoCaptureMode =
VPS_CAPT_VIDEO_CAPTURE_MODE_SINGLE_CH_NON_MUX_EMBEDDED_SYNC;
pInst->maxWidth = pInst->maxWidth/2;
inWidth = inWidth/2;
break;
case FVID2_STD_D1:
pVipCreateArgs->numCh = 1;
pVipCreateArgs->videoCaptureMode =
VPS_CAPT_VIDEO_CAPTURE_MODE_SINGLE_CH_NON_MUX_EMBEDDED_SYNC;

// psuedo HD mode
if(pObj->createArgs.fakeHdMode)
{
{
pInst->maxWidth = 1920;
pInst->maxHeight = 1080;
}
}
break;

case FVID2_STD_MUX_2CH_D1:
pVipCreateArgs->numCh = 2;
break;

case FVID2_STD_MUX_4CH_CIF:
pInst->maxHeight /= 2 ;
inHeight = inHeight/2;
case FVID2_STD_MUX_4CH_HALF_D1:
pVipCreateArgs->numCh = 4;
pInst->maxWidth = pInst->maxWidth/2;
inWidth = inWidth/2;
break;
case FVID2_STD_MUX_4CH_960H:
if(pObj->createArgs.enableSdCrop)
{
pInst->maxWidth = 944;
}
else
{
pInst->maxWidth = 960;
}
case FVID2_STD_MUX_4CH_D1:
default:
pVipCreateArgs->numCh = 4;
break;
}
}
else
{
switch (pInstPrm->standard)
{
case FVID2_STD_1080I_60:
inScanFormat = FVID2_SF_INTERLACED;
if (pVipCreateArgs->inDataFormat == FVID2_DF_RGB24_888)
inScanFormat = FVID2_SF_PROGRESSIVE; // since in 24-bit
// discrete sync
// mode FID signal
// is not
// connected in
// board

{
pInst->maxWidth = 1920;
pInst->maxHeight = 540;
}
inWidth = 1920;
inHeight = 540;

break;
case FVID2_STD_720P_60:
inScanFormat = FVID2_SF_PROGRESSIVE;

{
pInst->maxWidth = 1280;
pInst->maxHeight = 720;
}
inWidth = 1280;
inHeight = 720;

break;
case FVID2_STD_576P:
inScanFormat = FVID2_SF_PROGRESSIVE;

{
pInst->maxWidth = 720;
pInst->maxHeight = 576;
}
inWidth = 720;
inHeight = 576;

break;

case FVID2_STD_480I: