本帖最后由 2272943826 于 2016-11-2 15:57 编辑
[quote][url=forum.php?mod=redirect&goto=findpost&pid=38701&ptid=12793]不是吧 发表于 2016-9-29 16:23[/url]
楼主,请问一下我用IMX122,去哪里查询Sensor的接口方式,来修改static HI_VOID viAttrInit配置参数(接口 ...[/quote]
看imx178_vi.c 和 ipc_imx178.c
[code]
static HI_VOID viAttrInit(const IPC_VEDIO_S* pstIpcVedio,VI_ATTR_S **pstViAttr)
{
static combo_dev_attr_t MIPI_CMOS3V3_ATTR =
{
/* input mode */
.input_mode = INPUT_MODE_MIPI,
{
.mipi_attr =
{
RAW_DATA_12BIT,
{0, 1, 2, 3, -1, -1, -1, -1}
}
}
};
static ISP_PUB_ATTR_S ISP_PUB_ATTR =
{
.stWndRect = {0, 0, 1920, 1080},
.f32FrameRate = 30,
.enBayer = BAYER_GBRG,
};
/* the attributes of a VI device */
static VI_DEV_ATTR_S VI_DEV_ATTR =
{
.enIntfMode = VI_MODE_LVDS, /* input mode */
.enWorkMode = VI_WORK_MODE_1Multiplex, /*1-, 2-, or 4-channel multiplexed work mode */
.au32CompMask = {0xFFC00000, 0x0}, /* r_mask g_mask b_mask*/
.enScanMode = VI_SCAN_PROGRESSIVE, /* Input scanning mode (progressive or interlaced) */
.s32AdChnId = {-1, -1, -1, -1}, /* AD channel ID. Typically, the default value -1 is recommended */
/* The below members must be configured in BT.601 mode or DC mode and are invalid in other modes */
.enDataSeq = VI_INPUT_DATA_YUYV, /* Input data sequence (only the YUV format is supported) */
.stSynCfg =
{
VI_VSYNC_PULSE, /*Vsync*/
VI_VSYNC_NEG_LOW, /*VsyncNeg*/
VI_HSYNC_VALID_SINGNAL, /*Hsync*/
VI_HSYNC_NEG_HIGH, /*HsyncNeg*/
VI_VSYNC_VALID_SINGAL, /*VsyncValid*/
VI_VSYNC_VALID_NEG_HIGH,/*VsyncValidNeg*/
/*The below TimingBlank only for BT.601*/
/*hsync_hfb hsync_act hsync_hhb*/
{0, 1920, 0,
/*vsync0_vhb vsync0_act vsync0_hhb*/
0, 1080, 0,
/*vsync1_vhb vsync1_act vsync1_hhb*/
0, 0, 0}
},
.enDataPath = VI_PATH_ISP, /* ISP enable or bypass */
.enInputDataType = VI_DATA_TYPE_RGB,/* RGB: CSC-709 or CSC-601, PT YUV444 disable; YUV: default yuv CSC coef PT YUV444 enable. */
.bDataRev = HI_FALSE, /* Data Reverse */
.stDevRect = {0, 30, 1920, 1080} /* Dev capture rect */
};
static VI_DEV_ATTR_EX_S VI_DEV_ATTR_EX =
{
.enInputMode = VI_INPUT_MODE_LVDS, /* Interface mode */
.enWorkMode = VI_WORK_MODE_1Multiplex, /*1-, 2-, or 4-channel multiplexed work mode */
.enCombineMode = VI_COMBINE_COMPOSITE, /* Y/C composite or separation mode */
.enCompMode = VI_COMP_MODE_SINGLE, /* Component mode (single-component or dual-component) */
.enClkEdge = VI_CLK_EDGE_SINGLE_DOWN, /* Clock edge mode (sampling on the rising or falling edge) */
.au32CompMask = {0xFFC00000, 0x0}, /* r_mask g_mask b_mask*/
.enScanMode = VI_SCAN_PROGRESSIVE, /* Input scanning mode (progressive or interlaced) */
.s32AdChnId = {-1, -1, -1, -1}, /* AD channel ID. Typically, the default value -1 is recommended */
/* The below members must be configured in BT.601 mode or DC mode and are invalid in other modes */
.enDataSeq = VI_INPUT_DATA_YUYV, /* Input data sequence (only the YUV format is supported) */
.stSynCfg =
{
VI_VSYNC_PULSE, /*Vsync*/
VI_VSYNC_NEG_LOW, /*VsyncNeg*/
VI_HSYNC_VALID_SINGNAL, /*Hsync*/
VI_HSYNC_NEG_HIGH, /*HsyncNeg*/
VI_VSYNC_VALID_SINGAL, /*VsyncValid*/
VI_VSYNC_VALID_NEG_HIGH,/*VsyncValidNeg*/
/*The below TimingBlank only for BT.601*/
/*hsync_hfb hsync_act hsync_hhb*/
{0, 1920, 0,
/*vsync0_vhb vsync0_act vsync0_hhb*/
0, 1080, 0,
/*vsync1_vhb vsync1_act vsync1_hhb*/
0, 0, 0}
},
.stBT656SynCfg = {BT656_FIXCODE_1,BT656_FIELD_POLAR_STD}, /* Sync timing. This member must be configured in BT.656 mode */
.enDataPath = VI_PATH_ISP, /* ISP enable or bypass */
.enInputDataType = VI_DATA_TYPE_RGB,/* RGB: CSC-709 or CSC-601, PT YUV444 disable; YUV: default yuv CSC coef PT YUV444 enable. */
.bDataRev = HI_FALSE, /* Data Reverse */
.stDevRect = {0, 30, 1920, 1080} /* Dev capture rect */
};
/* the attributes of a VI channel */
static VI_CHN_ATTR_S VI_CHN_ATTR =
{
.stCapRect = {0, 0, 1920, 1080},
.stDestSize = {1920, 1080},
.enCapSel = VI_CAPSEL_BOTH,
.enPixFormat = PIXEL_FORMAT_YUV_SEMIPLANAR_420,
.enCompressMode = COMPRESS_MODE_NONE,
.bMirror = HI_FALSE,
.bFlip = HI_FALSE,
.s32SrcFrameRate = -1,
.s32DstFrameRate = -1
};
static VI_ATTR_S VI_ATTR =
{
.IspDev = 0,
.ViDev = 0,
.u32ChnNum = 1,
.enWDRMode = WDR_MODE_NONE,
//.pstcomboDevAttr = &LVDS_4lane_SENSOR_IMX178_10BIT_WDR_ATTR,
.pstcomboDevAttr = &LVDS_4lane_SENSOR_IMX178_12BIT_NORMAL_ATTR, // test it
.pstIspPubAttr = &ISP_PUB_ATTR,
.pstViDevAttr = &VI_DEV_ATTR,
.pstViDevAttrEx = &VI_DEV_ATTR_EX,
.pstChnAttr = &VI_CHN_ATTR
};
/*sync isp pub attr*/
VI_ATTR.pstIspPubAttr->stWndRect.u32Width = pstIpcVedio->astStreamFmt[0].stSize.u32Width;
VI_ATTR.pstIspPubAttr->stWndRect.u32Height = pstIpcVedio->astStreamFmt[0].stSize.u32Height;
VI_ATTR.pstIspPubAttr->f32FrameRate = pstIpcVedio->astStreamFmt[0].f32FrameRate;
/*sync vi dev attr*/
VI_ATTR.pstViDevAttr->stDevRect.u32Width = pstIpcVedio->astStreamFmt[0].stSize.u32Width;
VI_ATTR.pstViDevAttr->stDevRect.u32Height = pstIpcVedio->astStreamFmt[0].stSize.u32Height;
//VI_ATTR.pstViDevAttrEx->stDevRect.u32Width = pstIpcVedio->astStreamFmt[0].stSize.u32Width;
//VI_ATTR.pstViDevAttrEx->stDevRect.u32Height = pstIpcVedio->astStreamFmt[0].stSize.u32Height;
/*sync vi chn attr*/
VI_ATTR.pstChnAttr->stCapRect.s32X = (1920-pstIpcVedio->astStreamFmt[0].stSize.u32Width)/2;
VI_ATTR.pstChnAttr->stCapRect.s32Y = (1080-pstIpcVedio->astStreamFmt[0].stSize.u32Height)/2;
VI_ATTR.pstChnAttr->stCapRect.u32Width = pstIpcVedio->astStreamFmt[0].stSize.u32Width;
VI_ATTR.pstChnAttr->stCapRect.u32Height = pstIpcVedio->astStreamFmt[0].stSize.u32Height;
VI_ATTR.pstChnAttr->stDestSize.u32Width = pstIpcVedio->astStreamFmt[0].stSize.u32Width;
VI_ATTR.pstChnAttr->stDestSize.u32Height = pstIpcVedio->astStreamFmt[0].stSize.u32Height;
VI_ATTR.pstChnAttr->enPixFormat = pstIpcVedio->e_pixFmt;
/*sync wdr mode*/
VI_ATTR.enWDRMode = pstIpcVedio->e_wdrMode;
*pstViAttr = &VI_ATTR;
}[/code]