摄像头驱动程序设计.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
摄像头驱动程序设计

SNONIX 120摄像头驱动程序设计;主要内容:;USB摄像头驱动;摄像头驱动的特殊性;V4L2简介;v4l2视频处理的步骤:;urb结构体简介;urb的生命周期(一);urb的生命周期(二);驱动原理图:;static void sn9c120_urb_complete(struct urb *urb) //ok { struct sn9c120_device* cam = urb-context; struct sn9c120_frame_t** f; size_t imagesize, soflen; u8 i; int err = 0; if (urb-status == -ENOENT) return; ; f = cam-frame_current; if (cam-stream == STREAM_INTERRUPT) { cam-stream = STREAM_OFF; if ((*f)) (*f)-state = F_QUEUED; cam-sof.bytesread = 0; printk( Stream interrupted by application\n); wake_up(cam-wait_stream); } if (cam-state DEV_DISCONNECTED) return; if (cam-state DEV_MISCONFIGURED) { wake_up_interruptible(cam-wait_frame); return; } if (cam-stream == STREAM_OFF || list_empty(cam-inqueue)) goto resubmit_urb; ; if (!(*f)) (*f) = list_entry(cam-inqueue.next, struct sn9c120_frame_t, frame); imagesize = (cam-sensor.pix_format.width * cam-sensor.pix_format.height * cam-sensor.pix_format.priv) / 8; if (cam-sensor.pix_format.pixelformat == V4L2_PIX_FMT_JPEG) imagesize += 589; /* length of jpeg header */ soflen = sn9c120_sof_length(cam); for (i = 0; i urb-number_of_packets; i++) { unsigned int img, len, status; void *pos, *sof, *eof; len = urb-iso_frame_desc[i].actual_length; status = urb-iso_frame_desc[i].status; pos = urb-iso_frame_desc[i].offset + urb-transfer_buffer; if (status) { printk( Error in isochronous frame\n); (*f)-state = F_ERROR; cam-sof.bytesread = 0; continue; };redo: sof = sn9c120_find_sof_header(cam, pos, len); if (likely(!sof)) { eof = sn9c120_find_eof_header(cam, pos, len); if ((*f)-state == F_GRABBING) { end_of_frame: img = len; if (eof) img = (eof pos) ? eof - pos - 1 : 0; if ((*f)-buf.bytesused + img imagesize) { u32 b; b = (*f)-buf.bytesused + img - imagesize; img = imagesize - (*f)-buf.bytesused; printk(Expected EOF not found: video frame cut\

文档评论(0)

ligennv1314 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档