Unlike when resolution change on keyframes, dynamic resolution change on inter frames doesn't allow to do a stream off/on sequence because it is need to keep all previous references alive to decode inter frames. This constraint have two main problems: - more memory consumption. - more buffers in use. To solve these issue this series introduce REMOVE_BUFS ioctl. VP9 conformance tests using fluster give a score of 210/305. The 24 of the 24 resize inter tests (vp90-2-21-resize_inter_* files) are ok but require to use postprocessor. Kernel branch is available here: https://gitlab.collabora.com/benjamin.gaignard/for-upstream/-/commits/remove_vb2_queue_limit_v21 GStreamer branch to use DELETE_BUF ioctl and testing dynamic resolution change is here: https://gitlab.freedesktop.org/benjamin.gaignard1/gstreamer/-/commits/VP9_drc changes in version 21: - Be more careful about checking remove_bufs type field vs queue type. - Add documentation about type checking error. - Always set capabilities flags field. - Do not set vidioc_remove_bufs for vim2m driver. changes in version 20: - Rename DELETE_BUFS into REMOVE_BUFS - Change documention, structure and variables name to use 'remove' changes in version 19: - Fix typo in commit message. - Fix ioctl domentation - Rework q->is_busy patch following Hans's comments - Change where DELETE_BUFS is enabled Benjamin Gaignard (9): media: videobuf2: Update vb2_is_busy() logic videobuf2: Add min_reqbufs_allocation field to vb2_queue structure media: test-drivers: Set REQBUFS minimum number of buffers media: core: Rework how create_buf index returned value is computed media: core: Add bitmap manage bufs array entries media: core: Free range of buffers media: v4l2: Add REMOVE_BUFS ioctl media: v4l2: Add mem2mem helpers for REMOVE_BUFS ioctl media: verisilicon: Support removing buffers on capture queue .../userspace-api/media/v4l/user-func.rst | 1 + .../media/v4l/vidioc-remove-bufs.rst | 85 +++++++ .../media/v4l/vidioc-reqbufs.rst | 1 + .../media/common/videobuf2/videobuf2-core.c | 223 ++++++++++++------ .../media/common/videobuf2/videobuf2-v4l2.c | 34 ++- .../media/platform/verisilicon/hantro_v4l2.c | 1 + .../media/test-drivers/vicodec/vicodec-core.c | 1 + .../media/test-drivers/vimc/vimc-capture.c | 3 +- drivers/media/test-drivers/visl/visl-video.c | 1 + drivers/media/test-drivers/vivid/vivid-core.c | 5 +- drivers/media/v4l2-core/v4l2-dev.c | 3 + drivers/media/v4l2-core/v4l2-ioctl.c | 30 +++ drivers/media/v4l2-core/v4l2-mem2mem.c | 15 ++ include/media/v4l2-ioctl.h | 4 + include/media/v4l2-mem2mem.h | 2 + include/media/videobuf2-core.h | 52 +++- include/media/videobuf2-v4l2.h | 2 + include/uapi/linux/videodev2.h | 17 ++ 18 files changed, 394 insertions(+), 86 deletions(-) create mode 100644 Documentation/userspace-api/media/v4l/vidioc-remove-bufs.rst -- 2.40.1