[Sound-open-firmware] [PATCH] pipeline: docs: Add some comments to further document the pipeline core
Liam Girdwood
liam.r.girdwood at linux.intel.com
Tue Dec 19 18:22:07 CET 2017
Add more descriptive documentation to help document the pipeline core.
Signed-off-by: Liam Girdwood <liam.r.girdwood at linux.intel.com>
---
src/audio/pipeline.c | 40 +++++++++++++++++++++++++++++++++++-----
1 file changed, 35 insertions(+), 5 deletions(-)
diff --git a/src/audio/pipeline.c b/src/audio/pipeline.c
index 3cfffb6..94d91b5 100644
--- a/src/audio/pipeline.c
+++ b/src/audio/pipeline.c
@@ -196,6 +196,7 @@ static void disconnect_downstream(struct pipeline *p, struct comp_dev *start,
static void pipeline_cmd_update(struct pipeline *p, struct comp_dev *comp,
int cmd)
{
+ /* only required by the scheduling component */
if (p->sched_comp != comp)
return;
@@ -345,7 +346,11 @@ int pipeline_buffer_connect(struct pipeline *p,
return 0;
}
-/* call op on all downstream components - locks held by caller */
+/* Walk the graph downstream from start component in any pipeline and perform
+ * the operation on each component. Graph walk is stopped on any component
+ * returning an error ( < 0) and returns immediately. Components returning a
+ * positive error code also stop the graph walk on that branch causing the
+ * walk to return to a shallower level in the graph. */
static int component_op_downstream(struct op_data *op_data,
struct comp_dev *start, struct comp_dev *current,
struct comp_dev *previous)
@@ -422,7 +427,11 @@ static int component_op_downstream(struct op_data *op_data,
return err;
}
-/* call op on all upstream components - locks held by caller */
+/* Walk the graph upstream from start component in any pipeline and perform
+ * the operation on each component. Graph walk is stopped on any component
+ * returning an error ( < 0) and returns immediately. Components returning a
+ * positive error code also stop the graph walk on that branch causing the
+ * walk to return to a shallower level in the graph. */
static int component_op_upstream(struct op_data *op_data,
struct comp_dev *start, struct comp_dev *current,
struct comp_dev *previous)
@@ -496,6 +505,8 @@ static int component_op_upstream(struct op_data *op_data,
return err;
}
+/* walk the graph upstream from start component in any pipeline and prepare
+ * the buffer context for each inactive component */
static int component_prepare_buffers_upstream(struct comp_dev *start,
struct comp_dev *current, struct comp_buffer *buffer)
{
@@ -534,6 +545,8 @@ static int component_prepare_buffers_upstream(struct comp_dev *start,
return err;
}
+/* walk the graph downstream from start component in any pipeline and prepare
+ * the buffer context for each inactive component */
static int component_prepare_buffers_downstream(struct comp_dev *start,
struct comp_dev *current, struct comp_buffer *buffer)
{
@@ -725,6 +738,10 @@ int pipeline_reset(struct pipeline *p, struct comp_dev *host)
* end point(s) to the downstream components in a single operation.
* i.e. the period data is processed from upstream end points to downstream
* "comp" recursively in a single call to this function.
+ *
+ * The copy operation is for this pipeline only (as pipelines are scheduled
+ * individually) and it stops at pipeline endpoints (where a component has no
+ * source or sink components) or where this pipeline joins another pipeline.
*/
static int pipeline_copy_from_upstream(struct comp_dev *start,
struct comp_dev *current)
@@ -779,6 +796,10 @@ copy:
* downstream end point component(s) in a single operation.
* i.e. the period data is processed from this component to downstream
* end points recursively in a single call to this function.
+ *
+ * The copy operation is for this pipeline only (as pipelines are scheduled
+ * individually) and it stops at pipeline endpoints (where a component has no
+ * source or sink components) or where this pipeline joins another pipeline.
*/
static int pipeline_copy_to_downstream(struct comp_dev *start,
struct comp_dev *current)
@@ -827,6 +848,10 @@ out:
return err;
}
+/* walk the graph to downstream active components in any pipeline to find
+ * the first active DAI and return it's timestamp.
+ * TODO: consider pipeline with multiple DAIs
+ */
static int timestamp_downstream(struct comp_dev *start,
struct comp_dev *current, struct sof_ipc_stream_posn *posn)
{
@@ -868,7 +893,10 @@ downstream:
return res;
}
-
+/* walk the graph to upstream active components in any pipeline to find
+ * the first active DAI and return it's timestamp.
+ * TODO: consider pipeline with multiple DAIs
+ */
static int timestamp_upstream(struct comp_dev *start,
struct comp_dev *current, struct sof_ipc_stream_posn *posn)
{
@@ -938,7 +966,8 @@ static void xrun(struct comp_dev *dev, void *data)
}
-/* travel down stream from start and run func for each component of type */
+/* walk the graph downstream from start component in any pipeline and run
+ * function <func> for each component of type <type> */
static void pipeline_for_each_downstream(struct pipeline *p,
enum sof_comp_type type, struct comp_dev *current,
void (*func)(struct comp_dev *, void *), void *data)
@@ -964,7 +993,8 @@ static void pipeline_for_each_downstream(struct pipeline *p,
}
}
-/* travel up stream from start and run func for each component of type */
+/* walk the graph upstream from start component in any pipeline and run
+ * function <func> for each component of type <type> */
static void pipeline_for_each_upstream(struct pipeline *p,
enum sof_comp_type type, struct comp_dev *current,
void (*func)(struct comp_dev *, void *), void *data)
--
2.14.1
More information about the Sound-open-firmware
mailing list