• Hans Verkuil's avatar
    media: videobuf2: request more buffers for vb2_read · 350ab13e
    Hans Verkuil authored
    
    
    The vb2 read support requests 1 buffer, leaving it to the driver
    to increase this number to something that works.
    
    Unfortunately, drivers do not deal with this reliably, and in fact
    this caused problems for the bttv driver and reading from /dev/vbiX,
    causing every other VBI frame to be all 0.
    
    Instead, request as the number of buffers whatever is the maximum of
    2 and q->min_buffers_needed+1.
    
    In order to start streaming you need at least q->min_buffers_needed
    queued buffers, so add 1 buffer for processing. And if that field
    is 0, then choose 2 (again, one buffer is being filled while the
    other one is being processed).
    
    This certainly makes more sense than requesting just 1 buffer, and
    the VBI bttv support is now working again.
    
    It turns out that the old videobuf1 behavior of bttv was to allocate
    8 (video) and 4 (vbi) buffers when used with read(). After the vb2
    conversion that changed to 2 for both. With this patch it is 3, which
    is really all you need.
    Signed-off-by: default avatarHans Verkuil <hverkuil-cisco@xs4all.nl>
    Fixes: b7ec3212
    
     ("media: bttv: convert to vb2")
    Tested-by: default avatarDr. David Alan Gilbert <dave@treblig.org>
    Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@kernel.org>
    350ab13e
videobuf2-core.c 81.3 KB