📄 at2042_inf-old.c
字号:
{
volatile unsigned short id_conf;
volatile unsigned short OPT=1;
#ifdef VIDEO_ONLY
id_conf = RxID(GID_ENCODER, 0x00, 0x03, W_FLAG);
*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = id_conf;
*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = VIDEO_ONLY;
#endif
AT2042_DELAY(100000);
/*20041004_1*/
/*adds "reference picture selection" function for network camera application*/
/*GID=4,CID=0,PID=0x11*/
/*Data0[0]*/
/*0 : Last I/P-Picture Reference mode (default, ISO standard)*/
/*1 : I-Picture Reference mode (non ISO standard)*/
if (opt<=0) {
OPT=0;
/* GOP Structure : 0x07 */
id_conf = RxID(GID_ENC_VIDEO_CH, 0x00, 0x07, W_FLAG);
*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = id_conf;
*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = 1; // closed gop
*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = MAX_FRAME_IPB; // n/m //IP
*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = 1; // m
printk ("[I-Picture Reference mode OFF]\n");
}
else {
OPT=1;
/* GOP Structure : 0x07 */
id_conf = RxID(GID_ENC_VIDEO_CH, 0x00, 0x07, W_FLAG);
*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = id_conf;
*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = 1; // closed gop
*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = MAX_FRAME_IPB; // n/m //IP
*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = 1; // m
printk ("[I-Picture Reference mode ON]\n");
}
id_conf = RxID(GID_ENC_VIDEO, 0x00, 0x11, W_FLAG);
*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = id_conf;
*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = OPT;
AT2042_DELAY(100000);
#ifdef VIDEO_ONLY
id_conf = RxID(GID_ENCODER, 0x00, 0x02, W_FLAG);
*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = id_conf;
*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = VIDEO_ONLY;
#endif
return ;
}
static void set_enc_mode (unsigned short mode)
{
volatile unsigned short id_conf;
volatile unsigned short MODE=1;
#ifdef VIDEO_ONLY
id_conf = RxID(GID_ENCODER, 0x00, 0x03, W_FLAG);
*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = id_conf;
*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = VIDEO_ONLY;
#endif
AT2042_DELAY(100000);
if (mode<=0) {
MODE=0;
printk ("[ENC_MODE : VBR]\n");
}
else {
MODE=1;
printk ("[ENC_MODE : CBR]\n");
}
/* Rate Control Mode : CBR : VBR */
id_conf = RxID(GID_ENC_VIDEO_CH, 0x00, 0x04, W_FLAG);
*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = id_conf;
*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = MODE; //0:VBR 1~2:CBR
AT2042_DELAY(100000);
#ifdef VIDEO_ONLY
id_conf = RxID(GID_ENCODER, 0x00, 0x02, W_FLAG);
*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = id_conf;
*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = VIDEO_ONLY;
#endif
return ;
}
static void set_res (unsigned short res, unsigned short frm)
{
volatile unsigned short id_conf;
volatile unsigned short frame_rate;
#ifdef VIDEO_ONLY
id_conf = RxID(GID_ENCODER, 0x00, 0x03, W_FLAG);
*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = id_conf;
*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = VIDEO_ONLY;
#endif
AT2042_DELAY(100000);
if (res==RES_MODE_DI) /*RES_MODE_DI*/
{
/* Input Video Format : 0x01 */
id_conf = RxID(GID_ENC_VIDEO, 0x00, 0x01, W_FLAG);
*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = id_conf;
*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = 720; // hor_size
if (PAL_NTSC==NTSC) {
*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = 480; // ver_size
*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = 4; // video_input_rate 30000/10001
*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = 0; // field_mode (d1=>interlaced '0')
//printk ("[Input video Format 720, 480, 4, 0]\n");
}
else {
*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = 576; // ver_size
*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = 3; // video_input_rate 25
*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = 0; // field_mode (d1=>interlaced '0')
//printk ("[Input video Format 720, 576, 3, 0]\n");
}
/*Input video scale mode*/
id_conf = RxID(GID_ENC_VIDEO_CH, 0x00, 0x22, W_FLAG);
*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = id_conf;
*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = 0; // hor_scale 1
*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = 0; // ver_scale 1
//printk ("[Input video scale mode : 100, 100]\n");
/*Encoding region information*/
id_conf = RxID(GID_ENC_VIDEO_CH, 0x00, 0x23, W_FLAG);
*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = id_conf;
*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = 0; //hor_offset 0
*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = 0; //ver_offset 0
*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = (720>>4); //hor_MB 45
if (PAL_NTSC==NTSC) { /*NTSC D1*/
*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = (480>>4); //ver_MB 30
printk ("[RESOLUTION : NTSC 720x480]\n");
}
else { /*PAL D1*/
*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = (576>>4); //ver_MB 30
printk ("[RESOLUTION : PAL 720x576]\n");
}
id_conf = RxID(GID_ENC_VIDEO_CH, 0x00, 0x24, W_FLAG);
*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = id_conf;
*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = 1; //Input frames
*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = 1; //recoded frames
/*Recoding frame rate control*/
if (frm>=30) frame_rate=30;
else if (frm<=1) frame_rate=1;
else frame_rate=frm;
printk ("[FRAME_RATE : %d/SEC]\n" , frame_rate);
#if 0
/* Zoomin */
id_conf = RxID(GID_DEC_VIDEO, 0, 0x10, W_FLAG);
*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = id_conf;
*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = (0 |0); //hor_zoom |ver_zoom
printk ("[Zoomin : OFF]\n");
#endif
#if 0 /*2005-01-07*/
/*Rescale*/
id_conf = RxID(GID_DEC_VIDEO_CH, 0x00, 0x10, W_FLAG);
*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = id_conf;
*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = 4;// 2/3 Hor scale
*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = 4;// 2/3 Ver scale
//printf ("[Display Rescale]\n");
/*Deocding video offset*/
id_conf = RxID(GID_DEC_VIDEO_CH, 0x00, 0x11, W_FLAG);
*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = id_conf;
*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = (0x0c);// Hor offset
*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = (0x08);// Ver offset
#else /*2005-01-18*/
/*Rescale*/
id_conf = RxID(GID_DEC_VIDEO_CH, 0x00, 0x10, W_FLAG);
*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = id_conf;
*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = 0;// 1/1 Hor scale
*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = 0;// 1/1 Ver scale
//printf ("[Display Rescale]\n");
/*Deocding video offset*/
id_conf = RxID(GID_DEC_VIDEO_CH, 0x00, 0x11, W_FLAG);
*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = id_conf;
*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = (0x00);// Hor offset
*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = (0x00);// Ver offset
#endif
}
else /*RES_MODE_CIF*/
{
/* Input Video Format : 0x01 */
id_conf = RxID(GID_ENC_VIDEO, 0x00, 0x01, W_FLAG);
*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = id_conf;
*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = 720; // hor_size
if (PAL_NTSC==NTSC) {
*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) =480; // ver_size
*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = 7; // video_input_rate 60000/10001
*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = 1; // field_mode (d1=>progressive '1')
//printk ("[Input video Format 720, 480, 4, 0]\n");
}
else {
*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) =576; // ver_size
*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = 6; // video_input_rate 50
*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = 1; // field_mode (d1=>progressive '1')
//printk ("[Input video Format 720, 576, 3, 0]\n");
}
/*Input video scale mode*/
id_conf = RxID(GID_ENC_VIDEO_CH, 0x00, 0x22, W_FLAG);
*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = id_conf;
*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = 2; // hor_scale 1/2
*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = 0; // ver_scale 1/1 progressive
//*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = 1; // ver_scale 1/2 interace
//printk ("[Input video scale mode 50, 100]\n");
/*Encoding region information*/
id_conf = RxID(GID_ENC_VIDEO_CH, 0x00, 0x23, W_FLAG);
*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = id_conf;
*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = 0; //hor_offset 0
*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = 0; //ver_offset 0
*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = (360>>4); //hor_MB 0x16
if (PAL_NTSC==NTSC) { /*NTSC CIF*/
*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = (240>>4); //ver_MB 0x0F
printk ("[RESOLUTION : NTSC 360x240]\n");
}
else { /*PAL CIF*/
*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = (288>>4); //ver_MB 0x12
printk ("[RESOLUTION : PAL 360x288]\n");
}
id_conf = RxID(GID_ENC_VIDEO_CH, 0x00, 0x24, W_FLAG);
*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = id_conf;
*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = 2; //Input frames
*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = 1; //recoded frames
/*Recoding frame rate control*/
if (frm>=30) frame_rate=30;
else if (frm<=1) frame_rate=1;
else frame_rate=frm;
printk ("[FRAME_RATE : %d/SEC]\n" , frame_rate);
#if 0
/* Zoomin */
id_conf = RxID(GID_DEC_VIDEO, 0, 0x10, W_FLAG);
*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = id_conf;
*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = (1 |2); //hor_zoom | ver_zoom
printk ("[Zoomin : ON]\n");
#endif
#if 0 /*2005-01-07*/
/*Rescale*/
id_conf = RxID(GID_DEC_VIDEO_CH, 0x00, 0x10, W_FLAG);
*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = id_conf;
*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = 0;// 1/1 Hor scale
*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = 0;// 1/1 Ver scale
//printf ("[Display Rescale]\n");
/*Deocding video offset*/
id_conf = RxID(GID_DEC_VIDEO_CH, 0x00, 0x11, W_FLAG);
*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = id_conf;
*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = (0x15);// Hor offset
*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = (0x0d);// Ver offset
#else /*2005-01-18*/
/*Rescale*/
id_conf = RxID(GID_DEC_VIDEO_CH, 0x00, 0x10, W_FLAG);
*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = id_conf;
*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = 0;// 1/1 Hor scale
*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = 0;// 1/1 Ver scale
//printf ("[Display Rescale]\n");
/*Deocding video offset*/
id_conf = RxID(GID_DEC_VIDEO_CH, 0x00, 0x11, W_FLAG);
*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = id_conf;
*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = (0x00);// Hor offset
*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = (0x00);// Ver offset
#endif
}
AT2042_DELAY(100000);
#ifdef VIDEO_ONLY
for (id_conf=0;id_conf<20;id_conf++) {AT2042_DELAY(100000);}
id_conf = RxID(GID_ENCODER, 0x00, 0x02, W_FLAG);
*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = id_conf;
*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = VIDEO_ONLY;
#endif
return ;
}
/* decoder parameters */
void video_decoder_cfg(void)
{
volatile unsigned short id_conf;
#ifdef VIDEO_ONLY
id_conf = RxID(GID_ENCODER, 0x00, 0x03, W_FLAG);
*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = id_conf;
*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = VIDEO_ONLY;
#endif
AT2042_DELAY(100000);
id_conf = RxID(GID_DEC_AUDIO, 0, 0x01, W_FLAG);
*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = id_conf;
*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = 9;
id_conf = RxID(GID_DEC_AUDIO, 0, 0x03, W_FLAG);
*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = id_conf;
*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = 0;
*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = 1;
*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = 0;
id_conf = RxID(GID_DEC_AUDIO, 0, 0x04, W_FLAG);
*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = id_conf;
*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = 0;
id_conf = RxID(GID_DEC_AUDIO, 0, 0x05, W_FLAG);
*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = id_conf;
*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = 0;
id_conf = RxID(GID_DEC_AUDIO, 0, 0x06, W_FLAG);
*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = id_conf;
*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = 64;
id_conf = RxID(GID_DEC_AUDIO, 0, 0x07, W_FLAG);
*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = id_conf;
*((unsigned short *)((unsigned int)fifo_reg + AT2041_RX_FIFO)) = 0;
printk ("[video_decoder_cfg]\n");
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -