This commit is contained in:
Kamil Trzcinski 2022-04-04 18:01:16 +02:00
parent 6b846188d2
commit e7947bf064
3 changed files with 15 additions and 1 deletions

View File

@ -157,6 +157,7 @@ int buffer_list_stream(buffer_list_t *buf_list, bool do_on)
enum v4l2_buf_type type = buf_list->type;
E_XIOCTL(buf_list, buf_list->device->fd, do_on ? VIDIOC_STREAMON : VIDIOC_STREAMOFF, &type, "Cannot set streaming state");
buf_list->streaming = do_on;
return 0;

View File

@ -17,6 +17,7 @@ typedef struct buffer_list_s {
unsigned fmt_width, fmt_height, fmt_format;
bool streaming;
int frames;
} buffer_list_t;

14
links.c
View File

@ -7,7 +7,7 @@
int _build_fds(link_t *all_links, struct pollfd *fds, link_t **links, buffer_list_t **buf_lists, int max_n)
{
int n;
int n = 0;
for (int i = 0; all_links[i].capture; i++) {
link_t *link = &all_links[i];
@ -18,6 +18,9 @@ int _build_fds(link_t *all_links, struct pollfd *fds, link_t **links, buffer_lis
if (!link->capture->capture_list->do_mmap) {
continue;
}
if (!link->capture->capture_list->streaming) {
continue;
}
struct pollfd fd = {link->capture->fd, POLLIN};
fds[n] = fd;
@ -34,6 +37,9 @@ int _build_fds(link_t *all_links, struct pollfd *fds, link_t **links, buffer_lis
if (output->output_list->do_mmap) {
continue;
}
if (!output->output_list->streaming) {
continue;
}
struct pollfd fd = {output->fd, POLLOUT};
fds[n] = fd;
@ -92,6 +98,12 @@ int links_stream(link_t *all_links, bool do_stream)
if (device_stream(all_links[i].capture, true) < 0) {
E_LOG_ERROR(all_links[i].capture, "Failed to start streaming");
}
for (int j = 0; all_links[i].outputs[j]; j++) {
if (device_stream(all_links[i].outputs[j], true) < 0) {
E_LOG_ERROR(all_links[i].outputs[j], "Failed to start streaming");
}
}
}
return 0;