From 520de162ee394274be15fa608cc37c3e64a69251 Mon Sep 17 00:00:00 2001 From: William Emfinger Date: Tue, 12 Aug 2025 13:25:37 -0500 Subject: [PATCH] Update to latest espp; free mdns memory when not needed; orient camera frame correctly --- dependencies.lock | 358 ++++++++++++++++++++++++++++++++++++++++++++++ main/main.cpp | 17 ++- 2 files changed, 373 insertions(+), 2 deletions(-) create mode 100644 dependencies.lock diff --git a/dependencies.lock b/dependencies.lock new file mode 100644 index 0000000..89d0b43 --- /dev/null +++ b/dependencies.lock @@ -0,0 +1,358 @@ +dependencies: + espp/adc: + component_hash: 27d5f5cf909b25d07ed24c88de6cd1201cd904d4af7dac6a11efe19a89bd99dd + dependencies: + - name: espp/base_component + registry_url: https://components.espressif.com + require: private + version: '>=1.0' + - name: espp/task + registry_url: https://components.espressif.com + require: private + version: '>=1.0' + - name: idf + require: private + version: '>=5.0' + source: + registry_url: https://components.espressif.com + type: service + version: 1.0.18 + espp/base_component: + component_hash: 635bfa884f4dcbabbcca3ae50c4a92ba4d4271b81004e26b13fc1647be7a450b + dependencies: + - name: espp/logger + registry_url: https://components.espressif.com + require: private + version: '>=1.0' + - name: idf + require: private + version: '>=5.0' + source: + registry_url: https://components.espressif.com + type: service + version: 1.0.18 + espp/base_peripheral: + component_hash: f1d0fc3623286d98648c9b91e00c312c6222a76eeaddfa23967d3284d6ec3cb6 + dependencies: + - name: espp/base_component + registry_url: https://components.espressif.com + require: private + version: '>=1.0' + - name: idf + require: private + version: '>=5.0' + source: + registry_url: https://components.espressif.com + type: service + version: 1.0.18 + espp/bm8563: + component_hash: 65d0532b92dc69c2aa6538e816ab99db10763598e1c59d993bd44d234d33cac5 + dependencies: + - name: espp/base_peripheral + registry_url: https://components.espressif.com + require: private + version: '>=1.0' + - name: espp/utils + registry_url: https://components.espressif.com + require: private + version: '>=1.0' + - name: idf + require: private + version: '>=5.0' + source: + registry_url: https://components.espressif.com + type: service + version: 1.0.18 + espp/cli: + component_hash: 5ec7838aa1740d49d43163487e272143adbeb7a616ff61dbbfcf287565d76d0b + dependencies: + - name: espp/logger + registry_url: https://components.espressif.com + require: private + version: '>=1.0' + - name: idf + require: private + version: '>=5.0' + source: + registry_url: https://components.espressif.com + type: service + version: 1.0.18 + espp/esp32-timer-cam: + component_hash: 1e85ce60b52a250c81c8dbb91d8d308d5deb527b9229cc13ff7b82f441242416 + dependencies: + - name: espp/adc + registry_url: https://components.espressif.com + require: private + version: '>=1.0' + - name: espp/base_component + registry_url: https://components.espressif.com + require: private + version: '>=1.0' + - name: espp/bm8563 + registry_url: https://components.espressif.com + require: private + version: '>=1.0' + - name: espp/i2c + registry_url: https://components.espressif.com + require: private + version: '>=1.0' + - name: espp/interrupt + registry_url: https://components.espressif.com + require: private + version: '>=1.0' + - name: espp/led + registry_url: https://components.espressif.com + require: private + version: '>=1.0' + - name: espp/math + registry_url: https://components.espressif.com + require: private + version: '>=1.0' + - name: espp/task + registry_url: https://components.espressif.com + require: private + version: '>=1.0' + - name: idf + require: private + version: '>=5.0' + source: + registry_url: https://components.espressif.com/ + type: service + version: 1.0.18 + espp/format: + component_hash: aebe0d55e833d61eb53313dcdd3ee9bd8f2e328d6db1ae3e01bca49b17db39c6 + dependencies: + - name: idf + require: private + version: '>=5.0' + source: + registry_url: https://components.espressif.com + type: service + version: 1.0.18 + espp/i2c: + component_hash: 0b746f8d5c4df78f4437427a39a75242b8f6302f5d43b790a24ab1733f50057d + dependencies: + - name: espp/base_component + registry_url: https://components.espressif.com + require: private + version: '>=1.0' + - name: espp/cli + registry_url: https://components.espressif.com + require: private + version: '>=1.0' + - name: espp/task + registry_url: https://components.espressif.com + require: private + version: '>=1.0' + - name: idf + require: private + version: '>=5.0' + source: + registry_url: https://components.espressif.com + type: service + version: 1.0.18 + espp/interrupt: + component_hash: 00207be0384cb68d79fc0b66d7264a63c967ca0509be459638590de3eb9dcd51 + dependencies: + - name: espp/base_component + registry_url: https://components.espressif.com + require: private + version: '>=1.0' + - name: espp/task + registry_url: https://components.espressif.com + require: private + version: '>=1.0' + - name: idf + require: private + version: '>=5.0' + source: + registry_url: https://components.espressif.com + type: service + version: 1.0.18 + espp/led: + component_hash: 7439dc35497547c352b0fe14bea4f37ca92cfd2df81ccfed0be545378a37d487 + dependencies: + - name: espp/base_component + registry_url: https://components.espressif.com + require: private + version: '>=1.0' + - name: espp/task + registry_url: https://components.espressif.com + require: private + version: '>=1.0' + - name: idf + require: private + version: '>=5.0' + source: + registry_url: https://components.espressif.com + type: service + version: 1.0.18 + espp/logger: + component_hash: d8d68bc881f613a4007f5cc18f11f4f270bb93d6f0adfaad80cc65593da03bd9 + dependencies: + - name: espp/format + registry_url: https://components.espressif.com + require: private + version: '>=1.0' + - name: idf + require: private + version: '>=5.0' + source: + registry_url: https://components.espressif.com + type: service + version: 1.0.18 + espp/math: + component_hash: 4d27b369dd40eef16bf5f8e9f0f4fb0281f8fe50cc88a1b840b1b134167a1f96 + dependencies: + - name: espp/format + registry_url: https://components.espressif.com + require: private + version: '>=1.0' + - name: idf + require: private + version: '>=5.0' + source: + registry_url: https://components.espressif.com + type: service + version: 1.0.18 + espp/monitor: + component_hash: a49ecc074a92683fcfda529300a06de3b7be9dec07775c4b690cf75ceaacb097 + dependencies: + - name: espp/base_component + registry_url: https://components.espressif.com + require: private + version: '>=1.0' + - name: espp/task + registry_url: https://components.espressif.com + require: private + version: '>=1.0' + - name: idf + require: private + version: '>=5.0' + source: + registry_url: https://components.espressif.com/ + type: service + version: 1.0.18 + espp/nvs: + component_hash: 4e7fa7cbdaf30ed7f31938070d5aa57f0e00b2f3c8c01cb47c78d5cb4f22dde6 + dependencies: + - name: espp/base_component + registry_url: https://components.espressif.com + require: private + version: '>=1.0' + - name: idf + require: private + version: '>=5.0' + source: + registry_url: https://components.espressif.com/ + type: service + version: 1.0.18 + espp/rtsp: + component_hash: 5bd62da21938c448603ca2b13c2b22509d00b4fc52aa3f12e93a595f41baaad4 + dependencies: + - name: espp/base_component + registry_url: https://components.espressif.com + require: private + version: '>=1.0' + - name: espp/socket + registry_url: https://components.espressif.com + require: private + version: '>=1.0' + - name: espp/task + registry_url: https://components.espressif.com + require: private + version: '>=1.0' + - name: idf + require: private + version: '>=5.0' + source: + registry_url: https://components.espressif.com/ + type: service + version: 1.0.18 + espp/socket: + component_hash: f02123d81ea8dd83dc93d89e5322f47c1c91e4f1179190ca8f215ada27f7cfd6 + dependencies: + - name: espp/base_component + registry_url: https://components.espressif.com + require: private + version: '>=1.0' + - name: espp/task + registry_url: https://components.espressif.com + require: private + version: '>=1.0' + - name: idf + require: private + version: '>=5.0' + source: + registry_url: https://components.espressif.com/ + type: service + version: 1.0.18 + espp/task: + component_hash: dd20f4dd144b4fb78ecaec896c0bc660a87eb8a8327d5051ee9852d7b685f1f7 + dependencies: + - name: espp/base_component + registry_url: https://components.espressif.com + require: private + version: '>=1.0' + - name: idf + require: private + version: '>=5.0' + source: + registry_url: https://components.espressif.com/ + type: service + version: 1.0.18 + espp/utils: + component_hash: 3a5e5327693f2f062ba6c4edd37fa920966b3831556c2f926dd0d882dc3020b8 + dependencies: + - name: idf + require: private + version: '>=5.0' + source: + registry_url: https://components.espressif.com + type: service + version: 1.0.18 + espp/wifi: + component_hash: 4c51c4a6916b11834eb9ea3e0fb752e1a738b65c7f4265fc741cb63337dcfd87 + dependencies: + - name: espp/base_component + registry_url: https://components.espressif.com + require: private + version: '>=1.0' + - name: espp/cli + registry_url: https://components.espressif.com + require: private + version: '>=1.0' + - name: idf + require: private + version: '>=5.0' + source: + registry_url: https://components.espressif.com/ + type: service + version: 1.0.18 + espressif/mdns: + component_hash: 3ec0af5f6bce310512e90f482388d21cc7c0e99668172d2f895356165fc6f7c5 + dependencies: + - name: idf + require: private + version: '>=5.0' + source: + registry_url: https://components.espressif.com/ + type: service + version: 1.8.2 + idf: + source: + type: idf + version: 5.4.1 +direct_dependencies: +- espp/esp32-timer-cam +- espp/monitor +- espp/nvs +- espp/rtsp +- espp/socket +- espp/task +- espp/wifi +- espressif/mdns +- idf +manifest_hash: 16aed063bc123c492341a183a55ed2138ec26f48fc99ba25380455c762a86ee9 +target: esp32 +version: 2.0.0 diff --git a/main/main.cpp b/main/main.cpp index 9f1bdf2..11753de 100644 --- a/main/main.cpp +++ b/main/main.cpp @@ -88,6 +88,8 @@ extern "C" void app_main(void) { camera_task.reset(); logger.info("Stopping RTSP server"); rtsp_server.reset(); + logger.info("Deiniting MDNS"); + mdns_free(); }, .on_got_ip = [](ip_event_got_ip_t *eventdata) { @@ -186,7 +188,17 @@ esp_err_t initialize_camera(void) { .grab_mode = CAMERA_GRAB_LATEST // CAMERA_GRAB_WHEN_EMPTY // . Sets when buffers should be filled }; - return esp_camera_init(&camera_config); + auto err = esp_camera_init(&camera_config); + if (err != ESP_OK) { + logger.error("Could not initialize camera: {} '{}'", err, esp_err_to_name(err)); + return err; + } + // set the mirror and flip - specific to the ESP32-TimerCam! + logger.info("Enabling camera vflip"); + sensor_t *s = esp_camera_sensor_get(); + s->set_vflip(s, true); + s->set_hmirror(s, false); + return ESP_OK; } void start_rtsp_server(std::string_view server_address, int server_port) { @@ -250,7 +262,8 @@ bool camera_task_fn(const std::mutex &m, const std::condition_variable &cv) { return false; } - espp::JpegFrame image(reinterpret_cast(_jpg_buf), _jpg_buf_len); + std::span jpg_buf(_jpg_buf, _jpg_buf_len); + espp::JpegFrame image(jpg_buf); std::lock_guard lock(server_mutex); rtsp_server->send_frame(image);