Re: [RFC PATCH v2 0/5] Refactoring Videobuf2 for common use

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

 



Em Mon, 10 Aug 2015 10:31:03 +0200
Hans Verkuil <hverkuil@xxxxxxxxx> escreveu:

> Hi Jungsak,
> 
> On 07/31/2015 10:44 AM, Junghak Sung wrote:
> > Hello everybody,
> > 
> > This is the 2nd round for refactoring Videobuf2(a.k.a VB2).
> > The purpose of this patch series is to separate existing VB2 framework
> > into core part and V4L2 specific part. So that not only V4L2 but also other
> > frameworks can use them to manage buffer and utilize queue.
> > 
> > Why do we try to make the VB2 framework to be common?
> > 
> > As you may know, current DVB framework uses ringbuffer mechanism to demux
> > MPEG-2 TS data and pass it to userspace. However, this mechanism requires
> > extra memory copy because DVB framework provides only read() system call for
> > application - read() system call copies the kernel data to user-space buffer.
> > So if we can use VB2 framework which supports streaming I/O and buffer
> > sharing mechanism, then we could enhance existing DVB framework by removing
> > the extra memory copy - with VB2 framework, application can access the kernel
> > data directly through mmap system call.
> > 
> > We have a plan for this work as follows:
> > 1. Separate existing VB2 framework into three parts - VB2 common, VB2-v4l2.
> >    Of course, this change will not affect other v4l2-based
> >    device drivers. This patch series corresponds to this step.
> > 
> > 2. Add and implement new APIs for DVB streaming I/O.
> >    We can remove unnecessary memory copy between kernel-space and user-space
> >    by using these new APIs. However, we leaves legacy interfaces as-is
> >    for backward compatibility.
> > 
> > This patch series is the first step for it.
> > The previous version of this patch series can be found at [1].
> > 
> > [1] RFC PATCH v1 - http://www.spinics.net/lists/linux-media/msg90688.html
> 
> This v2 looks much better, but, as per my comment to patch 1/5, it needs a bit
> more work before I can do a really good review. I think things will be much
> clearer once patch 3 shows the code moving from core.c/h to v4l2.c/h instead
> of the other way around. That shouldn't be too difficult.

Hans,

I suggested Junkhak to do that. On his previous patchset, he did what
you're suggestiong, e. g moving things from vb2-core into vb2-v4l2, and
that resulted on patches big enough to not be catched by vger.

Also, IMHO, it is cleared this way, as we can see what parts of VB2 will
actually be shared, as there are lots of things that won't be shared:
overlay, userptr, multiplanar.

Regards,
Mauro

> 
> Regards,
> 
> 	Hans
> 
> > 
> > Changes since v1:
> > 1. Divide patch set into more pieces
> > v1 was not reviewed normally because the 2/3 patch is failed to send to mailing
> > list with size problem - over 300kb. So I have divided the patch set into five
> > pieces and refined them neatly, which was pointed by Hans.
> > 
> > 2. Add shell scripts for renaming patch
> > In case of renaming patch, shell scripts are included inside the body of the
> > patches by Mauro's advice. 1/5 and 5/5 patches include these scripts, which can
> > be used by reviewers or maintainers to regenerate big patch file if something
> > goes wrong during patch apply.
> > 
> > 3. Remove dependency on v4l2 from videobuf2
> > In previous patch set, videobuf2-core uses v4l2-specific stuff as it is.
> > e.g. enum v4l2_buf_type and enum v4l2_memory. That prevented other frameworks
> > from using videobuf2 independently and made them forced to include
> > v4l2-specific stuff.
> > In this version, these dependent stuffs are replaced with VB2 own stuffs.
> > e.g. enum vb2_buf_type and enum vb2_memory. So, v4l2-specific header file isn't
> > required to use videobuf2 in other modules. Please, note that videobuf2 stuffs
> > will be translated to v4l2-specific stuffs in videobuf2-v4l2.c file for
> > backward compatibility.
> > 
> > 4. Unify duplicated definitions
> > VB2_DEBUG() is newly defined in videobuf2-core header file in order to unify
> > duplicated macro functions that invoke callback functions implemented in vb2
> > backends - i.e., videobuf2-vmalloc and videobuf2-dma-sg - and queue relevant
> > callbacks of device drivers.
> > In previous patch set, these macro functions were defined
> > in both videobuf2-core.c and videobuf2-v4l2.c.
> > 
> > This patch series is base on media_tree.git [2] by Mauro & Hans's request.
> > And I applied this patches to my own git [3] which can be helpful to review.
> > My test boards are ubuntu PC(Intel i7-3770) and odroid-xu3(exynos5422). And
> > basic oprerations, e.g. reqbuf, querybuf, qbuf, dqbuf, are tested with
> > v4l-utils. But, more tests for the all ioctls will be required on many other
> > targets.
> > 
> > [2] media_tree.git - http://git.linuxtv.org/cgit.cgi/media_tree.git/
> > [3] jsung/dvb-vb2.git - http://git.linuxtv.org/cgit.cgi/jsung/dvb-vb2.git/
> > 
> > Any suggestions and comments are welcome.
> > 
> > Regards,
> > Junghak
> > 
> > Junghak Sung (5):
> >   media: videobuf2: Rename videobuf2-core to videobuf2-v4l2
> >   media: videobuf2: Restructurng struct vb2_buffer for common use.
> >   media: videobuf2: Divide videobuf2-core into 2 parts
> >   media: videobuf2: Define vb2_buf_type and vb2_memory
> >   media: videobuf2: Modify prefix for VB2 functions
> > 
> >  drivers/input/touchscreen/sur40.c                  |   23 +-
> >  drivers/media/dvb-frontends/rtl2832_sdr.c          |   19 +-
> >  drivers/media/pci/cobalt/cobalt-alsa-pcm.c         |    4 +-
> >  drivers/media/pci/cobalt/cobalt-v4l2.c             |    8 +-
> >  drivers/media/pci/cx23885/cx23885-417.c            |   15 +-
> >  drivers/media/pci/cx23885/cx23885-core.c           |   10 +-
> >  drivers/media/pci/cx23885/cx23885-dvb.c            |   13 +-
> >  drivers/media/pci/cx23885/cx23885-vbi.c            |   17 +-
> >  drivers/media/pci/cx23885/cx23885-video.c          |   23 +-
> >  drivers/media/pci/cx23885/cx23885.h                |    2 +-
> >  drivers/media/pci/cx25821/cx25821-video.c          |   22 +-
> >  drivers/media/pci/cx25821/cx25821.h                |    3 +-
> >  drivers/media/pci/cx88/cx88-blackbird.c            |   17 +-
> >  drivers/media/pci/cx88/cx88-core.c                 |    2 +-
> >  drivers/media/pci/cx88/cx88-dvb.c                  |   15 +-
> >  drivers/media/pci/cx88/cx88-mpeg.c                 |    8 +-
> >  drivers/media/pci/cx88/cx88-vbi.c                  |   17 +-
> >  drivers/media/pci/cx88/cx88-video.c                |   21 +-
> >  drivers/media/pci/cx88/cx88.h                      |    2 +-
> >  drivers/media/pci/dt3155/dt3155.c                  |   23 +-
> >  drivers/media/pci/dt3155/dt3155.h                  |    2 +-
> >  drivers/media/pci/saa7134/saa7134-core.c           |    9 +-
> >  drivers/media/pci/saa7134/saa7134-dvb.c            |    6 +-
> >  drivers/media/pci/saa7134/saa7134-empress.c        |    4 +-
> >  drivers/media/pci/saa7134/saa7134-ts.c             |   30 +-
> >  drivers/media/pci/saa7134/saa7134-vbi.c            |   24 +-
> >  drivers/media/pci/saa7134/saa7134-video.c          |   43 +-
> >  drivers/media/pci/saa7134/saa7134.h                |    9 +-
> >  drivers/media/pci/solo6x10/solo6x10-v4l2-enc.c     |   35 +-
> >  drivers/media/pci/solo6x10/solo6x10-v4l2.c         |   20 +-
> >  drivers/media/pci/solo6x10/solo6x10.h              |    4 +-
> >  drivers/media/pci/sta2x11/sta2x11_vip.c            |   35 +-
> >  drivers/media/pci/tw68/tw68-video.c                |   22 +-
> >  drivers/media/pci/tw68/tw68.h                      |    2 +-
> >  drivers/media/platform/am437x/am437x-vpfe.c        |   40 +-
> >  drivers/media/platform/am437x/am437x-vpfe.h        |    2 +-
> >  drivers/media/platform/blackfin/bfin_capture.c     |   42 +-
> >  drivers/media/platform/coda/coda-bit.c             |   62 +-
> >  drivers/media/platform/coda/coda-common.c          |   30 +-
> >  drivers/media/platform/coda/coda-jpeg.c            |    6 +-
> >  drivers/media/platform/coda/coda.h                 |    6 +-
> >  drivers/media/platform/coda/trace.h                |    2 +-
> >  drivers/media/platform/davinci/vpbe_display.c      |   16 +-
> >  drivers/media/platform/davinci/vpif_capture.c      |   43 +-
> >  drivers/media/platform/davinci/vpif_capture.h      |    2 +-
> >  drivers/media/platform/davinci/vpif_display.c      |   49 +-
> >  drivers/media/platform/davinci/vpif_display.h      |    2 +-
> >  drivers/media/platform/exynos-gsc/gsc-core.c       |   10 +-
> >  drivers/media/platform/exynos-gsc/gsc-core.h       |    6 +-
> >  drivers/media/platform/exynos-gsc/gsc-m2m.c        |   16 +-
> >  drivers/media/platform/exynos4-is/fimc-capture.c   |   30 +-
> >  drivers/media/platform/exynos4-is/fimc-core.c      |   12 +-
> >  drivers/media/platform/exynos4-is/fimc-core.h      |    6 +-
> >  drivers/media/platform/exynos4-is/fimc-is.h        |    2 +-
> >  drivers/media/platform/exynos4-is/fimc-isp-video.c |   22 +-
> >  drivers/media/platform/exynos4-is/fimc-isp-video.h |    2 +-
> >  drivers/media/platform/exynos4-is/fimc-isp.h       |    4 +-
> >  drivers/media/platform/exynos4-is/fimc-lite.c      |   25 +-
> >  drivers/media/platform/exynos4-is/fimc-lite.h      |    4 +-
> >  drivers/media/platform/exynos4-is/fimc-m2m.c       |   18 +-
> >  drivers/media/platform/m2m-deinterlace.c           |   26 +-
> >  drivers/media/platform/marvell-ccic/mcam-core.c    |   40 +-
> >  drivers/media/platform/marvell-ccic/mcam-core.h    |    2 +-
> >  drivers/media/platform/mx2_emmaprp.c               |   25 +-
> >  drivers/media/platform/omap3isp/ispvideo.c         |   47 +-
> >  drivers/media/platform/omap3isp/ispvideo.h         |    4 +-
> >  drivers/media/platform/s3c-camif/camif-capture.c   |   49 +-
> >  drivers/media/platform/s3c-camif/camif-core.c      |    2 +-
> >  drivers/media/platform/s3c-camif/camif-core.h      |    4 +-
> >  drivers/media/platform/s5p-g2d/g2d.c               |   22 +-
> >  drivers/media/platform/s5p-jpeg/jpeg-core.c        |   57 +-
> >  drivers/media/platform/s5p-mfc/s5p_mfc.c           |   42 +-
> >  drivers/media/platform/s5p-mfc/s5p_mfc_common.h    |    4 +-
> >  drivers/media/platform/s5p-mfc/s5p_mfc_dec.c       |   63 +-
> >  drivers/media/platform/s5p-mfc/s5p_mfc_enc.c       |  120 +-
> >  drivers/media/platform/s5p-mfc/s5p_mfc_opr_v5.c    |   28 +-
> >  drivers/media/platform/s5p-mfc/s5p_mfc_opr_v6.c    |   28 +-
> >  drivers/media/platform/s5p-tv/mixer.h              |    4 +-
> >  drivers/media/platform/s5p-tv/mixer_grp_layer.c    |    2 +-
> >  drivers/media/platform/s5p-tv/mixer_reg.c          |    2 +-
> >  drivers/media/platform/s5p-tv/mixer_video.c        |   33 +-
> >  drivers/media/platform/s5p-tv/mixer_vp_layer.c     |    5 +-
> >  drivers/media/platform/sh_veu.c                    |   38 +-
> >  drivers/media/platform/sh_vou.c                    |    8 +-
> >  drivers/media/platform/soc_camera/atmel-isi.c      |   32 +-
> >  drivers/media/platform/soc_camera/mx2_camera.c     |   44 +-
> >  drivers/media/platform/soc_camera/mx3_camera.c     |   39 +-
> >  drivers/media/platform/soc_camera/rcar_vin.c       |   38 +-
> >  .../platform/soc_camera/sh_mobile_ceu_camera.c     |   49 +-
> >  drivers/media/platform/soc_camera/soc_camera.c     |   24 +-
> >  drivers/media/platform/sti/bdisp/bdisp-v4l2.c      |    8 +-
> >  drivers/media/platform/ti-vpe/vpe.c                |   39 +-
> >  drivers/media/platform/vim2m.c                     |   39 +-
> >  drivers/media/platform/vivid/vivid-core.c          |   10 +-
> >  drivers/media/platform/vivid/vivid-core.h          |    4 +-
> >  drivers/media/platform/vivid/vivid-kthread-cap.c   |   20 +-
> >  drivers/media/platform/vivid/vivid-kthread-out.c   |   14 +-
> >  drivers/media/platform/vivid/vivid-sdr-cap.c       |   24 +-
> >  drivers/media/platform/vivid/vivid-vbi-cap.c       |   23 +-
> >  drivers/media/platform/vivid/vivid-vbi-out.c       |   19 +-
> >  drivers/media/platform/vivid/vivid-vid-cap.c       |   25 +-
> >  drivers/media/platform/vivid/vivid-vid-out.c       |   20 +-
> >  drivers/media/platform/vsp1/vsp1_video.c           |   26 +-
> >  drivers/media/platform/vsp1/vsp1_video.h           |    6 +-
> >  drivers/media/platform/xilinx/xilinx-dma.c         |    6 +-
> >  drivers/media/platform/xilinx/xilinx-dma.h         |    2 +-
> >  drivers/media/usb/airspy/airspy.c                  |   22 +-
> >  drivers/media/usb/au0828/au0828-vbi.c              |   15 +-
> >  drivers/media/usb/au0828/au0828-video.c            |   55 +-
> >  drivers/media/usb/au0828/au0828.h                  |    3 +-
> >  drivers/media/usb/em28xx/em28xx-vbi.c              |   17 +-
> >  drivers/media/usb/em28xx/em28xx-video.c            |   33 +-
> >  drivers/media/usb/em28xx/em28xx.h                  |    3 +-
> >  drivers/media/usb/go7007/go7007-driver.c           |    4 +-
> >  drivers/media/usb/go7007/go7007-priv.h             |    4 +-
> >  drivers/media/usb/go7007/go7007-v4l2.c             |   20 +-
> >  drivers/media/usb/hackrf/hackrf.c                  |   20 +-
> >  drivers/media/usb/msi2500/msi2500.c                |   23 +-
> >  drivers/media/usb/pwc/pwc-if.c                     |   28 +-
> >  drivers/media/usb/pwc/pwc-uncompress.c             |    8 +-
> >  drivers/media/usb/pwc/pwc.h                        |    3 +-
> >  drivers/media/usb/s2255/s2255drv.c                 |   26 +-
> >  drivers/media/usb/stk1160/stk1160-v4l.c            |   17 +-
> >  drivers/media/usb/stk1160/stk1160-video.c          |    4 +-
> >  drivers/media/usb/stk1160/stk1160.h                |    4 +-
> >  drivers/media/usb/usbtv/usbtv-video.c              |   24 +-
> >  drivers/media/usb/usbtv/usbtv.h                    |    3 +-
> >  drivers/media/usb/uvc/uvc_queue.c                  |   56 +-
> >  drivers/media/usb/uvc/uvcvideo.h                   |    4 +-
> >  drivers/media/v4l2-core/Makefile                   |    2 +-
> >  drivers/media/v4l2-core/v4l2-ioctl.c               |    2 +-
> >  drivers/media/v4l2-core/v4l2-mem2mem.c             |   30 +-
> >  drivers/media/v4l2-core/videobuf2-core.c           | 2393 +++-----------------
> >  drivers/media/v4l2-core/videobuf2-dvb.c            |    2 +-
> >  drivers/media/v4l2-core/videobuf2-v4l2.c           | 1970 ++++++++++++++++
> >  drivers/usb/gadget/function/uvc_queue.c            |   46 +-
> >  drivers/usb/gadget/function/uvc_queue.h            |    4 +-
> >  include/media/soc_camera.h                         |    2 +-
> >  include/media/v4l2-mem2mem.h                       |   10 +-
> >  include/media/videobuf2-core.h                     |  430 ++--
> >  include/media/videobuf2-dvb.h                      |    2 +-
> >  include/media/videobuf2-v4l2.h                     |  186 ++
> >  include/trace/events/v4l2.h                        |   38 +-
> >  143 files changed, 4185 insertions(+), 3462 deletions(-)
> >  create mode 100644 drivers/media/v4l2-core/videobuf2-v4l2.c
> >  create mode 100644 include/media/videobuf2-v4l2.h
> > 
> 
--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[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