From: Helen Koike <helen.koike@collabora.com>
To: "André Almeida" <andrealmeid@collabora.com>, linux-media@vger.kernel.org
Cc: mchehab@kernel.org, hverkuil@xs4all.nl, kernel@collabora.com,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH 0/7] media: vimc: Add a V4L2 output device
Date: Tue, 9 Jul 2019 19:19:36 -0300 [thread overview]
Message-ID: <00fb0dc3-0dd3-8d4c-9add-dba617f34d19@collabora.com> (raw)
In-Reply-To: <20190702154752.14939-1-andrealmeid@collabora.com>
Hi André,
Thanks for the patches.
On 7/2/19 12:47 PM, André Almeida wrote:
> Hello,
>
> This patch adds a V4L2 output device on vimc, that comply with V4L2 API
> for video output. If there is an output device and a capture device at the
> same pipeline, one can get a video loopback pipeline feeding frames at
> the output and then seeing them at the capture. It's possible to insert
> vimc submodules at the pipeline to modify the image (e.g. a scaler).
>
> If one starts a streaming at the capture, with the output off, the
> capture will display a noisy frame. If one starts a streaming at the
> output with the capture off, the output will just consume the buffers,
> without sending them to the pipeline. If both output and capture are
> streaming, the loopback will happen.
I understand why it is done like this in vivid, but I was wondering, if we
have a pipeline like:
output -> capture
Shouldn't streaming from the capture just stalls if there is no frame
available in the output (i.e. streaming in the output is off) ? But then I'm
not sure what the framerate in the capture would mean.
Hans, what do you think?
Thanks,
Helen
>
> The patches 1 and 2 provide some ground to create the output
> device. The patch 3 creates the device and modify how the vimc-streamer
> was dealing with the s_stream callback on other vimc modules, to make
> simpler implementing this callback at vimc-output. Patch 4 change the
> behavior of the pipeline in order to be closer to a real life hardware.
> Patches 5-7 updates the default pipeline and the documentation to
> include the new output device.
>
> This is the result of v4l2-compliance after this patch series:
> $ v4l2-compliance -m0 -s50
> Grand Total for vimc device /dev/media0: 476, Succeeded: 476, Failed: 0,
> Warnings: 0
>
> A git tree up to date with media-master and with this changes can be found
> at: https://gitlab.collabora.com/tonyk/linux/tree/vimc/output
>
> In order to test it, one can follow these instructions:
>
> 1 - Configure the pipeline (requires v4l-utils):
>
> $ media-ctl -d platform:vimc -V '"Sensor A":0[fmt:SBGGR8_1X8/640x480]'
> $ media-ctl -d platform:vimc -V '"Debayer A":0[fmt:SBGGR8_1X8/640x480]'
> $ media-ctl -d platform:vimc -V '"Sensor B":0[fmt:SBGGR8_1X8/640x480]'
> $ media-ctl -d platform:vimc -V '"Debayer B":0[fmt:SBGGR8_1X8/640x480]'
> $ v4l2-ctl -z platform:vimc -d "RGB/YUV Capture" -v width=1920,height=1440
> $ v4l2-ctl -z platform:vimc -d "Raw Capture 0" -v pixelformat=BA81
> $ v4l2-ctl -z platform:vimc -d "Raw Capture 1" -v pixelformat=BA81
> $ v4l2-ctl -z platform:vimc -e "RGB/YUV Input" -v width=640,height=480
>
> 2 - Use a userspace application:
> 2.a gst-launch (requires gstreamer and gst-plugins-good):
>
> Feed frames into the output and grab from the capture (rescaled for
> convenience):
>
> $ gst-launch-1.0 videotestsrc pattern=ball ! \
> video/x-raw,width=640,height=480,format=RGB \
> ! v4l2sink device=/dev/video2 v4l2src device=/dev/video3 ! \
> video/x-raw,width=1920,height=1440,format=RGB ! videoscale ! \
> video/x-raw,width=640,height=480 ! videoconvert ! ximagesink
>
> 2.b qv4l2 (requires v4l-utils):
>
> Open the output device:
>
> $ qv4l2 -d2
>
> Open the capture device:
>
> $ qv4l2 -d3
>
> Start the streaming at both, at any order. You can change the frame
> content at "Test Pattern Generator" -> "Test Pattern" on the output.
>
> Thanks,
> André
>
> André Almeida (7):
> media: vimc: Create video module
> media: vimc: video: Add write file operation
> media: vimc: Create a V4L2 output device
> media: vimc: Send null buffer through the pipeline
> media: vimc: core: Add output device on the pipeline
> media: vimc.dot: Update default topology diagram
> media: vimc.rst: Add output device
>
> Documentation/media/v4l-drivers/vimc.dot | 4 +-
> Documentation/media/v4l-drivers/vimc.rst | 12 +-
> drivers/media/platform/vimc/Makefile | 4 +-
> drivers/media/platform/vimc/vimc-capture.c | 356 +++----------------
> drivers/media/platform/vimc/vimc-common.h | 5 +-
> drivers/media/platform/vimc/vimc-core.c | 7 +-
> drivers/media/platform/vimc/vimc-debayer.c | 14 +-
> drivers/media/platform/vimc/vimc-output.c | 362 ++++++++++++++++++++
> drivers/media/platform/vimc/vimc-scaler.c | 13 +-
> drivers/media/platform/vimc/vimc-sensor.c | 10 +-
> drivers/media/platform/vimc/vimc-streamer.c | 24 +-
> drivers/media/platform/vimc/vimc-video.c | 273 +++++++++++++++
> drivers/media/platform/vimc/vimc-video.h | 130 +++++++
> 13 files changed, 849 insertions(+), 365 deletions(-)
> create mode 100644 drivers/media/platform/vimc/vimc-output.c
> create mode 100644 drivers/media/platform/vimc/vimc-video.c
> create mode 100644 drivers/media/platform/vimc/vimc-video.h
>
next prev parent reply other threads:[~2019-07-09 22:19 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-07-02 15:47 [PATCH 0/7] media: vimc: Add a V4L2 output device André Almeida
2019-07-02 15:47 ` [PATCH 1/7] media: vimc: Create video module André Almeida
2019-07-02 15:47 ` [PATCH 2/7] media: vimc: video: Add write file operation André Almeida
2019-07-02 15:47 ` [PATCH 3/7] media: vimc: Create a V4L2 output device André Almeida
2019-07-09 22:20 ` Helen Koike
2019-07-02 15:47 ` [PATCH 4/7] media: vimc: Send null buffer through the pipeline André Almeida
2019-07-02 15:47 ` [PATCH 5/7] media: vimc: core: Add output device on " André Almeida
2019-07-09 22:20 ` Helen Koike
2019-07-02 15:47 ` [PATCH 6/7] media: vimc.dot: Update default topology diagram André Almeida
2019-07-02 15:47 ` [PATCH 7/7] media: vimc.rst: Add output device André Almeida
2019-07-09 22:19 ` Helen Koike [this message]
2019-07-10 7:33 ` [PATCH 0/7] media: vimc: Add a V4L2 " Hans Verkuil
2019-07-12 15:38 ` André Almeida
2019-07-13 10:03 ` Hans Verkuil
2019-07-31 3:00 ` André Almeida
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=00fb0dc3-0dd3-8d4c-9add-dba617f34d19@collabora.com \
--to=helen.koike@collabora.com \
--cc=andrealmeid@collabora.com \
--cc=hverkuil@xs4all.nl \
--cc=kernel@collabora.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-media@vger.kernel.org \
--cc=mchehab@kernel.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: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).