On 2019-06-10 22:55, Ezequiel Garcia wrote: > Some drivers need to access a vb2 buffer from its > queue index. Introduce an accessor to abstract this, > and avoid drivers from accessing private members. > > Reviewed-by: Boris Brezillon <boris.brezillon@xxxxxxxxxxxxx> > Signed-off-by: Ezequiel Garcia <ezequiel@xxxxxxxxxxxxx> Acked-by: Marek Szyprowski <m.szyprowski@xxxxxxxxxxx> > --- > Changes from v1: > * Drop redundant num_buffers > 0 check. > --- > include/media/videobuf2-core.h | 18 ++++++++++++++++++ > 1 file changed, 18 insertions(+) > > diff --git a/include/media/videobuf2-core.h b/include/media/videobuf2-core.h > index c03ef7cc5071..640aabe69450 100644 > --- a/include/media/videobuf2-core.h > +++ b/include/media/videobuf2-core.h > @@ -1163,6 +1163,24 @@ static inline void vb2_clear_last_buffer_dequeued(struct vb2_queue *q) > q->last_buffer_dequeued = false; > } > > +/** > + * vb2_get_buffer() - get a buffer from a queue > + * @q: pointer to &struct vb2_queue with videobuf2 queue. > + * @index: buffer index > + * > + * This function obtains a buffer from a queue, by its index. > + * Keep in mind that there is no refcounting involved in this > + * operation, so the buffer lifetime should be taken into > + * consideration. > + */ > +static inline struct vb2_buffer *vb2_get_buffer(struct vb2_queue *q, > + unsigned int index) > +{ > + if (index < q->num_buffers) > + return q->bufs[index]; > + return NULL; > +} > + > /* > * The following functions are not part of the vb2 core API, but are useful > * functions for videobuf2-*. Best regards -- Marek Szyprowski, PhD Samsung R&D Institute Poland