From: Benjamin Gaignard <benjamin.gaignard@collabora.com> To: mchehab@kernel.org, tfiga@chromium.org, m.szyprowski@samsung.com, ezequiel@vanguardiasur.com.ar, p.zabel@pengutronix.de, hverkuil-cisco@xs4all.nl, nicolas@ndufresne.ca Cc: linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, linux-rockchip@lists.infradead.org, kernel@collabora.com, Benjamin Gaignard <benjamin.gaignard@collabora.com> Subject: [PATCH v20 0/9] Add REMOVE_BUF ioctl Date: Wed, 21 Feb 2024 16:54:26 +0100 [thread overview] Message-ID: <20240221155435.100093-1-benjamin.gaignard@collabora.com> (raw) 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_v20 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 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 | 82 +++++++ .../media/v4l/vidioc-reqbufs.rst | 1 + .../media/common/videobuf2/videobuf2-core.c | 223 ++++++++++++------ .../media/common/videobuf2/videobuf2-v4l2.c | 28 ++- .../media/platform/verisilicon/hantro_v4l2.c | 1 + .../media/test-drivers/vicodec/vicodec-core.c | 1 + drivers/media/test-drivers/vim2m.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 | 32 +++ drivers/media/v4l2-core/v4l2-mem2mem.c | 10 + 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 ++ 19 files changed, 383 insertions(+), 86 deletions(-) create mode 100644 Documentation/userspace-api/media/v4l/vidioc-remove-bufs.rst -- 2.40.1
WARNING: multiple messages have this Message-ID (diff)
From: Benjamin Gaignard <benjamin.gaignard@collabora.com> To: mchehab@kernel.org, tfiga@chromium.org, m.szyprowski@samsung.com, ezequiel@vanguardiasur.com.ar, p.zabel@pengutronix.de, hverkuil-cisco@xs4all.nl, nicolas@ndufresne.ca Cc: linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, linux-rockchip@lists.infradead.org, kernel@collabora.com, Benjamin Gaignard <benjamin.gaignard@collabora.com> Subject: [PATCH v20 0/9] Add REMOVE_BUF ioctl Date: Wed, 21 Feb 2024 16:54:26 +0100 [thread overview] Message-ID: <20240221155435.100093-1-benjamin.gaignard@collabora.com> (raw) 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_v20 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 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 | 82 +++++++ .../media/v4l/vidioc-reqbufs.rst | 1 + .../media/common/videobuf2/videobuf2-core.c | 223 ++++++++++++------ .../media/common/videobuf2/videobuf2-v4l2.c | 28 ++- .../media/platform/verisilicon/hantro_v4l2.c | 1 + .../media/test-drivers/vicodec/vicodec-core.c | 1 + drivers/media/test-drivers/vim2m.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 | 32 +++ drivers/media/v4l2-core/v4l2-mem2mem.c | 10 + 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 ++ 19 files changed, 383 insertions(+), 86 deletions(-) create mode 100644 Documentation/userspace-api/media/v4l/vidioc-remove-bufs.rst -- 2.40.1 _______________________________________________ Linux-rockchip mailing list Linux-rockchip@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-rockchip
next reply other threads:[~2024-02-21 15:54 UTC|newest] Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top 2024-02-21 15:54 Benjamin Gaignard [this message] 2024-02-21 15:54 ` [PATCH v20 0/9] Add REMOVE_BUF ioctl Benjamin Gaignard 2024-02-21 15:54 ` [PATCH v20 1/9] media: videobuf2: Update vb2_is_busy() logic Benjamin Gaignard 2024-02-21 15:54 ` Benjamin Gaignard 2024-02-21 15:54 ` [PATCH v20 2/9] videobuf2: Add min_reqbufs_allocation field to vb2_queue structure Benjamin Gaignard 2024-02-21 15:54 ` Benjamin Gaignard 2024-02-21 15:54 ` [PATCH v20 3/9] media: test-drivers: Set REQBUFS minimum number of buffers Benjamin Gaignard 2024-02-21 15:54 ` Benjamin Gaignard 2024-02-21 15:54 ` [PATCH v20 4/9] media: core: Rework how create_buf index returned value is computed Benjamin Gaignard 2024-02-21 15:54 ` Benjamin Gaignard 2024-02-21 15:54 ` [PATCH v20 5/9] media: core: Add bitmap manage bufs array entries Benjamin Gaignard 2024-02-21 15:54 ` Benjamin Gaignard 2024-02-21 15:54 ` [PATCH v20 6/9] media: core: Free range of buffers Benjamin Gaignard 2024-02-21 15:54 ` Benjamin Gaignard 2024-02-21 15:54 ` [PATCH v20 7/9] media: v4l2: Add REMOVE_BUFS ioctl Benjamin Gaignard 2024-02-21 15:54 ` Benjamin Gaignard 2024-03-14 12:06 ` Hans Verkuil 2024-03-14 12:06 ` Hans Verkuil 2024-03-14 13:57 ` Hans Verkuil 2024-03-14 13:57 ` Hans Verkuil 2024-02-21 15:54 ` [PATCH v20 8/9] media: v4l2: Add mem2mem helpers for " Benjamin Gaignard 2024-02-21 15:54 ` Benjamin Gaignard 2024-03-14 12:04 ` Hans Verkuil 2024-03-14 12:04 ` Hans Verkuil 2024-03-14 13:58 ` Hans Verkuil 2024-03-14 13:58 ` Hans Verkuil 2024-02-21 15:54 ` [PATCH v20 9/9] media: verisilicon: Support removing buffers on capture queue Benjamin Gaignard 2024-02-21 15:54 ` Benjamin Gaignard
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20240221155435.100093-1-benjamin.gaignard@collabora.com \ --to=benjamin.gaignard@collabora.com \ --cc=ezequiel@vanguardiasur.com.ar \ --cc=hverkuil-cisco@xs4all.nl \ --cc=kernel@collabora.com \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-media@vger.kernel.org \ --cc=linux-rockchip@lists.infradead.org \ --cc=m.szyprowski@samsung.com \ --cc=mchehab@kernel.org \ --cc=nicolas@ndufresne.ca \ --cc=p.zabel@pengutronix.de \ --cc=tfiga@chromium.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.