日期:2014-05-16 浏览次数:20815 次
这部分涉及不少专业支持,有些可能写的不好,请大家原谅!
/* Values for 'capabilities' field */ #define V4L2_CAP_VIDEO_CAPTURE 0x00000001 /* Is a video capture device */ #define V4L2_CAP_VIDEO_OUTPUT 0x00000002 /* Is a video output device */ #define V4L2_CAP_VIDEO_OVERLAY 0x00000004 /* Can do video overlay */ #define V4L2_CAP_VBI_CAPTURE 0x00000010 /* Is a raw VBI capture device */ #define V4L2_CAP_VBI_OUTPUT 0x00000020 /* Is a raw VBI output device */ #define V4L2_CAP_SLICED_VBI_CAPTURE 0x00000040 /* Is a sliced VBI capture device */ #define V4L2_CAP_SLICED_VBI_OUTPUT 0x00000080 /* Is a sliced VBI output device */ #define V4L2_CAP_RDS_CAPTURE 0x00000100 /* RDS data capture */ #define V4L2_CAP_VIDEO_OUTPUT_OVERLAY 0x00000200 /* Can do video output overlay */ #define V4L2_CAP_HW_FREQ_SEEK 0x00000400 /* Can do hardware frequency seek */ #define V4L2_CAP_RDS_OUTPUT 0x00000800 /* Is an RDS encoder */ /* Is a video capture device that supports multiplanar formats */ #define V4L2_CAP_VIDEO_CAPTURE_MPLANE 0x00001000 /* Is a video output device that supports multiplanar formats */ #define V4L2_CAP_VIDEO_OUTPUT_MPLANE 0x00002000 #define V4L2_CAP_TUNER 0x00010000 /* has a tuner */ #define V4L2_CAP_AUDIO 0x00020000 /* has audio support */ #define V4L2_CAP_RADIO 0x00040000 /* is a radio device */ #define V4L2_CAP_MODULATOR 0x00080000 /* has a modulator */ #define V4L2_CAP_READWRITE 0x01000000 /* read/write systemcalls */ #define V4L2_CAP_ASYNCIO 0x02000000 /* async I/O */ #define V4L2_CAP_STREAMING 0x04000000 /* streaming I/O ioctls */下面是解释:
1. videocapture 、video overlay、video output、video output overlay
上面说了一个是采集一个是直接传送视频
vieo overlay不同于video capture,是指不需要对video信号的帧进行copy,直接将视频信号转化成显卡的VGA信号或者将捕获到的视频帧直接存放在显卡的内存中。Video overlay需要硬件的支持。这个直接的通道主要是DMA去实现。
Viedo overlay只用来preview,又被称为framebuffer overlay或previwing。 实际上video capture interface也能实现preview,只是没有overlay有效率。
如果是同时进行overlay和capture,应该尽量不使用同一个文件 描述符,比如说如果此时在overlay,要拍照的话应该再打开设备,使用一个分开的文件描述符来进行capture。如果driver支持同时进行overlay和capture的话,必须支持使用分开的文件描述符来分别进行overlay和capture 。为了多文件描述符的操作linux操作系统加入v4l2_fh和v4l2_prio的机制。以后再说。
video output设备是把静态图片编码为模拟video信号,这就意味着output设备的输出是模拟video信号。
Video Output Overlay又称on-screen display,把framebuffer中的内容叠加到输出的video信号中。
2. vbi
VBI= Vertical Blanking Interval(场消隐区)。在模拟显示设备上(例如:CRT显示器),一场的显
示是从屏幕上方到下方一行一行绘制而成。一旦一场数据绘制完毕,电子束会由下方转移到上方,以备
开始下一场数据的显示。在这个电极复位的时间间隙内,CRT和信号间是没有数据传输的,因此称作场
消隐区。
在场消隐区时间内,不需要传输任何有用的视频数据,所以显示器不接受和处理任何的输入视频
信号。在这个间隔内,设备间可以利用空闲的基带进行额外的数据通讯。为了让这个问题简单化,水
平扫描线在场消隐区时继续传输,但是扫描线上不附带任何可供显示的视频数据。此时,每一个VBI
扫描线,或者一组VBI数据扫描线可能包含有按照某种标准进行编码后的信息。最常用的VBI应用就是
在闭路电视上,用于显示字幕。图文电视(Teletext)就是VBI数据广播的一种.
Raw VBI和SlicedVBI
接收到VBI数据的硬件设备,只需要去完完整整的接纳数据,并且对接收到的数据不做任何的数据处理,
这个称之为原始数据。这些原始数据可能直接提交给软件解析其内容。另外一种方式是用VBI硬件按照
某种标准或者类型去解析VBI数据,在这种方式下,信号的输出就被分离成为闭路电视字幕,或者其他
类型的数据包。典型的VBI数据分离电路支持都支持这两种模式。自从VBI硬件处理电路中添加了数据分
离,错误处理等功能后,Sliced模式变得更加有用。Raw VBI Data(原始VBI数据)主要用于没有任何
数据标准,且信号直接送递显示设备的场合。
3 .RDS
无线电数据系统,简称RDS,是欧洲广播联盟的通信协议标准,该标准的建立是为了使用传统的FM无线电广播发送少量的数字化信息。RDS系统标准化了好几个类型的信息传输,包括时间,信息跟踪和电台识别。在九十年代早期,RDS在欧洲和拉丁美洲已经标准化,但在北美标准化较少。
这是百度文库找的,其实RDS发明是针对汽车使用的。和FM和AM比较主要有两点: