v4l2bufferpool: fix import_userptr() in single-planar API when n_planes > 1
authorAurélien Zanelli <aurelien.zanelli@parrot.com>
Mon, 6 Oct 2014 15:30:06 +0000 (17:30 +0200)
committerNicolas Dufresne <nicolas.dufresne@collabora.co.uk>
Wed, 25 Feb 2015 19:25:01 +0000 (14:25 -0500)
commit600027a1ee83ef595cc5598633812c15e6b30db2
tree6d0c0f7cc1081d1add918e9ea5399b73172862c2
parentac3cb8817e042bbed3d86d8f1cd1c45e49015a2c
v4l2bufferpool: fix import_userptr() in single-planar API when n_planes > 1

In the V4L2 single-planar API, when format is semi-planar/planar,
drivers expect the planes to be contiguous in memory.
So this commit change the way we handle semi-planar/planar format
(n_planes > 1) when we use the single-planar API (group->n_mem == 1).

To check that planes are contiguous and have expected size, ie: no
padding. We test the fact that plane 'i' start address + plane 'i'
expected size equals to plane 'i + 1' start address. If not, we return
in error.

Math are done in bufferpool rather than in allocator because the
former is aware of video info.

https://bugzilla.gnome.org/show_bug.cgi?id=738013
sys/v4l2/gstv4l2allocator.c
sys/v4l2/gstv4l2bufferpool.c
sys/v4l2/gstv4l2object.c
sys/v4l2/gstv4l2object.h