• Javier Martinez Canillas's avatar
    [media] exynos-gsc: don't clear format when freeing buffers with REQBUFS(0) · daba4dfb
    Javier Martinez Canillas authored
    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: default avatarJavier Martinez Canillas <javier@osg.samsung.com>
    Signed-off-by: default avatarSylwester Nawrocki <s.nawrocki@samsung.com>
    Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@s-opensource.com>
    daba4dfb
gsc-m2m.c 19.1 KB