关于解码芯片SAA7115及7105的配置 ,FVID与微驱动

本文详细介绍了解码芯片SAA7115和SAA7105在视频处理中的配置,包括结构体定义、关键参数解释,如输入输出模式、场操作、缩放、数据打包模式等。内容涵盖DM642驱动例程中涉及的配置参数,以及如何通过结构体配置SAA7115和SAA7105的模拟输出模式、输入格式和同步信号设置,为视频处理提供参考。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近因为在做视频处理,所以和解码芯片打交道很多,但因为解码芯片的datasheet很多内容(又是英文的,汗),所以根据DM642的例程总了一些应该配置的东西.

注:以下的配置均是指AV信号输入,PAL制式输出的条件

 

(一)关于SAA7115(基于TI的驱动)

 

结构体定义如下:
typedef struct {
Int cmode; /* capture mode settings */
Int fldOp; /* field & frame operation */

/* bit 8-15 */
Int scale; /* indicate whether to enable 1/2 scaling */
Int resmpl; /* indicate whether to enable choroma */
/* sub-sampling */
Int bpk10Bit; /* 10-bit bit-pack mode */

/* bit 16-23 */
Int hCtRst; /* horizontal counter reset mode */
Int vCtRst; /* vertical counter reset mode */
Int fldDect; /* enable whether to use FID input or field */
/* detection logic based on the timing */
/* relation of hsync and vsync */
Int extCtl; /* enable external timing control */
Int fldInv; /* enable inversion of the detected fid */

Uint16 fldXStrt1; /* field 1 X start */
Uint16 fldYStrt1; /* field 1 Y start */
Uint16 fldXStrt2; /* field 2 X start */
Uint16 fldYStrt2; /* field 2 Y start */
Uint16 fldXStop1; /* field 1 X stop */
Uint16 fldYStop1; /* field 1 Y stop */
Uint16 fldXStop2; /* field 2 X stop */
Uint16 fldYStop2; /* field 2 Y stop */
Uint16 thrld; /* video FIFO threshold */

 

/* frame buffer settings */
Int numFrmBufs; /* number of frame buffers that the driver allocates */
Int alignment; /* frame buffer alignment */
Int mergeFlds; /* indicate to interleave data of the two fields in memory */
/* or just store them seperated */
Int segId; /* memory segment ID, used by MEM_alloc() to allocate */
/* video frame buffer */
/* EDMA priority */
Int edmaPri; /* channel EDMA priority */

Int irqId;
} VPORTCAP_Params;
现在对其中一些关键信息进行注释:
Cmode 为vport数据输入格式的选择,如图所示:

Int fldOp :帧和场的操作模式,在vport.h中定义,参考选择如下:
? VPORT_FLDOP_FLD1
? VPORT_FLDOP_FLD2
? VPORT_FLDOP_FRAME
? VPORT_FLDOP_PROGRESSIVE

Scale和resample的设置(具体操作见spru629 66页):

Int bpk10Bit; /* 10-bit bit-pack mode */
10bit数据打包成64bit数据包的方式,包括:
? VPORTCAP_BPK_10BIT_ZERO_EXTENDED
? VPORTCAP_BPK_10BIT_SIGN_EXTENDED
? VPORTCAP_BPK_10BIT_DENSE

HOUNT=0,VOUNT=1
Xstart~Xstop定义图像的宽度
Ystart~Ystop定义图像的高度
以上4个参数决定了捕获的图像帧的窗口中的位置
Uint16 thrld; /* video FIFO threshold */
指示FIFO的门限值,当捕获的数据达到门限值则出发DMA操作
如下图所示:

Int extCtl; /* enable external timing control */
Int vCtRst; /* vertical counter reset mode */
Exc和vrst定义了图象捕获中垂直计数器的复位点,如下图所示:

Int hCtRst; /* horizontal counter reset mode */
Exc和hrst定义了水平采样计数器的复位点:

当EXC=0,VRST=0:VCOUNT在场消隐开始时复位
当EXC=0,VRST=1:VCOUNT在有效行开始时复位
当EXC=0,HRST=0:HCOUNT在EAV代码结束时复位
当EXC=0,HRST=1:HCOUNT在SAV代码结束时复位
当EXC=1,VRST=0,HRST=0时,VCOUNT和HCOUNT都是在VCTL0控制信号的上升沿进行复位;VRST=1,HRST=1时,VCOUNT和HCOUNT都是VCTL0控制信号的下降沿复位

Int fldDect; 场检测使能定义
FID:FID=0,指场一的开始;FID=1指示场2的开始;使用FID输入判断场的方法适合Y/C图像数据流;

SAA7115_ConfParams EVMDM642_vCapParamsSAA7115 = {
SAA7115_MODE_NTSC720,
SAA7115_MODE_USER,
SAA7115_AFMT_COMPOSITE,
TRUE,
TRUE,
INV,
LIN

E_SZ,
NUM_LINES*2,
TRUE,
};

 

typedef struct {
SAA7115_Mode inMode;
SAA7115_Mode outMode;
SAA7115_AnalogFormat aFmt;
Bool enableBT656Sync;
Bool enableIPortOutput;
I2C_Handle hI2C;

/* optional parameters for inMode == SAA7115_MODE_USER */
Int hSize;
Int vSize;
Bool interlaced;
} SAA7115_ConfParams; (saa7115.h)

SAA7115_Mode的inMode和outMode可以是下面结构体定义的其中之一;

typedef enum SAA7115_Mode{
SAA7115_MODE_NTSC640,
SAA7115_MODE_NTSC720,
SAA7115_MODE_PAL720,
SAA7115_MODE_PAL768,
SAA7115_MODE_CIF,
SAA7115_MODE_QCIF,
SAA7115_MODE_SQCIF,
SAA7115_MODE_SIF
SAA7115_MODE_USER
}SAA7115_Mode;

SAA7115_AnalogFormat aFmt;(saa7115.h)指定编码器的模拟输出模式
typedef enum SAA7115_AnalogFormat {
SAA7115_AFMT_SVIDEO,
SAA7115_AFMT_COMPOSITE
} SAA7115_AnalogFormat;

Bool enableBT656Sync; 把ITU-R BT.656中定义的SAV/EAV代码插入到输出图像数据流
Bool enableIPortOutput; 选择图像数据的输出端口为I-PORT还是X-PORT
Int hSize; & Int vSize; 分别定义图像的水平宽度和垂直高度
Bool interlaced; 指定用户定义的图像采用interlaced模式或者progressive模式

 

 

在TI的例程里有一个结构体,里面有对7115需要配置的项目

SAA7115_ConfParams EVMDM642_vCapParamsSAA7115 = {
  SAA7115_MODE_PAL720,
  SAA7115_MODE_PAL720,
  SAA7115_AFMT_COMPOSITE,
  TRUE,
  TRUE,
  INV,                   /*handleI2C */
};

这个结构体的原形在头文件saa7115.h中定义

typedef struct {
    SAA7115_Mode inMode;
    SAA7115_Mode outMode;
    SAA7115_AnalogFormat aFmt;
    Bool enableBT656Sync;
    Bool enableIPortOutput;
    I2C_Handle hI2C;

    /* optional parameters for inMode == SAA7115_MODE_USER  */
    Int hSize;
    Int vSize;
    Bool interlaced;   
} SAA7115_ConfParams;

(1)inMode 定义为视频输出格式(在saa7115.h中定义)

typedef enum SAA7115_Mode {
   

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值