More vb2 notes

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi all,

I've been converting a Cisco internal driver to vb2 and while doing that I
found a few issues.

1) I noticed that struct vb2_buffer doesn't have a list_head that the driver
can use to hook it in its dma queue. That forces you to make your own
buffer struct just to have your own list_head.

I think vb2_buffer should either get a driver_entry or the 'done_entry' field
can be assigned for driver use (since a buffer can't be owned by the driver
and be on the done list at the same time). I abused 'done_entry' for now.

2) videobuf2-dma-sg.c no longer calls dma_(un)map_sg()! The old
videobuf-dma-sg.c did that for you. Is there any reason for this change?
I had to manually add it to my driver.

3) videobuf2-core.c uses this in __fill_v4l2_buffer:

        if (vb->num_planes_mapped == vb->num_planes)
                b->flags |= V4L2_BUF_FLAG_MAPPED;

However, I see no code that ever decreases num_planes_mapped. And I also 
wonder what happens if vb2_mmap is called multiple times: num_planes_mapped
will be increased so vb->num_planes_mapped > vb->num_planes and the MAPPED
flag is no longer set.

This is a particular problem with libv4l2 since that tests for the MAPPED
flag and will refuse e.g. format changes if it is set.

4) It is not clear to me when vb2_queue_release should be called. Is it in 
close() when you close a filehandle that was used for streaming?

Regards,

	Hans
--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Input]     [Video for Linux]     [Gstreamer Embedded]     [Mplayer Users]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]
  Powered by Linux