• Andriy Gelman's avatar
    avcodec/v4l2_context: Drop empty packet while draining · e3b49aaa
    Andriy Gelman authored
    v4l2_m2m devices may send an empty packet/frame while draining
    to indicate that all capture buffers have been flushed.
    
    Currently, the empty packet/frame is not handled correctly:
    When encoding, the empty packet is forwarded to the muxer, usually
    creating warnings.
    When decoding, a reference to the memory is created anyway. Since in
    the past this memory contained a decoded frame, it results in an extra
    frame being decoded.
    
    This commit discards the empty packet/frame.
    
    References:
    linux/Documentation/media/uapi/v4l/dev-decoder.rst:
    
        "The last buffer may be empty (with :c:type:`v4l2_buffer` bytesused = 0)
         and in that case it must be ignored by the client, as it does not
         contain a decoded frame."
    
    linux/Documentation/media/uapi/media/v4l/vidioc-encoder-cmd.rst:
    
        "...This buffer may be empty, indicated by the
         driver setting the ``bytesused`` field to 0."
    Reviewed-by: 's avatarMing Qian <ming.qian@nxp.com>
    Signed-off-by: 's avatarAndriy Gelman <andriy.gelman@gmail.com>
    e3b49aaa
Name
Last commit
Last update
compat Loading commit data...
doc Loading commit data...
ffbuild Loading commit data...
fftools Loading commit data...
libavcodec Loading commit data...
libavdevice Loading commit data...
libavfilter Loading commit data...
libavformat Loading commit data...
libavresample Loading commit data...
libavutil Loading commit data...
libpostproc Loading commit data...
libswresample Loading commit data...
libswscale Loading commit data...
presets Loading commit data...
tests Loading commit data...
tools Loading commit data...
.gitattributes Loading commit data...
.gitignore Loading commit data...
.mailmap Loading commit data...
.travis.yml Loading commit data...
CONTRIBUTING.md Loading commit data...
COPYING.GPLv2 Loading commit data...
COPYING.GPLv3 Loading commit data...
COPYING.LGPLv2.1 Loading commit data...
COPYING.LGPLv3 Loading commit data...
CREDITS Loading commit data...
Changelog Loading commit data...
INSTALL.md Loading commit data...
LICENSE.md Loading commit data...
MAINTAINERS Loading commit data...
Makefile Loading commit data...
README.md Loading commit data...
RELEASE Loading commit data...
configure Loading commit data...