| 194 | } |
| 195 | |
| 196 | void CameraFeedLinux::_read_frame() { |
| 197 | struct v4l2_buffer buffer; |
| 198 | memset(&buffer, 0, sizeof(buffer)); |
| 199 | buffer.type = V4L2_BUF_TYPE_VIDEO_CAPTURE; |
| 200 | buffer.memory = V4L2_MEMORY_MMAP; |
| 201 | |
| 202 | if (ioctl(file_descriptor, VIDIOC_DQBUF, &buffer) == -1) { |
| 203 | if (errno != EAGAIN) { |
| 204 | print_error(vformat("ioctl(VIDIOC_DQBUF) error: %d.", errno)); |
| 205 | exit_flag.set(); |
| 206 | } |
| 207 | return; |
| 208 | } |
| 209 | |
| 210 | buffer_decoder->decode(buffers[buffer.index]); |
| 211 | |
| 212 | if (ioctl(file_descriptor, VIDIOC_QBUF, &buffer) == -1) { |
| 213 | print_error(vformat("ioctl(VIDIOC_QBUF) error: %d.", errno)); |
| 214 | } |
| 215 | } |
| 216 | |
| 217 | void CameraFeedLinux::_stop_capturing() { |
| 218 | enum v4l2_buf_type type; |
nothing calls this directly
no test coverage detected