diff --git a/device/device.c b/device/device.c index 2c7f0aa..89dbb9c 100644 --- a/device/device.c +++ b/device/device.c @@ -309,3 +309,28 @@ void device_set_option_list(device_t *dev, const char *option_list) free(start); } + +int device_output_enqueued(device_t *dev) +{ + if (dev->output_list) + return buffer_list_count_enqueued(dev->output_list); + return 0; +} + +int device_capture_enqueued(device_t *dev, int *max) +{ + int min_val = 100; + int max_val = 0; + + for (int i = 0; i < dev->n_capture_list; i++) { + int count = buffer_list_count_enqueued(dev->capture_lists[i]); + min_val = MIN(min_val, count); + max_val = MAX(max_val, count); + } + + min_val = MIN(min_val, max_val); + if (max) { + *max = max_val; + } + return min_val; +} diff --git a/device/device.h b/device/device.h index 968db00..354d5dd 100644 --- a/device/device.h +++ b/device/device.h @@ -75,6 +75,9 @@ int device_set_rotation(device_t *dev, bool vflip, bool hflip); int device_set_option_string(device_t *dev, const char *option, const char *value); void device_set_option_list(device_t *dev, const char *option_list); +int device_output_enqueued(device_t *dev); +int device_capture_enqueued(device_t *dev, int *max); + device_t *device_v4l2_open(const char *name, const char *path); device_t *device_libcamera_open(const char *name, const char *path); device_t *device_dummy_open(const char *name, const char *path);