DSP

VPORTCAP_Params参数含义详解

2019-07-13 12:52发布

VPORTCAP_Params参数含义详解     以下是关于DSP中RF5结构中视频捕获VPORTCAP_Params结构体数据成员的说明,希望能提供给刚入门的朋友一些帮助: typedef struct {
    Int  cmode;          //捕获模式设置
    Int  fldOp;          //帧和场的操作模式
    Int  scale;          //水平视频数据是否放缩(只对八位的BT656和Y/C有用)
    Int  resmpl;         //水平 {MOD}度数据滤波(只对八位的BT656和Y/C有用)
    Int  bpk10Bit;       //10bit数据打包成64bit数据包的方式(10位数据有效)
    Int  hCtRst;         //水平计数(HCOUNT)复位位置定义
    Int  vCtRst;         //垂直计数(VCOUNT)复位位置定义
    Int  fldDect;        //场检测使能定义
    Int  extCtl;         //使能外部时钟控制
    Int  fldInv;         //场标志 
    Uint16  fldXStrt1;   //奇场列开始位置
    Uint16  fldYStrt1;   //奇场行开始位置
    Uint16  fldXStrt2;   //偶场列开始位置
    Uint16  fldYStrt2;   //偶场行开始位置
    Uint16  fldXStop1;   //奇场列结束位置
    Uint16  fldYStop1;   //奇场行结束位置
    Uint16  fldXStop2;   //偶场列结束位置
    Uint16  fldYStop2;   //偶场行结束位置
    Uint16  thrld;       //指示FIFO的门限值,数据达到门限则出发DMA操作
    Int  numFrmBufs;     //给driver分配的buffer个数
    Int  alignment;      // Buffer对齐字节数
    Int  mergeFlds;      //指定场1和场2 buffer是否在存储器中分开存放
    Int  segId;          //指定driver将buffer分配到的位置
    Int edmaPri;         // edma传输的优先级
    Int irqId;           // edma 中断号
} VPORTCAP_Params;
参数具体说明:
Int  cmode:为vport数据输入格式的选择,定义如下:
#define    VPORT_MODE_BT656_8BIT  0x0      //8位ITU-RBT.656视频捕获端口 #define    VPORT_MODE_BT656_10BIT  0x1     //10位ITU-RBT.656视频捕获端口 #define    VPORT_MODE_RAW_8BIT    0x2      //8位原始数据捕获端口 #define    VPORT_MODE_RAW_10BIT   0x3      //10位原始数据捕获端口 #define    VPORT_MODE_YCBCR_8BIT   0x4     //8位Y/C视频数据捕获端口 #define    VPORT_MODE_YCBCR_10BIT  0x5     //10位Y/C视频数据捕获端口 #define    VPORT_MODE_RAW_16BIT   0x6      //16位原始数据捕获端口 #define    VPORT_MODE_RAW_20BIT   0x7      //20位原始数据捕获端口  
Int  fldOp :帧和场的操作模式,参考选择如下:
VPORT_FLDOP_FLD1                          //只捕获/显示第一场(奇场)
VPORT_FLDOP_FLD2                          //只捕获/显示第二场(偶场)
VPORT_FLDOP_FRAME                         //两场都捕获/显示
VPORT_FLDOP_PROGRESSIVE                   //还不清楚具体含义请指教?

Int  scale:水平视频数据是否放缩(只对八位的BT656和Y/C有用,竖直方向需软件处理)
#define   VPORT_SCALING_DISABLE       0x0        //没影响
#define   VPORT_SCALING_ENABLE        0x1       //水平数据1/2放缩,数据处理如下图:
VPORTCAP_Params参数含义详解
Int  resmpl:水平 {MOD}度数据滤波(只对八位的BT656和Y/C有用)如下图:
#define   VPORT_RESMPL_DISABLE        0x0       //没影响
#define   VPORT_RESMPL_ENABLE         0x1      // {MOD}度信号滤波,数据处理如下图:
VPORTCAP_Params参数含义详解 注:由于篇幅限制,如想了解更详细的情况请参见TI文档spru629 66页。
Int  bpk10Bit:10bit数据打包成64bit数据包的方式,包括:
VPORTCAP_BPK_10BIT_ZERO_EXTENDED     //16位为一个单元剩余单元插入0
VPORTCAP_BPK_10BIT_SIGN_EXTENDED   //16位为一个单元剩余单元插入额外信号?
VPORTCAP_Params参数含义详解
VPORTCAP_BPK_10BIT_DENSE       //密集型存储,存储形式如下图:
VPORTCAP_Params参数含义详解
extCtl和vCtRst 、hCtRst:定义了垂直和水平采样计数器的复位点,含义如下:
当extCtl = 0,vCtRst =0:VCOUNT在场消隐开始时复位
当extCtl = 0,vCtRst =1:VCOUNT在有效行开始时复位
当extCtl = 0,hCtRst =0:HCOUNT在EAV代码结束时复位
当extCtl = 0,hCtRst =1:HCOUNT在SAV代码结束时复位
当extCtl = 1,vCtRst =0,hCtRst =0:VCOUNT、HCOUNT都在VCTL0控制信号的上升沿复位;
当extCtl = 1,vCtRst =1,hCtRst =1:VCOUNT、HCOUNT都在VCTL0控制信号的下降沿复位;
Int  fldDect:场检测使能定义;
Int  fldInv:fldInv = 0,指示场1的开始;fldInv = 1指示场2的开始;使用fldInv输入判断场的方法适合Y/C图像数据流;   fldXStrtn, fldYStrtn, fldXStopn, fldYStopn:决定了捕获的图像帧的窗口中的位置
奇场捕获位置:CRect(Xstart1, Ystart1, Xstop1, Ystop1) 
偶场捕获位置:CRect(Xstart2, Ystart2, Xstop2, Ystop2)
注意:奇偶的Hcount都是从0开始索引(Xstart1,Ystart2 的最小值为0),Ycount都是从1开始索引(Ystart1,Ystart2 的最小值为1)如下图:
VPORTCAP_Params参数含义详解 Uint16  thrld:指示FIFO的门限值,当捕获的数据达到门限值则出发DMA操作 Int  numFrmBufs:给driver分配的buffer个数
Int  alignment:Buffer对齐方式
Int  mergeFlds:指定场1和场2 buffer是否在存储器中分开存放,定义如下宏:      #define VPORT_FLDS_SEPARATED    0      //分开放      #define VPORT_FLDS_MERGED       1      //不分开
Int  segId:指定driver将buffer分配到的位置
Int  edmaPri:edma传输的优先级
Int  irqId:edma 中断号
    以上是本人对VPORTCAP_Params结构体的一些拙见,可能有很多理解错误之处,欢迎指正与交流,谢谢!