From 3cc9c9b86750e8750b3706d38f5b741105b1c8c2 Mon Sep 17 00:00:00 2001 From: Martijn Braam Date: Sat, 28 Nov 2020 18:57:11 +0100 Subject: [PATCH] Find interface entity by type --- device.c | 11 +++++++++++ device.h | 1 + io_pipeline.c | 2 +- 3 files changed, 13 insertions(+), 1 deletion(-) diff --git a/device.c b/device.c index ff1c0de..a20434e 100644 --- a/device.c +++ b/device.c @@ -176,6 +176,17 @@ const struct media_v2_entity *mp_device_find_entity(const MPDevice *device, cons return NULL; } +const struct media_v2_entity *mp_device_find_entity_type(const MPDevice *device, const uint32_t type) +{ + // Find the entity from the entity type + for (uint32_t i = 0; i < device->num_entities; ++i) { + if (device->entities[i].function == type) { + return &device->entities[i]; + } + } + return NULL; +} + const struct media_device_info *mp_device_get_info(const MPDevice *device) { return &device->info; diff --git a/device.h b/device.h index 86644af..be7e1ba 100644 --- a/device.h +++ b/device.h @@ -18,6 +18,7 @@ bool mp_device_setup_link(MPDevice *device, uint32_t source_pad_id, uint32_t sin const struct media_device_info *mp_device_get_info(const MPDevice *device); const struct media_v2_entity *mp_device_find_entity(const MPDevice *device, const char *driver_name); +const struct media_v2_entity *mp_device_find_entity_type(const MPDevice *device, const uint32_t type); const struct media_v2_entity *mp_device_get_entity(const MPDevice *device, uint32_t id); const struct media_v2_entity *mp_device_get_entities(const MPDevice *device); size_t mp_device_get_num_entities(const MPDevice *device); diff --git a/io_pipeline.c b/io_pipeline.c index ac0ade9..fee30cc 100644 --- a/io_pipeline.c +++ b/io_pipeline.c @@ -116,7 +116,7 @@ static void setup_camera(MPDeviceList **device_list, const struct mp_camera_conf exit(EXIT_FAILURE); } - const struct media_v2_entity *entity = mp_device_find_entity(info->device, info->media_dev_name); + const struct media_v2_entity *entity = mp_device_find_entity_type(info->device, MEDIA_ENT_F_IO_V4L); if (!entity) { g_printerr("Could not find device video entity\n"); exit(EXIT_FAILURE);