*参照元 [#uccc49df] #backlinks *説明 [#wee86457] -パス: [[linux-4.4.1/drivers/media/usb/uvc/uvc_queue.c]] -FIXME: これは何? --説明 **引数 [#j27bad09] -struct vb2_buffer *vb -- --[[linux-4.4.1/vb2_buffer]] **返り値 [#u2422f88] -int -- **参考 [#w5b7f20a] *実装 [#g5c1235a] static int uvc_buffer_prepare(struct vb2_buffer *vb) { struct vb2_v4l2_buffer *vbuf = to_vb2_v4l2_buffer(vb); struct uvc_video_queue *queue = vb2_get_drv_priv(vb->vb2_queue); struct uvc_buffer *buf = container_of(vbuf, struct uvc_buffer, buf); - --[[linux-4.4.1/vb2_v4l2_buffer]] --[[linux-4.4.1/to_vb2_v4l2_buffer()]] --[[linux-4.4.1/uvc_video_queue]] --[[linux-4.4.1/vb2_get_drv_priv()]] --[[linux-4.4.1/uvc_buffer]] --[[linux-4.4.1/container_of()]] if (vb->type == V4L2_BUF_TYPE_VIDEO_OUTPUT && vb2_get_plane_payload(vb, 0) > vb2_plane_size(vb, 0)) { uvc_trace(UVC_TRACE_CAPTURE, "[E] Bytes used out of bounds.\n"); return -EINVAL; } - --[[linux-4.4.1/vb2_get_plane_payload()]] --[[linux-4.4.1/vb2_plane_size()]] --[[linux-4.4.1/uvc_trace()]] if (unlikely(queue->flags & UVC_QUEUE_DISCONNECTED)) return -ENODEV; - --[[linux-4.4.1/unlikely()]] buf->state = UVC_BUF_STATE_QUEUED; buf->error = 0; buf->mem = vb2_plane_vaddr(vb, 0); buf->length = vb2_plane_size(vb, 0); if (vb->type == V4L2_BUF_TYPE_VIDEO_CAPTURE) buf->bytesused = 0; else buf->bytesused = vb2_get_plane_payload(vb, 0); - --[[linux-4.4.1/vb2_plane_vaddr()]] --[[linux-4.4.1/vb2_plane_size()]] --[[linux-4.4.1/vb2_get_plane_payload()]] return 0; } *コメント [#v8577933]