Lines Matching refs:b

49 static int __verify_planes_array(struct vb2_buffer *vb, const struct v4l2_buffer *b)  in __verify_planes_array()  argument
51 if (!V4L2_TYPE_IS_MULTIPLANAR(b->type)) in __verify_planes_array()
55 if (NULL == b->m.planes) { in __verify_planes_array()
61 if (b->length < vb->num_planes || b->length > VB2_MAX_PLANES) { in __verify_planes_array()
63 "expected %d, got %d\n", vb->num_planes, b->length); in __verify_planes_array()
74 static int __verify_length(struct vb2_buffer *vb, const struct v4l2_buffer *b) in __verify_length() argument
80 if (!V4L2_TYPE_IS_OUTPUT(b->type)) in __verify_length()
83 if (V4L2_TYPE_IS_MULTIPLANAR(b->type)) { in __verify_length()
85 length = (b->memory == VB2_MEMORY_USERPTR || in __verify_length()
86 b->memory == VB2_MEMORY_DMABUF) in __verify_length()
87 ? b->m.planes[plane].length in __verify_length()
89 bytesused = b->m.planes[plane].bytesused in __verify_length()
90 ? b->m.planes[plane].bytesused : length; in __verify_length()
92 if (b->m.planes[plane].bytesused > length) in __verify_length()
95 if (b->m.planes[plane].data_offset > 0 && in __verify_length()
96 b->m.planes[plane].data_offset >= bytesused) in __verify_length()
100 length = (b->memory == VB2_MEMORY_USERPTR) in __verify_length()
101 ? b->length : vb->planes[0].length; in __verify_length()
103 if (b->bytesused > length) in __verify_length()
112 const struct v4l2_buffer *b = pb; in __set_timestamp() local
123 vbuf->timestamp = b->timestamp; in __set_timestamp()
124 vbuf->flags |= b->flags & V4L2_BUF_FLAG_TIMECODE; in __set_timestamp()
125 if (b->flags & V4L2_BUF_FLAG_TIMECODE) in __set_timestamp()
126 vbuf->timecode = b->timecode; in __set_timestamp()
148 static int vb2_queue_or_prepare_buf(struct vb2_queue *q, struct v4l2_buffer *b, in vb2_queue_or_prepare_buf() argument
151 if (b->type != q->type) { in vb2_queue_or_prepare_buf()
156 if (b->index >= q->num_buffers) { in vb2_queue_or_prepare_buf()
161 if (q->bufs[b->index] == NULL) { in vb2_queue_or_prepare_buf()
167 if (b->memory != q->memory) { in vb2_queue_or_prepare_buf()
172 return __verify_planes_array(q->bufs[b->index], b); in vb2_queue_or_prepare_buf()
181 struct v4l2_buffer *b = pb; in __fill_v4l2_buffer() local
187 b->index = vb->index; in __fill_v4l2_buffer()
188 b->type = vb->type; in __fill_v4l2_buffer()
189 b->memory = vb->memory; in __fill_v4l2_buffer()
190 b->bytesused = 0; in __fill_v4l2_buffer()
192 b->flags = vbuf->flags; in __fill_v4l2_buffer()
193 b->field = vbuf->field; in __fill_v4l2_buffer()
194 b->timestamp = vbuf->timestamp; in __fill_v4l2_buffer()
195 b->timecode = vbuf->timecode; in __fill_v4l2_buffer()
196 b->sequence = vbuf->sequence; in __fill_v4l2_buffer()
197 b->reserved2 = 0; in __fill_v4l2_buffer()
198 b->reserved = 0; in __fill_v4l2_buffer()
205 b->length = vb->num_planes; in __fill_v4l2_buffer()
207 struct v4l2_plane *pdst = &b->m.planes[plane]; in __fill_v4l2_buffer()
226 b->length = vb->planes[0].length; in __fill_v4l2_buffer()
227 b->bytesused = vb->planes[0].bytesused; in __fill_v4l2_buffer()
229 b->m.offset = vb->planes[0].m.offset; in __fill_v4l2_buffer()
231 b->m.userptr = vb->planes[0].m.userptr; in __fill_v4l2_buffer()
233 b->m.fd = vb->planes[0].m.fd; in __fill_v4l2_buffer()
239 b->flags &= ~V4L2_BUFFER_MASK_FLAGS; in __fill_v4l2_buffer()
240 b->flags |= q->timestamp_flags & V4L2_BUF_FLAG_TIMESTAMP_MASK; in __fill_v4l2_buffer()
247 b->flags &= ~V4L2_BUF_FLAG_TSTAMP_SRC_MASK; in __fill_v4l2_buffer()
248 b->flags |= q->timestamp_flags & V4L2_BUF_FLAG_TSTAMP_SRC_MASK; in __fill_v4l2_buffer()
254 b->flags |= V4L2_BUF_FLAG_QUEUED; in __fill_v4l2_buffer()
257 b->flags |= V4L2_BUF_FLAG_ERROR; in __fill_v4l2_buffer()
260 b->flags |= V4L2_BUF_FLAG_DONE; in __fill_v4l2_buffer()
263 b->flags |= V4L2_BUF_FLAG_PREPARED; in __fill_v4l2_buffer()
273 b->flags |= V4L2_BUF_FLAG_MAPPED; in __fill_v4l2_buffer()
287 const struct v4l2_buffer *b = pb; in __fill_vb2_buffer() local
292 ret = __verify_length(vb, b); in __fill_vb2_buffer()
297 if (b->field == V4L2_FIELD_ALTERNATE && q->is_output) { in __fill_vb2_buffer()
315 if (V4L2_TYPE_IS_MULTIPLANAR(b->type)) { in __fill_vb2_buffer()
316 if (b->memory == VB2_MEMORY_USERPTR) { in __fill_vb2_buffer()
319 b->m.planes[plane].m.userptr; in __fill_vb2_buffer()
321 b->m.planes[plane].length; in __fill_vb2_buffer()
324 if (b->memory == VB2_MEMORY_DMABUF) { in __fill_vb2_buffer()
327 b->m.planes[plane].m.fd; in __fill_vb2_buffer()
329 b->m.planes[plane].length; in __fill_vb2_buffer()
334 if (V4L2_TYPE_IS_OUTPUT(b->type)) { in __fill_vb2_buffer()
353 struct v4l2_plane *psrc = &b->m.planes[plane]; in __fill_vb2_buffer()
381 if (b->memory == VB2_MEMORY_USERPTR) { in __fill_vb2_buffer()
382 planes[0].m.userptr = b->m.userptr; in __fill_vb2_buffer()
383 planes[0].length = b->length; in __fill_vb2_buffer()
386 if (b->memory == VB2_MEMORY_DMABUF) { in __fill_vb2_buffer()
387 planes[0].m.fd = b->m.fd; in __fill_vb2_buffer()
388 planes[0].length = b->length; in __fill_vb2_buffer()
391 if (V4L2_TYPE_IS_OUTPUT(b->type)) { in __fill_vb2_buffer()
392 if (b->bytesused == 0) in __fill_vb2_buffer()
396 planes[0].bytesused = b->bytesused; in __fill_vb2_buffer()
398 planes[0].bytesused = b->bytesused ? in __fill_vb2_buffer()
399 b->bytesused : planes[0].length; in __fill_vb2_buffer()
406 vbuf->flags = b->flags & ~V4L2_BUFFER_MASK_FLAGS; in __fill_vb2_buffer()
408 V4L2_BUF_FLAG_TIMESTAMP_COPY || !V4L2_TYPE_IS_OUTPUT(b->type)) { in __fill_vb2_buffer()
417 if (V4L2_TYPE_IS_OUTPUT(b->type)) { in __fill_vb2_buffer()
425 vbuf->field = b->field; in __fill_vb2_buffer()
453 int vb2_querybuf(struct vb2_queue *q, struct v4l2_buffer *b) in vb2_querybuf() argument
458 if (b->type != q->type) { in vb2_querybuf()
463 if (b->index >= q->num_buffers) { in vb2_querybuf()
467 vb = q->bufs[b->index]; in vb2_querybuf()
468 ret = __verify_planes_array(vb, b); in vb2_querybuf()
470 return ret ? ret : vb2_core_querybuf(q, b->index, b); in vb2_querybuf()
504 int vb2_prepare_buf(struct vb2_queue *q, struct v4l2_buffer *b) in vb2_prepare_buf() argument
513 ret = vb2_queue_or_prepare_buf(q, b, "prepare_buf"); in vb2_prepare_buf()
515 return ret ? ret : vb2_core_prepare_buf(q, b->index, b); in vb2_prepare_buf()
539 static int vb2_internal_qbuf(struct vb2_queue *q, struct v4l2_buffer *b) in vb2_internal_qbuf() argument
541 int ret = vb2_queue_or_prepare_buf(q, b, "qbuf"); in vb2_internal_qbuf()
543 return ret ? ret : vb2_core_qbuf(q, b->index, b); in vb2_internal_qbuf()
563 int vb2_qbuf(struct vb2_queue *q, struct v4l2_buffer *b) in vb2_qbuf() argument
570 return vb2_internal_qbuf(q, b); in vb2_qbuf()
574 static int vb2_internal_dqbuf(struct vb2_queue *q, struct v4l2_buffer *b, in vb2_internal_dqbuf() argument
579 if (b->type != q->type) { in vb2_internal_dqbuf()
584 ret = vb2_core_dqbuf(q, b, nonblocking); in vb2_internal_dqbuf()
587 b->flags & V4L2_BUF_FLAG_LAST) in vb2_internal_dqbuf()
614 int vb2_dqbuf(struct vb2_queue *q, struct v4l2_buffer *b, bool nonblocking) in vb2_dqbuf() argument
620 return vb2_internal_dqbuf(q, b, nonblocking); in vb2_dqbuf()
902 struct v4l2_buffer b; member
1001 struct v4l2_buffer *b = &fileio->b; in __vb2_init_fileio() local
1003 memset(b, 0, sizeof(*b)); in __vb2_init_fileio()
1004 b->type = q->type; in __vb2_init_fileio()
1007 b->m.planes = &fileio->p; in __vb2_init_fileio()
1008 b->length = 1; in __vb2_init_fileio()
1010 b->memory = q->memory; in __vb2_init_fileio()
1011 b->index = i; in __vb2_init_fileio()
1012 ret = vb2_internal_qbuf(q, b); in __vb2_init_fileio()
1114 memset(&fileio->b, 0, sizeof(fileio->b)); in __vb2_perform_fileio()
1115 fileio->b.type = q->type; in __vb2_perform_fileio()
1116 fileio->b.memory = q->memory; in __vb2_perform_fileio()
1119 fileio->b.m.planes = &fileio->p; in __vb2_perform_fileio()
1120 fileio->b.length = 1; in __vb2_perform_fileio()
1122 ret = vb2_internal_dqbuf(q, &fileio->b, nonblock); in __vb2_perform_fileio()
1128 fileio->cur_index = index = fileio->b.index; in __vb2_perform_fileio()
1140 fileio->b.m.planes[0].data_offset < buf->size) { in __vb2_perform_fileio()
1141 buf->pos = fileio->b.m.planes[0].data_offset; in __vb2_perform_fileio()
1191 memset(&fileio->b, 0, sizeof(fileio->b)); in __vb2_perform_fileio()
1192 fileio->b.type = q->type; in __vb2_perform_fileio()
1193 fileio->b.memory = q->memory; in __vb2_perform_fileio()
1194 fileio->b.index = index; in __vb2_perform_fileio()
1195 fileio->b.bytesused = buf->pos; in __vb2_perform_fileio()
1199 fileio->b.m.planes = &fileio->p; in __vb2_perform_fileio()
1200 fileio->b.length = 1; in __vb2_perform_fileio()
1203 v4l2_get_timestamp(&fileio->b.timestamp); in __vb2_perform_fileio()
1204 ret = vb2_internal_qbuf(q, &fileio->b); in __vb2_perform_fileio()
1287 memset(&fileio->b, 0, sizeof(fileio->b)); in vb2_thread()
1288 fileio->b.type = q->type; in vb2_thread()
1289 fileio->b.memory = q->memory; in vb2_thread()
1291 fileio->b.index = index++; in vb2_thread()
1296 ret = vb2_internal_dqbuf(q, &fileio->b, 0); in vb2_thread()
1304 vb = q->bufs[fileio->b.index]; in vb2_thread()
1305 if (!(fileio->b.flags & V4L2_BUF_FLAG_ERROR)) in vb2_thread()
1310 v4l2_get_timestamp(&fileio->b.timestamp); in vb2_thread()
1312 ret = vb2_internal_qbuf(q, &fileio->b); in vb2_thread()