亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? video.cpp

?? Vxworks 下的視頻采集程序
?? CPP
字號:
#include <vxworks.h>
#include<stdio.h>
#include<STDLIB.H>
#include<iostream.h>
#include<time.h>
#include"video.h"
#include"head.h"
#include"xdefine.h"
#include"data.h"
#include"w99200.h"
#define REL_MASTER_BUFFER_SIZE 4096
       
//extern int W99200WriteReg(int index, int value);
//extern int W99200ReadReg(int index);
//extern int W99200IMEM_Write(int Mem);
//extern int W99200FIFO_Thr(void);
//extern int W99200FIFO_End(void);
//extern int W99200I2CWrite(int Subadrs, int * Value, UINT Count);
//extern int W99200Inpdw(DWORD Port);

//extern DWORD  _ulAIR=0L;     // Address Index Register
//extern DWORD  _ulDPR=4L ;    // Data Port Register 
//extern DWORD  _ulODPR=8L ;   // the Output port of the Output-FIFO
//int _dMem_Data[64];// 4*64=256 Bytes
//int _dSDRAM_Data[2052]; // 2048*4=8192 Bytes
//int _dAUDIO_Data[32]; // 32*4=128 Bytes
//int _dDef_Regs[135];  // Default Value of Registers

int UTL_SET_I2CVIDEO(void)
{
  FILE *fp;
  int dIndex,dValue;
  int dCount,i;
  dIndex=0;
  dValue=0;
  dCount=0; 
  if ( _VideoStard == 0 ) // NTSC 
  {
    if( (fp = fopen( "I2C_114N.IN", "r+" )) == NULL )
    {
        printf( "The file 'I2C_114N.IN' was not opened\n" );
        return 0;
    }        
  } 
  else
  {
    if( (fp = fopen( "I2C_114P.IN", "r+" )) == NULL )
    {
        printf( "The file 'I2C_114P.IN' was not opened\n" );
        return 0;
    }
  }
    
  fscanf(fp,"%d",&dCount); // Read the Count of Data
  for ( i=0 ; i < dCount ; i++ )
  {
    fscanf(fp,"%x %x",&dIndex, &dValue); // Read the index and value  
    //printf(" Write I2C(114), index->%x,%x\n",dIndex,dValue);
    if(W99200I2CWrite(dIndex,&dValue,1)==FALSE)return 0;
  }
  fclose(fp);
  return 1;   
           
} 
int UTL_LVE(char *szFileName, int dwLimit, int iUseMaster)
{   

// ##### for Maste mode buffer
   unsigned int flag=0;
   char _cc0[REL_MASTER_BUFFER_SIZE+4], _cc1[REL_MASTER_BUFFER_SIZE+4];
   void *_pp0 = _cc0, *_pp1 = _cc1;
   char *_pcc0 = _cc0, *_pcc1 = _cc1;
   unsigned int _ulSeg, _ulOff, _ulAddr0, _ulAddr1;
// ##### for Maste mode buffer 
   int dRead=0; 
   int iMBufferIndex=0; 
   int key;
   int done=FALSE;
   int i;
   FILE *fp1; // Output file
   int *pRam;
   int j;  
   clock_t start_time,end_time;
   key=0;
   static int iFileCount = 0; 
   int nTemp=0;
   
   if (_LVE_Bitrate==0)
    _LVE_Bitrate=1024000;
   
   W99200WriteReg( PCR,0x61 ); 
   W99200WriteReg( PCR,0x60 );  
   for ( j=0 ; j < 4096 ; j++)
   {
      _cc0[j]= _cc1[j]=0;
   } 

    if (szFileName==NULL)
    {
//        printf("invalid filename!");
        return FALSE;
    }
   fp1=fopen(szFileName,"wb");
   if ( fp1==NULL)
   {
       printf(" \n encoding file open error !!! ");
       return FALSE;
   }

   // Set SAA7114
   if(UTL_SET_I2CVIDEO()==0)return 0;
   else printf("init ok!\n");

   // #### Video Reset          
   W99200WriteReg(Video_reset, 0xFF);//any data 

   // #### Initial the Internal memory:index 01~04 and 0c 

   BYTE DefaultRam[] = 
   {
     #include "Ram.h"
   };
   // index: 00~04  256 bytes
   for ( i=0 ; i < 5 ; i++)
   {
     pRam=(int *)(DefaultRam+(i*256));
     for ( j=0 ; j < 64 ; j++)
     {
        _dMem_Data[j]=*(pRam+j);
     }
     W99200IMEM_Write(i);
   } 
   // index: 0c  128 bytes
   pRam=(int *)(DefaultRam+(5*256));
   for ( j=0 ; j < 32 ; j++)
   {
        _dMem_Data[j]=*(pRam+j);
   }
   W99200IMEM_Write(0x0c); 
   
   // index:06    128 bytes 
   pRam=(int *)(DefaultRam+(6*256));
   for ( j=0 ; j < 32 ; j++)
   {
        _dMem_Data[j]=*(pRam+j);
   }
   W99200IMEM_Write(0x06);
     
   //5. Soft Reset          
   W99200WriteReg(Video_reset, 0xFF);//any data 

   //6. Configuration

   W99200WriteReg(Vint_enable, 0x00);
   W99200WriteReg(Vthreshold, 0x0f);// 60=15*4 int  
   W99200WriteReg(Vwork_mode,0x00); 
   if ( _LVE_PictureResoultion ==1 && _VideoStard==0) //NTSC,SIF 
      W99200WriteReg(Video_format,0x01); // SIF
   if ( _LVE_PictureResoultion ==2 && _VideoStard==0) //NTSC,QSIF
      W99200WriteReg(Video_format,0x02); // QSIF
   if ( _LVE_PictureResoultion ==1 && _VideoStard==1) //SQUARE,SIF 
      W99200WriteReg(Video_format,0x05); // SIF
   if ( _LVE_PictureResoultion ==2 && _VideoStard==1) //SQUARE,QSIF
      W99200WriteReg(Video_format,0x06); // QSIF      
   if ( _LVE_PictureResoultion ==1 && _VideoStard==2) //PAL,SIF 
      W99200WriteReg(Video_format,0x09); // SIF
   if ( _LVE_PictureResoultion ==2 && _VideoStard==2) //PAL,QSIF
      W99200WriteReg(Video_format,0x0a); // QSIF
   W99200WriteReg(Venc_cntl,0x6c);
          
   W99200WriteReg(Vframe_pattern,0x12);
   _LVE_Bitrate=_LVE_Bitrate/400; 
   int rate_m;
   int rate_l;
   rate_m= _LVE_Bitrate >> 8;
   rate_l= _LVE_Bitrate & 0x000000FF;
   W99200WriteReg(Vbit_rate_m,rate_m); // Bit-rate
   W99200WriteReg(Vbit_rate_l,rate_l); //
   W99200WriteReg(Vbv_size,0x32);//0x14);
   W99200WriteReg(Vbv_initial,0x31);//0x13);
   W99200WriteReg(Vquality,_Quality);    // 01(High) ~ 1F (Low) 
   W99200WriteReg(Vslice_header,0x01);
   W99200WriteReg(Vgop_header,0x01); 
   W99200WriteReg(Vit_hour,0x00);
   W99200WriteReg(Vit_minute,0x00);
   W99200WriteReg(Vit_second,0x00);
   W99200WriteReg(Vit_frame,0x00); 

   W99200WriteReg(Vin_offset,0x00);//00);
      
   if ( _LVE_RC_Mtehod == 0 ) // Constant Bitrate
      W99200WriteReg(Venc_cntl,0x4c);
    if ( _LVE_RC_Mtehod == 1 ) // Maximum Bitrate  
      W99200WriteReg(Venc_cntl,0x4d);
   if ( _LVE_RC_Mtehod == 2 ) // Variable Bitrate 
      W99200WriteReg(Venc_cntl,0x4e);  
   W99200WriteReg(Vin_picture,0x00);

   // #### for Master mode
   if ( iUseMaster == 1 )
   {
   // ##### Allocate Master Mode Buffer0  
//       _ulSeg = _FP_SEG(_pp0);
//       _ulOff = _FP_OFF(_pp0);
//       _ulAddr0 = (_ulSeg << 4) + _ulOff;
	_ulAddr0=_pp0;
       for( i = 1; i < 4; i ++ )    // Find the 4 address
       {
          if((_ulAddr0 & 0x0003L) == 0)
              break;
          _ulAddr0 ++;
          _pcc0 ++;
       }
   // ##### Allocate Master Mode Buffer1
//       _ulSeg = _FP_SEG(_pp1);
//       _ulOff = _FP_OFF(_pp1);
//       _ulAddr1 = (_ulSeg << 4) + _ulOff;
	_ulAddr1=_pp1;
       for( i = 1; i < 4; i ++ )    // Find the 4 address
       {
          if((_ulAddr1 & 0x0003L) == 0)
              break;
          _ulAddr1 ++;
          _pcc1 ++;
       }
      // ##### Set W99200 register for master mode
      W99200WriteReg(Vthreshold, 0x000F);// 15*4 double-word(60*4 bytes)
      W99200WriteReg(BBSR,0x03FB03FBL);  // Buffer Size -1 ( 1020-1 =1019=0x03FB ) uint is int 
                                         // Buffer Size must be multiple of threshold level int
                                         // So 1024/60=17.066 Buffer Size= 17*60=1020     
      // ##### Buffer 0
      W99200WriteReg(BBSAR0, _ulAddr0); // Main Memory address (Buffer0)
      W99200WriteReg(BBSTR0,0x03);      // Buffer ready
      // ##### Buffer 1
      W99200WriteReg(BBSAR1, _ulAddr1); // Main Memory address (Buffer1)
      W99200WriteReg(BBSTR1,0x03);      // Buffer ready
      // ##### Open Master Enable
      W99200WriteReg(PCICR,0x02);     
   }

     //7. VStart Command
   W99200WriteReg(Vstart,0xff); // any data
   start_time=clock();
   if ( dwLimit == 0) // No Time Limit=> until Press 'S'
   {
 /*       printf(" \n Press 's' or 'S' to stop live video encoding\n");
        do
        {
            
            key=_bios_keybrd(_KEYBRD_READY)&0xff;
            if (key!=0 ) // any key is pressed
            {
                  key=_bios_keybrd(_KEYBRD_READ)&0xff;
                  if((key=='S')||(key=='s') ) // "s" key is pressed
                  {
                        W99200WriteReg(Vstop,0xff);//9. Stop command
                  }
            }
            //8. Reverse Data transfer + handling interrupts
            if ( iUseMaster == 1 )
            {      
                  // Poll BSTR0 to check if Buffer 0 is full 
                  dRead=W99200ReadReg(BBSTR0);
                  if ( ((dRead & 0x02) == 0x02 )  && iMBufferIndex == 0 )
                  {
                        if ( fwrite(_pcc0, sizeof(BYTE),4080,fp1) != 4080 )
                                printf( " Buffer 0 write file error!\n" );
                        W99200WriteReg(BBSTR0,0x03);
                        iMBufferIndex=1;
                  } 
                  // Poll BSTR1 to check if Buffer 1 is full 
                  dRead=W99200ReadReg(BBSTR1);
                  if ( ((dRead & 0x02) == 0x02 ) && iMBufferIndex ==1 )
                  {
                        if ( fwrite(_pcc1, sizeof(BYTE),4080,fp1) != 4080 )
                             printf( " Buffer 1 write file error!\n" );
                        W99200WriteReg(BBSTR1,0x03);
                        iMBufferIndex=0;
                  }
            } //if ( iUseMaster == 1 )
            else
            {
                  if ( W99200FIFO_Thr()== TRUE )
                  {
                        for( i=0 ; i <60  ; i++)
                        {
                            _dMem_Data[i]=W99200Inpdw(_IOBase+_ulODPR);
                        }
                        fwrite(_dMem_Data,sizeof(int),60,fp1);
                        
                  }
            }
        }while((key!='s')&&(key!='S') && (W99200FIFO_End()!=TRUE));
   */}
   else
   {
        printf("Recording for %d seconds...", dwLimit);
//        printf(" \n Stop After %d Second",dwLimit);
        do
        {
           //8. Reverse Data transfer + handling interrupts
            if ( iUseMaster == 1 )
            {      
                  // Poll BSTR0 to check if Buffer 0 is full 
                  dRead=W99200ReadReg(BBSTR0);
                  if ( ((dRead & 0x02) == 0x02 )  && iMBufferIndex == 0 )
                  {
                        if ( fwrite(_pcc0, sizeof(BYTE),4080,fp1) != 4080 )
                                printf( " Buffer 0 write file error!\n" );
                        W99200WriteReg(BBSTR0,0x03);
                        iMBufferIndex=1;
                  } 
                  // Poll BSTR1 to check if Buffer 1 is full 
                  dRead=W99200ReadReg(BBSTR1);
                  if ( ((dRead & 0x02) == 0x02 ) && iMBufferIndex ==1 )
                  {
                        if ( fwrite(_pcc1, sizeof(BYTE),4080,fp1) != 4080 )
                             printf( " Buffer 1 write file error!\n" );
                        W99200WriteReg(BBSTR1,0x03);
                        iMBufferIndex=0;
                  }
            } //if ( iUseMaster == 1 )
            else
            {
                  if ( W99200FIFO_Thr()== TRUE )
                  {
                        for( i=0 ; i <60  ; i++)
                        {
                            _dMem_Data[i]=W99200Inpdw(_IOBase+_ulODPR);
                        }
                        fwrite(_dMem_Data,sizeof(int),60,fp1);
                        
                  }
            }
           end_time=clock(); 
           if((int)(end_time-start_time) > dwLimit*1000 ) // "s" key is pressed
                W99200WriteReg(Vstop,0xff);//9. Stop command  
        //printf(" %d ",int(end_time-start_time));     
	}//while(((int)(end_time-start_time) <=dwLimit*1000) && (W99200FIFO_End()!=TRUE));
	while((flag++<200000*dwLimit) && (W99200FIFO_End()!=TRUE));
     
   }   
    //10. Reverse Data transfer + handling interrupts 
    printf("iMBufferIndex=%d\niUseMaster=%d\n",iMBufferIndex,iUseMaster);
    if ( iUseMaster == 1 )
    {   
        
        if ( iMBufferIndex == 0 )
        {
            dRead=W99200ReadReg(BBFR);
            
            if ( fwrite(_pcc0, sizeof(BYTE),(unsigned int)dRead*4,fp1) != (unsigned int)(dRead*4) )
                   printf( " Buffer 0 write file error!\n" );
             else printf("write ok\n");
        }
        else
        {
            dRead=W99200ReadReg(BBFR);
            if ( fwrite(_pcc1, sizeof(BYTE),(unsigned int)(dRead*4),fp1) != (unsigned int)(dRead*4) )
                   printf( " Buffer 1 write file error!\n" );
                  else printf("write ok2\n");
        }
        W99200WriteReg(PCICR,0x00);     // Close Master Enable    
    }
    else
    {                    
      do 
      {
         if ( W99200FIFO_Thr()== TRUE )
         {
            printf("fifo");
            for( i=0 ; i < 60 ; i++)
               _dMem_Data[i]=W99200Inpdw(_IOBase+_ulODPR);
            fwrite(_dMem_Data,sizeof(int),60,fp1);
         }
      } while ( W99200FIFO_End()!=TRUE  );// Pooling the End of Data
    }
    if ( dwLimit == 0)
    {
      end_time=clock();
      printf("\n Time : %ld second", (end_time-start_time)/1000 );
    }
    printf("\n OutPutFile : %s\n",szFileName);   
    fclose(fp1);
    return TRUE;
}  
  

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩午夜激情电影| 午夜在线成人av| 欧美一区二区在线免费观看| 色综合天天做天天爱| 国产·精品毛片| 成人av网站大全| 91免费在线看| 欧美日韩一二三区| 欧美精品第1页| 日韩你懂的在线播放| 2020日本不卡一区二区视频| 久久夜色精品国产噜噜av| 国产午夜精品一区二区三区视频 | 亚洲男人电影天堂| 亚洲欧美区自拍先锋| 亚洲国产精品久久久久婷婷884 | 日韩欧美一区二区久久婷婷| 6080午夜不卡| 久久久亚洲欧洲日产国码αv| 欧美激情中文字幕一区二区| 国产精品欧美综合在线| 亚洲色图在线看| 日韩高清一区在线| 国产成人精品1024| 91官网在线观看| 精品日韩成人av| 亚洲精品欧美专区| 人禽交欧美网站| 99久久久精品| 欧美一区在线视频| 国产精品国产三级国产普通话三级| 亚洲欧美色一区| 国产一区二区三区四区五区美女| www.亚洲国产| 日韩午夜小视频| 日韩理论在线观看| 激情国产一区二区| 91福利在线看| 久久久99免费| 青娱乐精品视频| 一本到三区不卡视频| 中文av一区特黄| 亚洲第一激情av| 成人avav影音| 精品免费99久久| 亚洲成在人线在线播放| 懂色av一区二区夜夜嗨| 欧美一区二区观看视频| 有码一区二区三区| 懂色av一区二区三区免费看| 欧美一区二区在线免费观看| 亚洲免费电影在线| 成人高清免费在线播放| 精品久久久久久久久久久久包黑料 | 免费精品视频最新在线| 91片黄在线观看| 国产日产欧产精品推荐色 | 国产在线不卡一区| 777久久久精品| 一区二区三区不卡视频| 99久久亚洲一区二区三区青草| 久久青草国产手机看片福利盒子| 日韩二区在线观看| 欧美日韩大陆一区二区| 亚洲综合男人的天堂| 99视频一区二区| 国产精品不卡在线| 成人国产电影网| 日本一区二区三区四区在线视频| 国内精品在线播放| 精品国精品国产| 国产在线播放一区| 国产日产亚洲精品系列| 成人黄色综合网站| 综合久久一区二区三区| 99r精品视频| 一区二区日韩av| 欧美日韩一区二区三区四区| 亚洲一区免费观看| 3d动漫精品啪啪1区2区免费| 日韩中文字幕91| 欧美成人在线直播| 国产成人aaa| 综合电影一区二区三区 | 男女男精品网站| 日韩欧美国产三级电影视频| 国内久久精品视频| 国产精品传媒视频| 日本丶国产丶欧美色综合| 午夜精品久久久久久不卡8050 | 精品毛片乱码1区2区3区| 日韩精品一二三四| 精品国产1区二区| 成人免费视频一区| 伊人夜夜躁av伊人久久| 久久久久国产精品麻豆| 成人免费精品视频| 亚洲韩国一区二区三区| 日韩西西人体444www| 成人激情免费视频| 午夜精品在线视频一区| 日韩欧美一级片| 99综合电影在线视频| 午夜国产不卡在线观看视频| 精品国产乱码久久久久久浪潮| 国产寡妇亲子伦一区二区| 亚洲精品综合在线| 日韩午夜av电影| 高清不卡在线观看| 视频一区二区中文字幕| 国产日韩欧美精品在线| 欧美日韩成人综合天天影院 | 99久久夜色精品国产网站| 亚洲网友自拍偷拍| 欧美激情一区二区三区蜜桃视频| www.日韩在线| 久久99热狠狠色一区二区| 欧美韩国日本一区| 欧美日韩中字一区| 成人动漫在线一区| 麻豆91免费观看| 一区二区三区中文字幕| 久久亚洲捆绑美女| 欧美美女直播网站| 91在线小视频| 国产夫妻精品视频| 老汉av免费一区二区三区| 一区二区免费在线播放| 国产精品女主播av| 精品av久久707| 9191成人精品久久| 91网站在线播放| 丁香激情综合五月| 国模娜娜一区二区三区| 免费在线成人网| 午夜视频一区二区| 亚洲国产欧美日韩另类综合| 亚洲天堂a在线| 《视频一区视频二区| 国产欧美日韩激情| 久久精品夜色噜噜亚洲aⅴ| 日韩女优视频免费观看| 欧美一级黄色录像| 欧美二区三区91| 欧美老年两性高潮| 欧美顶级少妇做爰| 日韩一区二区麻豆国产| 日韩一区和二区| 精品国产乱码久久久久久图片| 精品美女被调教视频大全网站| 日韩免费看网站| 精品国产青草久久久久福利| 欧美本精品男人aⅴ天堂| 日韩欧美一二三| 欧美精品一区二区三区蜜桃视频| 欧美成人r级一区二区三区| 精品入口麻豆88视频| 久久伊人蜜桃av一区二区| 久久久久久久久久久久久久久99| 亚洲免费av高清| 中文字幕在线一区| 亚洲乱码日产精品bd| 亚洲综合在线免费观看| 亚洲国产精品尤物yw在线观看| 婷婷六月综合亚洲| 久久精品国产亚洲a| 亚洲国产裸拍裸体视频在线观看乱了 | 国产精品白丝av| 美女视频一区二区三区| 久久99热这里只有精品| 国产精品自拍在线| 亚洲综合一二三区| 亚洲综合在线电影| 日本成人在线看| 日韩精品久久久久久| 日本欧美加勒比视频| 成人性色生活片| 91女厕偷拍女厕偷拍高清| 成人免费视频国产在线观看| 精品一区二区三区香蕉蜜桃| 国产99一区视频免费 | 亚洲欧美区自拍先锋| 天天操天天色综合| 国产毛片精品视频| 91视频免费看| 欧美不卡一区二区三区| 18成人在线观看| 蜜桃av噜噜一区二区三区小说| 亚洲成av人影院在线观看网| 亚洲欧美另类小说| 久久精品国产成人一区二区三区 | 97se亚洲国产综合自在线观| 欧美老女人在线| 欧美国产视频在线| 午夜欧美在线一二页| 成人免费毛片aaaaa**| 欧美疯狂性受xxxxx喷水图片| 欧美大片免费久久精品三p| 国产日韩欧美在线一区| 日韩精彩视频在线观看|