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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? dv1394.h

?? arm平臺(tái)下的H264編碼和解碼源代碼
?? H
字號(hào):
/* * dv1394.h - DV input/output over IEEE 1394 on OHCI chips *   Copyright (C)2001 Daniel Maas <dmaas@dcine.com> *     receive, proc_fs by Dan Dennedy <dan@dennedy.org> * * based on: *   video1394.h - driver for OHCI 1394 boards *   Copyright (C)1999,2000 Sebastien Rougeaux <sebastien.rougeaux@anu.edu.au> *                          Peter Schlaile <udbz@rz.uni-karlsruhe.de> * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software Foundation, * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */#ifndef _DV_1394_H#define _DV_1394_H#define DV1394_DEFAULT_CHANNEL 63#define DV1394_DEFAULT_CARD    0#define DV1394_RING_FRAMES     20#define DV1394_WIDTH  720#define DV1394_NTSC_HEIGHT 480#define DV1394_PAL_HEIGHT 576/* This is the public user-space interface. Try not to break it. */#define DV1394_API_VERSION 0x20011127/* ********************   **                **   **   DV1394 API   **   **                **   ********************   There are two methods of operating the DV1394 DV output device.   1)   The simplest is an interface based on write(): simply write   full DV frames of data to the device, and they will be transmitted   as quickly as possible. The FD may be set for non-blocking I/O,   in which case you can use select() or poll() to wait for output   buffer space.   To set the DV output parameters (e.g. whether you want NTSC or PAL   video), use the DV1394_INIT ioctl, passing in the parameters you   want in a struct dv1394_init.    Example 1:         To play a raw .DV file:   cat foo.DV > /dev/dv1394	 (cat will use write() internally)   Example 2:           static struct dv1394_init init = {	      0x63,        (broadcast channel)              4,           (four-frame ringbuffer)	      DV1394_NTSC, (send NTSC video)	      0, 0         (default empty packet rate)           }	   ioctl(fd, DV1394_INIT, &init);	   while(1) {	          read( <a raw DV file>, buf, DV1394_NTSC_FRAME_SIZE );		  write( <the dv1394 FD>, buf, DV1394_NTSC_FRAME_SIZE );           }   2)   For more control over buffering, and to avoid unnecessary copies   of the DV data, you can use the more sophisticated the mmap() interface.    First, call the DV1394_INIT ioctl to specify your parameters,    including the number of frames in the ringbuffer. Then, calling mmap()    on the dv1394 device will give you direct access to the ringbuffer   from which the DV card reads your frame data.   The ringbuffer is simply one large, contiguous region of memory   containing two or more frames of packed DV data. Each frame of DV data   is 120000 bytes (NTSC) or 144000 bytes (PAL).   Fill one or more frames in the ringbuffer, then use the DV1394_SUBMIT_FRAMES   ioctl to begin I/O. You can use either the DV1394_WAIT_FRAMES ioctl   or select()/poll() to wait until the frames are transmitted. Next, you'll   need to call the DV1394_GET_STATUS ioctl to determine which ringbuffer   frames are clear (ready to be filled with new DV data). Finally, use   DV1394_SUBMIT_FRAMES again to send the new data to the DV output.   Example: here is what a four-frame ringbuffer might look like            during DV transmission:         frame 0   frame 1   frame 2   frame 3	*--------------------------------------*        | CLEAR   | DV data | DV data | CLEAR  |        *--------------------------------------*                   <ACTIVE> 	transmission goes in this direction --->>>   The DV hardware is currently transmitting the data in frame 1.   Once frame 1 is finished, it will automatically transmit frame 2.   (if frame 2 finishes before frame 3 is submitted, the device   will continue to transmit frame 2, and will increase the dropped_frames   counter each time it repeats the transmission).    If you called DV1394_GET_STATUS at this instant, you would   receive the following values:                     n_frames          = 4		  active_frame      = 1		  first_clear_frame = 3		  n_clear_frames    = 2   At this point, you should write new DV data into frame 3 and optionally   frame 0. Then call DV1394_SUBMIT_FRAMES to inform the device that   it may transmit the new frames.   ERROR HANDLING   An error (buffer underflow/overflow or a break in the DV stream due   to a 1394 bus reset) can be detected by checking the dropped_frames   field of struct dv1394_status (obtained through the   DV1394_GET_STATUS ioctl).   The best way to recover from such an error is to re-initialize   dv1394, either by using the DV1394_INIT ioctl call, or closing the   file descriptor and opening it again. (note that you must unmap all   ringbuffer mappings when closing the file descriptor, or else   dv1394 will still be considered 'in use').   MAIN LOOP   For maximum efficiency and robustness against bus errors, you are   advised to model the main loop of your application after the   following pseudo-code example:   (checks of system call return values omitted for brevity; always   check return values in your code!)      while( frames left ) {       struct pollfd *pfd = ...;    pfd->fd = dv1394_fd;    pfd->revents = 0;    pfd->events = POLLOUT | POLLIN; (OUT for transmit, IN for receive)    (add other sources of I/O here)        poll(pfd, 1, -1); (or select(); add a timeout if you want)    if(pfd->revents) {         struct dv1394_status status;	          ioctl(dv1394_fd, DV1394_GET_STATUS, &status);	 if(status.dropped_frames > 0) {	      reset_dv1394();         } else {              for(int i = 0; i < status.n_clear_frames; i++) {	          copy_DV_frame();              }         }    }   }   where copy_DV_frame() reads or writes on the dv1394 file descriptor   (read/write mode) or copies data to/from the mmap ringbuffer and   then calls ioctl(DV1394_SUBMIT_FRAMES) to notify dv1394 that new   frames are availble (mmap mode).   reset_dv1394() is called in the event of a buffer   underflow/overflow or a halt in the DV stream (e.g. due to a 1394   bus reset). To guarantee recovery from the error, this function   should close the dv1394 file descriptor (and munmap() all   ringbuffer mappings, if you are using them), then re-open the   dv1394 device (and re-map the ringbuffer).   *//* maximum number of frames in the ringbuffer */#define DV1394_MAX_FRAMES 32/* number of *full* isochronous packets per DV frame */#define DV1394_NTSC_PACKETS_PER_FRAME 250#define DV1394_PAL_PACKETS_PER_FRAME  300/* size of one frame's worth of DV data, in bytes */#define DV1394_NTSC_FRAME_SIZE (480 * DV1394_NTSC_PACKETS_PER_FRAME)#define DV1394_PAL_FRAME_SIZE  (480 * DV1394_PAL_PACKETS_PER_FRAME)/* ioctl() commands */enum {	/* I don't like using 0 as a valid ioctl() */	DV1394_INVALID = 0,	/* get the driver ready to transmit video.	   pass a struct dv1394_init* as the parameter (see below),	   or NULL to get default parameters */	DV1394_INIT,	/* stop transmitting video and free the ringbuffer */	DV1394_SHUTDOWN,	/* submit N new frames to be transmitted, where	   the index of the first new frame is first_clear_buffer,	   and the index of the last new frame is	   (first_clear_buffer + N) % n_frames */	DV1394_SUBMIT_FRAMES,	/* block until N buffers are clear (pass N as the parameter)	   Because we re-transmit the last frame on underrun, there	   will at most be n_frames - 1 clear frames at any time */	DV1394_WAIT_FRAMES,	/* capture new frames that have been received, where	   the index of the first new frame is first_clear_buffer,	   and the index of the last new frame is	   (first_clear_buffer + N) % n_frames */	DV1394_RECEIVE_FRAMES,	DV1394_START_RECEIVE,	/* pass a struct dv1394_status* as the parameter (see below) */	DV1394_GET_STATUS,};enum pal_or_ntsc {	DV1394_NTSC = 0,	DV1394_PAL};/* this is the argument to DV1394_INIT */struct dv1394_init {	/* DV1394_API_VERSION */	unsigned int api_version;		/* isochronous transmission channel to use */	unsigned int channel;	/* number of frames in the ringbuffer. Must be at least 2	   and at most DV1394_MAX_FRAMES. */	unsigned int n_frames;	/* send/receive PAL or NTSC video format */	enum pal_or_ntsc format;	/* the following are used only for transmission */ 	/* set these to zero unless you want a	   non-default empty packet rate (see below) */	unsigned long cip_n;	unsigned long cip_d;	/* set this to zero unless you want a	   non-default SYT cycle offset (default = 3 cycles) */	unsigned int syt_offset;};/* NOTE: you may only allocate the DV frame ringbuffer once each time   you open the dv1394 device. DV1394_INIT will fail if you call it a   second time with different 'n_frames' or 'format' arguments (which   would imply a different size for the ringbuffer). If you need a   different buffer size, simply close and re-open the device, then   initialize it with your new settings. */   /* Q: What are cip_n and cip_d? *//*  A: DV video streams do not utilize 100% of the potential bandwidth offered  by IEEE 1394 (FireWire). To achieve the correct rate of data transmission,  DV devices must periodically insert empty packets into the 1394 data stream.  Typically there is one empty packet per 14-16 data-carrying packets.  Some DV devices will accept a wide range of empty packet rates, while others  require a precise rate. If the dv1394 driver produces empty packets at  a rate that your device does not accept, you may see ugly patterns on the  DV output, or even no output at all.  The default empty packet insertion rate seems to work for many people; if  your DV output is stable, you can simply ignore this discussion. However,  we have exposed the empty packet rate as a parameter to support devices that  do not work with the default rate.   The decision to insert an empty packet is made with a numerator/denominator  algorithm. Empty packets are produced at an average rate of CIP_N / CIP_D.  You can alter the empty packet rate by passing non-zero values for cip_n  and cip_d to the INIT ioctl.   */struct dv1394_status {	/* this embedded init struct returns the current dv1394	   parameters in use */	struct dv1394_init init;	/* the ringbuffer frame that is currently being	   displayed. (-1 if the device is not transmitting anything) */	int active_frame;	/* index of the first buffer (ahead of active_frame) that	   is ready to be filled with data */	unsigned int first_clear_frame;	/* how many buffers, including first_clear_buffer, are	   ready to be filled with data */	unsigned int n_clear_frames;	/* how many times the DV stream has underflowed, overflowed,	   or otherwise encountered an error, since the previous call	   to DV1394_GET_STATUS */	unsigned int dropped_frames;	/* N.B. The dropped_frames counter is only a lower bound on the actual	   number of dropped frames, with the special case that if dropped_frames	   is zero, then it is guaranteed that NO frames have been dropped	   since the last call to DV1394_GET_STATUS.	*/};#endif /* _DV_1394_H */

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人18视频日本| 国产精品一区二区男女羞羞无遮挡| 欧美日韩国产免费一区二区| 久久国产视频网| **网站欧美大片在线观看| 91精品国产综合久久香蕉麻豆| 国产高清精品在线| 亚洲mv在线观看| 国产精品全国免费观看高清 | 久久 天天综合| 综合久久久久久久| 久久综合色婷婷| 欧美肥胖老妇做爰| 成人av网站在线| 极品少妇xxxx精品少妇偷拍| 一区二区日韩电影| 国产精品丝袜91| 精品国产一区二区三区久久影院 | 毛片基地黄久久久久久天堂| 国产精品免费观看视频| 91麻豆精品国产综合久久久久久| 99久免费精品视频在线观看| 国内国产精品久久| 三级亚洲高清视频| 亚洲一区在线观看视频| 国产精品久久久久久久岛一牛影视 | 欧美色图一区二区三区| 成人av网站大全| 国产精品一二三在| 男人的天堂久久精品| 亚洲精品成人悠悠色影视| 国产精品美女久久久久久久久久久| 欧美一区二区三区四区久久| 欧美日韩中文一区| 在线观看av不卡| 91偷拍与自偷拍精品| 99视频一区二区三区| 国产福利精品一区二区| 激情综合色丁香一区二区| 日韩av网站免费在线| 视频一区国产视频| 图片区小说区区亚洲影院| 亚洲国产wwwccc36天堂| 一区二区三区蜜桃| 亚洲亚洲精品在线观看| 一区二区三区四区在线| 一区二区三区在线观看网站| 亚洲精品中文在线影院| 亚洲色图在线看| 亚洲日本va午夜在线影院| 亚洲欧洲国产日本综合| 亚洲视频一区在线观看| 有码一区二区三区| 亚洲一区二区在线免费观看视频| 亚洲一区二区欧美| 天天综合天天综合色| 日韩电影在线观看一区| 日本欧美一区二区在线观看| 久久精品理论片| 国产一区二区三区精品欧美日韩一区二区三区 | 91成人在线精品| 欧美性做爰猛烈叫床潮| 欧美日韩你懂得| 日韩一级免费观看| 久久久精品一品道一区| 中文字幕视频一区二区三区久| 中文字幕在线不卡视频| 亚洲综合网站在线观看| 日韩高清不卡在线| 国产一区二区三区黄视频 | 亚洲人成精品久久久久久 | 久久久国产精品午夜一区ai换脸| 久久久久久亚洲综合| 国产精品不卡在线观看| 亚洲国产综合视频在线观看| 美洲天堂一区二卡三卡四卡视频| 激情丁香综合五月| 顶级嫩模精品视频在线看| 91丨porny丨蝌蚪视频| 在线播放国产精品二区一二区四区 | 日本亚洲欧美天堂免费| 国产精品主播直播| 91传媒视频在线播放| 91精品国产综合久久久久久久久久| 久久综合久久99| 综合久久一区二区三区| 免费高清不卡av| 成人精品国产免费网站| 欧美精品色一区二区三区| 国产网站一区二区三区| 亚洲va韩国va欧美va| 国产老女人精品毛片久久| 在线观看一区二区精品视频| 日韩欧美激情一区| 亚洲日本在线观看| 经典三级在线一区| 日本高清不卡aⅴ免费网站| 精品人在线二区三区| 亚洲男人的天堂在线aⅴ视频| 麻豆成人91精品二区三区| 972aa.com艺术欧美| 精品国内二区三区| 一区二区三区蜜桃| 成人视屏免费看| 欧美一二三四区在线| 亚洲精品乱码久久久久| 国产一区不卡精品| 69久久夜色精品国产69蝌蚪网| 国产精品婷婷午夜在线观看| 日本不卡一二三| 色婷婷一区二区三区四区| 久久色.com| 免费成人av资源网| 在线观看日韩av先锋影音电影院| 国产视频一区在线观看| 日韩高清欧美激情| 欧美色倩网站大全免费| 中文字幕成人网| 国产一区二区三区免费观看| 欧美蜜桃一区二区三区| 一区二区在线观看不卡| 风间由美一区二区三区在线观看 | 亚洲主播在线播放| www.日韩在线| 国产日韩精品一区二区三区| 免费看黄色91| 欧美电影影音先锋| 亚洲成a人v欧美综合天堂| 色偷偷成人一区二区三区91| 国产亚洲一本大道中文在线| 韩日av一区二区| 日韩美女主播在线视频一区二区三区| 亚洲成a人片在线观看中文| 在线观看国产精品网站| 亚洲综合区在线| 在线精品视频免费观看| 夜夜嗨av一区二区三区中文字幕| yourporn久久国产精品| 国产精品欧美极品| 成人自拍视频在线观看| 国产亚洲人成网站| 丁香激情综合国产| 国产精品国产三级国产普通话蜜臀| 国产成人精品影视| 国产日本亚洲高清| 成人激情黄色小说| 中文字幕一区二区三区乱码在线| 99久久久国产精品| 综合久久久久久| 在线观看欧美精品| 日日夜夜精品视频免费| 日韩一区二区三区高清免费看看 | 一区二区三区在线免费视频| 一本一道综合狠狠老| 亚洲欧美电影一区二区| 欧美中文字幕一区二区三区| 亚洲bt欧美bt精品| 日韩欧美色电影| 国产精品亚洲а∨天堂免在线| 久久久激情视频| 成+人+亚洲+综合天堂| 亚洲美女一区二区三区| 欧美美女视频在线观看| 久久91精品久久久久久秒播| 国产午夜亚洲精品理论片色戒 | 国产日韩精品一区二区三区| 99国产精品久久久| 亚洲一级电影视频| 日韩视频免费观看高清完整版 | 国产精品乡下勾搭老头1| 国产精品美女久久福利网站 | 日韩你懂的电影在线观看| 国产美女精品人人做人人爽| 国产精品欧美经典| 欧美丝袜自拍制服另类| 老司机精品视频线观看86| 国产精品无遮挡| 欧美色偷偷大香| 国模娜娜一区二区三区| 亚洲欧美日韩在线不卡| 91精品国产麻豆| 成人午夜短视频| 亚洲在线视频网站| 日韩精品影音先锋| 91女厕偷拍女厕偷拍高清| 日韩av高清在线观看| 国产精品免费视频观看| 欧美精品日日鲁夜夜添| 国产成人福利片| 亚洲成人av在线电影| 国产调教视频一区| 欧美精品自拍偷拍| 成人av在线看| 免费一区二区视频| 亚洲天天做日日做天天谢日日欢| 日韩无一区二区| 色婷婷精品大在线视频 | 国产一区二区三区免费| 亚洲一区二三区| 国产欧美日韩麻豆91|