libmegapixels.h 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. #ifndef LIBMEGAPIXELS_HEADER
  2. #define LIBMEGAPIXELS_HEADER
  3. #include <stdint.h>
  4. #define EXPORT __attribute__((__visibility__("default")))
  5. EXPORT int
  6. libmegapixels_find_config(char *configfile);
  7. #define LIBMEGAPIXELS_CMD_LINK 1
  8. #define LIBMEGAPIXELS_CMD_MODE 2
  9. struct _lmp_cmd {
  10. int type;
  11. const char *entity_from;
  12. const char *entity_to;
  13. int pad_from;
  14. int pad_to;
  15. int width;
  16. int height;
  17. uint32_t mode;
  18. uint32_t entity_from_id;
  19. int pad_from_id;
  20. uint32_t entity_to_id;
  21. int pad_to_id;
  22. };
  23. typedef struct _lmp_cmd libmegapixels_cmd;
  24. struct _lmp_mode {
  25. int width;
  26. int height;
  27. int rate;
  28. int format;
  29. int rotation;
  30. double focal_length;
  31. double f_number;
  32. uint32_t v4l_pixfmt;
  33. uint32_t media_busfmt;
  34. int num_cmds;
  35. libmegapixels_cmd *cmds;
  36. };
  37. typedef struct _lmp_mode libmegapixels_mode;
  38. struct _lmp_camera {
  39. char *name;
  40. char *sensor_name;
  41. char *bridge_name;
  42. char *media_path;
  43. char *sensor_path;
  44. char *video_path;
  45. int media_fd;
  46. int sensor_fd;
  47. int video_fd;
  48. int num_modes;
  49. libmegapixels_mode *modes;
  50. };
  51. typedef struct _lmp_camera libmegapixels_camera;
  52. struct _lmp_device_config {
  53. char *path;
  54. char *make;
  55. char *model;
  56. int count;
  57. libmegapixels_camera **cameras;
  58. };
  59. typedef struct _lmp_device_config libmegapixels_devconfig;
  60. EXPORT int
  61. libmegapixels_load_file(libmegapixels_devconfig **config, const char *file);
  62. EXPORT int
  63. libmegapixels_open(libmegapixels_camera *camera);
  64. EXPORT unsigned int
  65. libmegapixels_select_mode(libmegapixels_camera *camera, libmegapixels_mode *mode);
  66. #endif