summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMauro Carvalho Chehab <mchehab@osg.samsung.com>2015-08-20 09:10:07 -0300
committerMauro Carvalho Chehab <mchehab@osg.samsung.com>2016-01-11 12:18:47 -0200
commit4b8a3c08592ae0d530c87e2e1672ed8d9184dc09 (patch)
treece30e4322f8d14919013d9227bca3e9901690fe2
parent23615de5ee742f2f49833777ab015cf1a83fcbc3 (diff)
[media] media: make media_link more generic to handle interace links
By adding an union at media_link, we get for free a way to represent interface->entity links. No need to change anything at the code, just at the internal header file. Acked-by: Hans Verkuil <hans.verkuil@cisco.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
-rw-r--r--include/media/media-entity.h16
1 files changed, 11 insertions, 5 deletions
diff --git a/include/media/media-entity.h b/include/media/media-entity.h
index 2e5646cf36e7..a7b21a7f4c64 100644
--- a/include/media/media-entity.h
+++ b/include/media/media-entity.h
@@ -75,14 +75,20 @@ struct media_pipeline {
struct media_link {
struct media_gobj graph_obj;
struct list_head list;
- struct media_pad *source; /* Source pad */
- struct media_pad *sink; /* Sink pad */
+ union {
+ struct media_gobj *gobj0;
+ struct media_pad *source;
+ };
+ union {
+ struct media_gobj *gobj1;
+ struct media_pad *sink;
+ };
struct media_link *reverse; /* Link in the reverse direction */
unsigned long flags; /* Link flags (MEDIA_LNK_FL_*) */
};
struct media_pad {
- struct media_gobj graph_obj;
+ struct media_gobj graph_obj; /* must be first field in struct */
struct media_entity *entity; /* Entity this pad belongs to */
u16 index; /* Pad index in the entity pads array */
unsigned long flags; /* Pad flags (MEDIA_PAD_FL_*) */
@@ -105,7 +111,7 @@ struct media_entity_operations {
};
struct media_entity {
- struct media_gobj graph_obj;
+ struct media_gobj graph_obj; /* must be first field in struct */
struct list_head list;
const char *name; /* Entity name */
u32 type; /* Entity type (MEDIA_ENT_T_*) */
@@ -119,7 +125,7 @@ struct media_entity {
u16 num_backlinks; /* Number of backlinks */
struct media_pad *pads; /* Pads array (num_pads objects) */
- struct list_head links; /* Links list */
+ struct list_head links; /* Pad-to-pad links list */
const struct media_entity_operations *ops; /* Entity operations */