camera-streamer/device/camera/camera_links.c
2022-04-12 00:33:24 +02:00

39 lines
991 B
C

#include "camera.h"
#include "device/buffer.h"
#include "device/buffer_list.h"
#include "device/device.h"
#include "device/links.h"
#include "opts/log.h"
#include "opts/fourcc.h"
#include "device/buffer_list.h"
#include "http/http.h"
link_t *camera_ensure_capture(camera_t *camera, buffer_list_t *capture)
{
for (int i = 0; i < camera->nlinks; i++) {
if (camera->links[i].source == capture) {
return &camera->links[i];
}
}
link_t *link = &camera->links[camera->nlinks++];
link->source = capture;
return link;
}
void camera_capture_add_output(camera_t *camera, buffer_list_t *capture, buffer_list_t *output)
{
link_t *link = camera_ensure_capture(camera, capture);
int nsinks;
for (nsinks = 0; link->sinks[nsinks]; nsinks++);
link->sinks[nsinks] = output;
}
void camera_capture_set_callbacks(camera_t *camera, buffer_list_t *capture, link_callbacks_t callbacks)
{
link_t *link = camera_ensure_capture(camera, capture);
link->callbacks = callbacks;
}