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

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

?? loopback_ntsc_cv_cv.c

?? 德州儀器新推出的達芬奇技術dm355的源代碼
?? C
?? 第 1 頁 / 共 2 頁
字號:
/* Header files */
#include <stdio.h>
#include <sys/ioctl.h>
#include <fcntl.h>
#include <string.h>
#include <sys/mman.h>
#include <getopt.h>

#include <sys/types.h>
#include <sys/mman.h>

#include <stdlib.h>
#include <unistd.h>
#include <errno.h>
#include <sys/types.h>
#include <sys/time.h>
#include <sys/mman.h>
#include <sys/ioctl.h>
#include <fcntl.h>
#include <linux/fb.h>
#include <asm/types.h>		/* for videodev2.h */
#include <time.h>
#include <media/davinci_vpfe.h>	/*kernel header file, prefix path comes from makefile */

#if 0
#include "test_8.h"
#endif
int ch_no=0;
int numbuffers=3;
int fdglobal;
int format=0;
void usage()
{
	printf
	    ("Usage:stream -c channelno -n number of buffers -t format (0-YUYV, 1 - UYVY) \n");
}


char dev_name[2][20] = { "/dev/video2", "/dev/video3" };

#define IS_VALID_CHANNEL(ch)  (((ch) == 0) || ((ch) == 1))

struct buffer
{
  	void *start;
	int index;
  	size_t length;
};

#define     CAPTURE_DEVICE  "/dev/video0"


#define WIDTH 	720
#define HEIGHT 	480	

#define MIN_BUFFERS 2

#define UYVY_BLACK          0x10801080

/* Device parameters */
#define V4L2VID0_DEVICE    "/dev/video2"
#define V4L2VID1_DEVICE    "/dev/video3"



/* Function error codes */
#define SUCCESS         0
#define FAILURE         -1
/* Bits per pixel for video window */

#define DISPLAY_INTERFACE	COMPOSITE
#define DISPLAY_MODE	NTSC

#define round_32(width) ((((width) + 31) / 32) * 32 )

/* D1 screen dimensions */
#define VID0_WIDTH 		720
#define VID0_HEIGHT		480
#if 0
#define VID0_BPP		16
#define VID0_FRAME_SIZE		(VID0_WIDTH*VID0_HEIGHT)
#define VID0_VMODE	FB_VMODE_INTERLACED
#endif

#define VID1_WIDTH 		720
#define VID1_HEIGHT		480
#if 0
#define VID1_BPP		16
#define VID1_FRAME_SIZE		(VID1_WIDTH*VID1_HEIGHT)
#define VID1_VMODE	FB_VMODE_INTERLACED

//position 
#define	VID0_XPOS		0
#define	VID0_YPOS		0
#define	VID1_XPOS		0
#define	VID1_YPOS		0

// Zoom Params
#define	OSD0_HZOOM		0
#define	OSD0_VZOOM		0
#define	OSD1_HZOOM		0
#define	OSD1_VZOOM		0
#define	VID0_HZOOM		0
#define	VID0_VZOOM		0
#define	VID1_HZOOM		0
#define	VID1_VZOOM		0
#endif

#define VIDEO_NUM_BUFS		3

struct vpbe_test_info
{
  int vid0_width;
  int vid0_height;
  int vid0_frame_size;

  int vid1_width;
  int vid1_height;
  int vid1_frame_size;

  //POSITION 
  int vid0_xpos;
  int vid0_ypos;
  int vid1_xpos;
  int vid1_ypos;

  // Zoom Params
  int vid0_hzoom;
  int vid0_vzoom;
  int vid1_hzoom;
  int vid1_vzoom;

};

#define DISPLAY_SIZE 720*480*2

static struct vpbe_test_info test_data = {
  720,
  480,
  DISPLAY_SIZE,

  720,
  480,
  DISPLAY_SIZE,

  0,
  0,
  0,
  0,

  0,
  0,
  0,
  0,
};

#define DEBUG

#ifdef DEBUG
#define DBGENTER  		printf("%s : E", __FUNCTION__);
#define DBGEXIT			printf("%s : L", __FUNCTION__);
#define PREV_DEBUG(x)		printf("DEBUG:%s:%s:%s",__FUNCTION__,__LINE__,x);
#else
#define DBGENTER
#define DBGEXIT
#define PREV_DEBUG(x)
#endif

#define CLEAR(x) memset (&(x), 0, sizeof (x))

/* ************************************************************************/
//Globals
/* ************************************************************************/
static int fdCapture = -1;
static int fdDisplay = -1;
struct buffer *cap_buffers = NULL;
struct buffer *disp_buff_info = NULL;
static int nBuffers = 0;
static int nWidthFinal = 0;
static int nHeightFinal = 0;
static int quit = 0;
char *vid0_display[VIDEO_NUM_BUFS] = { NULL, NULL, NULL };
char *vid1_display[VIDEO_NUM_BUFS] = { NULL, NULL, NULL };
int fd_vid0 = 0, fd_vid1 = 0;
int vid0_size, vid1_size;
#if 0
zoom_params_t zoom;
#endif
int stress_test =1;// 1-default Abhishek;		//Flag to indicate currently stress test is going on
int startLoopCnt = 10000;


extern int errno;
int StartLoop (void);
static int InitCaptureDevice (void);
static int SetDataFormat (void);
static int InitCaptureBuffers (void);
static int StartStreaming (void);
static void Initialize_Capture (void);
//static int DisplayFrame (char, void *);
static int DisplayFrame(int,void *);
int unmap_and_disable (char);

/* ************************************************************************/

void
Initialize_Capture (void)
{
  printf ("initializing capture device\n");
  InitCaptureDevice ();
  printf ("setting data format\n");
  SetDataFormat ();
  printf ("initializing capture buffers\n");
  InitCaptureBuffers ();
  printf ("initializing capture device\n");
  StartStreaming ();
}

/* ************************************************************************/
int
StartLoop (void)
{
  struct v4l2_buffer buf;
  static int captFrmCnt = 0;
  char *ptrPlanar = NULL;
  int dummy;
  struct timeval timev;
  struct timezone zone;

  //StartStreaming();

  ptrPlanar = (char *) calloc (1, nWidthFinal * nHeightFinal * 2);

  while (!quit)
    {
      fd_set fds;
      struct timeval tv;
      int r;
	  bzero((void *)&zone, sizeof (struct timezone));

      if (stress_test)
	{
	  startLoopCnt--;
	  if (startLoopCnt == 0)
	    {
	      startLoopCnt = 50;
	      break;
	    }
	}

      FD_ZERO (&fds);
      FD_SET (fdCapture, &fds);

      /* Timeout. */
      tv.tv_sec = 2;
      tv.tv_usec = 0;

      r = select (fdCapture + 1, &fds, NULL, NULL, &tv);

      if (-1 == r)
	{
	  if (EINTR == errno)
	    continue;

	  printf ("StartCameraCaputre:select\n");
	  return -1;
	}

      if (0 == r)
	{
	  continue;
	}

      CLEAR (buf);
      buf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
      buf.memory = V4L2_MEMORY_MMAP;
      //printf("Debug 6............\n");
      /*determine ready buffer */
      if (-1 == ioctl (fdCapture, VIDIOC_DQBUF, &buf))
	{
	  if (EAGAIN == errno)
	    continue;
	  printf ("StartCameraCaputre:ioctl:VIDIOC_DQBUF\n");
	  return -1;
	}

#if 0
	  gettimeofday(&timev,&zone);
	  printf("index = %d,before Display Frame sec=%d,usec=%d\n",buf.index,timev.tv_sec,timev.tv_usec);
	  printf("buffer times sec=%d,usec=%d\n",buf.timestamp.tv_sec,buf.timestamp.tv_usec);
#endif

      DisplayFrame (fdglobal, cap_buffers[buf.index].start);
#if 0
	  gettimeofday(&timev,&zone);
	  printf("after Display Frame sec=%d,usec=%d\n",timev.tv_sec,timev.tv_usec);
#endif
#if 0
      DisplayFrame (VID1, buffers[buf.index].start);
      Displaybitmaposd0();
      /* Wait for vertical sync */
      if (ioctl (fd_vid0, FBIO_WAITFORVSYNC, &dummy) < -1)
      {
	      printf ("Failed FBIO_WAITFORVSYNC\n");
	      return -1;
      }
#endif

      //printf ("time:%d    frame:%u\n", time (NULL), captFrmCnt++);

      //requeue the buffer
      if (-1 == ioctl (fdCapture, VIDIOC_QBUF, &buf))
	{
	  printf ("StartCameraCaputre:ioctl:VIDIOC_QBUF\n");
	}
#if 0
	  gettimeofday(&timev,&zone);
	  printf("after QBUF sec=%d,usec=%d\n",timev.tv_sec,timev.tv_usec);
#endif
    }
}

/* ************************************************************************/

struct v4l2_cropcap cropcap;
static int
InitCaptureDevice (void)
{

  struct v4l2_capability cap;
  struct v4l2_crop crop;
  struct v4l2_input input;


  /*input-0 is selected by default, so no need to set it */
  if ((fdCapture = open (CAPTURE_DEVICE, O_RDWR | O_NONBLOCK, 0)) <= -1)
    {

      printf ("InitDevice:open::\n");
      return -1;
    }

  /*is capture supported? */
  if (-1 == ioctl (fdCapture, VIDIOC_QUERYCAP, &cap))
    {
      printf ("InitDevice:ioctl:VIDIOC_QUERYCAP:\n");
      return -1;
    }

  if (!(cap.capabilities & V4L2_CAP_VIDEO_CAPTURE))
    {
      printf ("InitDevice:capture is not supported on:%s\n", CAPTURE_DEVICE);
      return -1;
    }

  /*is MMAP-IO supported? */
  if (!(cap.capabilities & V4L2_CAP_STREAMING))
    {
      printf ("InitDevice:IO method MMAP is not supported on:%s\n",
	      CAPTURE_DEVICE);
      return -1;
    }

  /*select cropping as deault rectangle */
  cropcap.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;

  if (-1 == ioctl (fdCapture, VIDIOC_CROPCAP, &cropcap))
    {
      printf ("InitDevice:ioctl:VIDIOC_CROPCAP\n");
      /*ignore error */
    }

  printf
    ("Default crop capbility bounds - %d %d %d %d ; default - %d %d %d %d \n",
     cropcap.bounds.left, cropcap.bounds.top, cropcap.bounds.width,
     cropcap.bounds.height, cropcap.defrect.left, cropcap.defrect.top,
     cropcap.defrect.width, cropcap.defrect.height);

  input.type = V4L2_INPUT_TYPE_CAMERA;
  input.index = 0;
  if (-1 == ioctl (fdCapture, VIDIOC_S_INPUT, &input))
  {
      printf ("InitDevice:ioctl:VIDIOC_S_INPUT\n");
      return -1;
  }
  printf ("InitDevice:ioctl:VIDIOC_S_INPUT, selected COMPOSITE INPUT input\n");
  
  return 0;
}

/* ************************************************************************/
static int
SetDataFormat (void)
{
  v4l2_std_id prev_std, cur_std;
  struct v4l2_format fmt;
  unsigned int min;
  
  cur_std = prev_std = VPFE_STD_AUTO;
  printf ("SetDataFormat:setting std to auto select\n");
  if (-1 == ioctl (fdCapture, VIDIOC_S_STD, &cur_std))
    {
      printf ("SetDataFormat:unable to set standard automatically\n");
    }
  sleep (1);			/* wait until decoder is fully locked */
  if (-1 == ioctl (fdCapture, VIDIOC_QUERYSTD, &cur_std))
    {
      printf ("SetDataFormat:ioctl:VIDIOC_QUERYSTD:\n");
    }

  if (cur_std == V4L2_STD_NTSC)
    printf ("Input video standard is NTSC.\n");
  else if (cur_std == V4L2_STD_PAL)
    printf ("Input video standard is PAL.\n");
  else if (cur_std == V4L2_STD_PAL_M)
    printf ("Input video standard is PAL-M.\n");
  else if (cur_std == V4L2_STD_PAL_N)
    printf ("Input video standard is PAL-N.\n");
  else if (cur_std == V4L2_STD_SECAM)
    printf ("Input video standard is SECAM.\n");
  else if (cur_std == V4L2_STD_PAL_60)
    printf ("Input video standard to PAL60.\n");

  printf ("SetDataFormat:setting data format\n");
  printf ("SetDataFormat:requesting width:%d height:%d\n", WIDTH, HEIGHT);
  CLEAR (fmt);
  fmt.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
  fmt.fmt.pix.width = WIDTH;	//SSK Buffer Size
  fmt.fmt.pix.height = HEIGHT;
//#if 0
 if(format==0)
  {
  fmt.fmt.pix.pixelformat = V4L2_PIX_FMT_YUYV;
  }
  else
  { 
  fmt.fmt.pix.pixelformat = V4L2_PIX_FMT_UYVY;
  }
//#endif
//fmt.fmt.pix.pixelformat = V4L2_PIX_FMT_UYVY;
  /* the field can be either interlaced together or
     separated in a top, bottom fashion */
  //fmt.fmt.pix.field     = V4L2_FIELD_SEQ_TB;
  fmt.fmt.pix.field = V4L2_FIELD_INTERLACED;
  if (-1 == ioctl (fdCapture, VIDIOC_S_FMT, &fmt))
    {
      printf ("SetDataFormat:ioctl:VIDIOC_S_FMT\n");
    }

  if (-1 == ioctl (fdCapture, VIDIOC_G_FMT, &fmt))
    {
      printf ("SetDataFormat:ioctl:VIDIOC_QUERYSTD:\n");
    }

  nWidthFinal = fmt.fmt.pix.width;
  nHeightFinal = fmt.fmt.pix.height;

  printf ("SetDataFormat:finally negotiated width:%d height:%d\n",
	  nWidthFinal, nHeightFinal);

  /*checking what is finally negotiated */
  min = fmt.fmt.pix.width * 2;
  if (fmt.fmt.pix.bytesperline < min)
    {
      printf ("SetDataFormat:driver reports bytes_per_line:%d(bug)\n",
	      fmt.fmt.pix.bytesperline);
      /*correct it */
      fmt.fmt.pix.bytesperline = min;
    }

  min = fmt.fmt.pix.bytesperline * fmt.fmt.pix.height;
  if (fmt.fmt.pix.sizeimage < min)
    {
      printf ("SetDataFormat:driver reports size:%d(bug)\n",
	      fmt.fmt.pix.sizeimage);

      /*correct it */
      fmt.fmt.pix.sizeimage = min;
    }

  printf ("SetDataFormat:Finally negitaited width:%d height:%d\n",
	  nWidthFinal, nHeightFinal);

  return 0;
}

/* ************************************************************************/
static int
InitCaptureBuffers (void)
{
  struct v4l2_requestbuffers req;
  int nIndex = 0;

  CLEAR (req);
  req.count = MIN_BUFFERS;
  req.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
  req.memory = V4L2_MEMORY_MMAP;

  if (-1 == ioctl (fdCapture, VIDIOC_REQBUFS, &req))
    {
      printf ("InitCaptureBuffers:ioctl:VIDIOC_REQBUFS\n");
      return -1;
    }

  if (req.count < MIN_BUFFERS)
    {
      printf ("InitCaptureBuffers only:%d buffers avilable, can't proceed\n",
	      req.count);
      return -1;
    }

  nBuffers = req.count;
  printf ("device buffers:%d\n", req.count);
  cap_buffers = (struct buffer *) calloc (req.count, sizeof (struct buffer));
  if (!cap_buffers)
    {
      printf ("InitCaptureBuffers:calloc:\n");
      return -1;
    }

  for (nIndex = 0; nIndex < req.count; ++nIndex)
    {

      struct v4l2_buffer buf;
      CLEAR (buf);
      buf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
      buf.memory = V4L2_MEMORY_MMAP;
      buf.index = nIndex;

      if (-1 == ioctl (fdCapture, VIDIOC_QUERYBUF, &buf))
	{
	  printf ("InitCaptureBuffers:ioctl:VIDIOC_QUERYBUF:\n\n");
	  return -1;
	}
	printf("\nBuf.offset=%x\n",buf.m.offset);
      cap_buffers[nIndex].length = buf.length;
      cap_buffers[nIndex].start =
	mmap (NULL, buf.length, PROT_READ | PROT_WRITE, MAP_SHARED, fdCapture,
	      buf.m.offset);

      printf ("buffer:%d phy:%x mmap:%x length:%d\n", buf.index,
	      buf.m.offset, cap_buffers[nIndex].start, buf.length);

      if (MAP_FAILED == cap_buffers[nIndex].start)
	{
	  printf ("InitCaptureBuffers:mmap:\n");
	  return -1;
	}
      //printf("buffer:%d addr:%x\n",nIndex,buffers[nIndex].start);
    }

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久精品国产免费| 欧美专区亚洲专区| 91网站最新地址| 欧美一区二区三区四区久久| 日本一区二区三区四区| 日韩精品亚洲一区二区三区免费| 国产99精品在线观看| 8x福利精品第一导航| 自拍偷自拍亚洲精品播放| 国产精品自拍在线| 欧美嫩在线观看| 亚洲精品久久久久久国产精华液| 国产激情一区二区三区| 日韩一区二区三区免费看| 一二三区精品视频| 91女厕偷拍女厕偷拍高清| 国产精品婷婷午夜在线观看| 国产一区二区三区四区五区入口| 欧美欧美午夜aⅴ在线观看| 一区二区三区欧美| 一本久久综合亚洲鲁鲁五月天 | 国产精品乱码一区二区三区软件 | 666欧美在线视频| 亚洲国产精品久久一线不卡| 99国产精品久久久久久久久久 | 欧美日韩国产在线观看| 亚洲精品亚洲人成人网| 一本到不卡精品视频在线观看| 国产精品卡一卡二| 成人激情视频网站| 国产精品国产自产拍高清av| 成人福利视频在线看| 国产精品―色哟哟| 97精品国产露脸对白| 亚洲视频在线一区| 91黄色免费版| 亚洲第一主播视频| 欧美一区二区大片| 激情另类小说区图片区视频区| 久久这里只有精品视频网| 极品少妇一区二区三区精品视频| 精品久久久影院| 国产福利一区二区| 国产精品灌醉下药二区| 色婷婷av一区二区三区软件| 亚洲一区二区三区美女| 欧美精品v国产精品v日韩精品| 日本sm残虐另类| 久久―日本道色综合久久| 国产69精品久久777的优势| 亚洲欧洲精品天堂一级 | 亚洲福利视频一区| 69久久夜色精品国产69蝌蚪网| 午夜精品视频在线观看| 欧美成人免费网站| 成人黄色小视频在线观看| 亚洲精品免费一二三区| 在线成人午夜影院| 国产高清精品网站| 一区二区三区久久久| 日韩一区二区视频在线观看| 国产成人精品在线看| 亚洲制服丝袜一区| 欧美成人激情免费网| 91在线视频网址| 日本在线观看不卡视频| 国产精品色在线| 欧美三片在线视频观看| 国产精品一区二区男女羞羞无遮挡| 亚洲欧美中日韩| 日韩午夜激情免费电影| 成人国产精品免费网站| 日韩黄色免费电影| 国产精品情趣视频| 91精品婷婷国产综合久久竹菊| 国产成人在线免费| 亚洲高清免费在线| 国产精品网友自拍| 欧美大片免费久久精品三p| av激情综合网| 极品美女销魂一区二区三区 | 制服丝袜成人动漫| 国产成人高清视频| 日韩黄色小视频| 亚洲人123区| 久久免费的精品国产v∧| 欧美无乱码久久久免费午夜一区| 国产精品一区专区| 日本欧美韩国一区三区| 亚洲色图制服丝袜| 国产日韩高清在线| 欧美成人免费网站| 51精品国自产在线| 欧美三级视频在线观看| 91天堂素人约啪| 处破女av一区二区| 久久爱www久久做| 日日嗨av一区二区三区四区| 亚洲精品国产一区二区精华液 | 国产精品免费久久久久| 日韩免费视频一区二区| 欧美美女直播网站| 91免费版在线看| 懂色av一区二区夜夜嗨| 国产美女精品在线| 久久99深爱久久99精品| 久久99九九99精品| 免费一级片91| 麻豆成人久久精品二区三区小说| 亚洲成av人片一区二区梦乃| 亚洲图片欧美视频| 亚洲一区二区三区在线| 伊人婷婷欧美激情| 亚洲一区视频在线| 亚洲电影视频在线| 亚洲国产精品久久艾草纯爱 | 免费成人美女在线观看.| 丝瓜av网站精品一区二区 | 精品一二线国产| 久久99九九99精品| 国产精品主播直播| 成人一区二区三区| 91在线一区二区| 欧美午夜精品久久久久久超碰| 欧美三片在线视频观看| 欧美日韩国产乱码电影| 欧美日本一区二区| 日韩一区国产二区欧美三区| 日韩精品一区二区三区中文精品| 亚洲精品一区二区三区蜜桃下载| 精品国产乱码久久久久久牛牛 | 精品视频123区在线观看| 欧美日韩黄色影视| 欧美成人精品高清在线播放 | 国产一区二区三区电影在线观看| 国产精品一二二区| 99精品视频在线播放观看| 日本精品裸体写真集在线观看| 欧美久久一二区| 亚洲精品一区二区三区福利| 国产精品美女久久久久久久网站| 亚洲欧美激情在线| 麻豆成人久久精品二区三区小说| 国产一区二区三区高清播放| 成人av网站在线观看免费| 在线精品视频免费播放| 日韩欧美国产高清| 国产精品久久免费看| 性欧美疯狂xxxxbbbb| 激情综合色播五月| 99re66热这里只有精品3直播| 欧美日本在线看| 国产精品―色哟哟| 日本sm残虐另类| 色综合中文字幕| 久久综合av免费| 亚洲图片自拍偷拍| 懂色一区二区三区免费观看| 在线视频你懂得一区二区三区| 日韩欧美综合在线| 一区二区三区免费观看| 国产一区二区三区四区五区入口| 欧美亚洲图片小说| 亚洲国产高清不卡| 免费成人在线观看| 欧美综合在线视频| 中国av一区二区三区| 捆绑变态av一区二区三区| 91国偷自产一区二区开放时间| 精品国产电影一区二区| 亚洲成人精品一区| 97se狠狠狠综合亚洲狠狠| 久久久久久久国产精品影院| 婷婷亚洲久悠悠色悠在线播放| caoporn国产精品| 精品黑人一区二区三区久久| 亚洲国产视频一区| kk眼镜猥琐国模调教系列一区二区| 在线播放国产精品二区一二区四区 | 男男gaygay亚洲| 日本韩国欧美在线| 中文字幕一区二区三区乱码在线| 精品一区二区三区的国产在线播放| 欧美日韩另类一区| 专区另类欧美日韩| 丰满放荡岳乱妇91ww| 久久―日本道色综合久久| 日本中文一区二区三区| 欧美久久久久久久久久| 亚洲一区av在线| 色综合久久综合中文综合网| 国产精品久久久久久久久久免费看| 国产一区999| 欧美国产精品中文字幕| 国产成人av电影在线| 日本一区二区三区免费乱视频| 福利视频网站一区二区三区| 国产亚洲一区二区三区四区 | 日韩av在线发布| 欧美一区二区三区白人|