/* Bindings header for the extra components of this project. * * esp-idf-sys runs bindgen on this file and puts the result into * `esp_idf_sys::camera`. The camera headers are guarded so the build keeps working * even if the component is not enabled in a given sdkconfig. */ #pragma once #if defined(ESP_IDF_COMP_ESPRESSIF__ESP32_CAMERA_ENABLED) || __has_include("esp_camera.h") #include "esp_camera.h" #endif #include "cam_wrapper.h" /* Raw lwIP sockets, for the UDP video sender. * * esp-idf-svc has no UDP socket type, and its HTTP server is TCP-only, which is * exactly the transport that measured badly on this board: the sensor produces * ~22 fps at VGA, but a TCP MJPEG stream over the same WiFi link managed ~2 fps * while using less than 1% of the available bandwidth. The link was idle and the * frames were stuck behind TCP head-of-line blocking, waiting on a retransmit * timer. Sending the same JPEGs as independent datagrams removes that entirely. * * Including lwip's own header is all that is needed: it declares the socket calls * and the real `sockaddr_in`. Declaring them here instead would both duplicate the * declarations (a hard error) and produce an opaque struct that shadows the layout * bindgen generates from the real header. */ #include