device.h 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. #pragma once
  2. #include <linux/media.h>
  3. #include <stdbool.h>
  4. #include <stddef.h>
  5. #include <stdint.h>
  6. bool mp_find_device_path(struct media_v2_intf_devnode devnode, char *path,
  7. int length);
  8. typedef struct _MPDevice MPDevice;
  9. MPDevice *mp_device_find(const char *driver_name);
  10. MPDevice *mp_device_open(const char *path);
  11. MPDevice *mp_device_new(int fd);
  12. void mp_device_close(MPDevice *device);
  13. bool mp_device_setup_link(MPDevice *device, uint32_t source_pad_id,
  14. uint32_t sink_pad_id, bool enabled);
  15. const struct media_device_info *mp_device_get_info(const MPDevice *device);
  16. const struct media_v2_entity *mp_device_find_entity(const MPDevice *device,
  17. const char *driver_name);
  18. const struct media_v2_entity *mp_device_find_entity_type(const MPDevice *device,
  19. const uint32_t type);
  20. const struct media_v2_entity *mp_device_get_entity(const MPDevice *device,
  21. uint32_t id);
  22. const struct media_v2_entity *mp_device_get_entities(const MPDevice *device);
  23. size_t mp_device_get_num_entities(const MPDevice *device);
  24. const struct media_v2_interface *
  25. mp_device_find_entity_interface(const MPDevice *device, uint32_t entity_id);
  26. const struct media_v2_interface *mp_device_get_interface(const MPDevice *device,
  27. uint32_t id);
  28. const struct media_v2_interface *mp_device_get_interfaces(const MPDevice *device);
  29. size_t mp_device_get_num_interfaces(const MPDevice *device);
  30. const struct media_v2_pad *mp_device_get_pad_from_entity(const MPDevice *device,
  31. uint32_t entity_id);
  32. const struct media_v2_pad *mp_device_get_pad(const MPDevice *device, uint32_t id);
  33. const struct media_v2_pad *mp_device_get_pads(const MPDevice *device);
  34. size_t mp_device_get_num_pads(const MPDevice *device);
  35. const struct media_v2_link *mp_device_find_entity_link(const MPDevice *device,
  36. uint32_t entity_id);
  37. const struct media_v2_link *mp_device_find_link_from(const MPDevice *device,
  38. uint32_t source);
  39. const struct media_v2_link *mp_device_find_link_to(const MPDevice *device,
  40. uint32_t sink);
  41. const struct media_v2_link *
  42. mp_device_find_link_between(const MPDevice *device, uint32_t source, uint32_t sink);
  43. const struct media_v2_link *mp_device_get_link(const MPDevice *device, uint32_t id);
  44. const struct media_v2_link *mp_device_get_links(const MPDevice *device);
  45. size_t mp_device_get_num_links(const MPDevice *device);
  46. typedef struct _MPDeviceList MPDeviceList;
  47. MPDeviceList *mp_device_list_new();
  48. void mp_device_list_free(MPDeviceList *device_list);
  49. MPDevice *mp_device_list_find_remove(MPDeviceList **device_list,
  50. const char *driver_name);
  51. MPDevice *mp_device_list_remove(MPDeviceList **device_list);
  52. MPDevice *mp_device_list_get(const MPDeviceList *device_list);
  53. MPDeviceList *mp_device_list_next(const MPDeviceList *device_list);