• Hans Verkuil's avatar
    [media] vb2: retry start_streaming in case of insufficient buffers · 02f142ec
    Hans Verkuil authored
    If start_streaming returns -ENOBUFS, then it will be retried the next time
    a buffer is queued. This means applications no longer need to know how many
    buffers need to be queued before STREAMON can be called. This is particularly
    useful for output stream I/O.
    
    If a DMA engine needs at least X buffers before it can start streaming, then
    for applications to get a buffer out as soon as possible they need to know
    the minimum number of buffers to queue before STREAMON can be called. You can't
    just try STREAMON after every buffer since on failure STREAMON will dequeue
    all your buffers. (Is that a bug or a feature? Frankly, I'm not sure).
    
    This patch simplifies applications substantially: they can just call STREAMON
    at the beginning and then start queuing buffers and the DMA engine will
    kick in automagically once enough buffers are available.
    
    This also fixes using write() to stream video: the fileio implementation
    calls streamon without having any queued buffers, which will fail today for
    any driver that requires a minimum number of buffers.
    Signed-off-by: default avatarHans Verkuil <hans.verkuil@cisco.com>
    Acked-by: default avatarMarek Szyprowski <m.szyprowski@samsung.com>
    Acked-by: default avatarLaurent Pinchart <laurent.pinchart@ideasonboard.com>
    Signed-off-by: default avatarMauro Carvalho Chehab <m.chehab@samsung.com>
    02f142ec
videobuf2-core.c 74.9 KB