uvc摄像头代码解析4

7.uvc_parse_format

7.1 uvc格式描述符

struct uvc_format_desc { //uvc格式描述符
char *name; //uvc格式描述符名字
__u8 guid[16];//全局唯一ID
__u32 fcc; //压缩格式
};
7.2 uvc解析1个格式描述符

static int uvc_parse_format(struct uvc_device *dev,struct uvc_streaming *streaming, struct uvc_format *format,__u32 **intervals, unsigned char *buffer, int buflen)
{
	struct usb_interface *intf = streaming->intf;	//获取usb接口
	struct usb_host_interface *alts = intf->cur_altsetting;	//获取usb_host_interface
	struct uvc_format_desc *fmtdesc;	//uvc格式描述符
	struct uvc_frame *frame;	//uvc帧
	const unsigned char *start = buffer;
	unsigned int interval;
	unsigned int i, n;
	__u8 ftype;

	format->type = buffer[2];	//uvc格式类型
	format->index = buffer[3];	//uvc格式索引
	switch (buffer[2]) {	//uvc格式类型
	case UVC_VS_FORMAT_UNCOMPRESSED:

case UVC_VS_FORMAT_FRAME_BASED:

		n = buffer[2] == UVC_VS_FORMAT_UNCOMPRESSED ? 27 : 28;	//获取描述符大小
		if (buflen < n) {	//检验buflen大小
			uvc_trace(UVC_TRACE_DESCR, "device %d videostreaming interface %d FORMAT error\n",dev->udev->devnum,alts->desc.bInterfaceNumber);
			return -EINVAL;
		}
		/* Find the format descriptor from its GUID. */
		fmtdesc = uvc_format_by_guid(&buffer[5]);	//获取uvc格式描述符
		if (fmtdesc != NULL) {	//设置uvc格式编码格式名字
			strlcpy(format->name, fmtdesc->name,sizeof format->name);
			format->fcc = fmtdesc->fcc;	//设置uvc格式的fcc(压缩格式)
		} 
  • 5
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值