linux/Documentation/driver-api/media
Laurent Pinchart ae21987283 media: mc: entity: Rewrite media_pipeline_start()
[Note: the code is mostly from Laurent but the patch description is from Tomi]

The media_pipeline_start() and media_pipeline_stop() functions use the
media graph walk API to traverse the graph and validate the pipeline.
The graph walk traverses the media graph following links between the
entities.

Also, while the pipeline can't change between the start and stop calls,
the graph is walked again from scratch at stop time, or any time a
driver needs to inspect the pipeline.

With the upcoming multiplexed streams support we will need a bit more
intelligent pipeline construction, as e.g. two independent streams may
be passing through a single entity via separate pads in which case
those pads should not be part of the same pipeline.

This patch essentially rewrites the media_pipeline_start/stop so that
a pipeline is defined as a set of pads instead of entities and the media
graph traversal considers the pad interdependencies when choosing which
links to follow.

Currently all the entity's pads are considered as interdependent. This
means that the behavior with all the current drivers stays the same, but
in the future we can define a more fine-grained pipeline construction.

Additionally the media pipeline's pads are cached at
media_pipeline_start() time, and re-used at media_pipeline_stop() which
avoid the need to re-walk the whole graph as the previous implementation
did.

Also, caching pads in the pipeline can serve in the future as the
foundation to provide a better API than the media graph walk to drivers
to iterate over pads and entities in the pipeline.

Note that the old media_pipeline_start/stop used the media graph walk
API. The new version does not use the media graph walk API, but instead
a new implementation.

There are two reasons for not changing the graph walk: it proved to be
rather difficult to change the graph walk to have the features
implemented in this patch, and second, this keeps the backward
compatibility of the graph walk as there are users of the graph walk API

The long term plan is that all the existing code would be converted to
use the new cached pipeline, thus allowing us to remove the graph walk.

Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ideasonboard.com>
Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
2022-09-24 09:19:42 +02:00
..
drivers media: avoid use of 'videobuf' 2022-08-29 16:27:18 +02:00
camera-sensor.rst media: Documentation: media: Improve camera sensor documentation 2021-08-04 14:43:50 +02:00
cec-core.rst media: cec: add optional adap_configured callback 2022-04-24 07:41:35 +01:00
dtv-ca.rst
dtv-common.rst
dtv-core.rst
dtv-demux.rst
dtv-frontend.rst media: Documentation/driver-api: media/dtv-frontend: drop doubled word 2020-11-27 13:03:46 +01:00
dtv-net.rst
index.rst media: Documentation: media: Improve camera sensor documentation 2021-08-04 14:43:50 +02:00
maintainer-entry-profile.rst media: remove myself from dvb media maintainers 2021-10-08 13:56:25 +02:00
mc-core.rst media: mc: entity: Rewrite media_pipeline_start() 2022-09-24 09:19:42 +02:00
rc-core.rst
tx-rx.rst media: Documentation: v4l: Rework LP-11 documentation, add callbacks 2021-08-04 14:43:50 +02:00
v4l2-async.rst
v4l2-common.rst
v4l2-controls.rst media: Documentation/driver-api: media/v4l2-controls: drop doubled words 2020-11-27 13:01:54 +01:00
v4l2-core.rst media: Remove the legacy v4l2-clk API 2021-02-06 09:39:44 +01:00
v4l2-dev.rst media: Documentation/driver-api: media/v4l2-dev: drop doubled word 2020-11-27 13:02:46 +01:00
v4l2-device.rst docs: get rid of :c:type explicit declarations for structs 2020-10-15 07:49:40 +02:00
v4l2-dv-timings.rst
v4l2-event.rst media: platform: rename omap3isp/ to ti/omap3isp/ 2022-03-18 05:58:34 +01:00
v4l2-fh.rst docs: get rid of :c:type explicit declarations for structs 2020-10-15 07:49:40 +02:00
v4l2-flash-led-class.rst
v4l2-fwnode.rst
v4l2-intro.rst
v4l2-mc.rst
v4l2-mediabus.rst
v4l2-mem2mem.rst
v4l2-rect.rst
v4l2-subdev.rst media: v4l2-async: Add notifier operation to destroy asd instances 2022-07-17 11:20:08 +01:00
v4l2-tuner.rst
v4l2-tveeprom.rst
v4l2-videobuf2.rst
v4l2-videobuf.rst media: Documentation/media: drop/fix vivi references 2020-04-16 10:37:49 +02:00