uvc摄像头代码解析3

6.uvc解析uvc视频流

6.1 重要结构体

6.1.1 uvc数据流

struct uvc_streaming {
	struct list_head list;	//uvc视频流链表头
	struct uvc_device *dev;	//uvc设备
	struct video_device *vdev;	//V4L2视频设备
	struct uvc_video_chain *chain;	//uvc视频链
	atomic_t active;
	struct usb_interface *intf;	//usb接口设备
	int intfnum;	//usb接口号
	__u16 maxpsize;	//最大包尺寸
	struct uvc_streaming_header header;	//uvc视频流头部
	enum v4l2_buf_type type;	//V4L2缓冲区类型 输入/输出
	unsigned int nformats;	//uvc格式个数
	struct uvc_format *format;	//uvc格式指针
	struct uvc_streaming_control ctrl;	//uvc数据流控制
	struct uvc_format *cur_format;	//当前uvc格式指针
	struct uvc_frame *cur_frame;	//当前uvc帧指针
	struct mutex mutex;
	unsigned int frozen : 1;
	struct uvc_video_queue queue;	//uvc视频队列
	void (*decode) (struct urb *urb, struct uvc_streaming *video,struct uvc_buffer *buf);//解码函数
	struct {
		__u8 header[256];
		unsigned int header_size;
		int skip_payload;
		__u32 payload_size;
		__u32 max_payload_size;
	} bulk;
	struct urb *urb[UVC_URBS];//urb数组
	char *urb_buffer[UVC_URBS];	//urb缓冲区
	dma_addr_t urb_dma[UVC_URBS];//urb DMA缓冲区
	unsigned int urb_size;	
	__u32 sequence;
	__u8 last_fid;
};


6.1.2 uvc格式

struct uvc_format {	//uvc格式
	__u8 type;	//类型
	__u8 index;	//索引
	__u8 bpp;	//bits per pixel 每像素位数
	__u8 colorspace;	//颜色空间
	__u32 fcc;	//压缩格式
	__u32 flags;	//标记
	char name[32];	//名字
	unsigned int nframes;	//所含uvc帧个数
	struct uvc_frame *frame;	//uvc帧指针
};


6.1.3 uvc帧

struct uvc_frame {	//uvc帧
	__u8  bFrameIndex;	//帧索引号
	__u8  bmCapabilities;	//uvc帧兼容性
	__u16 wWidth;	//宽度
	__u16 wHeight;	//高度
	__u32 dwMinBitRate;	//最新位流
	__u32 dwMaxBitRate;	//最大位流
	__u32 dwMaxVideoFrameBufferSize;	//最大视频帧缓冲区
	__u8  bFrameIntervalType;	//间隙类型
	__u32 dwDefaultFrameInterval;	//默认帧间隙
	__u32 *dwFrameInterval;	//帧间隙指针
};

  • 4
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值