Re: [PATCH v19 0/9] Add DELETE_BUF ioctl

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 06/02/2024 09:02, Benjamin Gaignard wrote:
> 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 DELETE_BUFS ioctl and remove
> the 32 buffers limit per queue.

This v19 looks good. There are three outstanding issues that I need to take a
look at:

1) Can we still signal support for DELETE_BUFS in the V4L2_BUF_CAP_ caps?
   It would be nice to have, but I'm not sure if and how that can be done.

2) I want to take another look at providing a next version of the VIDIOC_CREATE_BUFS
   ioctl and how that would possibly influence the design of DELETE_BUFS.
   Just to make sure we're not blocking anything or making life harder.

3) Review the v4l2-compliance tests. I haven't spend much time on that, so
   I need to take a look at v7 and see if I can come up with more tests.

I'll try to make time for this either tomorrow or next week.

Regards,

	Hans

> 
> VP9 conformance tests using fluster give a score of 210/305.
> The 23 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_v19
> 
> 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 19:
> - Fix typo in commit message.
> - Fix ioctl domentation
> - Rework q->is_busy patch following Hans's comments
> - Change where DELETE_BUFS is enabled
> 
> changes in version 18:
> - rebased on top of:
>   https://patchwork.linuxtv.org/project/linux-media/patch/20240118121452.29151-1-benjamin.gaignard@xxxxxxxxxxxxx/
>   https://patchwork.linuxtv.org/project/linux-media/patch/92975c06-d6e1-4ba6-8d03-b2ef0b199c21@xxxxxxxxx/
> - Add a patch to update vb2_is_busy() logic.
> - fix __vb2_queue_alloc() parameters descriptions.
> - rework bitmap free range finding loop
> - remove per queue capability flag.
> - rework v4l_delete_bufs() to check if VIDIOC_CREATE_BUFS is enabled
>   and if vidioc_delete_bufs pointer is valid.
> - update documentation.
> - Direclty use vb2_core_delete_bufs() in v4l2_m2m_ioctl_delete_bufs().
>   Remove useless static functions.
> 
> changes in version 17:
> - rebased on top of:
>   https://patchwork.linuxtv.org/project/linux-media/patch/20240118121452.29151-1-benjamin.gaignard@xxxxxxxxxxxxx/
>   https://patchwork.linuxtv.org/project/linux-media/patch/92975c06-d6e1-4ba6-8d03-b2ef0b199c21@xxxxxxxxx/
> - rewrite min_reqbufs_allocation field documentation.
> - rewrite vb2_core_create_bufs() first_index parameter documentation.
> - rework bitmap allocation usage in __vb2_queue_alloc().
> - remove useless i < q->max_num_buffers checks.
> - rework DELETE_BUFS documentation.
> - change split between patch 7 and patch 8
> - v4l2_m2m_delete_bufs() is now a static function.
> 
>  
> 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 DELETE_BUFS ioctl
>   media: v4l2: Add mem2mem helpers for DELETE_BUFS ioctl
>   media: verisilicon: Support deleting buffers on capture queue
> 
>  .../userspace-api/media/v4l/user-func.rst     |   1 +
>  .../media/v4l/vidioc-delete-bufs.rst          |  79 +++++++
>  .../media/common/videobuf2/videobuf2-core.c   | 223 ++++++++++++------
>  .../media/common/videobuf2/videobuf2-v4l2.c   |  26 +-
>  .../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          |  24 ++
>  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                |  16 ++
>  18 files changed, 369 insertions(+), 85 deletions(-)
>  create mode 100644 Documentation/userspace-api/media/v4l/vidioc-delete-bufs.rst
> 





[Index of Archives]     [Linux Input]     [Video for Linux]     [Gstreamer Embedded]     [Mplayer Users]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]

  Powered by Linux