2019-05-27 08:55:21 +02:00
|
|
|
|
2009-12-09 08:40:00 -03:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-12-16 11:44:32 -02:00
|
|
|
|
2016-02-15 09:08:06 -02:00
|
|
|
|
2021-11-08 18:32:29 -08:00
|
|
|
|
2017-06-15 06:17:25 -03:00
|
|
|
|
2009-12-09 08:40:00 -03:00
|
|
|
|
2009-12-09 08:40:01 -03:00
|
|
|
|
2022-08-31 16:13:25 +02:00
|
|
|
|
2021-11-08 18:32:29 -08:00
|
|
|
|
2009-12-09 08:40:00 -03:00
|
|
|
|
2015-08-25 10:28:36 -03:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-08-14 12:47:48 -03:00
|
|
|
|
2015-08-14 12:50:08 -03:00
|
|
|
|
2015-08-14 12:54:36 -03:00
|
|
|
|
2015-08-20 09:07:34 -03:00
|
|
|
|
|
|
|
|
|
2015-08-25 10:28:36 -03:00
|
|
|
|
|
|
|
|
|
2015-08-14 12:47:48 -03:00
|
|
|
|
2015-08-14 12:50:08 -03:00
|
|
|
|
2015-08-14 12:54:36 -03:00
|
|
|
|
2015-08-20 09:07:34 -03:00
|
|
|
|
2015-08-25 10:28:36 -03:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-12-16 14:28:01 -02:00
|
|
|
|
|
|
|
|
|
2015-08-25 10:28:36 -03:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2016-08-29 16:09:11 -03:00
|
|
|
|
2015-08-25 10:28:36 -03:00
|
|
|
|
|
|
|
|
|
2015-12-16 14:28:01 -02:00
|
|
|
|
|
|
|
|
|
2015-08-29 23:43:03 -03:00
|
|
|
|
2015-08-25 10:28:36 -03:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-08-13 14:42:42 -03:00
|
|
|
|
2015-08-25 10:28:36 -03:00
|
|
|
|
2015-08-23 07:51:33 -03:00
|
|
|
|
2015-08-25 10:28:36 -03:00
|
|
|
|
|
|
|
|
|
2015-12-16 11:44:32 -02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-12-16 11:32:20 -02:00
|
|
|
|
2016-11-21 14:48:30 -02:00
|
|
|
|
2015-12-16 11:32:20 -02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2017-09-27 15:54:43 -04:00
|
|
|
|
|
|
|
|
|
2015-12-16 11:32:28 -02:00
|
|
|
|
2015-12-16 11:32:20 -02:00
|
|
|
|
|
|
|
|
|
2016-11-21 14:48:30 -02:00
|
|
|
|
2015-12-16 11:32:19 -02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-12-16 11:32:28 -02:00
|
|
|
|
2015-12-16 11:32:19 -02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2016-07-17 09:18:03 -03:00
|
|
|
|
2015-12-16 11:32:21 -02:00
|
|
|
|
|
|
|
|
|
2022-08-31 16:13:35 +02:00
|
|
|
|
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-08-31 16:13:37 +02:00
|
|
|
|
|
|
|
|
|
2022-08-31 16:13:27 +02:00
|
|
|
|
2015-12-16 11:32:21 -02:00
|
|
|
|
2010-08-25 09:00:41 -03:00
|
|
|
|
2022-08-31 16:13:35 +02:00
|
|
|
|
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-08-31 16:13:37 +02:00
|
|
|
|
|
|
|
|
|
2022-08-31 16:13:27 +02:00
|
|
|
|
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-08-31 16:13:37 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2010-08-25 09:00:41 -03:00
|
|
|
|
|
|
|
|
|
2022-12-21 10:33:37 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2022-12-21 10:33:38 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-08-29 23:43:03 -03:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2016-09-22 07:59:03 -03:00
|
|
|
|
2015-08-29 23:43:03 -03:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-08-30 09:53:57 -03:00
|
|
|
|
2015-08-29 23:43:03 -03:00
|
|
|
|
2009-12-09 08:40:00 -03:00
|
|
|
|
2015-08-14 12:54:36 -03:00
|
|
|
|
[media] media: convert links from array to list
The entire logic that represent graph links were developed on a
time where there were no needs to dynamic remove links. So,
although links are created/removed one by one via some
functions, they're stored as an array inside the entity struct.
As the array may grow, there's a logic inside the code that
checks if the amount of space is not enough to store
the needed links. If it isn't the core uses krealloc()
to change the size of the link, with is bad, as it
leaves the memory fragmented.
So, convert links into a list.
Also, currently, both source and sink entities need the link
at the graph traversal logic inside media_entity. So there's
a logic duplicating all links. That makes it to spend
twice the memory needed. This is not a big deal for today's
usage, where the number of links are not big.
Yet, if during the MC workshop discussions, it was said that
IIO graphs could have up to 4,000 entities. So, we may
want to remove the duplication on some future. The problem
is that it would require a separate linked list to store
the backlinks inside the entity, or to use a more complex
algorithm to do graph backlink traversal, with is something
that the current graph traversal inside the core can't cope
with. So, let's postpone a such change if/when it is actually
needed.
It should also be noticed that the media_link structure uses
44 bytes on 32-bit architectures and 84 bytes on 64-bit
architecture. It will thus be allocated out of the 64-bytes and
96-bytes pools respectively. That's a 12.5% memory waste on
64-bit architectures and 31.25% on 32-bit architecture.
A linked list is less efficient than an array in this case, but
this could later be optimized if we can get rid of the reverse
links (with would reduce memory allocation by 50%).
Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
2015-08-07 06:55:40 -03:00
|
|
|
|
2015-08-20 09:10:07 -03:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-08-07 10:36:25 -03:00
|
|
|
|
2015-08-20 09:10:07 -03:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-08-07 10:36:25 -03:00
|
|
|
|
2015-08-20 09:10:07 -03:00
|
|
|
|
2015-08-29 23:43:03 -03:00
|
|
|
|
|
|
|
|
|
2015-08-30 09:53:57 -03:00
|
|
|
|
2009-12-09 08:40:00 -03:00
|
|
|
|
|
|
|
|
|
2018-07-31 08:03:48 -04:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2021-03-24 14:21:00 +01:00
|
|
|
|
2018-07-31 08:03:48 -04:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-08-29 23:43:03 -03:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2024-01-15 00:30:02 +02:00
|
|
|
|
2018-07-31 08:03:48 -04:00
|
|
|
|
2016-08-29 16:09:11 -03:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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-08-31 16:13:37 +02:00
|
|
|
|
|
|
|
|
|
2015-08-29 23:43:03 -03:00
|
|
|
|
2009-12-09 08:40:00 -03:00
|
|
|
|
2015-08-20 09:10:07 -03:00
|
|
|
|
2015-08-29 23:43:03 -03:00
|
|
|
|
|
|
|
|
|
2024-01-15 00:30:02 +02:00
|
|
|
|
2018-07-31 08:03:48 -04:00
|
|
|
|
2015-08-29 23:43:03 -03:00
|
|
|
|
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-08-31 16:13:37 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2009-12-09 08:40:00 -03:00
|
|
|
|
|
|
|
|
|
2014-03-26 00:01:44 -03:00
|
|
|
|
|
|
|
|
|
2017-06-15 06:17:25 -03:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2014-03-26 00:01:44 -03:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2016-11-21 14:48:30 -02:00
|
|
|
|
2014-03-26 00:01:44 -03:00
|
|
|
|
2022-09-09 00:40:09 +03:00
|
|
|
|
2022-08-31 16:13:38 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2022-01-14 01:26:26 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2022-08-31 16:13:38 +02:00
|
|
|
|
|
|
|
|
|
2016-04-06 10:55:25 -03:00
|
|
|
|
2016-07-20 09:22:38 -03:00
|
|
|
|
|
|
|
|
|
2016-08-29 16:09:11 -03:00
|
|
|
|
2016-07-20 09:22:38 -03:00
|
|
|
|
2014-03-26 00:01:44 -03:00
|
|
|
|
2009-12-09 08:40:03 -03:00
|
|
|
|
2020-05-01 19:15:35 +02:00
|
|
|
|
|
|
|
|
|
2009-12-09 08:40:03 -03:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2012-01-11 06:25:15 -03:00
|
|
|
|
2022-08-31 16:13:38 +02:00
|
|
|
|
|
|
|
|
|
2009-12-09 08:40:03 -03:00
|
|
|
|
|
|
|
|
|
2016-02-29 08:45:44 -03:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2016-08-29 16:09:11 -03:00
|
|
|
|
2016-02-29 08:45:44 -03:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-08-29 23:43:03 -03:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2016-02-29 08:45:44 -03:00
|
|
|
|
2016-08-29 16:09:11 -03:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-08-29 23:43:03 -03:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-12-16 11:32:17 -02:00
|
|
|
|
|
|
|
|
|
2015-08-29 23:43:03 -03:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2017-09-27 15:54:43 -04:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-08-29 23:43:03 -03:00
|
|
|
|
2016-08-29 16:09:11 -03:00
|
|
|
|
|
|
|
|
|
media: media-entity: Simplify media_pipeline_start()
The media_pipeline_start() function has two purposes: it constructs a
pipeline by recording the entities that are part of it, gathered from a
graph walk, and validate the media links. The pipeline pointer is stored
in the media_entity structure as part of this process, and the entity's
stream count is increased, to record that the entity is streaming.
When multiple video nodes are present in a pipeline,
media_pipeline_start() is typically called on all of them, with the same
pipeline pointer. This is taken into account in media_pipeline_start()
by skipping validation for entities that are already part of the
pipeline, while returning an error if an entity is part of a different
pipeline.
It turns out that this process is overly complicated. When
media_pipeline_start() is called for the first time, it constructs the
full pipeline, adding all entities and validating all the links.
Subsequent calls to media_pipeline_start() are then nearly no-ops, they
only increase the stream count on the pipeline and on all entities.
The media_entity stream_count field is used for two purposes: checking
if the entity is streaming, and detecting when a call to
media_pipeline_stop() balances needs to reset the entity pipe pointer to
NULL. The former can easily be replaced by a check of the pipe pointer.
Simplify media_pipeline_start() by avoiding the pipeline walk on all
calls but the first one, and drop the media_entity stream_count field.
media_pipeline_stop() is updated accordingly.
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
[Sakari Ailus: Drop redundant '!= NULL' as discussed]
Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
2022-01-13 17:00:42 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-08-29 23:43:03 -03:00
|
|
|
|
2009-12-09 08:40:00 -03:00
|
|
|
|
2015-08-20 09:10:07 -03:00
|
|
|
|
2015-08-29 23:43:03 -03:00
|
|
|
|
2016-02-29 08:45:44 -03:00
|
|
|
|
2015-09-06 09:33:39 -03:00
|
|
|
|
2015-08-29 23:43:03 -03:00
|
|
|
|
2009-12-09 08:40:00 -03:00
|
|
|
|
2015-08-29 23:43:03 -03:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-12-16 11:32:17 -02:00
|
|
|
|
2009-12-09 08:40:00 -03:00
|
|
|
|
2015-08-29 23:43:03 -03:00
|
|
|
|
|
|
|
|
|
2009-12-09 08:40:00 -03:00
|
|
|
|
2015-08-29 23:43:03 -03:00
|
|
|
|
2009-12-09 08:40:03 -03:00
|
|
|
|
2015-08-29 23:43:03 -03:00
|
|
|
|
2010-03-07 15:04:59 -03:00
|
|
|
|
2009-12-09 08:40:00 -03:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
[media] media: Fix DVB devnode representation at media controller
The previous provision for DVB media controller support were to
define an ID (likely meaning the adapter number) for the DVB
devnodes.
This is just plain wrong. Just like V4L, DVB devices (and any other
device node)) are uniquely identified via a (major, minor) tuple.
This is enough to uniquely identify a devnode, no matter what
API it implements.
So, before we go too far, let's mark the old v4l, fb, dvb and alsa
"devnode" info as deprecated, and just call it as "dev".
We can latter add fields specific to each API if needed.
As we don't want to break compilation on already existing apps,
let's just keep the old definitions as-is, adding a note that
those are deprecated at media-entity.h.
Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
2015-01-02 12:18:23 -03:00
|
|
|
|
2011-11-05 18:42:01 -03:00
|
|
|
|
2009-12-09 08:40:00 -03:00
|
|
|
|
|
|
|
|
|
2022-08-31 16:13:28 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-08-20 09:07:34 -03:00
|
|
|
|
2015-08-29 23:43:03 -03:00
|
|
|
|
2015-08-20 09:07:34 -03:00
|
|
|
|
|
|
|
|
|
2015-08-07 10:36:25 -03:00
|
|
|
|
2016-08-29 16:09:11 -03:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-08-20 09:07:34 -03:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-08-07 10:36:25 -03:00
|
|
|
|
2015-08-20 09:07:34 -03:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-08-29 23:43:03 -03:00
|
|
|
|
2015-08-20 09:07:34 -03:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-08-23 08:28:21 -03:00
|
|
|
|
|
|
|
|
|
2015-08-20 09:07:34 -03:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-12-13 08:20:46 -02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2016-08-29 16:09:11 -03:00
|
|
|
|
2015-12-13 08:20:46 -02:00
|
|
|
|
2015-08-14 10:42:05 -03:00
|
|
|
|
|
|
|
|
|
2015-08-14 12:47:48 -03:00
|
|
|
|
2015-08-14 10:42:05 -03:00
|
|
|
|
|
|
|
|
|
2015-12-13 08:20:46 -02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2016-08-29 16:09:11 -03:00
|
|
|
|
2015-12-13 08:20:46 -02:00
|
|
|
|
2015-08-25 10:28:36 -03:00
|
|
|
|
|
|
|
|
|
2015-12-16 14:28:01 -02:00
|
|
|
|
2015-08-25 10:28:36 -03:00
|
|
|
|
|
|
|
|
|
2015-12-16 15:15:18 -02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2016-08-29 16:09:11 -03:00
|
|
|
|
2015-12-16 15:15:18 -02:00
|
|
|
|
2015-12-16 14:28:01 -02:00
|
|
|
|
2015-08-25 10:28:36 -03:00
|
|
|
|
2015-12-16 14:28:01 -02:00
|
|
|
|
2015-08-25 10:28:36 -03:00
|
|
|
|
|
|
|
|
|
2015-12-16 15:15:18 -02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2016-08-29 16:09:11 -03:00
|
|
|
|
2015-12-16 15:15:18 -02:00
|
|
|
|
2015-12-16 14:28:01 -02:00
|
|
|
|
2015-08-25 10:28:36 -03:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-12-16 14:28:01 -02:00
|
|
|
|
|
|
|
|
|
2015-08-25 10:28:36 -03:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-12-13 08:20:46 -02:00
|
|
|
|
2016-02-29 08:45:45 -03:00
|
|
|
|
2015-12-13 08:20:46 -02:00
|
|
|
|
|
|
|
|
|
2016-08-29 16:09:11 -03:00
|
|
|
|
2016-02-29 08:45:44 -03:00
|
|
|
|
2016-08-29 16:09:11 -03:00
|
|
|
|
2015-12-13 08:20:46 -02:00
|
|
|
|
2016-02-29 08:45:45 -03:00
|
|
|
|
2015-08-21 12:17:40 -03:00
|
|
|
|
2016-02-29 08:45:44 -03:00
|
|
|
|
2015-08-21 12:17:40 -03:00
|
|
|
|
|
|
|
|
|
2015-12-13 08:20:46 -02:00
|
|
|
|
2016-02-29 08:45:44 -03:00
|
|
|
|
2015-12-13 08:20:46 -02:00
|
|
|
|
|
|
|
|
|
2016-08-29 16:09:11 -03:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-12-13 08:20:46 -02:00
|
|
|
|
2015-08-21 12:17:40 -03:00
|
|
|
|
|
|
|
|
|
2016-02-29 08:45:44 -03:00
|
|
|
|
2015-08-21 12:17:40 -03:00
|
|
|
|
|
|
|
|
|
2015-12-16 13:53:04 -02:00
|
|
|
|
2022-08-31 16:13:29 +02:00
|
|
|
|
2015-12-16 13:53:04 -02:00
|
|
|
|
|
|
|
|
|
2022-08-31 16:13:29 +02:00
|
|
|
|
2015-12-16 13:53:04 -02:00
|
|
|
|
2022-08-31 16:13:29 +02:00
|
|
|
|
2015-12-16 13:53:04 -02:00
|
|
|
|
2022-08-31 16:13:29 +02:00
|
|
|
|
|
|
|
|
|
2015-12-16 13:53:04 -02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2010-03-07 16:14:14 -03:00
|
|
|
|
2015-12-16 11:44:32 -02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-12-16 13:58:31 -02:00
|
|
|
|
2015-10-01 18:07:53 -03:00
|
|
|
|
2015-12-16 11:44:32 -02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-12-16 13:58:31 -02:00
|
|
|
|
2015-12-16 11:44:32 -02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-12-16 13:58:31 -02:00
|
|
|
|
2015-12-16 11:44:32 -02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-12-16 13:58:31 -02:00
|
|
|
|
2015-12-16 11:44:32 -02:00
|
|
|
|
|
|
|
|
|
2016-08-29 16:09:11 -03:00
|
|
|
|
2015-12-16 11:44:32 -02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2016-09-22 07:59:03 -03:00
|
|
|
|
|
|
|
|
|
2015-12-16 11:44:32 -02:00
|
|
|
|
2015-12-16 13:58:31 -02:00
|
|
|
|
2015-12-16 11:44:32 -02:00
|
|
|
|
|
|
|
|
|
2016-08-29 16:09:11 -03:00
|
|
|
|
2015-12-16 11:44:32 -02:00
|
|
|
|
2015-12-16 13:58:31 -02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-12-16 11:44:32 -02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-12-16 13:58:31 -02:00
|
|
|
|
2015-12-16 11:44:32 -02:00
|
|
|
|
2015-12-16 13:58:31 -02:00
|
|
|
|
2015-12-16 11:44:32 -02:00
|
|
|
|
2016-08-29 16:09:11 -03:00
|
|
|
|
2015-12-16 11:44:32 -02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-12-16 13:58:31 -02:00
|
|
|
|
|
|
|
|
|
2015-12-16 11:44:32 -02:00
|
|
|
|
2016-08-29 16:09:11 -03:00
|
|
|
|
|
|
|
|
|
2015-12-16 11:44:32 -02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-10-01 18:07:53 -03:00
|
|
|
|
2016-08-29 16:09:11 -03:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-08-25 10:28:36 -03:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2016-08-29 16:09:11 -03:00
|
|
|
|
2016-09-22 07:59:03 -03:00
|
|
|
|
2016-08-29 16:09:11 -03:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-08-13 14:42:42 -03:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2016-08-29 16:09:11 -03:00
|
|
|
|
2016-09-22 07:59:03 -03:00
|
|
|
|
2016-08-29 16:09:11 -03:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-08-13 14:42:42 -03:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2016-08-29 16:09:11 -03:00
|
|
|
|
2016-09-22 07:59:03 -03:00
|
|
|
|
2016-08-29 16:09:11 -03:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-08-20 09:07:34 -03:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2016-08-29 16:09:11 -03:00
|
|
|
|
2016-09-22 07:59:03 -03:00
|
|
|
|
2016-08-29 16:09:11 -03:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-08-20 09:07:34 -03:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-12-11 12:14:58 -02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2016-08-29 16:09:11 -03:00
|
|
|
|
2015-12-11 12:14:58 -02:00
|
|
|
|
2016-08-29 16:09:11 -03:00
|
|
|
|
2015-12-11 12:14:58 -02:00
|
|
|
|
2016-08-29 16:09:11 -03:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-12-11 12:14:58 -02:00
|
|
|
|
2015-12-11 11:55:40 -02:00
|
|
|
|
2015-08-25 10:28:36 -03:00
|
|
|
|
|
|
|
|
|
2015-12-11 12:14:58 -02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2016-08-29 16:09:11 -03:00
|
|
|
|
2015-12-11 12:14:58 -02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-12-11 11:55:40 -02:00
|
|
|
|
2015-08-25 10:28:36 -03:00
|
|
|
|
2015-12-11 11:06:08 -02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-12-11 12:14:58 -02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2016-08-29 16:09:11 -03:00
|
|
|
|
|
|
|
|
|
2015-12-11 11:06:08 -02:00
|
|
|
|
|
|
|
|
|
2016-08-29 16:09:11 -03:00
|
|
|
|
2015-12-11 11:06:08 -02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-12-11 07:44:40 -02:00
|
|
|
|
[media] media: convert links from array to list
The entire logic that represent graph links were developed on a
time where there were no needs to dynamic remove links. So,
although links are created/removed one by one via some
functions, they're stored as an array inside the entity struct.
As the array may grow, there's a logic inside the code that
checks if the amount of space is not enough to store
the needed links. If it isn't the core uses krealloc()
to change the size of the link, with is bad, as it
leaves the memory fragmented.
So, convert links into a list.
Also, currently, both source and sink entities need the link
at the graph traversal logic inside media_entity. So there's
a logic duplicating all links. That makes it to spend
twice the memory needed. This is not a big deal for today's
usage, where the number of links are not big.
Yet, if during the MC workshop discussions, it was said that
IIO graphs could have up to 4,000 entities. So, we may
want to remove the duplication on some future. The problem
is that it would require a separate linked list to store
the backlinks inside the entity, or to use a more complex
algorithm to do graph backlink traversal, with is something
that the current graph traversal inside the core can't cope
with. So, let's postpone a such change if/when it is actually
needed.
It should also be noticed that the media_link structure uses
44 bytes on 32-bit architectures and 84 bytes on 64-bit
architecture. It will thus be allocated out of the 64-bytes and
96-bytes pools respectively. That's a 12.5% memory waste on
64-bit architectures and 31.25% on 32-bit architecture.
A linked list is less efficient than an array in this case, but
this could later be optimized if we can get rid of the reverse
links (with would reduce memory allocation by 50%).
Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
2015-08-07 06:55:40 -03:00
|
|
|
|
2015-12-11 09:13:23 -02:00
|
|
|
|
2015-12-11 11:06:08 -02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2022-02-24 14:57:47 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-12-11 11:06:08 -02:00
|
|
|
|
2018-01-09 05:20:34 -05:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2010-08-25 09:00:41 -03:00
|
|
|
|
2018-07-31 09:22:40 -04:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2023-04-25 13:23:00 +03:00
|
|
|
|
2018-07-31 09:22:40 -04:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2023-04-25 13:23:00 +03:00
|
|
|
|
2018-07-31 09:22:40 -04:00
|
|
|
|
|
|
|
|
|
2015-12-11 11:06:08 -02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2016-08-29 16:09:11 -03:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-12-11 11:06:08 -02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2016-08-29 16:09:11 -03:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-12-11 11:06:08 -02:00
|
|
|
|
2016-08-29 16:09:11 -03:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-12-11 11:06:08 -02:00
|
|
|
|
2016-07-17 09:18:03 -03:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-12-11 11:06:08 -02:00
|
|
|
|
2015-09-04 16:08:24 -03:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-12-30 09:45:48 -02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2016-08-29 16:09:11 -03:00
|
|
|
|
2015-12-30 09:45:48 -02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2016-08-29 16:09:11 -03:00
|
|
|
|
2015-12-30 09:45:48 -02:00
|
|
|
|
|
|
|
|
|
2016-08-29 16:09:11 -03:00
|
|
|
|
2015-12-30 09:45:48 -02:00
|
|
|
|
|
|
|
|
|
2016-08-29 16:09:11 -03:00
|
|
|
|
2015-12-30 09:45:48 -02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2016-07-17 09:18:03 -03:00
|
|
|
|
2015-12-30 09:45:48 -02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2016-08-29 16:09:11 -03:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-12-30 09:45:48 -02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2013-05-09 08:29:32 -03:00
|
|
|
|
2015-12-11 11:06:08 -02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2016-07-17 09:18:03 -03:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-12-11 11:06:08 -02:00
|
|
|
|
2013-05-09 08:29:32 -03:00
|
|
|
|
|
|
|
|
|
2015-12-11 12:14:58 -02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2009-12-09 08:40:03 -03:00
|
|
|
|
2015-12-11 11:06:08 -02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2020-07-15 00:05:52 +02:00
|
|
|
|
2015-12-11 11:06:08 -02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2016-08-29 16:09:11 -03:00
|
|
|
|
2015-12-11 11:06:08 -02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2016-08-29 16:09:11 -03:00
|
|
|
|
2015-12-11 11:06:08 -02:00
|
|
|
|
|
|
|
|
|
2016-07-17 09:18:03 -03:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-12-11 11:06:08 -02:00
|
|
|
|
2009-12-09 08:40:03 -03:00
|
|
|
|
2015-12-11 12:14:58 -02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2016-08-29 16:09:11 -03:00
|
|
|
|
|
|
|
|
|
2015-12-11 12:14:58 -02:00
|
|
|
|
2009-12-09 08:40:03 -03:00
|
|
|
|
|
|
|
|
|
2015-12-11 12:14:58 -02:00
|
|
|
|
|
|
|
|
|
2022-06-25 18:02:24 +01:00
|
|
|
|
2015-12-11 12:14:58 -02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2016-08-29 16:09:11 -03:00
|
|
|
|
|
|
|
|
|
2015-12-11 12:14:58 -02:00
|
|
|
|
2022-06-25 18:02:24 +01:00
|
|
|
|
2009-12-09 08:40:00 -03:00
|
|
|
|
2022-06-14 20:11:10 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2022-06-14 20:11:09 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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-08-31 16:13:37 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2022-01-13 17:00:41 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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-08-31 16:13:37 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2022-01-13 17:00:41 +02:00
|
|
|
|
|
|
|
|
|
2022-08-31 16:13:31 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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-08-31 16:13:37 +02:00
|
|
|
|
|
|
|
|
|
2022-08-31 16:13:31 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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-08-31 16:13:37 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2017-06-15 06:17:26 -03:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2018-04-08 12:11:52 -04:00
|
|
|
|
2017-06-15 06:17:26 -03:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2023-05-05 16:27:49 +03:00
|
|
|
|
2017-06-15 06:17:26 -03:00
|
|
|
|
|
|
|
|
|
2016-08-29 16:09:11 -03:00
|
|
|
|
2016-11-21 14:48:30 -02:00
|
|
|
|
2016-08-29 16:09:11 -03:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2021-03-12 10:05:44 +01:00
|
|
|
|
2022-12-21 10:33:38 +01:00
|
|
|
|
|
|
|
|
|
2021-03-12 10:05:44 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2016-08-29 16:09:11 -03:00
|
|
|
|
2016-11-21 14:48:30 -02:00
|
|
|
|
|
|
|
|
|
2015-12-16 13:56:14 -02:00
|
|
|
|
|
|
|
|
|
2016-11-21 14:48:30 -02:00
|
|
|
|
2015-12-16 13:56:14 -02:00
|
|
|
|
|
|
|
|
|
2022-12-21 10:33:38 +01:00
|
|
|
|
|
|
|
|
|
2015-12-16 13:56:14 -02:00
|
|
|
|
2016-11-21 14:48:30 -02:00
|
|
|
|
2015-12-16 11:32:22 -02:00
|
|
|
|
2015-12-11 12:14:58 -02:00
|
|
|
|
2016-11-21 14:48:30 -02:00
|
|
|
|
2016-08-29 16:09:11 -03:00
|
|
|
|
|
|
|
|
|
2015-12-11 12:14:58 -02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2022-12-21 10:33:38 +01:00
|
|
|
|
|
|
|
|
|
2016-11-21 14:48:30 -02:00
|
|
|
|
2015-12-16 11:32:22 -02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2016-11-21 14:48:30 -02:00
|
|
|
|
2015-12-11 12:14:58 -02:00
|
|
|
|
2016-11-21 14:48:30 -02:00
|
|
|
|
|
|
|
|
|
2015-12-11 12:14:58 -02:00
|
|
|
|
|
|
|
|
|
2016-11-21 14:48:30 -02:00
|
|
|
|
2015-12-11 12:14:58 -02:00
|
|
|
|
|
|
|
|
|
2022-12-21 10:33:38 +01:00
|
|
|
|
|
|
|
|
|
2015-12-11 12:14:58 -02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2016-11-21 14:48:30 -02:00
|
|
|
|
2015-12-11 12:14:58 -02:00
|
|
|
|
2016-08-29 16:09:11 -03:00
|
|
|
|
|
|
|
|
|
2015-12-11 12:14:58 -02:00
|
|
|
|
2016-11-21 14:48:30 -02:00
|
|
|
|
2015-12-11 12:14:58 -02:00
|
|
|
|
|
|
|
|
|
2016-11-21 14:48:30 -02:00
|
|
|
|
2024-10-19 20:23:12 +03:00
|
|
|
|
2022-08-31 16:13:39 +02:00
|
|
|
|
2015-12-11 12:14:58 -02:00
|
|
|
|
2024-10-19 20:23:12 +03:00
|
|
|
|
2016-08-29 16:09:11 -03:00
|
|
|
|
2022-08-31 16:13:39 +02:00
|
|
|
|
2015-12-11 12:14:58 -02:00
|
|
|
|
|
|
|
|
|
2016-11-21 14:48:30 -02:00
|
|
|
|
2015-12-11 12:14:58 -02:00
|
|
|
|
2016-11-21 14:48:30 -02:00
|
|
|
|
2015-12-11 12:14:58 -02:00
|
|
|
|
2024-10-19 20:23:12 +03:00
|
|
|
|
2016-11-21 14:48:30 -02:00
|
|
|
|
2016-02-11 21:41:24 -02:00
|
|
|
|
2016-11-21 14:48:30 -02:00
|
|
|
|
2016-02-11 21:41:24 -02:00
|
|
|
|
2024-10-19 20:23:12 +03:00
|
|
|
|
2022-08-31 16:13:39 +02:00
|
|
|
|
2016-02-11 21:41:24 -02:00
|
|
|
|
2016-11-21 14:48:30 -02:00
|
|
|
|
2016-02-11 21:41:24 -02:00
|
|
|
|
2024-10-19 20:23:12 +03:00
|
|
|
|
2016-11-21 14:48:30 -02:00
|
|
|
|
2015-12-11 12:14:58 -02:00
|
|
|
|
|
|
|
|
|
2016-11-21 14:48:30 -02:00
|
|
|
|
2022-08-31 16:13:39 +02:00
|
|
|
|
2015-12-11 12:14:58 -02:00
|
|
|
|
2022-09-09 00:40:09 +03:00
|
|
|
|
2022-08-31 16:13:39 +02:00
|
|
|
|
2016-08-29 16:09:11 -03:00
|
|
|
|
2015-12-11 12:14:58 -02:00
|
|
|
|
2016-11-21 14:48:30 -02:00
|
|
|
|
2015-12-11 12:14:58 -02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2022-08-31 16:13:39 +02:00
|
|
|
|
2010-03-07 16:14:14 -03:00
|
|
|
|
2016-02-11 21:41:24 -02:00
|
|
|
|
2016-11-21 14:48:30 -02:00
|
|
|
|
2016-02-11 21:41:24 -02:00
|
|
|
|
2022-08-31 16:13:39 +02:00
|
|
|
|
2016-02-11 21:41:24 -02:00
|
|
|
|
2016-11-21 14:48:30 -02:00
|
|
|
|
2016-02-11 21:41:24 -02:00
|
|
|
|
2022-08-31 16:13:39 +02:00
|
|
|
|
2016-02-11 21:41:24 -02:00
|
|
|
|
2022-12-21 10:33:37 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2022-12-21 10:33:38 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2022-08-31 16:13:35 +02:00
|
|
|
|
|
|
|
|
|
2022-08-31 16:13:39 +02:00
|
|
|
|
2022-08-31 16:13:35 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2022-08-31 16:13:39 +02:00
|
|
|
|
2022-08-31 16:13:35 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2022-08-31 16:13:39 +02:00
|
|
|
|
2022-08-31 16:13:35 +02:00
|
|
|
|
2015-12-11 11:06:08 -02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2016-08-29 16:09:11 -03:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-12-11 11:06:08 -02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2016-08-29 16:09:11 -03:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-12-11 11:06:08 -02:00
|
|
|
|
2015-09-04 15:34:19 -03:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-09-09 08:19:25 -03:00
|
|
|
|
2015-12-11 11:06:08 -02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-08-20 09:07:34 -03:00
|
|
|
|
2015-12-11 11:06:08 -02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2016-08-29 16:09:11 -03:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-12-11 11:06:08 -02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2016-08-29 16:09:11 -03:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2016-07-17 09:18:03 -03:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-12-11 11:06:08 -02:00
|
|
|
|
2016-07-17 09:18:03 -03:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-12-11 11:06:08 -02:00
|
|
|
|
2022-04-08 18:53:45 +01:00
|
|
|
|
2015-09-04 15:34:19 -03:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-12-13 08:20:46 -02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2016-07-17 09:18:03 -03:00
|
|
|
|
2015-12-13 08:20:46 -02:00
|
|
|
|
2015-08-29 21:23:44 -03:00
|
|
|
|
2015-12-13 08:20:46 -02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2016-07-17 09:18:03 -03:00
|
|
|
|
2015-12-13 08:20:46 -02:00
|
|
|
|
2015-08-07 10:36:25 -03:00
|
|
|
|
2015-12-13 08:20:46 -02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2016-07-17 09:18:03 -03:00
|
|
|
|
2015-12-13 08:20:46 -02:00
|
|
|
|
2015-08-24 08:46:46 -03:00
|
|
|
|
2015-12-16 13:53:04 -02:00
|
|
|
|
2015-12-11 11:06:08 -02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2016-07-20 11:15:31 -03:00
|
|
|
|
2015-12-13 08:20:46 -02:00
|
|
|
|
2016-07-20 11:15:31 -03:00
|
|
|
|
|
|
|
|
|
2015-12-13 08:20:46 -02:00
|
|
|
|
2016-07-20 11:15:31 -03:00
|
|
|
|
2015-12-11 11:06:08 -02:00
|
|
|
|
2015-08-24 08:46:46 -03:00
|
|
|
|
|
|
|
|
|
2016-08-29 16:09:11 -03:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2009-12-09 08:40:03 -03:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2022-03-02 22:03:03 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2022-07-07 23:47:32 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2009-12-09 08:40:00 -03:00
|
|
|
|