linux/drivers/media/platform/exynos-gsc
Javier Martinez Canillas daba4dfbd2 [media] exynos-gsc: don't clear format when freeing buffers with REQBUFS(0)
User-space applications can use the VIDIOC_REQBUFS ioctl to determine if a
memory mapped, user pointer or DMABUF based I/O is supported by a driver.

For example, GStreamer attempts to determine the I/O methods supported by
the driver by doing many VIDIOC_REQBUFS ioctl calls with different memory
types and count 0. And then the real VIDIOC_REQBUFS call with count == n
is be made to allocate the buffers. But for count 0, the driver not only
frees the buffers but also clears the format set before with VIDIOC_S_FMT.

This is a problem since STREAMON fails if a format isn't set but GStreamer
first sets a format and then tries to determine the supported I/O methods,
so the format will be cleared on REQBUFS(0), before the call to STREAMON.

To avoid this issue, only free the buffers on VIDIOC_REQBUFS(0) but don't
clear the format. Since is completely valid to set the format and then do
different calls to REQBUFS before a call to STREAMON.

Signed-off-by: Javier Martinez Canillas <javier@osg.samsung.com>
Signed-off-by: Sylwester Nawrocki <s.nawrocki@samsung.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
2016-11-16 16:26:35 -02:00
..
gsc-core.c [media] exynos-gsc: change spamming try_fmt log message to debug 2016-11-16 16:26:00 -02:00
gsc-core.h [media] vb2: replace void *alloc_ctxs by struct device *alloc_devs 2016-07-08 14:45:07 -03:00
gsc-m2m.c [media] exynos-gsc: don't clear format when freeing buffers with REQBUFS(0) 2016-11-16 16:26:35 -02:00
gsc-regs.c [media] gsc: Use %pad for dma_addr_t 2014-08-26 18:52:04 -03:00
gsc-regs.h [media] exynos-gsc: Fix settings for input and output image RGB type 2012-11-26 18:43:14 -02:00
Makefile [media] exynos-gsc: Add missing Makefile 2012-09-15 15:09:34 -03:00