{"rsdb":{"rid":"235727","subhead":"","postdate":"0","aid":"162844","fid":"105","uid":"1","topic":"1","content":"
\u5728\u5e94\u7528\u7a0b\u5e8f\u83b7\u53d6\u89c6\u9891\u6570\u636e\u7684\u6d41\u7a0b\u4e2d\uff0c\u90fd\u662f\u901a\u8fc7 ioctl \u547d\u4ee4\u4e0e\u9a71\u52a8\u7a0b\u5e8f\u8fdb\u884c\u4ea4\u4e92\uff0c\u5e38\u89c1\u7684 ioctl \u547d\u4ee4\u6709\uff1a<\/p> \n
1<\/span> VIDIOC_QUERYCAP \/*<\/span> \u83b7\u53d6\u8bbe\u5907\u652f\u6301\u7684\u64cd\u4f5c <\/span>*\/<\/span>\r\n 2<\/span> VIDIOC_G_FMT \/*<\/span> \u83b7\u53d6\u8bbe\u7f6e\u652f\u6301\u7684\u89c6\u9891\u683c\u5f0f <\/span>*\/<\/span>\r\n 3<\/span> VIDIOC_S_FMT \/*<\/span> \u8bbe\u7f6e\u6355\u83b7\u89c6\u9891\u7684\u683c\u5f0f <\/span>*\/<\/span>\r\n 4<\/span> VIDIOC_REQBUFS \/*<\/span> \u5411\u9a71\u52a8\u63d0\u51fa\u7533\u8bf7\u5185\u5b58\u7684\u8bf7\u6c42 <\/span>*\/<\/span>\r\n 5<\/span> VIDIOC_QUERYBUF \/*<\/span> \u5411\u9a71\u52a8\u67e5\u8be2\u7533\u8bf7\u5230\u7684\u5185\u5b58 <\/span>*\/<\/span>\r\n 6<\/span> VIDIOC_QBUF \/*<\/span> \u5c06\u7a7a\u95f2\u7684\u5185\u5b58\u52a0\u5165\u53ef\u6355\u83b7\u89c6\u9891\u7684\u961f\u5217 <\/span>*\/<\/span>\r\n 7<\/span> VIDIOC_DQBUF \/*<\/span> \u5c06\u5df2\u7ecf\u6355\u83b7\u597d\u89c6\u9891\u7684\u5185\u5b58\u62c9\u51fa\u5df2\u6355\u83b7\u89c6\u9891\u7684\u961f\u5217 <\/span>*\/<\/span>\r\n 8<\/span> VIDIOC_STREAMON \/*<\/span> \u6253\u5f00\u89c6\u9891\u6d41 <\/span>*\/<\/span>\r\n 9<\/span> VIDIOC_STREAMOFF \/*<\/span> \u5173\u95ed\u89c6\u9891\u6d41 <\/span>*\/<\/span>\r\n10<\/span> VIDIOC_QUERYCTRL \/*<\/span> \u67e5\u8be2\u9a71\u52a8\u662f\u5426\u652f\u6301\u8be5\u547d\u4ee4 <\/span>*\/<\/span>\r\n11<\/span> VIDIOC_G_CTRL \/*<\/span> \u83b7\u53d6\u5f53\u524d\u547d\u4ee4\u503c <\/span>*\/<\/span>\r\n12<\/span> VIDIOC_S_CTRL \/*<\/span> \u8bbe\u7f6e\u65b0\u7684\u547d\u4ee4\u503c <\/span>*\/<\/span>\r\n13<\/span> VIDIOC_G_TUNER \/*<\/span> \u83b7\u53d6\u8c03\u8c10\u5668\u4fe1\u606f <\/span>*\/<\/span>\r\n14<\/span> VIDIOC_S_TUNER \/*<\/span> \u8bbe\u7f6e\u8c03\u8c10\u5668\u4fe1\u606f <\/span>*\/<\/span>\r\n15<\/span> VIDIOC_G_FREQUENCY \/*<\/span> \u83b7\u53d6\u8c03\u8c10\u5668\u9891\u7387 <\/span>*\/<\/span>\r\n16<\/span> VIDIOC_S_FREQUENCY \/*<\/span> \u8bbe\u7f6e\u8c03\u8c10\u5668\u9891\u7387 <\/span>*\/<\/span><\/pre> \n <\/div> \n <\/p> \n
<\/p> \n
1\u3001struct v4l2_capability \u4e0e VIDIOC_QUERYCAP<\/strong><\/h3> \n VIDIOC_QUERYCAP \u547d\u4ee4\u901a\u8fc7\u7ed3\u6784 v4l2_capability \u83b7\u53d6\u8bbe\u5907\u652f\u6301\u7684\u64cd\u4f5c\u6a21\u5f0f\uff1a<\/p> \n
\n 1<\/span> struct<\/span> v4l2_capability {\r\n<\/span>2<\/span> __u8 driver[16<\/span>]; \/*<\/span> i.e. "bttv" <\/span>*\/<\/span>\r\n3<\/span> __u8 card[32<\/span>]; \/*<\/span> i.e. "Hauppauge WinTV" <\/span>*\/<\/span>\r\n4<\/span> __u8 bus_info[32<\/span>]; \/*<\/span> "PCI:" + pci_name(pci_dev) <\/span>*\/<\/span>\r\n5<\/span> __u32 version; \/*<\/span> should use KERNEL_VERSION() <\/span>*\/<\/span>\r\n6<\/span> __u32 capabilities; \/*<\/span> Device capabilities <\/span>*\/<\/span>\r\n7<\/span> __u32 reserved[4<\/span>];\r\n<\/span>8<\/span> };<\/pre> \n <\/div> \n \u5176\u4e2d\u57df capabilities \u4ee3\u8868\u8bbe\u5907\u652f\u6301\u7684\u64cd\u4f5c\u6a21\u5f0f\uff0c\u5e38\u89c1\u7684\u503c\u6709 V4L2_CAP_VIDEO_CAPTURE | V4L2_CAP_STREAMING \u8868\u793a\u662f\u4e00\u4e2a\u89c6\u9891\u6355\u6349\u8bbe\u5907\u5e76\u4e14\u5177\u6709\u6570\u636e\u6d41\u63a7\u5236\u6a21\u5f0f\uff1b\u53e6\u5916 driver \u57df\u9700\u8981\u548c struct video_device \u4e2d\u7684 name \u5339\u914d\u3002<\/p> \n
<\/p> \n
2\u3001struct v4l2_format \u4e0e VIDIOC_G_FMT\u3001VIDIOC_S_FMT\u3001VIDIOC_TRY_FMT<\/strong><\/h3> \n \u901a\u5e38\u7528 VIDIOC_S_FMT \u547d\u4ee4\u901a\u8fc7\u7ed3\u6784 v4l2_format \u521d\u59cb\u5316\u6355\u83b7\u89c6\u9891\u7684\u683c\u5f0f\uff0c\u5982\u679c\u8981\u6539\u53d8\u683c\u5f0f\u5219\u7528 VIDIOC_TRY_FMT \u547d\u4ee4\uff1a<\/p> \n
\n 1<\/span> struct<\/span> v4l2_format {\r\n<\/span> 2<\/span> enum<\/span> v4l2_buf_type type;\r\n<\/span> 3<\/span> union {\r\n<\/span> 4<\/span> struct<\/span> v4l2_pix_format pix; \/*<\/span> V4L2_BUF_TYPE_VIDEO_CAPTURE <\/span>*\/<\/span>\r\n 5<\/span> struct<\/span> v4l2_window win; \/*<\/span> V4L2_BUF_TYPE_VIDEO_OVERLAY <\/span>*\/<\/span>\r\n 6<\/span> struct<\/span> v4l2_vbi_format vbi; \/*<\/span> V4L2_BUF_TYPE_VBI_CAPTURE <\/span>*\/<\/span>\r\n 7<\/span> struct<\/span> v4l2_sliced_vbi_format sliced; \/*<\/span> V4L2_BUF_TYPE_SLICED_VBI_CAPTURE <\/span>*\/<\/span>\r\n 8<\/span> __u8 raw_data[200<\/span>]; \/*<\/span> user-defined <\/span>*\/<\/span>\r\n 9<\/span> } fmt;\r\n<\/span>10<\/span> };\r\n<\/span>11<\/span> \u5176\u4e2d\r\n<\/span>12<\/span> enum<\/span> v4l2_buf_type {\r\n<\/span>13<\/span> V4L2_BUF_TYPE_VIDEO_CAPTURE = 1<\/span>,\r\n<\/span>14<\/span> V4L2_BUF_TYPE_VIDEO_OUTPUT = 2<\/span>,\r\n<\/span>15<\/span> V4L2_BUF_TYPE_VIDEO_OVERLAY = 3<\/span>,\r\n<\/span>16<\/span> ...\r\n<\/span>17<\/span> V4L2_BUF_TYPE_PRIVATE = 0x80<\/span>,\r\n<\/span>18<\/span> };\r\n<\/span>19<\/span> \r\n20<\/span> struct<\/span> v4l2_pix_format {\r\n<\/span>21<\/span> __u32 width;\r\n<\/span>22<\/span> __u32 height;\r\n<\/span>23<\/span> __u32 pixelformat;\r\n<\/span>24<\/span> enum<\/span> v4l2_field field;\r\n<\/span>25<\/span> __u32 bytesperline; \/*<\/span> for padding, zero if unused <\/span>*\/<\/span>\r\n26<\/span> __u32 sizeimage;\r\n<\/span>27<\/span> enum<\/span> v4l2_colorspace colorspace;\r\n<\/span>28<\/span> __u32 priv; \/*<\/span> private data, depends on pixelformat <\/span>*\/<\/span>\r\n29<\/span> };<\/pre> \n <\/div> \n <\/p> \n
\n \u5e38\u89c1\u7684\u6355\u83b7\u6a21\u5f0f\u4e3a V4L2_BUF_TYPE_VIDEO_CAPTURE \u5373\u89c6\u9891\u6355\u6349\u6a21\u5f0f\uff0c\u5728\u6b64\u6a21\u5f0f\u4e0b fmt \u8054\u5408\u4f53\u91c7\u7528\u57df v4l2_pix_format\uff1a\u5176\u4e2d width \u4e3a\u89c6\u9891\u7684\u5bbd\u3001height \u4e3a\u89c6\u9891\u7684\u9ad8\u3001pixelformat \u4e3a\u89c6\u9891\u6570\u636e\u683c\u5f0f\uff08\u5e38\u89c1\u7684\u503c\u6709 V4L2_PIX_FMT_YUV422P | V4L2_PIX_FMT_RGB565\uff09\u3001bytesperline \u4e3a\u4e00\u884c\u56fe\u50cf\u5360\u7528\u7684\u5b57\u8282\u6570\u3001sizeimage \u5219\u4e3a\u56fe\u50cf\u5360\u7528\u7684\u603b\u5b57\u8282\u6570\u3001colorspace \u6307\u5b9a\u8bbe\u5907\u7684\u989c\u8272\u7a7a\u95f4\u3002\n <\/div> \n <\/p> \n <\/div> \n <\/div> \n
\n <\/p> \n
3\u3001struct v4l2_requestbuffers \u4e0e VIDIOC_REQBUFS<\/strong><\/strong><\/h3> \n VIDIOC_REQBUFS \u547d\u4ee4\u901a\u8fc7\u7ed3\u6784 v4l2_requestbuffers \u8bf7\u6c42\u9a71\u52a8\u7533\u8bf7\u4e00\u7247\u8fde\u7eed\u7684\u5185\u5b58\u7528\u4e8e\u7f13\u5b58\u89c6\u9891\u4fe1\u606f\uff1a<\/p> \n
\n 1<\/span> struct<\/span> v4l2_requestbuffers {\r\n<\/span> 2<\/span> __u32 count;\r\n<\/span> 3<\/span> enum<\/span> v4l2_buf_type type;\r\n<\/span> 4<\/span> enum<\/span> v4l2_memory memory;\r\n<\/span> 5<\/span> __u32 reserved[2<\/span>];\r\n<\/span> 6<\/span> };\r\n<\/span> 7<\/span> \u5176\u4e2d\r\n<\/span> 8<\/span> enum<\/span> v4l2_memory {\r\n<\/span> 9<\/span> V4L2_MEMORY_MMAP = 1<\/span>,\r\n<\/span>10<\/span> V4L2_MEMORY_USERPTR = 2<\/span>,\r\n<\/span>11<\/span> V4L2_MEMORY_OVERLAY = 3<\/span>,\r\n<\/span>12<\/span> };<\/pre> \n <\/div> \n count \u6307\u5b9a\u6839\u636e\u56fe\u50cf\u5360\u7528\u7a7a\u95f4\u5927\u5c0f\u7533\u8bf7\u7684\u7f13\u5b58\u533a\u4e2a\u6570\uff0ctype \u4e3a\u89c6\u9891\u6355\u83b7\u6a21\u5f0f\uff0cmemory \u4e3a\u5185\u5b58\u533a\u7684\u4f7f\u7528\u65b9\u5f0f\u3002<\/p> \n
\n \n <\/div> \n 4\u3001struct v4l2_buffer<\/strong>\u4e0e VIDIOC_QUERYBUF<\/strong><\/strong><\/h3> \n VIDIOC_QUERYBUF \u547d\u4ee4\u901a\u8fc7\u7ed3\u6784 v4l2_buffer \u67e5\u8be2\u9a71\u52a8\u7533\u8bf7\u7684\u5185\u5b58\u533a\u4fe1\u606f\uff1a<\/p> \n
\n 1<\/span> struct<\/span> v4l2_buffer {\r\n<\/span> 2<\/span> __u32 index;\r\n<\/span> 3<\/span> enum<\/span> v4l2_buf_type type;\r\n<\/span> 4<\/span> __u32 bytesused;\r\n<\/span> 5<\/span> __u32 flags;\r\n<\/span> 6<\/span> enum<\/span> v4l2_field field;\r\n<\/span> 7<\/span> struct<\/span> time","orderid":"0","title":"V4l2\u7684\u7ed3\u6784\u4f53 --- ioctl\u3010\u8f6c\u3011(\u4e00)","smalltitle":"","mid":"0","fname":"\u5176\u5b83","special_id":"0","bak_id":"0","info":"0","hits":"9392","pages":"4","comments":"0","posttime":"2017-10-13 10:36:00","list":"1507862160","username":"admin","author":"","copyfrom":"","copyfromurl":"","titlecolor":"","fonttype":"0","titleicon":"0","picurl":"https:\/\/www.cppentry.com\/upload_files\/","ispic":"0","yz":"1","yzer":"","yztime":"0","levels":"0","levelstime":"0","keywords":"