All of lore.kernel.org
 help / color / mirror / Atom feed
From: Mauro Carvalho Chehab <mchehab@s-opensource.com>
To: Sakari Ailus <sakari.ailus@iki.fi>
Cc: linux-media@vger.kernel.org
Subject: Re: [GIT PULL for 4.14] Stream control documentation
Date: Wed, 9 Aug 2017 12:29:17 -0300	[thread overview]
Message-ID: <20170809122917.0461db2c@vento.lan> (raw)
In-Reply-To: <20170809080340.4c5b4jjypqiqyllp@valkosipuli.retiisi.org.uk>

Em Wed, 9 Aug 2017 11:03:40 +0300
Sakari Ailus <sakari.ailus@iki.fi> escreveu:

> Hi Mauro,
> 
> Add stream control documentation.
> 
> We have recently added support for hardware that makes it possible to have
> pipelines that are controlled by more than two drivers. This necessitates
> documenting V4L2 stream control behaviour for such pipelines.

Perhaps I missed this one, but I'm not seeing any e-mail with
	"docs-rst: media: Document s_stream() video op usage"

Please always submit patches via e-mail too, as it makes easier for
us to comment/review when needed.

In any case, I'm appending the patch contents here. I'll reply to it
on a next e-mail.

> From ef8e5d20b45b05290c56450d2130a0dc3c021c5a Mon Sep 17 00:00:00 2001
> From: Sakari Ailus <sakari.ailus@linux.intel.com>
> Date: Thu, 9 Mar 2017 15:07:57 +0200
> Subject: docs-rst: media: Document s_stream() video op usage
> MIME-Version: 1.0
> Content-Type: text/plain; charset=UTF-8
> Content-Transfer-Encoding: 8bit
> Cc: Linux Media Mailing List <linux-media@vger.kernel.org>,
>     Mauro Carvalho Chehab <mchehab@infradead.org>
> 
> As we begin to add support for systems with media pipelines controlled by
> more than one device driver, it is essential that we precisely define the
> responsibilities of each component in the stream control and common
> practices.
> 
> Specifically, this patch documents two things:
> 
> 1) streaming control is done per sub-device and sub-device drivers
> themselves are responsible for streaming setup in upstream sub-devices and
> 
> 2) broken frames should be tolerated at streaming stop. It is the
> responsibility of the sub-device driver to stop the transmitter after
> itself if it cannot handle broken frames (and it should be probably be
> done anyway).
> 
> Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
> Acked-by: Niklas Söderlund <niklas.soderlund+renesas@ragnatech.se>
> ---
>  Documentation/media/kapi/v4l2-subdev.rst | 36 ++++++++++++++++++++++++++++++++
>  1 file changed, 36 insertions(+)
> 
> diff --git a/Documentation/media/kapi/v4l2-subdev.rst b/Documentation/media/kapi/v4l2-subdev.rst
> index e1f0b726e438..100ffc783f72 100644
> --- a/Documentation/media/kapi/v4l2-subdev.rst
> +++ b/Documentation/media/kapi/v4l2-subdev.rst
> @@ -262,6 +262,42 @@ is called. After all subdevices have been located the .complete() callback is
>  called. When a subdevice is removed from the system the .unbind() method is
>  called. All three callbacks are optional.
>  
> +Streaming control
> +^^^^^^^^^^^^^^^^^
> +
> +Starting and stopping the stream are somewhat complex operations that
> +often require walking the media graph to enable streaming on
> +sub-devices which the pipeline consists of. This involves interaction
> +between multiple drivers, sometimes more than two.
> +
> +The ``.s_stream()`` op in :c:type:`v4l2_subdev_video_ops` is responsible
> +for starting and stopping the stream on the sub-device it is called on.
> +Additionally, if there are sub-devices further up in the pipeline, i.e.
> +connected to that sub-device's sink pads through enabled links, the
> +sub-device driver must call the ``.s_stream()`` video op of all such
> +sub-devices. The sub-device driver is thus in control of whether the
> +upstream sub-devices start (or stop) streaming before or after the
> +sub-device itself is set up for streaming.
> +
> +.. note::
> +
> +   As the ``.s_stream()`` callback is called recursively through the
> +   sub-devices along the pipeline, it is important to keep the
> +   recursion as short as possible. To this end, drivers are encouraged
> +   not to internally call ``.s_stream()`` recursively in order to make
> +   only a single additional recursion per driver in the pipeline. This
> +   greatly reduces stack usage.
> +
> +Stopping the transmitter
> +^^^^^^^^^^^^^^^^^^^^^^^^
> +
> +A transmitter stops sending the stream of images as a result of
> +calling the ``.s_stream()`` callback. Some transmitters may stop the
> +stream at a frame boundary whereas others stop immediately,
> +effectively leaving the current frame unfinished. The receiver driver
> +should not make assumptions either way, but function properly in both
> +cases.
> +
>  V4L2 sub-device userspace API
>  -----------------------------
>  
> -- 
> 2.13.3
> 


Thanks,
Mauro

  reply	other threads:[~2017-08-09 15:29 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-08-09  8:03 [GIT PULL for 4.14] Stream control documentation Sakari Ailus
2017-08-09 15:29 ` Mauro Carvalho Chehab [this message]
2017-08-09 15:35   ` Sakari Ailus
2017-08-09 15:59     ` Mauro Carvalho Chehab
2017-08-09 15:57   ` Mauro Carvalho Chehab
2017-08-10 11:11     ` Hans Verkuil
2017-08-11  9:17     ` Sakari Ailus

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=20170809122917.0461db2c@vento.lan \
    --to=mchehab@s-opensource.com \
    --cc=linux-media@vger.kernel.org \
    --cc=sakari.ailus@iki.fi \
    /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 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.