diff --git a/.gitignore b/.gitignore index 0256a9906006..bb2729b8e3d9 100644 --- a/.gitignore +++ b/.gitignore @@ -20,3 +20,4 @@ perf.data* # Screenshots from samples etc. screenshot*.png +venv* diff --git a/CHANGELOG.md b/CHANGELOG.md index 03672a64304b..0c3eac261d46 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,12 +1,20 @@ # Depthai Viewer changelog +## 0.1.5 + +- UI improvements +- Added support for OAK-D-SR POE (tof) +- Fixed some bugs: + - https://discuss.luxonis.com/d/2425-depthai-viewer-not-working-with-ffc-4p-based-setup/3 + - Blob download failure in dependency installer + ## 0.1.4 + - Added depdendency installer. - Added auto device selection on startup: - On startup: If a preferred device is set, try to connect to that device. Else (if preferred device not found or not set) connect to the first available device. - Whenever a device is selected it is designated as the preferred device. A preferred device is persisted between runs of depthai-viewer. - ## 0.1.4-alpha.0 - Added dependency installer. diff --git a/Cargo.lock b/Cargo.lock index eb6c77dd7421..e882ad011f1a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4,9 +4,9 @@ version = 3 [[package]] name = "ab_glyph" -version = "0.2.21" +version = "0.2.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5110f1c78cf582855d895ecd0746b653db010cec6d9f5575293f27934d980a39" +checksum = "80179d7dd5d7e8c285d67c4a1e652972a92de7475beddfb92028c76463b13225" dependencies = [ "ab_glyph_rasterizer", "owned_ttf_parser", @@ -30,9 +30,9 @@ dependencies = [ [[package]] name = "addr2line" -version = "0.20.0" +version = "0.21.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4fa78e18c64fce05e902adecd7a5eed15a5e0a3439f7b0e169f0252214865e3" +checksum = "8a30b2e23b9e17a9f90641c7ab1549cd9b44f296d3ccbf309d2863cfe398a0cb" dependencies = [ "gimli", ] @@ -45,20 +45,9 @@ checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" [[package]] name = "ahash" -version = "0.7.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fcb51a0695d8f838b1ee009b3fbf66bda078cd64590202a864a8f3e8c4315c47" -dependencies = [ - "getrandom", - "once_cell", - "version_check", -] - -[[package]] -name = "ahash" -version = "0.8.3" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c99f64d1e06488f620f932677e24bc6e2897582980441ae90a671415bd7ec2f" +checksum = "91429305e9f0a25f6205c5b8e0d2db09e0708a7a6df0f42212bb56c32c8ac97a" dependencies = [ "cfg-if", "const-random", @@ -66,22 +55,29 @@ dependencies = [ "once_cell", "serde", "version_check", + "zerocopy", ] [[package]] name = "aho-corasick" -version = "1.0.2" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43f6cb1bf222025340178f382c426f13757b2960e89779dfcb319c32542a5a41" +checksum = "b2969dcb958b36655471fc61f7e416fa76033bdd4bfed0678d8fee1e2d07a1f0" dependencies = [ "memchr", ] +[[package]] +name = "allocator-api2" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0942ffc6dcaadf03badf6e6a2d0228460359d5e34b57ccdc720b7382dfbd5ec5" + [[package]] name = "android-activity" -version = "0.4.2" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "40bc1575e653f158cbdc6ebcd917b9564e66321c5325c232c3591269c257be69" +checksum = "64529721f27c2314ced0890ce45e469574a73e5e6fdd6e9da1860eb29285f5e0" dependencies = [ "android-properties", "bitflags 1.3.2", @@ -124,65 +120,64 @@ checksum = "4b46cbb362ab8752921c97e041f5e366ee6297bd428a31275b9fcf1e380f7299" [[package]] name = "anstream" -version = "0.3.2" +version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ca84f3628370c59db74ee214b3263d58f9aadd9b4fe7e711fd87dc452b7f163" +checksum = "2ab91ebe16eb252986481c5b62f6098f3b698a45e34b5b98200cf20dd2484a44" dependencies = [ "anstyle", "anstyle-parse", "anstyle-query", "anstyle-wincon", "colorchoice", - "is-terminal", "utf8parse", ] [[package]] name = "anstyle" -version = "1.0.1" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a30da5c5f2d5e72842e00bcb57657162cdabef0931f40e2deb9b4140440cecd" +checksum = "7079075b41f533b8c61d2a4d073c4676e1f8b249ff94a393b0595db304e0dd87" [[package]] name = "anstyle-parse" -version = "0.2.1" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "938874ff5980b03a87c5524b3ae5b59cf99b1d6bc836848df7bc5ada9643c333" +checksum = "c75ac65da39e5fe5ab759307499ddad880d724eed2f6ce5b5e8a26f4f387928c" dependencies = [ "utf8parse", ] [[package]] name = "anstyle-query" -version = "1.0.0" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ca11d4be1bab0c8bc8734a9aa7bf4ee8316d462a08c6ac5052f888fef5b494b" +checksum = "a3a318f1f38d2418400f8209655bfd825785afd25aa30bb7ba6cc792e4596748" dependencies = [ - "windows-sys 0.48.0", + "windows-sys 0.52.0", ] [[package]] name = "anstyle-wincon" -version = "1.0.1" +version = "3.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "180abfa45703aebe0093f79badacc01b8fd4ea2e35118747e5811127f926e188" +checksum = "1cd54b81ec8d6180e24654d0b371ad22fc3dd083b6ff8ba325b72e00c87660a7" dependencies = [ "anstyle", - "windows-sys 0.48.0", + "windows-sys 0.52.0", ] [[package]] name = "anyhow" -version = "1.0.72" +version = "1.0.75" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b13c32d80ecc7ab747b80c3784bce54ee8a7a0cc4fbda9bf4cda2cf6fe90854" +checksum = "a4668cab20f66d8d020e1fbc0ebe47217433c1b6c8f2040faf858554e394ace6" [[package]] name = "api_demo" -version = "0.1.4" +version = "0.1.5" dependencies = [ "anyhow", - "clap 4.3.19", + "clap 4.4.11", "depthai-viewer", "glam", "itertools", @@ -193,9 +188,9 @@ dependencies = [ [[package]] name = "arboard" -version = "3.2.0" +version = "3.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6041616acea41d67c4a984709ddab1587fd0b10efe5cc563fee954d2f011854" +checksum = "aafb29b107435aa276664c1db8954ac27a6e105cdad3c88287a199eb0e313c08" dependencies = [ "clipboard-win", "core-graphics", @@ -204,7 +199,6 @@ dependencies = [ "objc", "objc-foundation", "objc_id", - "once_cell", "parking_lot 0.12.1", "thiserror", "winapi", @@ -251,7 +245,7 @@ version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7a4c5b03335bc1cb0fd9f5297f8fd3bbfd6fb04f3cb0bc7d6c91b7128cb8336a" dependencies = [ - "ahash 0.8.3", + "ahash", "arrow-format", "bytemuck", "chrono", @@ -327,7 +321,7 @@ version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7c48ccdbf6ca6b121e0f586cbc0e73ae440e56c67c30fa0873b4e110d9c26d2b" dependencies = [ - "event-listener", + "event-listener 2.5.3", "futures-core", ] @@ -338,21 +332,34 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "81953c529336010edd6d8e358f886d9581267795c61b19475b71314bffa46d35" dependencies = [ "concurrent-queue", - "event-listener", + "event-listener 2.5.3", + "futures-core", +] + +[[package]] +name = "async-channel" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ca33f4bc4ed1babef42cad36cc1f51fa88be00420404e5b1e80ab1b18f7678c" +dependencies = [ + "concurrent-queue", + "event-listener 4.0.0", + "event-listener-strategy", "futures-core", + "pin-project-lite", ] [[package]] name = "async-executor" -version = "1.5.1" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6fa3dc5f2a8564f07759c008b9109dc0d39de92a88d5588b8a5036d286383afb" +checksum = "17ae5ebefcc48e7452b4987947920dac9450be1110cadf34d1b8c116bdbaf97c" dependencies = [ - "async-lock", + "async-lock 3.2.0", "async-task", "concurrent-queue", - "fastrand 1.9.0", - "futures-lite", + "fastrand 2.0.1", + "futures-lite 2.1.0", "slab", ] @@ -362,24 +369,24 @@ version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "279cf904654eeebfa37ac9bb1598880884924aab82e290aa65c9e77a0e142e06" dependencies = [ - "async-lock", + "async-lock 2.8.0", "autocfg", "blocking", - "futures-lite", + "futures-lite 1.13.0", ] [[package]] name = "async-global-executor" -version = "2.3.1" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1b6f5d7df27bd294849f8eec66ecfc63d11814df7a4f5d74168a2394467b776" +checksum = "9b4353121d5644cdf2beb5726ab752e79a8db1ebb52031770ec47db31d245526" dependencies = [ - "async-channel", + "async-channel 2.1.1", "async-executor", - "async-io", - "async-lock", + "async-io 2.2.1", + "async-lock 3.2.0", "blocking", - "futures-lite", + "futures-lite 2.1.0", "once_cell", ] @@ -389,56 +396,103 @@ version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0fc5b45d93ef0529756f812ca52e44c221b35341892d3dcc34132ac02f3dd2af" dependencies = [ - "async-lock", + "async-lock 2.8.0", "autocfg", "cfg-if", "concurrent-queue", - "futures-lite", + "futures-lite 1.13.0", "log", "parking", - "polling", - "rustix 0.37.23", + "polling 2.8.0", + "rustix 0.37.27", "slab", - "socket2", + "socket2 0.4.10", "waker-fn", ] +[[package]] +name = "async-io" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6d3b15875ba253d1110c740755e246537483f152fa334f91abd7fe84c88b3ff" +dependencies = [ + "async-lock 3.2.0", + "cfg-if", + "concurrent-queue", + "futures-io", + "futures-lite 2.1.0", + "parking", + "polling 3.3.1", + "rustix 0.38.26", + "slab", + "tracing", + "windows-sys 0.52.0", +] + +[[package]] +name = "async-lock" +version = "2.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "287272293e9d8c41773cec55e365490fe034813a2f172f502d6ddcf75b2f582b" +dependencies = [ + "event-listener 2.5.3", +] + [[package]] name = "async-lock" -version = "2.7.0" +version = "3.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa24f727524730b077666307f2734b4a1a1c57acb79193127dcc8914d5242dd7" +checksum = "7125e42787d53db9dd54261812ef17e937c95a51e4d291373b670342fa44310c" dependencies = [ - "event-listener", + "event-listener 4.0.0", + "event-listener-strategy", + "pin-project-lite", ] [[package]] name = "async-process" -version = "1.7.0" +version = "1.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a9d28b1d97e08915212e2e45310d47854eafa69600756fc735fb788f75199c9" +checksum = "ea6438ba0a08d81529c69b36700fa2f95837bfe3e776ab39cde9c14d9149da88" dependencies = [ - "async-io", - "async-lock", - "autocfg", + "async-io 1.13.0", + "async-lock 2.8.0", + "async-signal", "blocking", "cfg-if", - "event-listener", - "futures-lite", - "rustix 0.37.23", - "signal-hook", + "event-listener 3.1.0", + "futures-lite 1.13.0", + "rustix 0.38.26", "windows-sys 0.48.0", ] [[package]] name = "async-recursion" -version = "1.0.4" +version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e97ce7de6cf12de5d7226c73f5ba9811622f4db3a5b91b55c53e987e5f91cba" +checksum = "5fd55a5ba1179988837d24ab4c7cc8ed6efdeff578ede0416b4225a5fca35bd0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.27", + "syn 2.0.39", +] + +[[package]] +name = "async-signal" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e47d90f65a225c4527103a8d747001fc56e375203592b25ad103e1ca13124c5" +dependencies = [ + "async-io 2.2.1", + "async-lock 2.8.0", + "atomic-waker", + "cfg-if", + "futures-core", + "futures-io", + "rustix 0.38.26", + "signal-hook-registry", + "slab", + "windows-sys 0.48.0", ] [[package]] @@ -447,15 +501,15 @@ version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "62565bb4402e926b29953c785397c6dc0391b7b446e45008b0049eb43cec6f5d" dependencies = [ - "async-channel", + "async-channel 1.9.0", "async-global-executor", - "async-io", - "async-lock", + "async-io 1.13.0", + "async-lock 2.8.0", "crossbeam-utils", "futures-channel", "futures-core", "futures-io", - "futures-lite", + "futures-lite 1.13.0", "gloo-timers", "kv-log-macro", "log", @@ -486,37 +540,37 @@ checksum = "16e62a023e7c117e27523144c5d2459f4397fcc3cab0085af8e2224f643a0193" dependencies = [ "proc-macro2", "quote", - "syn 2.0.27", + "syn 2.0.39", ] [[package]] name = "async-task" -version = "4.4.0" +version = "4.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ecc7ab41815b3c653ccd2978ec3255c81349336702dfdf62ee6f7069b12a3aae" +checksum = "b4eb2cdb97421e01129ccb49169d8279ed21e829929144f4a22a6e54ac549ca1" [[package]] name = "async-trait" -version = "0.1.72" +version = "0.1.74" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc6dde6e4ed435a4c1ee4e73592f5ba9da2151af10076cc04858746af9352d09" +checksum = "a66537f1bb974b254c98ed142ff995236e81b9d0fe4db0575f46612cb15eb0f9" dependencies = [ "proc-macro2", "quote", - "syn 2.0.27", + "syn 2.0.39", ] [[package]] name = "atomic-waker" -version = "1.1.1" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1181e1e0d1fce796a03db1ae795d67167da795f9cf4a39c37589e85ef57f26d3" +checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" [[package]] name = "atomic_refcell" -version = "0.1.10" +version = "0.1.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79d6dc922a2792b006573f60b2648076355daeae5ce9cb59507e5908c9625d31" +checksum = "41e67cd8309bbd06cd603a9e693a784ac2e5d1e955f11286e355089fcab3047c" [[package]] name = "atty" @@ -543,9 +597,9 @@ checksum = "7b7e4c2464d97fe331d41de9d5db0def0a96f4d823b8b32a2efd503578988973" [[package]] name = "backtrace" -version = "0.3.68" +version = "0.3.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4319208da049c43661739c5fade2ba182f09d1dc2299b32298d3a31692b17e12" +checksum = "2089b7e3f35b9dd2d0ed921ead4f6d318c27680d4a5bd167b3ee120edb105837" dependencies = [ "addr2line", "cc", @@ -574,9 +628,9 @@ checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" [[package]] name = "base64" -version = "0.21.2" +version = "0.21.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "604178f6c5c21f02dc555784810edfb88d34ac2c73b2eae109655649ee73ce3d" +checksum = "35636a1494ede3b646cc98f74f8e62c773a38a659ebc777a2cf26b9b74171df9" [[package]] name = "bincode" @@ -610,9 +664,12 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.3.3" +version = "2.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "630be753d4e58660abd17930c71b647fe46c27ea6b63cc59e1e3851406972e42" +checksum = "327762f6e5a765692301e5bb513e0d9fef63be86bbc14528052b1cd3e6f03e07" +dependencies = [ + "serde", +] [[package]] name = "block" @@ -650,56 +707,57 @@ dependencies = [ [[package]] name = "blocking" -version = "1.3.1" +version = "1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77231a1c8f801696fc0123ec6150ce92cffb8e164a02afb9c8ddee0e9b65ad65" +checksum = "6a37913e8dc4ddcc604f0c6d3bf2887c995153af3611de9e23c352b44c1b9118" dependencies = [ - "async-channel", - "async-lock", + "async-channel 2.1.1", + "async-lock 3.2.0", "async-task", - "atomic-waker", - "fastrand 1.9.0", - "futures-lite", - "log", + "fastrand 2.0.1", + "futures-io", + "futures-lite 2.1.0", + "piper", + "tracing", ] [[package]] name = "bumpalo" -version = "3.13.0" +version = "3.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3e2c3daef883ecc1b5d58c15adae93470a91d425f3532ba1695849656af3fc1" +checksum = "7f30e7476521f6f8af1a1c4c0b8cc94f0bee37d91763d0ca2665f299b6cd8aec" [[package]] name = "bytemuck" -version = "1.13.1" +version = "1.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17febce684fd15d89027105661fec94afb475cb995fbc59d2865198446ba2eea" +checksum = "374d28ec25809ee0e23827c2ab573d729e293f281dfe393500e7ad618baa61c6" dependencies = [ "bytemuck_derive", ] [[package]] name = "bytemuck_derive" -version = "1.4.1" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fdde5c9cd29ebd706ce1b35600920a33550e402fc998a2e53ad3b42c3c47a192" +checksum = "965ab7eb5f8f97d2a083c799f3a1b994fc397b2fe2da5d1da1626ce15a39f2b1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.27", + "syn 2.0.39", ] [[package]] name = "byteorder" -version = "1.4.3" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" +checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" -version = "1.4.0" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89b2fd2a0dcf38d7971e2194b6b6eebab45ae01067456a7fd93d5547a61b70be" +checksum = "a2bd12c1caf447e69cd4528f47f94d203fd2582878ecb9e9465484c4148a8223" [[package]] name = "calloop" @@ -726,9 +784,9 @@ dependencies = [ [[package]] name = "cargo-platform" -version = "0.1.3" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2cfa25e60aea747ec7e1124f238816749faa93759c6ff5b31f1ccdda137f4479" +checksum = "e34637b3140142bdf929fb439e8aa4ebad7651ebf7b1080b3930aa16ac1459ff" dependencies = [ "serde", ] @@ -767,11 +825,12 @@ checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5" [[package]] name = "cc" -version = "1.0.79" +version = "1.0.83" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50d30906286121d95be3d479533b458f87493b30a4b5f79a607db8f5d11aa91f" +checksum = "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0" dependencies = [ "jobserver", + "libc", ] [[package]] @@ -794,17 +853,16 @@ checksum = "fd16c4719339c4530435d38e511904438d07cce7950afa3718a84ac36c10e89e" [[package]] name = "chrono" -version = "0.4.26" +version = "0.4.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec837a71355b28f6556dbd569b37b3f363091c0bd4b2e735674521b4c5fd9bc5" +checksum = "7f2c685bad3eb3d45a01354cedb7d5faa66194d1d58ba6e267a8de788f79db38" dependencies = [ "android-tzdata", "iana-time-zone", "js-sys", "num-traits", - "time 0.1.45", "wasm-bindgen", - "winapi", + "windows-targets 0.48.5", ] [[package]] @@ -848,37 +906,36 @@ dependencies = [ [[package]] name = "clap" -version = "4.3.19" +version = "4.4.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5fd304a20bff958a57f04c4e96a2e7594cc4490a0e809cbd48bb6437edaa452d" +checksum = "bfaff671f6b22ca62406885ece523383b9b64022e341e53e009a62ebc47a45f2" dependencies = [ "clap_builder", "clap_derive", - "once_cell", ] [[package]] name = "clap_builder" -version = "4.3.19" +version = "4.4.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01c6a3f08f1fe5662a35cfe393aec09c4df95f60ee93b7556505260f75eee9e1" +checksum = "a216b506622bb1d316cd51328dce24e07bdff4a6128a47c7e7fad11878d5adbb" dependencies = [ "anstream", "anstyle", - "clap_lex 0.5.0", + "clap_lex 0.6.0", "strsim", ] [[package]] name = "clap_derive" -version = "4.3.12" +version = "4.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54a9bb5758fc5dfe728d1019941681eccaf0cf8a4189b692a0ee2f2ecf90a050" +checksum = "cf9804afaaf59a91e75b022a30fb7229a7901f60c755489cc61c9b423b836442" dependencies = [ "heck 0.4.1", "proc-macro2", "quote", - "syn 2.0.27", + "syn 2.0.39", ] [[package]] @@ -892,9 +949,9 @@ dependencies = [ [[package]] name = "clap_lex" -version = "0.5.0" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2da6da31387c7e4ef160ffab6d5e7f00c42626fe39aea70a7b0f1773f7dd6c1b" +checksum = "702fc72eb24e5a1e48ce58027a675bc24edd52096d5397d4aea7c6dd9eca0bd1" [[package]] name = "clean-path" @@ -931,15 +988,14 @@ dependencies = [ [[package]] name = "cocoa-foundation" -version = "0.1.1" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "931d3837c286f56e3c58423ce4eba12d08db2374461a785c86f672b08b5650d6" +checksum = "8c6234cbb2e4c785b456c0644748b1ac416dd045799740356f8363dfe00c93f7" dependencies = [ "bitflags 1.3.2", "block", "core-foundation", "core-graphics-types", - "foreign-types", "libc", "objc", ] @@ -1007,9 +1063,9 @@ dependencies = [ [[package]] name = "concurrent-queue" -version = "2.2.0" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62ec6771ecfa0762d24683ee5a32ad78487a3d3afdc0fb8cae19d2c5deb50b7c" +checksum = "d16048cd947b08fa32c24458a22f5dc5e835264f689f4f5653210c69fd107363" dependencies = [ "crossbeam-utils", ] @@ -1038,31 +1094,29 @@ dependencies = [ [[package]] name = "const-random" -version = "0.1.15" +version = "0.1.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "368a7a772ead6ce7e1de82bfb04c485f3db8ec744f72925af5735e29a22cc18e" +checksum = "5aaf16c9c2c612020bcfd042e170f6e32de9b9d75adb5277cdbbd2e2c8c8299a" dependencies = [ "const-random-macro", - "proc-macro-hack", ] [[package]] name = "const-random-macro" -version = "0.1.15" +version = "0.1.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d7d6ab3c3a2282db210df5f02c4dab6e0a7057af0fb7ebd4070f30fe05c0ddb" +checksum = "f9d839f2a20b0aee515dc581a6172f2321f96cab76c1a38a4c584a194955390e" dependencies = [ "getrandom", "once_cell", - "proc-macro-hack", "tiny-keccak", ] [[package]] name = "core-foundation" -version = "0.9.3" +version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "194a7a9e6de53fa55116934067c844d9d749312f75c6f6d0980e8c252f8c2146" +checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" dependencies = [ "core-foundation-sys", "libc", @@ -1070,9 +1124,9 @@ dependencies = [ [[package]] name = "core-foundation-sys" -version = "0.8.4" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e496a50fda8aacccc86d7529e2c1e0892dbd0f898a6b5645b5561b89c3210efa" +checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f" [[package]] name = "core-graphics" @@ -1089,9 +1143,9 @@ dependencies = [ [[package]] name = "core-graphics-types" -version = "0.1.2" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2bb142d41022986c1d8ff29103a1411c8a3dfad3552f87a4f8dc50d61d4f4e33" +checksum = "45390e6114f68f718cc7a830514a96f903cccd70d02a8f6d9f643ac4ba45afaf" dependencies = [ "bitflags 1.3.2", "core-foundation", @@ -1100,9 +1154,9 @@ dependencies = [ [[package]] name = "cpufeatures" -version = "0.2.9" +version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a17b76ff3a4162b0b27f354a0c87015ddad39d35f9c0c36607a3bdd175dde1f1" +checksum = "ce420fe07aecd3e67c5f910618fe65e94158f6dcc0adf44e00d69ce2bdfe0fd0" dependencies = [ "libc", ] @@ -1262,11 +1316,11 @@ dependencies = [ [[package]] name = "ctrlc" -version = "3.4.0" +version = "3.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a011bbe2c35ce9c1f143b7af6f94f29a167beb4cd1d29e6740ce836f723120e" +checksum = "82e95fbd621905b854affdc67943b043a0fbb6ed7385fd5a25650d19a8a6cfdf" dependencies = [ - "nix 0.26.2", + "nix 0.27.1", "windows-sys 0.48.0", ] @@ -1300,7 +1354,7 @@ dependencies = [ "ident_case", "proc-macro2", "quote", - "syn 2.0.27", + "syn 2.0.39", ] [[package]] @@ -1311,7 +1365,7 @@ checksum = "836a9bbc7ad63342d6d6e7b815ccab164bc77a2d95d84bc3117a8c0d5c98e2d5" dependencies = [ "darling_core", "quote", - "syn 2.0.27", + "syn 2.0.39", ] [[package]] @@ -1336,11 +1390,11 @@ dependencies = [ [[package]] name = "depthai-viewer" -version = "0.1.4" +version = "0.1.5" dependencies = [ "anyhow", "backtrace", - "clap 4.3.19", + "clap 4.4.11", "ctrlc", "document-features", "itertools", @@ -1366,6 +1420,16 @@ dependencies = [ "webbrowser", ] +[[package]] +name = "deranged" +version = "0.3.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8eb30d70a07a3b04884d2677f06bec33509dc67ca60d92949e5535352d3191dc" +dependencies = [ + "powerfmt", + "serde", +] + [[package]] name = "derivative" version = "2.2.0" @@ -1426,12 +1490,12 @@ version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "330c60081dcc4c72131f8eb70510f1ac07223e5d4163db481a04a0befcffa412" dependencies = [ - "libloading 0.8.0", + "libloading 0.8.1", ] [[package]] name = "dna" -version = "0.1.4" +version = "0.1.5" dependencies = [ "depthai-viewer", "itertools", @@ -1455,9 +1519,9 @@ checksum = "9ea835d29036a4087793836fa931b08837ad5e957da9e23886b29586fb9b6650" [[package]] name = "dyn-clone" -version = "1.0.12" +version = "1.0.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "304e6508efa593091e97a9abbc10f90aa7ca635b6d2784feff3c89d41dd12272" +checksum = "545b22097d44f8a9581187cdf93de7a71e4722bf51200cfaba810865b49a495d" [[package]] name = "ecolor" @@ -1505,7 +1569,7 @@ version = "0.21.0" source = "git+https://github.com/emilk/egui?rev=f76eefb98d23cbf71989255aafe75a07d343f6ed#f76eefb98d23cbf71989255aafe75a07d343f6ed" dependencies = [ "accesskit", - "ahash 0.8.3", + "ahash", "epaint", "log", "nohash-hasher", @@ -1617,18 +1681,18 @@ checksum = "a357d28ed41a50f9c765dbfe56cbc04a64e53e5fc58ba79fbc34c10ef3df831f" [[package]] name = "encoding_rs" -version = "0.8.32" +version = "0.8.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "071a31f4ee85403370b58aca746f01041ede6f0da2730960ad001edc2b71b394" +checksum = "7268b386296a025e474d5140678f75d6de9493ae55a5d709eeb9dd08149945e1" dependencies = [ "cfg-if", ] [[package]] name = "enumflags2" -version = "0.7.7" +version = "0.7.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c041f5090df68b32bcd905365fd51769c8b9d553fe87fde0b683534f10c01bd2" +checksum = "5998b4f30320c9d93aed72f63af821bfdac50465b75428fce77b48ec482c3939" dependencies = [ "enumflags2_derive", "serde", @@ -1636,31 +1700,31 @@ dependencies = [ [[package]] name = "enumflags2_derive" -version = "0.7.7" +version = "0.7.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e9a1f9f7d83e59740248a6e14ecf93929ade55027844dfcea78beafccc15745" +checksum = "f95e2801cd355d4a1a3e3953ce6ee5ae9603a5c833455343a8bfe3f44d418246" dependencies = [ "proc-macro2", "quote", - "syn 2.0.27", + "syn 2.0.39", ] [[package]] name = "enumn" -version = "0.1.11" +version = "0.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b893c4eb2dc092c811165f84dc7447fae16fb66521717968c34c509b39b1a5c5" +checksum = "c2ad8cef1d801a4686bfd8919f0b30eac4c8e48968c437a6405ded4fb5272d2b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.27", + "syn 2.0.39", ] [[package]] name = "enumset" -version = "1.1.2" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e875f1719c16de097dee81ed675e2d9bb63096823ed3f0ca827b7dea3028bbbb" +checksum = "226c0da7462c13fb57e5cc9e0dc8f0635e7d27f276a3a7fd30054647f669007d" dependencies = [ "enumset_derive", ] @@ -1674,14 +1738,14 @@ dependencies = [ "darling", "proc-macro2", "quote", - "syn 2.0.27", + "syn 2.0.39", ] [[package]] name = "env_logger" -version = "0.10.0" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85cdab6a89accf66733ad5a1693a4dcced6aeff64602b634530dd73c1f3ee9f0" +checksum = "95b3f3e67048839cb0d0781f445682a35113da7121f7c949db0e2be96a4fbece" dependencies = [ "humantime", "is-terminal", @@ -1696,7 +1760,7 @@ version = "0.21.0" source = "git+https://github.com/emilk/egui?rev=f76eefb98d23cbf71989255aafe75a07d343f6ed#f76eefb98d23cbf71989255aafe75a07d343f6ed" dependencies = [ "ab_glyph", - "ahash 0.8.3", + "ahash", "atomic_refcell", "bytemuck", "ecolor", @@ -1729,23 +1793,12 @@ dependencies = [ [[package]] name = "errno" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4bcfec3a70f97c962c307b2d2c56e358cf1d00b558d74262b5f929ee8cc7e73a" -dependencies = [ - "errno-dragonfly", - "libc", - "windows-sys 0.48.0", -] - -[[package]] -name = "errno-dragonfly" -version = "0.1.2" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa68f1b12764fab894d2755d2518754e71b4fd80ecfb822714a1206c2aab39bf" +checksum = "a258e46cdc063eb8519c00b9fc845fc47bcfca4130e2f08e88665ceda8474245" dependencies = [ - "cc", "libc", + "windows-sys 0.52.0", ] [[package]] @@ -1760,9 +1813,9 @@ dependencies = [ [[package]] name = "ethnum" -version = "1.3.2" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0198b9d0078e0f30dedc7acbb21c974e838fc8fae3ee170128658a98cb2c1c04" +checksum = "b90ca2580b73ab6a1f724b76ca11ab632df820fd6040c336200d2c1df7b3c82c" [[package]] name = "event-listener" @@ -1770,6 +1823,38 @@ version = "2.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0" +[[package]] +name = "event-listener" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d93877bcde0eb80ca09131a08d23f0a5c18a620b01db137dba666d18cd9b30c2" +dependencies = [ + "concurrent-queue", + "parking", + "pin-project-lite", +] + +[[package]] +name = "event-listener" +version = "4.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "770d968249b5d99410d61f5bf89057f3199a077a04d087092f58e7d10692baae" +dependencies = [ + "concurrent-queue", + "parking", + "pin-project-lite", +] + +[[package]] +name = "event-listener-strategy" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "958e4d70b6d5e81971bebec42271ec641e7ff4e170a6fa605f2b8a8b65cb97d3" +dependencies = [ + "event-listener 4.0.0", + "pin-project-lite", +] + [[package]] name = "ewebsock" version = "0.2.0" @@ -1800,29 +1885,29 @@ dependencies = [ [[package]] name = "fastrand" -version = "2.0.0" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6999dc1837253364c2ebb0704ba97994bd874e8f195d665c50b7548f6ea92764" +checksum = "25cbce373ec4653f1a01a31e8a5e5ec0c622dc27ff9c4e6606eefef5cbbed4a5" [[package]] name = "fdeflate" -version = "0.3.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d329bdeac514ee06249dabc27877490f17f5d371ec693360768b838e19f3ae10" +checksum = "64d6dafc854908ff5da46ff3f8f473c6984119a2876a383a860246dd7841a868" dependencies = [ "simd-adler32", ] [[package]] name = "filetime" -version = "0.2.21" +version = "0.2.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5cbc844cecaee9d4443931972e1289c8ff485cb4cc2767cb03ca139ed6885153" +checksum = "1ee447700ac8aa0b2f2bd7bc4462ad686ba06baa6727ac149a2d6277f0d240fd" dependencies = [ "cfg-if", "libc", - "redox_syscall 0.2.16", - "windows-sys 0.48.0", + "redox_syscall 0.4.1", + "windows-sys 0.52.0", ] [[package]] @@ -1839,9 +1924,9 @@ dependencies = [ [[package]] name = "fixed" -version = "1.23.1" +version = "1.24.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79386fdcec5e0fde91b1a6a5bcd89677d1f9304f7f986b154a1b9109038854d9" +checksum = "02c69ce7e7c0f17aa18fdd9d0de39727adb9c6281f2ad12f57cbe54ae6e76e7d" dependencies = [ "az", "bytemuck", @@ -1858,9 +1943,9 @@ checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" [[package]] name = "flate2" -version = "1.0.26" +version = "1.0.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b9429470923de8e8cbd4d2dc513535400b4b3fef0319fb5c4e1f520a7bef743" +checksum = "46303f565772937ffe1d394a4fac6f411c6013172fadde9dcdb1e147a086940e" dependencies = [ "crc32fast", "miniz_oxide", @@ -1895,9 +1980,9 @@ checksum = "ee1b05cbd864bcaecbd3455d6d967862d446e4ebfc3c2e5e5b9841e53cba6673" [[package]] name = "form_urlencoded" -version = "1.2.0" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a62bc1cf6f830c2ec14a513a9fb124d0a213a629668a4186f329db21fe045652" +checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" dependencies = [ "percent-encoding", ] @@ -1919,9 +2004,9 @@ checksum = "a06f77d526c1a601b7c4cdd98f54b5eaabffc14d5f2f0296febdc7f357c6d3ba" [[package]] name = "futures" -version = "0.3.28" +version = "0.3.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23342abe12aba583913b2e62f22225ff9c950774065e4bfb61a19cd9770fec40" +checksum = "da0290714b38af9b4a7b094b8a37086d1b4e61f2df9122c3cad2577669145335" dependencies = [ "futures-channel", "futures-core", @@ -1934,9 +2019,9 @@ dependencies = [ [[package]] name = "futures-channel" -version = "0.3.28" +version = "0.3.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "955518d47e09b25bbebc7a18df10b81f0c766eaf4c4f1cccef2fca5f2a4fb5f2" +checksum = "ff4dd66668b557604244583e3e1e1eada8c5c2e96a6d0d6653ede395b78bbacb" dependencies = [ "futures-core", "futures-sink", @@ -1944,15 +2029,15 @@ dependencies = [ [[package]] name = "futures-core" -version = "0.3.28" +version = "0.3.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4bca583b7e26f571124fe5b7561d49cb2868d79116cfa0eefce955557c6fee8c" +checksum = "eb1d22c66e66d9d72e1758f0bd7d4fd0bee04cad842ee34587d68c07e45d088c" [[package]] name = "futures-executor" -version = "0.3.28" +version = "0.3.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ccecee823288125bd88b4d7f565c9e58e41858e47ab72e8ea2d64e93624386e0" +checksum = "0f4fb8693db0cf099eadcca0efe2a5a22e4550f98ed16aba6c48700da29597bc" dependencies = [ "futures-core", "futures-task", @@ -1961,9 +2046,9 @@ dependencies = [ [[package]] name = "futures-io" -version = "0.3.28" +version = "0.3.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fff74096e71ed47f8e023204cfd0aa1289cd54ae5430a9523be060cdb849964" +checksum = "8bf34a163b5c4c52d0478a4d757da8fb65cabef42ba90515efee0f6f9fa45aaa" [[package]] name = "futures-lite" @@ -1980,34 +2065,47 @@ dependencies = [ "waker-fn", ] +[[package]] +name = "futures-lite" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aeee267a1883f7ebef3700f262d2d54de95dfaf38189015a74fdc4e0c7ad8143" +dependencies = [ + "fastrand 2.0.1", + "futures-core", + "futures-io", + "parking", + "pin-project-lite", +] + [[package]] name = "futures-macro" -version = "0.3.28" +version = "0.3.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89ca545a94061b6365f2c7355b4b32bd20df3ff95f02da9329b34ccc3bd6ee72" +checksum = "53b153fd91e4b0147f4aced87be237c98248656bb01050b96bf3ee89220a8ddb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.27", + "syn 2.0.39", ] [[package]] name = "futures-sink" -version = "0.3.28" +version = "0.3.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f43be4fe21a13b9781a69afa4985b0f6ee0e1afab2c6f454a8cf30e2b2237b6e" +checksum = "e36d3378ee38c2a36ad710c5d30c2911d752cb941c00c72dbabfb786a7970817" [[package]] name = "futures-task" -version = "0.3.28" +version = "0.3.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76d3d132be6c0e6aa1534069c705a74a5997a356c0dc2f86a47765e5617c5b65" +checksum = "efd193069b0ddadc69c46389b740bbccdd97203899b48d09c5f7969591d6bae2" [[package]] name = "futures-util" -version = "0.3.28" +version = "0.3.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26b01e40b772d54cf6c6d721c1d1abd0647a0106a12ecaa1c186273392a69533" +checksum = "a19526d624e703a3179b3d322efec918b6246ea0fa51d41124525f00f1cc8104" dependencies = [ "futures-channel", "futures-core", @@ -2033,9 +2131,9 @@ dependencies = [ [[package]] name = "gethostname" -version = "0.2.3" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1ebd34e35c46e00bb73e81363248d627782724609fe1b6396f553f68fe3862e" +checksum = "bb65d4ba3173c56a500b555b532f72c42e8d1fe64962b518897f8959fae2c177" dependencies = [ "libc", "winapi", @@ -2043,22 +2141,22 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.10" +version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be4136b2a15dd319360be1c07d9933517ccf0be8f16bf62a3bee4f0d618df427" +checksum = "fe9006bed769170c11f845cf00c7c1e9092aeb3f268e007c3e760ac68008070f" dependencies = [ "cfg-if", "js-sys", "libc", - "wasi 0.11.0+wasi-snapshot-preview1", + "wasi", "wasm-bindgen", ] [[package]] name = "gimli" -version = "0.27.3" +version = "0.28.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6c80984affa11d98d1b88b66ac8853f143217b399d3c74116778ff8fdb4ed2e" +checksum = "4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253" [[package]] name = "glam" @@ -2103,9 +2201,9 @@ dependencies = [ [[package]] name = "gltf" -version = "1.2.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4fe8d5192923fbd783c15e74627de8e27c97e1e3dec22bf54515a407249febf" +checksum = "ad2dcfb6dd7a66f9eb3d181a29dcfb22d146b0bcdc2e1ed1713cbf03939a88ea" dependencies = [ "base64 0.13.1", "byteorder", @@ -2117,21 +2215,21 @@ dependencies = [ [[package]] name = "gltf-derive" -version = "1.2.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec223c88f017861193ae128239aff8fbc4478f38a036d9d7b2ce10a52b46b1f2" +checksum = "f2cbcea5dd47e7ad4e9ee6f040384fcd7204bbf671aa4f9e7ca7dfc9bfa1de20" dependencies = [ "inflections", "proc-macro2", "quote", - "syn 2.0.27", + "syn 2.0.39", ] [[package]] name = "gltf-json" -version = "1.2.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b1ba7523fcf32541f4aec96e13024c255d928eab3223f99ab945045f2a6de18" +checksum = "7d5b810806b78dde4b71a95cc0e6fdcab34c4c617da3574df166f9987be97d03" dependencies = [ "gltf-derive", "serde", @@ -2168,34 +2266,34 @@ dependencies = [ "log", "thiserror", "winapi", - "windows 0.44.0", + "windows", ] [[package]] name = "gpu-descriptor" -version = "0.2.3" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b0c02e1ba0bdb14e965058ca34e09c020f8e507a760df1121728e0aef68d57a" +checksum = "cc11df1ace8e7e564511f53af41f3e42ddc95b56fd07b3f4445d2a6048bc682c" dependencies = [ - "bitflags 1.3.2", + "bitflags 2.4.1", "gpu-descriptor-types", - "hashbrown 0.12.3", + "hashbrown 0.14.3", ] [[package]] name = "gpu-descriptor-types" -version = "0.1.1" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "363e3677e55ad168fef68cf9de3a4a310b53124c5e784c53a1d70e92d23f2126" +checksum = "6bf0b36e6f090b7e1d8a4b49c0cb81c1f8376f72198c65dd3ad9ff3556b8b78c" dependencies = [ - "bitflags 1.3.2", + "bitflags 2.4.1", ] [[package]] name = "h2" -version = "0.3.20" +version = "0.3.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97ec8491ebaf99c8eaa73058b045fe58073cd6be7f596ac993ced0b0a0c01049" +checksum = "4d6250322ef6e60f93f9a2162799302cd6f68f79f6e5d85c8c16f14d1d958178" dependencies = [ "bytes", "fnv", @@ -2203,7 +2301,7 @@ dependencies = [ "futures-sink", "futures-util", "http", - "indexmap 1.9.3", + "indexmap 2.1.0", "slab", "tokio", "tokio-util", @@ -2239,9 +2337,6 @@ name = "hashbrown" version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" -dependencies = [ - "ahash 0.7.6", -] [[package]] name = "hashbrown" @@ -2249,15 +2344,19 @@ version = "0.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "43a3c133739dddd0d2990f9a4bdf8eb4b21ef50e4851ca85ab661199821d510e" dependencies = [ - "ahash 0.8.3", + "ahash", "rayon", ] [[package]] name = "hashbrown" -version = "0.14.0" +version = "0.14.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c6201b9ff9fd90a5a3bac2e56a830d0caa509576f0e503818ee82c181b3437a" +checksum = "290f1a1d9242c78d09ce40a5e87e7554ee637af1351968159f4952f028f75604" +dependencies = [ + "ahash", + "allocator-api2", +] [[package]] name = "hassle-rs" @@ -2300,9 +2399,9 @@ dependencies = [ [[package]] name = "hermit-abi" -version = "0.3.2" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "443144c8cdadd93ebf52ddb4056d257f5b52c04d3c804e657d19eb73fc33668b" +checksum = "d77f7ec81a6d05a3abb01ab6eb7590f6083d08449fe5a1c8b1e620283546ccb7" [[package]] name = "hex" @@ -2338,9 +2437,9 @@ dependencies = [ [[package]] name = "http" -version = "0.2.9" +version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd6effc99afb63425aff9b05836f029929e345a6148a14b7ecd5ab67af944482" +checksum = "8947b1a6fad4393052c7ba1f4cd97bed3e953a95c79c92ad9b051a04611d9fbb" dependencies = [ "bytes", "fnv", @@ -2366,9 +2465,9 @@ checksum = "d897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904" [[package]] name = "httpdate" -version = "1.0.2" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4a1e36c821dbe04574f602848a19f742f4fb3c98d40449f11bcad18d6b17421" +checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" [[package]] name = "humantime" @@ -2393,7 +2492,7 @@ dependencies = [ "httpdate", "itoa", "pin-project-lite", - "socket2", + "socket2 0.4.10", "tokio", "tower-service", "tracing", @@ -2415,16 +2514,16 @@ dependencies = [ [[package]] name = "iana-time-zone" -version = "0.1.57" +version = "0.1.58" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2fad5b825842d2b38bd206f3e81d6957625fd7f0a361e345c30e01a0ae2dd613" +checksum = "8326b86b6cff230b97d0d312a6c40a60726df3332e721f72a1b035f451663b20" dependencies = [ "android_system_properties", "core-foundation-sys", "iana-time-zone-haiku", "js-sys", "wasm-bindgen", - "windows 0.48.0", + "windows-core", ] [[package]] @@ -2450,9 +2549,9 @@ checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" [[package]] name = "idna" -version = "0.4.0" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d20d6b07bfbc108882d88ed8e37d39636dcc260e15e30c45e6ba089610b917c" +checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6" dependencies = [ "unicode-bidi", "unicode-normalization", @@ -2460,9 +2559,9 @@ dependencies = [ [[package]] name = "image" -version = "0.24.6" +version = "0.24.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "527909aa81e20ac3a44803521443a765550f09b5130c2c2fa1ea59c2f8f50a3a" +checksum = "6f3dfdbdd72063086ff443e297b61695500514b1e41095b6fb9a5ab48a70a711" dependencies = [ "bytemuck", "byteorder", @@ -2492,12 +2591,12 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.0.0" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d5477fe2230a79769d8dc68e0eabf5437907c0457a5614a9e8dddb67f65eb65d" +checksum = "d530e1a18b1cb4c484e6e34556a0d948706958449fca0cab753d649f2bce3d1f" dependencies = [ "equivalent", - "hashbrown 0.14.0", + "hashbrown 0.14.3", ] [[package]] @@ -2534,9 +2633,9 @@ dependencies = [ [[package]] name = "insta" -version = "1.31.0" +version = "1.34.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0770b0a3d4c70567f0d58331f3088b0e4c4f56c9b8d764efe654b4a5d46de3a" +checksum = "5d64600be34b2fcfc267740a243fa7744441bb4947a619ac4e5bb6507f35fbfc" dependencies = [ "console", "lazy_static", @@ -2563,16 +2662,16 @@ version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eae7b9aee968036d54dce06cebaefd919e4472e753296daccd6d344e3e2df0c2" dependencies = [ - "hermit-abi 0.3.2", + "hermit-abi 0.3.3", "libc", "windows-sys 0.48.0", ] [[package]] name = "ipnet" -version = "2.8.0" +version = "2.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28b29a3cd74f0f4598934efe3aeba42bae0eb4680554128851ebbecb02af14e6" +checksum = "8f518f335dce6725a761382244631d86cf0ccb2863413590b31338feb467f9c3" [[package]] name = "is-terminal" @@ -2580,8 +2679,8 @@ version = "0.4.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cb0889898416213fab133e1d33a0e5858a48177452750691bde3666d0fdbaf8b" dependencies = [ - "hermit-abi 0.3.2", - "rustix 0.38.4", + "hermit-abi 0.3.3", + "rustix 0.38.26", "windows-sys 0.48.0", ] @@ -2624,9 +2723,9 @@ checksum = "8eaf4bc02d17cbdd7ff4c7438cafcdf7fb9a4613313ad11b4f8fefe7d3fa0130" [[package]] name = "jobserver" -version = "0.1.26" +version = "0.1.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "936cfd212a0155903bcbc060e316fb6cc7cbf2e1907329391ebadc1fe0ce77c2" +checksum = "8c37f63953c4c63420ed5fd3d6d398c719489b9f872b9fa683262f8edd363c7d" dependencies = [ "libc", ] @@ -2659,9 +2758,9 @@ dependencies = [ [[package]] name = "kqueue" -version = "1.0.7" +version = "1.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c8fc60ba15bf51257aa9807a48a61013db043fcf3a78cb0d916e8e396dcad98" +checksum = "7447f1ca1b7b563588a205fe93dea8df60fd981423a768bc1c0ded35ed147d0c" dependencies = [ "kqueue-sys", "libc", @@ -2669,9 +2768,9 @@ dependencies = [ [[package]] name = "kqueue-sys" -version = "1.0.3" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8367585489f01bc55dd27404dcf56b95e6da061a256a666ab23be9ba96a2e587" +checksum = "ed9625ffda8729b85e45cf04090035ac368927b8cebc34898e7c120f52e4838b" dependencies = [ "bitflags 1.3.2", "libc", @@ -2764,9 +2863,9 @@ dependencies = [ [[package]] name = "libc" -version = "0.2.147" +version = "0.2.150" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4668fb0ea861c1df094127ac5f1da3409a82116a4ba74fca2e58ef927159bb3" +checksum = "89d92a4743f9a61002fae18374ed11e7973f530cb3a3255fb354818118b2203c" [[package]] name = "libloading" @@ -2780,9 +2879,9 @@ dependencies = [ [[package]] name = "libloading" -version = "0.8.0" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d580318f95776505201b28cf98eb1fa5e4be3b689633ba6a3e6cd880ff22d8cb" +checksum = "c571b676ddfc9a8c12f1f3d3085a7b163966a8fd8098a90640953ce5f6170161" dependencies = [ "cfg-if", "windows-sys 0.48.0", @@ -2790,20 +2889,42 @@ dependencies = [ [[package]] name = "libm" -version = "0.2.7" +version = "0.2.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7012b1bbb0719e1097c47611d3898568c546d597c2e74d66f6087edd5233ff4" +checksum = "4ec2a862134d2a7d32d7983ddcdd1c4923530833c9f2ea1a44fc5fa473989058" [[package]] name = "libmimalloc-sys" -version = "0.1.33" +version = "0.1.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4ac0e912c8ef1b735e92369695618dc5b1819f5a7bf3f167301a3ba1cea515e" +checksum = "3979b5c37ece694f1f5e51e7ecc871fdb0f517ed04ee45f88d15d6d553cb9664" dependencies = [ "cc", "libc", ] +[[package]] +name = "libredox" +version = "0.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85c833ca1e66078851dba29046874e38f08b2c883700aa29a03ddd3b23814ee8" +dependencies = [ + "bitflags 2.4.1", + "libc", + "redox_syscall 0.4.1", +] + +[[package]] +name = "libredox" +version = "0.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3af92c55d7d839293953fcd0fda5ecfe93297cfde6ffbdec13b41d99c0ba6607" +dependencies = [ + "bitflags 2.4.1", + "libc", + "redox_syscall 0.4.1", +] + [[package]] name = "linked-hash-map" version = "0.5.6" @@ -2818,9 +2939,9 @@ checksum = "ef53942eb7bf7ff43a617b3e2c1c4a5ecf5944a7c1bc12d7ee39bbb15e5c1519" [[package]] name = "linux-raw-sys" -version = "0.4.3" +version = "0.4.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09fc20d2ca12cb9f044c93e3bd6d32d523e6e2ec3db4f7b2939cd99026ecd3f0" +checksum = "c4cd1a83af159aa67994778be9070f0ae1bd732942279cabb14f86f986a21456" [[package]] name = "litrs" @@ -2830,9 +2951,9 @@ checksum = "f9275e0933cf8bb20f008924c0cb07a0692fe54d8064996520bf998de9eb79aa" [[package]] name = "lock_api" -version = "0.4.10" +version = "0.4.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1cc9717a20b1bb222f333e6a92fd32f7d8a18ddc5a3191a11af45dcbf4dcd16" +checksum = "3c168f8615b12bc01f9c17e2eb0cc07dcae1940121185446edc3744920e8ef45" dependencies = [ "autocfg", "scopeguard", @@ -2840,9 +2961,9 @@ dependencies = [ [[package]] name = "log" -version = "0.4.19" +version = "0.4.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b06a4cde4c0f271a446782e3eff8de789548ce57dbc8eca9292c27f4a42004b4" +checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f" dependencies = [ "value-bag", ] @@ -2858,9 +2979,9 @@ dependencies = [ [[package]] name = "macaw" -version = "0.18.4" +version = "0.18.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6e17ec300e5d813b9f1897e67b88d9ea256ec915c7660382ceb86423418e0ca" +checksum = "b8fdbfdf07a7e53090afb7fd427eb0a4b46fc51cb484b2deba27b47919762dfb" dependencies = [ "glam", "num-traits", @@ -2884,9 +3005,9 @@ checksum = "ffbee8634e0d45d258acb448e7eaab3fce7a0a467395d4d9f228e3c1f01fb2e4" [[package]] name = "matrixmultiply" -version = "0.3.7" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "090126dc04f95dc0d1c1c91f61bdd474b3930ca064c1edc8a849da2c6cbe1e77" +checksum = "7574c1cf36da4798ab73da5b215bbf444f50718207754cb522201d78d1cd0ff2" dependencies = [ "autocfg", "rawpointer", @@ -2894,9 +3015,9 @@ dependencies = [ [[package]] name = "memchr" -version = "2.5.0" +version = "2.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" +checksum = "f665ee40bc4a3c5590afb1e9677db74a508659dfd71e126420da8274909a0167" [[package]] name = "memmap2" @@ -2969,9 +3090,9 @@ dependencies = [ [[package]] name = "mimalloc" -version = "0.1.37" +version = "0.1.39" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e2894987a3459f3ffb755608bd82188f8ed00d0ae077f1edea29c068d639d98" +checksum = "fa01922b5ea280a911e323e4d2fd24b7fe5cc4042e0d2cda3c40775cdc4bdc9c" dependencies = [ "libmimalloc-sys", ] @@ -2984,7 +3105,7 @@ checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" [[package]] name = "minimal" -version = "0.1.4" +version = "0.1.5" dependencies = [ "depthai-viewer", ] @@ -2997,10 +3118,10 @@ checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" [[package]] name = "minimal_options" -version = "0.1.4" +version = "0.1.5" dependencies = [ "anyhow", - "clap 4.3.19", + "clap 4.4.11", "depthai-viewer", "glam", ] @@ -3023,13 +3144,13 @@ checksum = "e53debba6bda7a793e5f99b8dacf19e626084f525f7829104ba9898f367d85ff" [[package]] name = "mio" -version = "0.8.8" +version = "0.8.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "927a765cd3fc26206e66b296465fa9d3e5ab003e651c1b3c060e7956d96b19d2" +checksum = "3dce281c5e46beae905d4de1870d8b1509a9142b62eedf18b443b011ca8343d0" dependencies = [ "libc", "log", - "wasi 0.11.0+wasi-snapshot-preview1", + "wasi", "windows-sys 0.48.0", ] @@ -3182,15 +3303,25 @@ dependencies = [ [[package]] name = "nix" -version = "0.26.2" +version = "0.26.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfdda3d196821d6af13126e40375cdf7da646a96114af134d5f417a9a1dc8e1a" +checksum = "598beaf3cc6fdd9a5dfb1630c2800c7acd31df7aaf0f565796fba2b53ca1af1b" dependencies = [ "bitflags 1.3.2", "cfg-if", "libc", "memoffset 0.7.1", - "static_assertions", +] + +[[package]] +name = "nix" +version = "0.27.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2eb04e9c688eff1c89d72b407f168cf79bb9e867a9d3323ed6c01519eb9cc053" +dependencies = [ + "bitflags 2.4.1", + "cfg-if", + "libc", ] [[package]] @@ -3252,9 +3383,9 @@ dependencies = [ [[package]] name = "num-bigint" -version = "0.4.3" +version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f93ab6289c7b344a8a9f60f88d80aa20032336fe78da341afc91c8a2341fc75f" +checksum = "608e7659b5c3d7cba262d894801b9ec9d00de989e8a82bd4bef91d08da45cdc0" dependencies = [ "autocfg", "num-integer", @@ -3263,9 +3394,9 @@ dependencies = [ [[package]] name = "num-complex" -version = "0.4.3" +version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02e0d21255c828d6f128a1e41534206671e8c3ea0c62f32291e808dc82cff17d" +checksum = "1ba157ca0885411de85d6ca030ba7e2a83a28636056c7c699b07c8b6f7383214" dependencies = [ "num-traits", ] @@ -3316,9 +3447,9 @@ dependencies = [ [[package]] name = "num-traits" -version = "0.2.16" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f30b0abd723be7e2ffca1272140fac1a2f084c77ec3e123c192b66af1ee9e6c2" +checksum = "39e3200413f237f41ab11ad6d161bc7239c84dcb631773ccd7de3dfe4b5c267c" dependencies = [ "autocfg", "libm", @@ -3330,7 +3461,7 @@ version = "1.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" dependencies = [ - "hermit-abi 0.3.2", + "hermit-abi 0.3.3", "libc", ] @@ -3373,7 +3504,7 @@ dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.27", + "syn 2.0.39", ] [[package]] @@ -3459,19 +3590,19 @@ dependencies = [ [[package]] name = "object" -version = "0.31.1" +version = "0.32.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8bda667d9f2b5051b8833f59f3bf748b28ef54f850f4fcb389a252aa383866d1" +checksum = "9cf5f9dd3933bd50a9e1f149ec995f39ae2c496d31fd772c1fd45ebc27e902b0" dependencies = [ "memchr", ] [[package]] name = "objectron" -version = "0.1.4" +version = "0.1.5" dependencies = [ "anyhow", - "clap 4.3.19", + "clap 4.4.11", "depthai-viewer", "glam", "prost", @@ -3492,11 +3623,11 @@ checksum = "0ab1bc2a289d34bd04a330323ac98a1b4bc82c9d9fcb1e66b63caa84da26b575" [[package]] name = "openssl" -version = "0.10.55" +version = "0.10.61" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "345df152bc43501c5eb9e4654ff05f794effb78d4efe3d53abc158baddc0703d" +checksum = "6b8419dc8cc6d866deb801274bba2e6f8f6108c1bb7fcc10ee5ab864931dbb45" dependencies = [ - "bitflags 1.3.2", + "bitflags 2.4.1", "cfg-if", "foreign-types", "libc", @@ -3513,7 +3644,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.27", + "syn 2.0.39", ] [[package]] @@ -3524,9 +3655,9 @@ checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" [[package]] name = "openssl-sys" -version = "0.9.90" +version = "0.9.97" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "374533b0e45f3a7ced10fcaeccca020e66656bc03dac384f852e4e5a7a8104a6" +checksum = "c3eaad34cdd97d81de97964fc7f29e2d104f483840d906ef56daa1912338460b" dependencies = [ "cc", "libc", @@ -3536,18 +3667,18 @@ dependencies = [ [[package]] name = "orbclient" -version = "0.3.45" +version = "0.3.47" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "221d488cd70617f1bd599ed8ceb659df2147d9393717954d82a0f5e8032a6ab1" +checksum = "52f0d54bde9774d3a51dcf281a5def240c71996bc6ca05d2c847ec8b2b216166" dependencies = [ - "redox_syscall 0.3.5", + "libredox 0.0.2", ] [[package]] name = "ordered-float" -version = "3.7.0" +version = "3.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2fc2dbde8f8a79f2102cc474ceb0ad68e3b80b85289ea62389b60e66777e4213" +checksum = "f1e1c390732d15f1d48471625cd92d154e66db2c56645e29a9cd26f4699f72dc" dependencies = [ "num-traits", ] @@ -3575,24 +3706,24 @@ dependencies = [ [[package]] name = "os_str_bytes" -version = "6.5.1" +version = "6.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d5d9eb14b174ee9aa2ef96dc2b94637a2d4b6e7cb873c7e171f0c20c6cf3eac" +checksum = "e2355d85b9a3786f481747ced0e0ff2ba35213a1f9bd406ed906554d7af805a1" [[package]] name = "owned_ttf_parser" -version = "0.19.0" +version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "706de7e2214113d63a8238d1910463cfce781129a6f263d13fdb09ff64355ba4" +checksum = "d4586edfe4c648c71797a74c84bacb32b52b212eff5dfe2bb9f2c599844023e7" dependencies = [ "ttf-parser", ] [[package]] name = "parking" -version = "2.1.0" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14f2252c834a40ed9bb5422029649578e63aa341ac401f74e719dd1afda8394e" +checksum = "bb813b8af86854136c6922af0598d719255ecb2179515e6e7730d468f05c9cae" [[package]] name = "parking_lot" @@ -3612,7 +3743,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" dependencies = [ "lock_api", - "parking_lot_core 0.9.8", + "parking_lot_core 0.9.9", ] [[package]] @@ -3631,18 +3762,18 @@ dependencies = [ [[package]] name = "parking_lot_core" -version = "0.9.8" +version = "0.9.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93f00c865fe7cabf650081affecd3871070f26767e7b2070a3ffae14c654b447" +checksum = "4c42a9226546d68acdd9c0a280d17ce19bfe27a46bf68784e4066115788d008e" dependencies = [ "backtrace", "cfg-if", "libc", "petgraph", - "redox_syscall 0.3.5", + "redox_syscall 0.4.1", "smallvec", "thread-id", - "windows-targets 0.48.1", + "windows-targets 0.48.5", ] [[package]] @@ -3659,18 +3790,18 @@ checksum = "8835116a5c179084a830efb3adc117ab007512b535bc1a21c991d3b32a6b44dd" [[package]] name = "percent-encoding" -version = "2.3.0" +version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b2a4787296e9989611394c33f193f676704af1686e70b8f8033ab5ba9a35a94" +checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" [[package]] name = "petgraph" -version = "0.6.3" +version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4dd7d28ee937e54fe3080c91faa1c3a46c06de6252988a7f4592ba2310ef22a4" +checksum = "e1d3afd2628e69da2be385eb6f2fd57c8ac7977ceeff6dc166ff1657b0e386a9" dependencies = [ "fixedbitset", - "indexmap 1.9.3", + "indexmap 2.1.0", ] [[package]] @@ -3681,9 +3812,9 @@ checksum = "5be167a7af36ee22fe3115051bc51f6e6c7054c9348e28deb4f49bd6f705a315" [[package]] name = "pin-project-lite" -version = "0.2.10" +version = "0.2.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c40d25201921e5ff0c862a505c6557ea88568a4e3ace775ab55e93f2f4f9d57" +checksum = "8afb450f006bf6385ca15ef45d71d2288452bc3683ce2e2cacc0d18e4be60b58" [[package]] name = "pin-utils" @@ -3691,6 +3822,17 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" +[[package]] +name = "piper" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "668d31b1c4eba19242f2088b2bf3316b82ca31082a8335764db4e083db7485d4" +dependencies = [ + "atomic-waker", + "fastrand 2.0.1", + "futures-io", +] + [[package]] name = "pkg-config" version = "0.3.27" @@ -3736,9 +3878,9 @@ dependencies = [ [[package]] name = "png" -version = "0.17.9" +version = "0.17.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59871cc5b6cce7eaccca5a802b4173377a1c2ba90654246789a8fa2334426d11" +checksum = "dd75bf2d8dd3702b9707cdbc56a5b9ef42cec752eb8b3bafc01234558442aa64" dependencies = [ "bitflags 1.3.2", "crc32fast", @@ -3765,7 +3907,7 @@ version = "0.27.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5a440cd53916f1a87fac1fda36cd7cc2d226247b4d4570d96242da5fa7f07b2a" dependencies = [ - "ahash 0.8.3", + "ahash", "anyhow", "arrow2", "bitflags 1.3.2", @@ -3809,9 +3951,9 @@ dependencies = [ [[package]] name = "poll-promise" -version = "0.2.0" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fcf2a02372dfae23c9c01267fb296b8a3413bb4e45fbd589c3ac73c6dcfbb305" +checksum = "5760dbfd69d6cf87006ac3689dd07f9b9370f7064d6ddf0ebaa8563d0af10b75" dependencies = [ "static_assertions", ] @@ -3832,12 +3974,32 @@ dependencies = [ "windows-sys 0.48.0", ] +[[package]] +name = "polling" +version = "3.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf63fa624ab313c11656b4cda960bfc46c410187ad493c41f6ba2d8c1e991c9e" +dependencies = [ + "cfg-if", + "concurrent-queue", + "pin-project-lite", + "rustix 0.38.26", + "tracing", + "windows-sys 0.52.0", +] + [[package]] name = "pollster" version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "22686f4785f02a4fcc856d3b3bb19bf6c8160d103f7a99cc258bddd0251dc7f2" +[[package]] +name = "powerfmt" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" + [[package]] name = "ppv-lite86" version = "0.2.17" @@ -3888,26 +4050,20 @@ dependencies = [ "version_check", ] -[[package]] -name = "proc-macro-hack" -version = "0.5.20+deprecated" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc375e1527247fe1a97d8b7156678dfe7c1af2fc075c9a4db3690ecd2a148068" - [[package]] name = "proc-macro2" -version = "1.0.66" +version = "1.0.70" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18fb31db3f9bddb2ea821cde30a9f70117e3f119938b5ee630b7403aa6e2ead9" +checksum = "39278fbbf5fb4f646ce651690877f89d1c5811a3d4acb27700c1cb3cdb78fd3b" dependencies = [ "unicode-ident", ] [[package]] name = "profiling" -version = "1.0.8" +version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "332cd62e95873ea4f41f3dfd6bbbfc5b52aec892d7e8d534197c4720a0bbbab2" +checksum = "f89dff0959d98c9758c88826cc002e2c3d0b9dfac4139711d1f30de442f1139b" [[package]] name = "prost" @@ -4079,9 +4235,9 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.32" +version = "1.0.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50f3b39ccfb720540debaa0164757101c08ecb8d326b15358ce76a62c7e85965" +checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae" dependencies = [ "proc-macro2", ] @@ -4168,11 +4324,11 @@ checksum = "f2ff9a1f06a88b01621b7ae906ef0211290d1c8a168a15542486a8f61c0833b9" [[package]] name = "raw_mesh" -version = "0.1.4" +version = "0.1.5" dependencies = [ "anyhow", "bytes", - "clap 4.3.19", + "clap 4.4.11", "depthai-viewer", "gltf", "mimalloc", @@ -4186,9 +4342,9 @@ checksum = "60a357793950651c4ed0f3f52338f53b2f809f32d83a07f72909fa13e4c6c1e3" [[package]] name = "rayon" -version = "1.7.0" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d2df5196e37bcc87abebc0053e20787d73847bb33134a69841207dd0a47f03b" +checksum = "9c27db03db7734835b3f53954b534c91069375ce6ccaa2e065441e07d9b6cdb1" dependencies = [ "either", "rayon-core", @@ -4196,14 +4352,12 @@ dependencies = [ [[package]] name = "rayon-core" -version = "1.11.0" +version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b8f95bd6966f5c87776639160a66bd8ab9895d9d4ab01ddba9fc60661aebe8d" +checksum = "5ce3fb6ad83f861aac485e76e1985cd109d9a3713802152be56c3b1f0e0658ed" dependencies = [ - "crossbeam-channel", "crossbeam-deque", "crossbeam-utils", - "num_cpus", ] [[package]] @@ -4217,7 +4371,7 @@ dependencies = [ [[package]] name = "re_analytics" -version = "0.1.4" +version = "0.1.5" dependencies = [ "anyhow", "crossbeam", @@ -4230,7 +4384,7 @@ dependencies = [ "serde_json", "sha2", "thiserror", - "time 0.3.23", + "time", "ureq", "uuid", "web-sys", @@ -4238,9 +4392,9 @@ dependencies = [ [[package]] name = "re_arrow_store" -version = "0.1.4" +version = "0.1.5" dependencies = [ - "ahash 0.8.3", + "ahash", "anyhow", "arrow2", "arrow2_convert", @@ -4265,28 +4419,28 @@ dependencies = [ [[package]] name = "re_build_build_info" -version = "0.1.4" +version = "0.1.5" dependencies = [ "anyhow", - "time 0.3.23", + "time", ] [[package]] name = "re_build_info" -version = "0.1.4" +version = "0.1.5" [[package]] name = "re_build_web_viewer" -version = "0.1.4" +version = "0.1.5" dependencies = [ "cargo_metadata", ] [[package]] name = "re_data_store" -version = "0.1.4" +version = "0.1.5" dependencies = [ - "ahash 0.8.3", + "ahash", "criterion", "document-features", "itertools", @@ -4307,14 +4461,14 @@ dependencies = [ [[package]] name = "re_error" -version = "0.1.4" +version = "0.1.5" dependencies = [ "anyhow", ] [[package]] name = "re_format" -version = "0.1.4" +version = "0.1.5" dependencies = [ "arrow2", "arrow2_convert", @@ -4324,7 +4478,7 @@ dependencies = [ [[package]] name = "re_int_histogram" -version = "0.1.4" +version = "0.1.5" dependencies = [ "criterion", "insta", @@ -4335,7 +4489,7 @@ dependencies = [ [[package]] name = "re_log" -version = "0.1.4" +version = "0.1.5" dependencies = [ "env_logger", "js-sys", @@ -4348,7 +4502,7 @@ dependencies = [ [[package]] name = "re_log_encoding" -version = "0.1.4" +version = "0.1.5" dependencies = [ "criterion", "ehttp", @@ -4373,9 +4527,9 @@ dependencies = [ [[package]] name = "re_log_types" -version = "0.1.4" +version = "0.1.5" dependencies = [ - "ahash 0.8.3", + "ahash", "array-init", "arrow2", "arrow2_convert", @@ -4405,16 +4559,16 @@ dependencies = [ "serde_bytes", "smallvec", "thiserror", - "time 0.3.23", + "time", "typenum", "uuid", ] [[package]] name = "re_memory" -version = "0.1.4" +version = "0.1.5" dependencies = [ - "ahash 0.8.3", + "ahash", "backtrace", "emath", "instant", @@ -4432,7 +4586,7 @@ dependencies = [ [[package]] name = "re_query" -version = "0.1.4" +version = "0.1.5" dependencies = [ "arrow2", "criterion", @@ -4450,9 +4604,9 @@ dependencies = [ [[package]] name = "re_renderer" -version = "0.1.4" +version = "0.1.5" dependencies = [ - "ahash 0.8.3", + "ahash", "anyhow", "arrow2", "async-executor", @@ -4503,7 +4657,7 @@ dependencies = [ [[package]] name = "re_sdk" -version = "0.1.4" +version = "0.1.5" dependencies = [ "arrow2_convert", "document-features", @@ -4523,9 +4677,9 @@ dependencies = [ [[package]] name = "re_sdk_comms" -version = "0.1.4" +version = "0.1.5" dependencies = [ - "ahash 0.8.3", + "ahash", "anyhow", "bincode", "crossbeam", @@ -4539,7 +4693,7 @@ dependencies = [ [[package]] name = "re_smart_channel" -version = "0.1.4" +version = "0.1.5" dependencies = [ "crossbeam", "instant", @@ -4547,9 +4701,9 @@ dependencies = [ [[package]] name = "re_string_interner" -version = "0.1.4" +version = "0.1.5" dependencies = [ - "ahash 0.8.3", + "ahash", "nohash-hasher", "once_cell", "parking_lot 0.12.1", @@ -4558,9 +4712,9 @@ dependencies = [ [[package]] name = "re_tensor_ops" -version = "0.1.4" +version = "0.1.5" dependencies = [ - "ahash 0.8.3", + "ahash", "ndarray", "re_log_types", "serde", @@ -4568,7 +4722,7 @@ dependencies = [ [[package]] name = "re_tuid" -version = "0.1.4" +version = "0.1.5" dependencies = [ "arrow2", "arrow2_convert", @@ -4582,7 +4736,7 @@ dependencies = [ [[package]] name = "re_ui" -version = "0.1.4" +version = "0.1.5" dependencies = [ "eframe", "egui", @@ -4601,9 +4755,9 @@ dependencies = [ [[package]] name = "re_viewer" -version = "0.1.4" +version = "0.1.5" dependencies = [ - "ahash 0.8.3", + "ahash", "anyhow", "arboard", "async-std", @@ -4662,7 +4816,7 @@ dependencies = [ "subprocess", "tempdir", "thiserror", - "time 0.3.23", + "time", "tokio", "url", "uuid", @@ -4675,7 +4829,7 @@ dependencies = [ [[package]] name = "re_web_viewer_server" -version = "0.1.4" +version = "0.1.5" dependencies = [ "cargo_metadata", "ctrlc", @@ -4692,7 +4846,7 @@ dependencies = [ [[package]] name = "re_ws_comms" -version = "0.1.4" +version = "0.1.5" dependencies = [ "anyhow", "bincode", @@ -4728,22 +4882,31 @@ dependencies = [ "bitflags 1.3.2", ] +[[package]] +name = "redox_syscall" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa" +dependencies = [ + "bitflags 1.3.2", +] + [[package]] name = "redox_users" -version = "0.4.3" +version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b033d837a7cf162d7993aded9304e30a83213c648b6e389db233191f891e5c2b" +checksum = "a18479200779601e498ada4e8c1e1f50e3ee19deb0259c25825a98b5603b2cb4" dependencies = [ "getrandom", - "redox_syscall 0.2.16", + "libredox 0.0.1", "thiserror", ] [[package]] name = "regex" -version = "1.9.1" +version = "1.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2eae68fc220f7cf2532e4494aded17545fce192d59cd996e0fe7887f4ceb575" +checksum = "380b951a9c5e80ddfd6136919eef32310721aa4aacd4889a8d39124b026ab343" dependencies = [ "aho-corasick", "memchr", @@ -4753,9 +4916,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.3.3" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39354c10dd07468c2e73926b23bb9c2caca74c5501e38a35da70406f1d923310" +checksum = "5f804c7828047e88b2d32e2d7fe5a105da8ee3264f01902f796c8e067dc2483f" dependencies = [ "aho-corasick", "memchr", @@ -4764,9 +4927,9 @@ dependencies = [ [[package]] name = "regex-syntax" -version = "0.7.4" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5ea92a5b6195c6ef2a0295ea818b312502c6fc94dde986c5553242e18fd4ce2" +checksum = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f" [[package]] name = "remove_dir_all" @@ -4785,11 +4948,11 @@ checksum = "216080ab382b992234dda86873c18d4c48358f5cfcb70fd693d7f6f2131b628b" [[package]] name = "reqwest" -version = "0.11.18" +version = "0.11.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cde824a14b7c14f85caff81225f411faacc04a2013f41670f41443742b1c1c55" +checksum = "046cd98826c46c2ac8ddecae268eb5c2e58628688a5fc7a2643704a73faba95b" dependencies = [ - "base64 0.21.2", + "base64 0.21.5", "bytes", "encoding_rs", "futures-core", @@ -4810,6 +4973,7 @@ dependencies = [ "serde", "serde_json", "serde_urlencoded", + "system-configuration", "tokio", "tokio-native-tls", "tower-service", @@ -4822,7 +4986,7 @@ dependencies = [ [[package]] name = "rerun_py" -version = "0.1.4" +version = "0.1.5" dependencies = [ "arrow2", "depthai-viewer", @@ -4858,7 +5022,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4fe664af397d2b6a13a8ba1d172a2b5c87c6c5149039edbf8fa122b98c9ed96f" dependencies = [ "ashpd", - "async-io", + "async-io 1.13.0", "block", "dispatch", "futures-util", @@ -4873,7 +5037,7 @@ dependencies = [ "wasm-bindgen", "wasm-bindgen-futures", "web-sys", - "windows 0.44.0", + "windows", ] [[package]] @@ -4885,12 +5049,26 @@ dependencies = [ "cc", "libc", "once_cell", - "spin", - "untrusted", + "spin 0.5.2", + "untrusted 0.7.1", "web-sys", "winapi", ] +[[package]] +name = "ring" +version = "0.17.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "688c63d65483050968b2a8937f7995f443e27041a0f7700aa59b0822aedebb74" +dependencies = [ + "cc", + "getrandom", + "libc", + "spin 0.9.8", + "untrusted 0.9.0", + "windows-sys 0.48.0", +] + [[package]] name = "rmp" version = "0.8.12" @@ -4915,18 +5093,19 @@ dependencies = [ [[package]] name = "ron" -version = "0.8.0" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "300a51053b1cb55c80b7a9fde4120726ddf25ca241a1cbb926626f62fb136bff" +checksum = "b91f7eff05f748767f183df4320a63d6936e9c6107d97c9e6bdd9784f4289c94" dependencies = [ - "base64 0.13.1", - "bitflags 1.3.2", + "base64 0.21.5", + "bitflags 2.4.1", "serde", + "serde_derive", ] [[package]] name = "run_wasm" -version = "0.1.4" +version = "0.1.5" dependencies = [ "cargo-run-wasm", "pico-args", @@ -4956,9 +5135,9 @@ dependencies = [ [[package]] name = "rustix" -version = "0.37.23" +version = "0.37.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d69718bf81c6127a49dc64e44a742e8bb9213c0ff8869a22c308f84c1d4ab06" +checksum = "fea8ca367a3a01fe35e6943c400addf443c0f57670e6ec51196f71a4b8762dd2" dependencies = [ "bitflags 1.3.2", "errno", @@ -4970,59 +5149,49 @@ dependencies = [ [[package]] name = "rustix" -version = "0.38.4" +version = "0.38.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0a962918ea88d644592894bc6dc55acc6c0956488adcebbfb6e273506b7fd6e5" +checksum = "9470c4bf8246c8daf25f9598dca807fb6510347b1e1cfa55749113850c79d88a" dependencies = [ - "bitflags 2.3.3", + "bitflags 2.4.1", "errno", "libc", - "linux-raw-sys 0.4.3", - "windows-sys 0.48.0", + "linux-raw-sys 0.4.12", + "windows-sys 0.52.0", ] [[package]] name = "rustls" -version = "0.20.8" +version = "0.20.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fff78fc74d175294f4e83b28343315ffcfb114b156f0185e9741cb5570f50e2f" +checksum = "1b80e3dec595989ea8510028f30c408a4630db12c9cbb8de34203b89d6577e99" dependencies = [ "log", - "ring", + "ring 0.16.20", "sct", "webpki", ] [[package]] name = "rustls" -version = "0.21.5" +version = "0.21.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79ea77c539259495ce8ca47f53e66ae0330a8819f67e23ac96ca02f50e7b7d36" +checksum = "629648aced5775d558af50b2b4c7b02983a04b312126d45eeead26e7caa498b9" dependencies = [ "log", - "ring", - "rustls-webpki 0.101.2", + "ring 0.17.7", + "rustls-webpki", "sct", ] [[package]] name = "rustls-webpki" -version = "0.100.1" +version = "0.101.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6207cd5ed3d8dca7816f8f3725513a34609c0c765bf652b8c3cb4cfd87db46b" +checksum = "8b6275d1ee7a1cd780b64aca7726599a1dbc893b1e64144529e55c3c2f745765" dependencies = [ - "ring", - "untrusted", -] - -[[package]] -name = "rustls-webpki" -version = "0.101.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "513722fd73ad80a71f72b61009ea1b584bcfa1483ca93949c8f290298837fa59" -dependencies = [ - "ring", - "untrusted", + "ring 0.17.7", + "untrusted 0.9.0", ] [[package]] @@ -5086,12 +5255,12 @@ checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" [[package]] name = "sct" -version = "0.7.0" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d53dcdb7c9f8158937a7981b48accfd39a43af418591a5d008c7b22b5e1b7ca4" +checksum = "da046153aa2352493d6cb7da4b6e5c0c057d8a1d0a9aa8560baffdd945acd414" dependencies = [ - "ring", - "untrusted", + "ring 0.17.7", + "untrusted 0.9.0", ] [[package]] @@ -5132,18 +5301,18 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.18" +version = "1.0.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0293b4b29daaf487284529cc2f5675b8e57c61f70167ba415a463651fd6a918" +checksum = "836fa6a3e1e547f9a2c4040802ec865b5d85f4014efe00555d7090a3dcaa1090" dependencies = [ "serde", ] [[package]] name = "sentry" -version = "0.31.5" +version = "0.31.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01b0ad16faa5d12372f914ed40d00bda21a6d1bdcc99264c5e5e1c9495cf3654" +checksum = "6ce4b57f1b521f674df7a1d200be8ff5d74e3712020ee25b553146657b5377d5" dependencies = [ "httpdate", "native-tls", @@ -5160,9 +5329,9 @@ dependencies = [ [[package]] name = "sentry-backtrace" -version = "0.31.5" +version = "0.31.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11f2ee8f147bb5f22ac59b5c35754a759b9a6f6722402e2a14750b2a63fc59bd" +checksum = "58cc8d4e04a73de8f718dc703943666d03f25d3e9e4d0fb271ca0b8c76dfa00e" dependencies = [ "backtrace", "once_cell", @@ -5172,9 +5341,9 @@ dependencies = [ [[package]] name = "sentry-contexts" -version = "0.31.5" +version = "0.31.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dcd133362c745151eeba0ac61e3ba8350f034e9fe7509877d08059fe1d7720c6" +checksum = "6436c1bad22cdeb02179ea8ef116ffc217797c028927def303bc593d9320c0d1" dependencies = [ "hostname", "libc", @@ -5186,9 +5355,9 @@ dependencies = [ [[package]] name = "sentry-core" -version = "0.31.5" +version = "0.31.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7163491708804a74446642ff2c80b3acd668d4b9e9f497f85621f3d250fd012b" +checksum = "901f761681f97db3db836ef9e094acdd8756c40215326c194201941947164ef1" dependencies = [ "once_cell", "rand 0.8.5", @@ -5199,9 +5368,9 @@ dependencies = [ [[package]] name = "sentry-debug-images" -version = "0.31.5" +version = "0.31.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a5003d7ff08aa3b2b76994080b183e8cfa06c083e280737c9cee02ca1c70f5e" +checksum = "afdb263e73d22f39946f6022ed455b7561b22ff5553aca9be3c6a047fa39c328" dependencies = [ "findshlibs", "once_cell", @@ -5210,9 +5379,9 @@ dependencies = [ [[package]] name = "sentry-panic" -version = "0.31.5" +version = "0.31.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4dfe8371c9b2e126a8b64f6fefa54cef716ff2a50e63b5558a48b899265bccd" +checksum = "74fbf1c163f8b6a9d05912e1b272afa27c652e8b47ea60cb9a57ad5e481eea99" dependencies = [ "sentry-backtrace", "sentry-core", @@ -5220,9 +5389,9 @@ dependencies = [ [[package]] name = "sentry-tracing" -version = "0.31.5" +version = "0.31.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5aca8b88978677a27ee1a91beafe4052306c474c06f582321fde72d2e2cc2f7f" +checksum = "82eabcab0a047040befd44599a1da73d3adb228ff53b5ed9795ae04535577704" dependencies = [ "sentry-backtrace", "sentry-core", @@ -5232,26 +5401,26 @@ dependencies = [ [[package]] name = "sentry-types" -version = "0.31.5" +version = "0.31.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e7a88e0c1922d19b3efee12a8215f6a8a806e442e665ada71cc222cab72985f" +checksum = "da956cca56e0101998c8688bc65ce1a96f00673a0e58e663664023d4c7911e82" dependencies = [ "debugid", - "getrandom", "hex", + "rand 0.8.5", "serde", "serde_json", "thiserror", - "time 0.3.23", + "time", "url", "uuid", ] [[package]] name = "serde" -version = "1.0.175" +version = "1.0.193" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d25439cd7397d044e2748a6fe2432b5e85db703d6d097bd014b3c0ad1ebff0b" +checksum = "25dd9975e68d0cb5aa1120c288333fc98731bd1dd12f561e468ea4728c042b89" dependencies = [ "serde_derive", ] @@ -5267,20 +5436,20 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.175" +version = "1.0.193" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b23f7ade6f110613c0d63858ddb8b94c1041f550eab58a16b371bdf2c9c80ab4" +checksum = "43576ca501357b9b071ac53cdc7da8ef0cbd9493d8df094cd821777ea6e894d3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.27", + "syn 2.0.39", ] [[package]] name = "serde_json" -version = "1.0.103" +version = "1.0.108" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d03b412469450d4404fe8499a268edd7f8b79fecb074b0d812ad64ca21f4031b" +checksum = "3d1c7e3eac408d115102c4c24ad393e0821bb3a5df4d506a80f85f7a742a526b" dependencies = [ "itoa", "ryu", @@ -5289,13 +5458,13 @@ dependencies = [ [[package]] name = "serde_repr" -version = "0.1.15" +version = "0.1.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e168eaaf71e8f9bd6037feb05190485708e019f4fd87d161b3c0a0d37daf85e5" +checksum = "3081f5ffbb02284dda55132aa26daecedd7372a42417bbbab6f14ab7d6bb9145" dependencies = [ "proc-macro2", "quote", - "syn 2.0.27", + "syn 2.0.39", ] [[package]] @@ -5332,9 +5501,9 @@ dependencies = [ [[package]] name = "sha1" -version = "0.10.5" +version = "0.10.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f04293dc80c3993519f2d7f6f511707ee7094fe0c6d3406feb330cdb3540eba3" +checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" dependencies = [ "cfg-if", "cpufeatures", @@ -5343,9 +5512,9 @@ dependencies = [ [[package]] name = "sha2" -version = "0.10.7" +version = "0.10.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "479fb9d862239e610720565ca91403019f2f00410f1864c5aa7479b950a76ed8" +checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" dependencies = [ "cfg-if", "cpufeatures", @@ -5396,24 +5565,24 @@ checksum = "f27f6278552951f1f2b8cf9da965d10969b2efdea95a6ec47987ab46edfe263a" [[package]] name = "similar" -version = "2.2.1" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "420acb44afdae038210c99e69aae24109f32f15500aa708e81d46c9f29d55fcf" +checksum = "2aeaf503862c419d66959f5d7ca015337d864e9c49485d771b732e2a20453597" [[package]] name = "slab" -version = "0.4.8" +version = "0.4.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6528351c9bc8ab22353f9d776db39a20288e8d6c37ef8cfe3317cf875eecfc2d" +checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" dependencies = [ "autocfg", ] [[package]] name = "slotmap" -version = "1.0.6" +version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1e08e261d0e8f5c43123b7adf3e4ca1690d655377ac93a03b2c9d3e98de1342" +checksum = "dbff4acf519f630b3a3ddcfaea6c06b42174d9a44bc70c620e9ed1649d58b82a" dependencies = [ "serde", "version_check", @@ -5421,9 +5590,9 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.11.0" +version = "1.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62bb4feee49fdd9f707ef802e22365a35de4b7b299de4763d44bfea899442ff9" +checksum = "4dccd0940a2dcdf68d092b8cbab7dc0ad8fa938bf95787e1b916b0e3d0e8e970" dependencies = [ "serde", ] @@ -5441,9 +5610,9 @@ dependencies = [ [[package]] name = "smithay-client-toolkit" -version = "0.16.0" +version = "0.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f307c47d32d2715eb2e0ece5589057820e0e5e70d07c247d1063e844e107f454" +checksum = "870427e30b8f2cbe64bf43ec4b86e88fe39b0a84b3f15efd9c9c2d020bc86eb9" dependencies = [ "bitflags 1.3.2", "calloop", @@ -5470,20 +5639,36 @@ dependencies = [ [[package]] name = "socket2" -version = "0.4.9" +version = "0.4.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64a4a911eed85daf18834cfaa86a79b7d266ff93ff5ba14005426219480ed662" +checksum = "9f7916fc008ca5542385b89a3d3ce689953c143e9304a9bf8beec1de48994c0d" dependencies = [ "libc", "winapi", ] +[[package]] +name = "socket2" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b5fac59a5cb5dd637972e5fca70daf0523c9067fcdc4842f053dae04a18f8e9" +dependencies = [ + "libc", + "windows-sys 0.48.0", +] + [[package]] name = "spin" version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" +[[package]] +name = "spin" +version = "0.9.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" + [[package]] name = "spirv" version = "0.2.0+1.5.4" @@ -5594,9 +5779,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.27" +version = "2.0.39" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b60f673f44a8255b9c8c657daf66a596d435f2da81a555b06dc644d080ba45e0" +checksum = "23e78b90f2fcf45d3e842032ce32e3f2d1545ba6636271dcbf24fa306d87be7a" dependencies = [ "proc-macro2", "quote", @@ -5629,11 +5814,32 @@ dependencies = [ "winapi", ] +[[package]] +name = "system-configuration" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba3a3adc5c275d719af8cb4272ea1c4a6d668a777f37e115f6d11ddbc1c8e0e7" +dependencies = [ + "bitflags 1.3.2", + "core-foundation", + "system-configuration-sys", +] + +[[package]] +name = "system-configuration-sys" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75fb188eb626b924683e3b95e3a48e63551fcfb51949de2f06a9d91dbee93c9" +dependencies = [ + "core-foundation-sys", + "libc", +] + [[package]] name = "target-lexicon" -version = "0.12.10" +version = "0.12.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d2faeef5759ab89935255b1a4cd98e0baf99d1085e37d36599c625dac49ae8e" +checksum = "14c39fd04924ca3a864207c66fc2cd7d22d7c016007f9ce846cbb9326331930a" [[package]] name = "tempdir" @@ -5647,29 +5853,29 @@ dependencies = [ [[package]] name = "tempfile" -version = "3.7.0" +version = "3.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5486094ee78b2e5038a6382ed7645bc084dc2ec433426ca4c3cb61e2007b8998" +checksum = "7ef1adac450ad7f4b3c28589471ade84f25f731a7a0fe30d71dfa9f60fd808e5" dependencies = [ "cfg-if", - "fastrand 2.0.0", - "redox_syscall 0.3.5", - "rustix 0.38.4", + "fastrand 2.0.1", + "redox_syscall 0.4.1", + "rustix 0.38.26", "windows-sys 0.48.0", ] [[package]] name = "termcolor" -version = "1.2.0" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be55cf8942feac5c765c2c993422806843c9a9a45d4d5c407ad6dd2ea95eb9b6" +checksum = "ff1bc3d3f05aff0403e8ac0d92ced918ec05b666a43f83297ccef5bea8a3d449" dependencies = [ "winapi-util", ] [[package]] name = "test_image_memory" -version = "0.1.4" +version = "0.1.5" dependencies = [ "depthai-viewer", "mimalloc", @@ -5684,40 +5890,39 @@ checksum = "222a222a5bfe1bba4a77b45ec488a741b3cb8872e5e499451fd7d0129c9c7c3d" [[package]] name = "thiserror" -version = "1.0.44" +version = "1.0.50" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "611040a08a0439f8248d1990b111c95baa9c704c805fa1f62104b39655fd7f90" +checksum = "f9a7210f5c9a7156bb50aa36aed4c95afb51df0df00713949448cf9e97d382d2" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.44" +version = "1.0.50" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "090198534930841fab3a5d1bb637cde49e339654e606195f8d9c76eeb081dc96" +checksum = "266b2e40bc00e5a6c09c3584011e08b06f123c00362c92b975ba9843aaaa14b8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.27", + "syn 2.0.39", ] [[package]] name = "thread-id" -version = "4.1.0" +version = "4.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ee93aa2b8331c0fec9091548843f2c90019571814057da3b783f9de09349d73" +checksum = "f0ec81c46e9eb50deaa257be2f148adf052d1fb7701cfd55ccfab2525280b70b" dependencies = [ "libc", - "redox_syscall 0.2.16", "winapi", ] [[package]] name = "tiff" -version = "0.8.1" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7449334f9ff2baf290d55d73983a7d6fa15e01198faef72af07e2a8db851e471" +checksum = "6d172b0f4d3fba17ba89811858b9d3d97f928aece846475bbda076ca46736211" dependencies = [ "flate2", "jpeg-decoder", @@ -5726,23 +5931,14 @@ dependencies = [ [[package]] name = "time" -version = "0.1.45" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b797afad3f312d1c66a56d11d0316f916356d11bd158fbc6ca6389ff6bf805a" -dependencies = [ - "libc", - "wasi 0.10.0+wasi-snapshot-preview1", - "winapi", -] - -[[package]] -name = "time" -version = "0.3.23" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59e399c068f43a5d116fedaf73b203fa4f9c519f17e2b34f63221d3792f81446" +checksum = "c4a34ab300f2dee6e562c10a046fc05e358b29f9bf92277f30c3c8d82275f6f5" dependencies = [ + "deranged", "itoa", "js-sys", + "powerfmt", "serde", "time-core", "time-macros", @@ -5750,15 +5946,15 @@ dependencies = [ [[package]] name = "time-core" -version = "0.1.1" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7300fbefb4dadc1af235a9cef3737cea692a9d97e1b9cbcd4ebdae6f8868e6fb" +checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" [[package]] name = "time-macros" -version = "0.2.10" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96ba15a897f3c86766b757e5ac7221554c6750054d74d5b28844fce5fb36a6c4" +checksum = "4ad70d68dba9e1f8aceda7aa6711965dfec1cac869f311a51bd08b3a2ccbce20" dependencies = [ "time-core", ] @@ -5828,36 +6024,35 @@ version = "3.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "57381207291289bad19de63acd3fbf5948ff99b2868116c367b7224c37d55f90" dependencies = [ - "ahash 0.8.3", + "ahash", ] [[package]] name = "tokio" -version = "1.29.1" +version = "1.34.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "532826ff75199d5833b9d2c5fe410f29235e25704ee5f0ef599fb51c21f4a4da" +checksum = "d0c014766411e834f7af5b8f4cf46257aab4036ca95e9d2c144a10f59ad6f5b9" dependencies = [ - "autocfg", "backtrace", "bytes", "libc", "mio", "num_cpus", "pin-project-lite", - "socket2", + "socket2 0.5.5", "tokio-macros", "windows-sys 0.48.0", ] [[package]] name = "tokio-macros" -version = "2.1.0" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "630bdcf245f78637c13ec01ffae6187cca34625e8c63150d424b59e55af2675e" +checksum = "5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.27", + "syn 2.0.39", ] [[package]] @@ -5876,7 +6071,7 @@ version = "0.23.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c43ee83903113e03984cb9e5cebe6c04a5116269e900e3ddba8f068a62adda59" dependencies = [ - "rustls 0.20.8", + "rustls 0.20.9", "tokio", "webpki", ] @@ -5889,7 +6084,7 @@ checksum = "f714dd15bead90401d77e04243611caec13726c2408afd5b31901dfcdcb3b181" dependencies = [ "futures-util", "log", - "rustls 0.20.8", + "rustls 0.20.9", "tokio", "tokio-rustls", "tungstenite", @@ -5899,9 +6094,9 @@ dependencies = [ [[package]] name = "tokio-util" -version = "0.7.8" +version = "0.7.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "806fe8c2c87eccc8b3267cbae29ed3ab2d0bd37fca70ab622e46aaa9375ddb7d" +checksum = "5419f34732d9eb6ee4c3578b7989078579b7f039cbbb9ca2c4da015749371e15" dependencies = [ "bytes", "futures-core", @@ -5913,17 +6108,17 @@ dependencies = [ [[package]] name = "toml_datetime" -version = "0.6.3" +version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7cda73e2f1397b1262d6dfdcef8aafae14d1de7748d66822d3bfeeb6d03e5e4b" +checksum = "3550f4e9685620ac18a50ed434eb3aec30db8ba93b0287467bca5826ea25baf1" [[package]] name = "toml_edit" -version = "0.19.14" +version = "0.19.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8123f27e969974a3dfba720fdb560be359f57b44302d280ba72e76a74480e8a" +checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" dependencies = [ - "indexmap 2.0.0", + "indexmap 2.1.0", "toml_datetime", "winnow", ] @@ -5936,11 +6131,10 @@ checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52" [[package]] name = "tracing" -version = "0.1.37" +version = "0.1.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ce8c33a8d48bd45d624a6e523445fd21ec13d3653cd51f681abf67418f54eb8" +checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" dependencies = [ - "cfg-if", "log", "pin-project-lite", "tracing-attributes", @@ -5949,20 +6143,20 @@ dependencies = [ [[package]] name = "tracing-attributes" -version = "0.1.26" +version = "0.1.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f4f31f56159e98206da9efd823404b79b6ef3143b4a7ab76e67b1751b25a4ab" +checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.27", + "syn 2.0.39", ] [[package]] name = "tracing-core" -version = "0.1.31" +version = "0.1.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0955b8137a1df6f1a2e9a37d8a6656291ff0297c1a97c24e0d8425fe2312f79a" +checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" dependencies = [ "once_cell", "valuable", @@ -5970,9 +6164,9 @@ dependencies = [ [[package]] name = "tracing-subscriber" -version = "0.3.17" +version = "0.3.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30a651bc37f915e81f087d86e62a18eec5f79550c7faff886f7090b4ea757c77" +checksum = "ad0f048c97dbd9faa9b7df56362b8ebcaa52adb06b498c050d2f4e32f90a7a8b" dependencies = [ "tracing-core", ] @@ -5985,9 +6179,9 @@ checksum = "3528ecfd12c466c6f163363caf2d02a71161dd5e1cc6ae7b34207ea2d42d81ed" [[package]] name = "ttf-parser" -version = "0.19.1" +version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a464a4b34948a5f67fddd2b823c62d9d92e44be75058b99939eae6c5b6960b33" +checksum = "17f77d76d837a7830fe1d4f12b7b4ba4192c1888001c7164257e4bc6d21d96b4" [[package]] name = "tungstenite" @@ -6002,7 +6196,7 @@ dependencies = [ "httparse", "log", "rand 0.8.5", - "rustls 0.20.8", + "rustls 0.20.9", "sha-1", "thiserror", "url", @@ -6032,9 +6226,9 @@ dependencies = [ [[package]] name = "typenum" -version = "1.16.0" +version = "1.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "497961ef93d974e23eb6f433eb5fe1b7930b659f06d12dec6fc44a8f554c0bba" +checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" [[package]] name = "uds_windows" @@ -6063,9 +6257,9 @@ checksum = "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460" [[package]] name = "unicode-ident" -version = "1.0.11" +version = "1.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "301abaae475aa91687eb82514b328ab47a211a533026cb25fc3e519b86adfc3c" +checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" [[package]] name = "unicode-normalization" @@ -6084,9 +6278,9 @@ checksum = "1dd624098567895118886609431a7c3b8f516e41d30e0643f03d94592a147e36" [[package]] name = "unicode-width" -version = "0.1.10" +version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0edd1e5b14653f783770bce4a4dabb4a5108a5370a5f5d8cfe8710c361f6c8b" +checksum = "e51733f11c9c4f72aa0c160008246859e340b00807569a0da0e7a1079b27ba85" [[package]] name = "unicode-xid" @@ -6106,30 +6300,36 @@ version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4a" +[[package]] +name = "untrusted" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" + [[package]] name = "ureq" -version = "2.7.1" +version = "2.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b11c96ac7ee530603dcdf68ed1557050f374ce55a5a07193ebf8cbc9f8927e9" +checksum = "f8cdd25c339e200129fe4de81451814e5228c9b771d57378817d6117cc2b3f97" dependencies = [ - "base64 0.21.2", + "base64 0.21.5", "flate2", "log", "native-tls", "once_cell", - "rustls 0.21.5", - "rustls-webpki 0.100.1", + "rustls 0.21.9", + "rustls-webpki", "serde", "serde_json", "url", - "webpki-roots 0.23.1", + "webpki-roots 0.25.3", ] [[package]] name = "url" -version = "2.4.0" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50bff7831e19200a85b17131d085c25d7811bc4e186efdaf54bbd132994a88cb" +checksum = "31e6302e3bb753d46e83516cae55ae196fc0c309407cf11ab35cc51a4c2a4633" dependencies = [ "form_urlencoded", "idna", @@ -6157,9 +6357,9 @@ checksum = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a" [[package]] name = "uuid" -version = "1.4.1" +version = "1.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79daa5ed5740825c40b389c5e50312b9c86df53fccd33f281df655642b43869d" +checksum = "5e395fcf16a7a3d8127ec99782007af141946b4795001f876d54fb0d55978560" dependencies = [ "getrandom", "serde", @@ -6174,9 +6374,9 @@ checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" [[package]] name = "value-bag" -version = "1.4.1" +version = "1.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d92ccd67fb88503048c01b59152a04effd0782d035a83a6d256ce6085f08f4a3" +checksum = "4a72e1902dde2bd6441347de2b70b7f5d59bf157c6c62f0c44572607a1d55bbe" [[package]] name = "vcpkg" @@ -6204,15 +6404,15 @@ checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" [[package]] name = "waker-fn" -version = "1.1.0" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d5b2c62b4012a3e1eca5a7e077d13b3bf498c4073e33ccd58626607748ceeca" +checksum = "f3c4517f54858c779bbcbf228f4fca63d121bf85fbecb2dc578cdf4a39395690" [[package]] name = "walkdir" -version = "2.3.3" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36df944cda56c7d8d8b7496af378e6b16de9284591917d307c9b4d313c44e698" +checksum = "d71d857dc86794ca4c280d616f7da00d2dbfd8cd788846559a6813e6aa4b54ee" dependencies = [ "same-file", "winapi-util", @@ -6253,12 +6453,6 @@ dependencies = [ "try-lock", ] -[[package]] -name = "wasi" -version = "0.10.0+wasi-snapshot-preview1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a143597ca7c7793eff794def352d41792a93c481eb1042423ff7ff72ba2c31f" - [[package]] name = "wasi" version = "0.11.0+wasi-snapshot-preview1" @@ -6530,9 +6724,9 @@ dependencies = [ [[package]] name = "webbrowser" -version = "0.8.10" +version = "0.8.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd222aa310eb7532e3fd427a5d7db7e44bc0b0cf1c1e21139c345325511a85b6" +checksum = "82b2391658b02c27719fc5a0a73d6e696285138e8b12fba9d4baa70451023c71" dependencies = [ "core-foundation", "home", @@ -6547,12 +6741,12 @@ dependencies = [ [[package]] name = "webpki" -version = "0.22.0" +version = "0.22.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f095d78192e208183081cc07bc5515ef55216397af48b873e5edcd72637fa1bd" +checksum = "ed63aea5ce73d0ff405984102c42de94fc55a6b75765d621c65262469b3c9b53" dependencies = [ - "ring", - "untrusted", + "ring 0.17.7", + "untrusted 0.9.0", ] [[package]] @@ -6566,12 +6760,9 @@ dependencies = [ [[package]] name = "webpki-roots" -version = "0.23.1" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b03058f88386e5ff5310d9111d53f48b17d732b401aeb83a8d5190f2ac459338" -dependencies = [ - "rustls-webpki 0.100.1", -] +checksum = "1778a42e8b3b90bff8d0f5032bf22250792889a5cdc752aa0020c84abe3aaf10" [[package]] name = "weezl" @@ -6609,7 +6800,7 @@ source = "git+https://github.com/rerun-io/wgpu?rev=de497aeda152a3515bac5eb4bf1b1 dependencies = [ "arrayvec", "bit-vec", - "bitflags 2.3.3", + "bitflags 2.4.1", "codespan-reporting", "log", "naga", @@ -6633,7 +6824,7 @@ dependencies = [ "arrayvec", "ash", "bit-set", - "bitflags 2.3.3", + "bitflags 2.4.1", "block", "core-graphics-types", "d3d12", @@ -6646,7 +6837,7 @@ dependencies = [ "js-sys", "khronos-egl", "libc", - "libloading 0.8.0", + "libloading 0.8.1", "log", "metal", "naga", @@ -6670,20 +6861,21 @@ name = "wgpu-types" version = "0.16.0" source = "git+https://github.com/rerun-io/wgpu?rev=de497aeda152a3515bac5eb4bf1b17f1757b9dac#de497aeda152a3515bac5eb4bf1b17f1757b9dac" dependencies = [ - "bitflags 2.3.3", + "bitflags 2.4.1", "js-sys", "web-sys", ] [[package]] name = "which" -version = "4.4.0" +version = "4.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2441c784c52b289a054b7201fc93253e288f094e2f4be9058343127c4226a269" +checksum = "87ba24419a2078cd2b0f2ede2691b6c66d8e47836da3b6db8265ebad47afbfc7" dependencies = [ "either", - "libc", + "home", "once_cell", + "rustix 0.38.26", ] [[package]] @@ -6710,9 +6902,9 @@ checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" [[package]] name = "winapi-util" -version = "0.1.5" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178" +checksum = "f29e6f9198ba0d26b4c9f07dbe6f9ed633e1f3d5b8b414090084349e46a52596" dependencies = [ "winapi", ] @@ -6742,12 +6934,12 @@ dependencies = [ ] [[package]] -name = "windows" -version = "0.48.0" +name = "windows-core" +version = "0.51.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e686886bc078bc1b0b600cac0147aadb815089b6e4da64016cbd754b6342700f" +checksum = "f1f8cf84f35d2db49a46868f947758c7a1138116f7fac3bc844f43ade1292e64" dependencies = [ - "windows-targets 0.48.1", + "windows-targets 0.48.5", ] [[package]] @@ -6765,7 +6957,16 @@ version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" dependencies = [ - "windows-targets 0.48.1", + "windows-targets 0.48.5", +] + +[[package]] +name = "windows-sys" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" +dependencies = [ + "windows-targets 0.52.0", ] [[package]] @@ -6785,17 +6986,32 @@ dependencies = [ [[package]] name = "windows-targets" -version = "0.48.1" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" +dependencies = [ + "windows_aarch64_gnullvm 0.48.5", + "windows_aarch64_msvc 0.48.5", + "windows_i686_gnu 0.48.5", + "windows_i686_msvc 0.48.5", + "windows_x86_64_gnu 0.48.5", + "windows_x86_64_gnullvm 0.48.5", + "windows_x86_64_msvc 0.48.5", +] + +[[package]] +name = "windows-targets" +version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05d4b17490f70499f20b9e791dcf6a299785ce8af4d709018206dc5b4953e95f" +checksum = "8a18201040b24831fbb9e4eb208f8892e1f50a37feb53cc7ff887feb8f50e7cd" dependencies = [ - "windows_aarch64_gnullvm 0.48.0", - "windows_aarch64_msvc 0.48.0", - "windows_i686_gnu 0.48.0", - "windows_i686_msvc 0.48.0", - "windows_x86_64_gnu 0.48.0", - "windows_x86_64_gnullvm 0.48.0", - "windows_x86_64_msvc 0.48.0", + "windows_aarch64_gnullvm 0.52.0", + "windows_aarch64_msvc 0.52.0", + "windows_i686_gnu 0.52.0", + "windows_i686_msvc 0.52.0", + "windows_x86_64_gnu 0.52.0", + "windows_x86_64_gnullvm 0.52.0", + "windows_x86_64_msvc 0.52.0", ] [[package]] @@ -6806,9 +7022,15 @@ checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8" [[package]] name = "windows_aarch64_gnullvm" -version = "0.48.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91ae572e1b79dba883e0d315474df7305d12f569b400fcf90581b06062f7e1bc" +checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb7764e35d4db8a7921e09562a0304bf2f93e0a51bfccee0bd0bb0b666b015ea" [[package]] name = "windows_aarch64_msvc" @@ -6818,9 +7040,15 @@ checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43" [[package]] name = "windows_aarch64_msvc" -version = "0.48.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2ef27e0d7bdfcfc7b868b317c1d32c641a6fe4629c171b8928c7b08d98d7cf3" +checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbaa0368d4f1d2aaefc55b6fcfee13f41544ddf36801e793edbbfd7d7df075ef" [[package]] name = "windows_i686_gnu" @@ -6830,9 +7058,15 @@ checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f" [[package]] name = "windows_i686_gnu" -version = "0.48.0" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" + +[[package]] +name = "windows_i686_gnu" +version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "622a1962a7db830d6fd0a69683c80a18fda201879f0f447f065a3b7467daa241" +checksum = "a28637cb1fa3560a16915793afb20081aba2c92ee8af57b4d5f28e4b3e7df313" [[package]] name = "windows_i686_msvc" @@ -6842,9 +7076,15 @@ checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060" [[package]] name = "windows_i686_msvc" -version = "0.48.0" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" + +[[package]] +name = "windows_i686_msvc" +version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4542c6e364ce21bf45d69fdd2a8e455fa38d316158cfd43b3ac1c5b1b19f8e00" +checksum = "ffe5e8e31046ce6230cc7215707b816e339ff4d4d67c65dffa206fd0f7aa7b9a" [[package]] name = "windows_x86_64_gnu" @@ -6854,9 +7094,15 @@ checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36" [[package]] name = "windows_x86_64_gnu" -version = "0.48.0" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca2b8a661f7628cbd23440e50b05d705db3686f894fc9580820623656af974b1" +checksum = "3d6fa32db2bc4a2f5abeacf2b69f7992cd09dca97498da74a151a3132c26befd" [[package]] name = "windows_x86_64_gnullvm" @@ -6866,9 +7112,15 @@ checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3" [[package]] name = "windows_x86_64_gnullvm" -version = "0.48.0" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7896dbc1f41e08872e9d5e8f8baa8fdd2677f29468c4e156210174edc7f7b953" +checksum = "1a657e1e9d3f514745a572a6846d3c7aa7dbe1658c056ed9c3344c4109a6949e" [[package]] name = "windows_x86_64_msvc" @@ -6878,15 +7130,21 @@ checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0" [[package]] name = "windows_x86_64_msvc" -version = "0.48.0" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a515f5799fe4961cb532f983ce2b23082366b898e52ffbce459c86f67c8378a" +checksum = "dff9641d1cd4be8d1a070daf9e3773c5f67e78b4d9d42263020c057706765c04" [[package]] name = "winit" -version = "0.28.6" +version = "0.28.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "866db3f712fffba75d31bf0cdecf357c8aeafd158c5b7ab51dba2a2b2d47f196" +checksum = "9596d90b45384f5281384ab204224876e8e8bf7d58366d9b795ad99aa9894b94" dependencies = [ "android-activity", "bitflags 1.3.2", @@ -6919,20 +7177,21 @@ dependencies = [ [[package]] name = "winnow" -version = "0.5.1" +version = "0.5.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25b5872fa2e10bd067ae946f927e726d7d603eaeb6e02fa6a350e0722d2b8c11" +checksum = "b7e87b8dfbe3baffbe687eef2e164e32286eff31a5ee16463ce03d991643ec94" dependencies = [ "memchr", ] [[package]] name = "winreg" -version = "0.10.1" +version = "0.50.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80d0f4e272c85def139476380b12f9ac60926689dd2e01d4923222f40580869d" +checksum = "524e57b2c537c0f9b1e69f1965311ec12182b4122e45035b1508cd24d2adadb1" dependencies = [ - "winapi", + "cfg-if", + "windows-sys 0.48.0", ] [[package]] @@ -7012,12 +7271,12 @@ dependencies = [ [[package]] name = "x11rb" -version = "0.10.1" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "592b4883219f345e712b3209c62654ebda0bb50887f330cbd018d0f654bfd507" +checksum = "b1641b26d4dec61337c35a1b1aaf9e3cba8f46f0b43636c609ab0291a648040a" dependencies = [ "gethostname", - "nix 0.24.3", + "nix 0.26.4", "winapi", "winapi-wsapoll", "x11rb-protocol", @@ -7025,11 +7284,11 @@ dependencies = [ [[package]] name = "x11rb-protocol" -version = "0.10.0" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56b245751c0ac9db0e006dc812031482784e434630205a93c73cfefcaabeac67" +checksum = "82d6c3f9a0fb6701fab8f6cea9b0c0bd5d6876f1f89f7fada07e558077c344bc" dependencies = [ - "nix 0.24.3", + "nix 0.26.4", ] [[package]] @@ -7047,21 +7306,21 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2769203cd13a0c6015d515be729c526d041e9cf2c0cc478d57faee85f40c6dcd" dependencies = [ - "nix 0.26.2", + "nix 0.26.4", "winapi", ] [[package]] name = "xml-rs" -version = "0.8.16" +version = "0.8.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "47430998a7b5d499ccee752b41567bc3afc57e1327dc855b1a2aa44ce29b5fa1" +checksum = "0fcb9cbac069e033553e8bb871be2fbdffcab578eb25bd0f7c508cedc6dcd75a" [[package]] name = "xxhash-rust" -version = "0.8.6" +version = "0.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "735a71d46c4d68d71d4b24d03fdc2b98e38cea81730595801db779c04fe80d70" +checksum = "9828b178da53440fa9c766a3d2f73f7cf5d0ac1fe3980c1e5018d899fd19e07b" [[package]] name = "yaml-rust" @@ -7081,8 +7340,8 @@ dependencies = [ "async-broadcast", "async-executor", "async-fs", - "async-io", - "async-lock", + "async-io 1.13.0", + "async-lock 2.8.0", "async-process", "async-recursion", "async-task", @@ -7091,12 +7350,12 @@ dependencies = [ "byteorder", "derivative", "enumflags2", - "event-listener", + "event-listener 2.5.3", "futures-core", "futures-sink", "futures-util", "hex", - "nix 0.26.2", + "nix 0.26.4", "once_cell", "ordered-stream", "rand 0.8.5", @@ -7138,6 +7397,26 @@ dependencies = [ "zvariant", ] +[[package]] +name = "zerocopy" +version = "0.7.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d075cf85bbb114e933343e087b92f2146bac0d55b534cbb8188becf0039948e" +dependencies = [ + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.7.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "86cd5ca076997b97ef09d3ad65efe811fa68c9e874cb636ccb211223a813b0c2" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.39", +] + [[package]] name = "zip" version = "0.6.6" @@ -7171,12 +7450,11 @@ dependencies = [ [[package]] name = "zstd-sys" -version = "2.0.8+zstd.1.5.5" +version = "2.0.9+zstd.1.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5556e6ee25d32df2586c098bbfa278803692a20d0ab9565e049480d52707ec8c" +checksum = "9e16efa8a874a0481a574084d34cc26fdb3b99627480f785888deb6386506656" dependencies = [ "cc", - "libc", "pkg-config", ] diff --git a/Cargo.toml b/Cargo.toml index aa807cea6fd4..64cd1684c6b7 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -15,40 +15,40 @@ homepage = "https://rerun.io" include = ["../../LICENSE-APACHE", "../../LICENSE-MIT", "**/*.rs", "Cargo.toml"] license = "MIT OR Apache-2.0" repository = "https://github.com/rerun-io/rerun" -rust-version = "1.70" -version = "0.1.4" +rust-version = "1.74" +version = "0.1.5" [workspace.dependencies] # When using alpha-release, always use exact version, e.g. `version = "=0.x.y-alpha.z" # This is because we treat alpha-releases as incompatible, but semver doesn't. # In particular: if we compile rerun 0.3.0-alpha.0 we only want it to use # re_log_types 0.3.0-alpha.0, NOT 0.3.0-alpha.4 even though it is newer and semver-compatible. -re_sdk_comms = { path = "crates/re_sdk_comms", version = "0.1.4" } -re_analytics = { path = "crates/re_analytics", version = "0.1.4" } -re_arrow_store = { path = "crates/re_arrow_store", version = "0.1.4" } -re_build_build_info = { path = "crates/re_build_build_info", version = "0.1.4" } -re_build_info = { path = "crates/re_build_info", version = "0.1.4" } -re_build_web_viewer = { path = "crates/re_build_web_viewer", version = "0.1.4" } -re_data_store = { path = "crates/re_data_store", version = "0.1.4" } -re_error = { path = "crates/re_error", version = "0.1.4" } -re_format = { path = "crates/re_format", version = "0.1.4" } -re_int_histogram = { path = "crates/re_int_histogram", version = "0.1.4" } -re_log = { path = "crates/re_log", version = "0.1.4" } -re_log_encoding = { path = "crates/re_log_encoding", version = "0.1.4" } -re_log_types = { path = "crates/re_log_types", version = "0.1.4" } -re_memory = { path = "crates/re_memory", version = "0.1.4" } -re_query = { path = "crates/re_query", version = "0.1.4" } -re_renderer = { path = "crates/re_renderer", version = "0.1.4", default-features = false } -re_sdk = { path = "crates/re_sdk", version = "0.1.4" } -re_smart_channel = { path = "crates/re_smart_channel", version = "0.1.4" } -re_string_interner = { path = "crates/re_string_interner", version = "0.1.4" } -re_tensor_ops = { path = "crates/re_tensor_ops", version = "0.1.4" } -re_tuid = { path = "crates/re_tuid", version = "0.1.4" } -re_ui = { path = "crates/re_ui", version = "0.1.4" } -re_viewer = { path = "crates/re_viewer", version = "0.1.4", default-features = false } -re_web_viewer_server = { path = "crates/re_web_viewer_server", version = "0.1.4" } -re_ws_comms = { path = "crates/re_ws_comms", version = "0.1.4" } -depthai-viewer = { path = "crates/rerun", version = "0.1.4" } +re_sdk_comms = { path = "crates/re_sdk_comms", version = "0.1.5" } +re_analytics = { path = "crates/re_analytics", version = "0.1.5" } +re_arrow_store = { path = "crates/re_arrow_store", version = "0.1.5" } +re_build_build_info = { path = "crates/re_build_build_info", version = "0.1.5" } +re_build_info = { path = "crates/re_build_info", version = "0.1.5" } +re_build_web_viewer = { path = "crates/re_build_web_viewer", version = "0.1.5", default-features = false } +re_data_store = { path = "crates/re_data_store", version = "0.1.5" } +re_error = { path = "crates/re_error", version = "0.1.5" } +re_format = { path = "crates/re_format", version = "0.1.5" } +re_int_histogram = { path = "crates/re_int_histogram", version = "0.1.5" } +re_log = { path = "crates/re_log", version = "0.1.5" } +re_log_encoding = { path = "crates/re_log_encoding", version = "0.1.5" } +re_log_types = { path = "crates/re_log_types", version = "0.1.5" } +re_memory = { path = "crates/re_memory", version = "0.1.5" } +re_query = { path = "crates/re_query", version = "0.1.5" } +re_renderer = { path = "crates/re_renderer", version = "0.1.5", default-features = false } +re_sdk = { path = "crates/re_sdk", version = "0.1.5" } +re_smart_channel = { path = "crates/re_smart_channel", version = "0.1.5" } +re_string_interner = { path = "crates/re_string_interner", version = "0.1.5" } +re_tensor_ops = { path = "crates/re_tensor_ops", version = "0.1.5" } +re_tuid = { path = "crates/re_tuid", version = "0.1.5" } +re_ui = { path = "crates/re_ui", version = "0.1.5" } +re_viewer = { path = "crates/re_viewer", version = "0.1.5", default-features = false } +re_web_viewer_server = { path = "crates/re_web_viewer_server", version = "0.1.5" } +re_ws_comms = { path = "crates/re_ws_comms", version = "0.1.5" } +depthai-viewer = { path = "crates/rerun", version = "0.1.5" } ahash = "0.8" anyhow = "1.0" diff --git a/api.py b/api.py deleted file mode 100644 index cdc7ee253283..000000000000 --- a/api.py +++ /dev/null @@ -1,50 +0,0 @@ -import depthai_viewer as viewer -import cv2 -import depthai as dai -import queue - -viewer.init("Depthai Viewer") -viewer.connect() - -# Create pipeline -pipeline = dai.Pipeline() -color = pipeline.createColorCamera() -color.setResolution(dai.ColorCameraProperties.SensorResolution.THE_1080_P) -color.setFps(60) - -# Create output -xout = pipeline.createXLinkOut() -xout.setStreamName("color") -color.video.link(xout.input) - -q = queue.Queue(maxsize=4) - - -def color_frame_callback(frame: dai.ImgFrame): - global q - q.put(frame.getCvFrame()) - - -import time - -# Connect to device and start pipeline -with dai.Device(pipeline) as device: - q = device.getOutputQueue("color", maxSize=4, blocking=False) # .addCallback(color_frame_callback) - t = time.time_ns() - fps = 0 - display_fps = 0 - while True: - # in_color = q.get() - # cv2.imshow("color", in_color) - in_color = q.get() - fps += 1 - if time.time_ns() - t > 1e9: - display_fps = fps - fps = 0 - print("fps: ", display_fps) - t = time.time_ns() - frame = in_color.getCvFrame() - # cv2.putText(frame, f"fps: {display_fps:.2f}", (10, 30), cv2.FONT_HERSHEY_SIMPLEX, 1, (255, 0, 0), 2) - # cv2.imshow("color", frame) - viewer.log_image("color/camera/rgb/Color camera", cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)) - cv2.waitKey(1) diff --git a/crates/re_ui/src/lib.rs b/crates/re_ui/src/lib.rs index 9bf3a0d58683..3f15e4ae099e 100644 --- a/crates/re_ui/src/lib.rs +++ b/crates/re_ui/src/lib.rs @@ -83,12 +83,18 @@ pub struct ReUi { impl ReUi { /// Create [`ReUi`] and apply style to the given egui context. pub fn load_and_apply(egui_ctx: &egui::Context) -> Self { - Self { + let re_ui = Self { egui_ctx: egui_ctx.clone(), design_tokens: DesignTokens::load_and_apply(egui_ctx), static_image_cache: Arc::new(Mutex::new(StaticImageCache::default())), delayed_drag_values: Default::default(), - } + }; + //This is probably not the best place to set the visuals but it will do for now + let mut visuals = egui::Visuals::dark(); + + visuals.selection.bg_fill = Color32::from_rgb(88, 12, 236); + re_ui.egui_ctx.set_visuals(visuals); + re_ui } pub fn rerun_logo(&self) -> Arc { @@ -169,6 +175,7 @@ impl ReUi { menu_contents: impl FnOnce(&mut egui::Ui) -> R, ) { let align = egui::Align::Center; + let text_color = ui.style().visuals.weak_text_color(); let layout = if left_to_right { egui::Layout::left_to_right(align) } else { @@ -177,7 +184,7 @@ impl ReUi { ui.with_layout(layout, |ui| { if left_to_right { - ui.label(egui::RichText::new(label).color(self.design_tokens.gray_900)); + ui.label(egui::RichText::new(label).color(text_color)); } if wrap { ui.add_sized( @@ -203,12 +210,13 @@ impl ReUi { } if !left_to_right { - ui.label(egui::RichText::new(label).color(self.design_tokens.gray_900)); + ui.label(egui::RichText::new(label).color(text_color)); } }); } pub fn labeled_checkbox(&self, ui: &mut egui::Ui, label: &str, value: &mut bool) { + let text_color = ui.style().visuals.weak_text_color(); ui.with_layout(egui::Layout::right_to_left(egui::Align::Center), |ui| { ui.add_sized( [Self::box_width(), Self::box_height()], @@ -219,7 +227,7 @@ impl ReUi { .response }, ); - ui.label(egui::RichText::new(label).color(self.design_tokens.gray_900)); + ui.label(egui::RichText::new(label).color(text_color)); }); } @@ -283,6 +291,7 @@ impl ReUi { Num: egui::emath::Numeric, { let mut borrow_map = self.delayed_drag_values.borrow_mut(); + let text_color = ui.style().visuals.weak_text_color(); let state = borrow_map.entry(id).or_insert(DelayedDragState { delay_ms: delay.unwrap_or(0.0), last_update: instant::Instant::now(), @@ -294,7 +303,7 @@ impl ReUi { [Self::box_width(), Self::box_height()], egui::DragValue::new(&mut state.value).clamp_range(range), ); - ui.label(egui::RichText::new(label).color(self.design_tokens.gray_900)); + ui.label(egui::RichText::new(label).color(text_color)); response }) .inner; @@ -308,6 +317,7 @@ impl ReUi { } pub fn labeled_toggle_switch(&self, ui: &mut egui::Ui, label: &str, value: &mut bool) { + let text_color = ui.style().visuals.weak_text_color(); ui.with_layout(egui::Layout::right_to_left(egui::Align::Center), |ui| { ui.add_sized( [Self::box_width(), Self::box_height()], @@ -318,16 +328,18 @@ impl ReUi { .response }, ); - ui.label(egui::RichText::new(label).color(self.design_tokens.gray_900)); + ui.label(egui::RichText::new(label).color(text_color)); }); } pub fn top_panel_frame(&self) -> egui::Frame { let mut frame = egui::Frame { inner_margin: Self::top_bar_margin(), - fill: self.design_tokens.top_bar_color, + fill: self.egui_ctx.style().visuals.panel_fill, + // fill: self.design_tokens.top_bar_color, ..Default::default() }; + if CUSTOM_WINDOW_DECORATIONS { frame.rounding.nw = Self::native_window_rounding(); frame.rounding.ne = Self::native_window_rounding(); diff --git a/crates/re_viewer/src/app.rs b/crates/re_viewer/src/app.rs index a3a40e814e0b..d1e8db00470e 100644 --- a/crates/re_viewer/src/app.rs +++ b/crates/re_viewer/src/app.rs @@ -641,7 +641,8 @@ impl eframe::App for App { file_saver_progress_ui(egui_ctx, self); // toasts for background file saver - let mut main_panel_frame = egui::Frame::default(); + let mut main_panel_frame = egui::Frame::default().fill(egui_ctx.style().visuals.panel_fill); + if re_ui::CUSTOM_WINDOW_DECORATIONS { // Add some margin so that we can later paint an outline around it all. main_panel_frame.inner_margin = 1.0.into(); @@ -1424,22 +1425,22 @@ fn top_bar_ui( let extra_margin = (ui.available_height() - 24.0) / 2.0; ui.add_space(extra_margin); } - let mut blueprint_panel_expanded = blueprint.blueprint_panel_expanded; - if app - .re_ui - .medium_icon_toggle_button( - ui, - &re_ui::icons::LEFT_PANEL_TOGGLE, - &mut blueprint_panel_expanded, - ) - .on_hover_text(format!( - "Toggle Blueprint View{}", - Command::ToggleBlueprintPanel.format_shortcut_tooltip_suffix(ui.ctx()) - )) - .clicked() - { - app.pending_commands.push(Command::ToggleBlueprintPanel); - } + // let mut blueprint_panel_expanded = blueprint.blueprint_panel_expanded; + // if app + // .re_ui + // .medium_icon_toggle_button( + // ui, + // &re_ui::icons::LEFT_PANEL_TOGGLE, + // &mut blueprint_panel_expanded, + // ) + // .on_hover_text(format!( + // "Toggle Blueprint View{}", + // Command::ToggleBlueprintPanel.format_shortcut_tooltip_suffix(ui.ctx()) + // )) + // .clicked() + // { + // app.pending_commands.push(Command::ToggleBlueprintPanel); + // } if cfg!(debug_assertions) && app.state.app_options.show_metrics { ui.vertical_centered(|ui| { diff --git a/crates/re_viewer/src/depthai/dependency_installer.rs b/crates/re_viewer/src/depthai/dependency_installer.rs index fb67500ed58d..d0ffce6b3d2d 100644 --- a/crates/re_viewer/src/depthai/dependency_installer.rs +++ b/crates/re_viewer/src/depthai/dependency_installer.rs @@ -189,8 +189,9 @@ impl DependencyInstaller { } pub fn show(&mut self, re_ui: &re_ui::ReUi, ui: &mut egui::Ui) { + let panel_color = ui.style().visuals.panel_fill; let frame = egui::Frame::default() - .fill(egui::Color32::WHITE) + .fill(panel_color) .stroke(egui::Stroke::new(1.0, egui::Color32::GRAY)) .inner_margin(egui::Margin::symmetric(16.0, 0.0)) .rounding(8.0); @@ -202,11 +203,13 @@ impl DependencyInstaller { .resizable(true) .default_height(600.0) .show(ui.ctx(), |ui| { - let frame = egui::Frame::default().inner_margin(egui::Margin { - top: 24.0, - bottom: 4.0, - ..0.0.into() - }); + let frame = egui::Frame::default() + .fill(panel_color) + .inner_margin(egui::Margin { + top: 24.0, + bottom: 4.0, + ..0.0.into() + }); egui::TopBottomPanel::top("header") .frame(frame) .show_separator_line(false) @@ -248,33 +251,41 @@ impl DependencyInstaller { .show_inside(ui, |_| ()); let frame = egui::Frame::default() - .fill(egui::Color32::WHITE) + .fill(panel_color) .rounding(4.0) .stroke(egui::Stroke::new(1.0, re_ui.design_tokens.gray_400)) .inner_margin(egui::Margin::same(12.0)); - egui::CollapsingHeader::new("Details").show_unindented(ui, |ui| { - egui::CentralPanel::default() - .frame(frame) - .show_inside(ui, |ui| { - ui.with_layout(egui::Layout::right_to_left(egui::Align::TOP), |ui| { - if re_ui.small_icon_button(ui, &re_ui::icons::COPY).clicked() { - crate::misc::Clipboard::with(|clipboard| { - clipboard.set_text(self.stdio.clone()); - }); - } + egui::CollapsingHeader::new("Details") + .default_open(true) + .show_unindented(ui, |ui| { + egui::CentralPanel::default() + .frame(frame) + .show_inside(ui, |ui| { + ui.with_layout( + egui::Layout::right_to_left(egui::Align::TOP), + |ui| { + if re_ui + .small_icon_button(ui, &re_ui::icons::COPY) + .clicked() + { + crate::misc::Clipboard::with(|clipboard| { + clipboard.set_text(self.stdio.clone()); + }); + } + }, + ); + re_ui.styled_scrollbar( + ui, + re_ui::ScrollAreaDirection::Both, + [false; 2], + true, + |ui| { + ui.label(&self.stdio); + }, + ); }); - re_ui.styled_scrollbar( - ui, - re_ui::ScrollAreaDirection::Both, - [false; 2], - true, - |ui| { - ui.label(&self.stdio); - }, - ); - }); - }); + }); }); } diff --git a/crates/re_viewer/src/depthai/depthai.rs b/crates/re_viewer/src/depthai/depthai.rs index b58e64a3a71a..5e770cdcb208 100644 --- a/crates/re_viewer/src/depthai/depthai.rs +++ b/crates/re_viewer/src/depthai/depthai.rs @@ -130,6 +130,7 @@ pub enum CameraSensorResolution { THE_1440X1080, THE_1080_P, THE_1200_P, + THE_1280_P, THE_4_K, THE_4000X3000, THE_12_MP, @@ -149,6 +150,7 @@ impl fmt::Display for CameraSensorResolution { Self::THE_1440X1080 => write!(f, "1440x1080"), Self::THE_1080_P => write!(f, "1080p"), Self::THE_1200_P => write!(f, "1200p"), + Self::THE_1280_P => write!(f, "1280p"), Self::THE_4_K => write!(f, "4k"), Self::THE_4000X3000 => write!(f, "4000x3000"), Self::THE_12_MP => write!(f, "12MP"), @@ -243,8 +245,8 @@ impl Default for DepthMedianFilter { } } -#[derive(serde::Deserialize, serde::Serialize, Clone, Copy, PartialEq, Debug)] -pub struct DepthConfig { +#[derive(serde::Deserialize, serde::Serialize, Clone, PartialEq, Debug)] +pub struct StereoDepthConfig { pub median: DepthMedianFilter, pub lr_check: bool, pub lrc_threshold: u64, @@ -256,7 +258,7 @@ pub struct DepthConfig { pub stereo_pair: (CameraBoardSocket, CameraBoardSocket), } -impl Default for DepthConfig { +impl Default for StereoDepthConfig { fn default() -> Self { Self { median: DepthMedianFilter::default(), @@ -267,17 +269,17 @@ impl Default for DepthConfig { sigma: 0, confidence: 230, align: CameraBoardSocket::RGB, - stereo_pair: (CameraBoardSocket::CAM_A, CameraBoardSocket::CAM_C), + stereo_pair: (CameraBoardSocket::CAM_B, CameraBoardSocket::CAM_C), } } } -impl DepthConfig { +impl StereoDepthConfig { pub fn default_as_option() -> Option { Some(Self::default()) } - pub fn only_runtime_configs_differ(&self, other: &DepthConfig) -> bool { + pub fn only_runtime_configs_differ(&self, other: &StereoDepthConfig) -> bool { self.lr_check == other.lr_check && self.align == other.align && self.extended_disparity == other.extended_disparity @@ -286,12 +288,14 @@ impl DepthConfig { } } -impl From<&DeviceProperties> for Option { +impl From<&DeviceProperties> for Option { fn from(props: &DeviceProperties) -> Self { - let mut config = DepthConfig::default(); - let Some(cam_with_stereo_pair) = props.cameras + let mut config = StereoDepthConfig::default(); + let Some(cam_with_stereo_pair) = props + .cameras .iter() - .find(|feat| !feat.stereo_pairs.is_empty()) else { + .find(|feat| !feat.stereo_pairs.is_empty()) + else { return None; }; if let Some((cam_a, cam_b)) = props.default_stereo_pair { @@ -312,20 +316,22 @@ impl From<&DeviceProperties> for Option { #[derive(serde::Deserialize, serde::Serialize, Clone)] pub struct DeviceConfig { + pub auto: bool, // Should the backend automatically create a pipeline? pub cameras: Vec, #[serde(default = "bool_true")] pub depth_enabled: bool, // Much easier to have an explicit bool for checkbox - #[serde(default = "DepthConfig::default_as_option")] - pub depth: Option, + #[serde(default = "StereoDepthConfig::default_as_option")] + pub depth: Option, pub ai_model: AiModel, } impl Default for DeviceConfig { fn default() -> Self { Self { + auto: false, cameras: Vec::new(), depth_enabled: true, - depth: Some(DepthConfig::default()), + depth: Some(StereoDepthConfig::default()), ai_model: AiModel::default(), } } @@ -357,7 +363,7 @@ impl From<&DeviceProperties> for DeviceConfig { kind: *cam.supported_types.first().unwrap(), }) .collect(); - config.depth = Option::::from(props); + config.depth = Option::::from(props); config.ai_model = AiModel::from(props); config } @@ -503,6 +509,7 @@ impl AiModel { impl From<&DeviceProperties> for AiModel { fn from(props: &DeviceProperties) -> Self { let mut model = Self::default(); + if let Some(cam) = props.cameras.iter().find(|cam| cam.is_color_camera()) { model.camera = cam.board_socket; } else if let Some(cam) = props.cameras.first() { @@ -646,12 +653,10 @@ impl State { old_config: &DeviceConfig, new_config: &DeviceConfig, ) -> bool { - let any_runtime_conf_changed = old_config.depth.is_some() - && new_config.depth.is_some() - && old_config - .depth - .unwrap() - .only_runtime_configs_differ(&new_config.depth.unwrap()); // || others to be added + let any_runtime_conf_changed = match (&old_config.depth, &new_config.depth) { + (Some(old_depth), Some(new_depth)) => old_depth.only_runtime_configs_differ(new_depth), + _ => false, + }; any_runtime_conf_changed && old_config.cameras == new_config.cameras && old_config.ai_model == new_config.ai_model @@ -760,8 +765,8 @@ impl State { } self.applied_device_config.config = Some(config.clone()); self.modified_device_config = config.clone(); - let Some(applied_device_config) = - self.applied_device_config.config.as_mut() else { + let Some(applied_device_config) = self.applied_device_config.config.as_mut() + else { self.reset(); self.applied_device_config.update_in_progress = false; return; @@ -769,6 +774,7 @@ impl State { applied_device_config.depth_enabled = config.depth.is_some(); self.modified_device_config.depth_enabled = self.modified_device_config.depth.is_some(); + self.modified_device_config.auto = false; // Always reset auto self.set_subscriptions(&subs); self.set_update_in_progress(false); } @@ -776,6 +782,7 @@ impl State { re_log::debug!("Setting device: {device:?}"); self.set_device(device); if !self.selected_device.id.is_empty() { + self.modified_device_config.auto = true; // Apply default pipeline self.set_pipeline(&mut self.modified_device_config.clone(), false); } diff --git a/crates/re_viewer/src/native.rs b/crates/re_viewer/src/native.rs index 37edb5399def..75b14136432d 100644 --- a/crates/re_viewer/src/native.rs +++ b/crates/re_viewer/src/native.rs @@ -1,9 +1,8 @@ -use re_log_types::LogMsg; use crate::APPLICATION_NAME; +use re_log_types::LogMsg; -type AppCreator = Box< - dyn FnOnce(&eframe::CreationContext<'_>, re_ui::ReUi) -> Box ->; +type AppCreator = + Box, re_ui::ReUi) -> Box>; // NOTE: the name of this function is hard-coded in `crates/rerun/src/crash_handler.rs`! pub fn run_native_app(app_creator: AppCreator) -> eframe::Result<()> { @@ -18,9 +17,13 @@ pub fn run_native_app(app_creator: AppCreator) -> eframe::Result<()> { decorated: !re_ui::CUSTOM_WINDOW_DECORATIONS, // To have rounded corners we need transparency: transparent: re_ui::CUSTOM_WINDOW_DECORATIONS, - + // icon_data: Some(eframe::IconData { + // rgba: re_ui::icons::APP_ICON.png_bytes.to_vec(), + // width: 96, + // height: 96, + // }), follow_system_theme: false, - default_theme: eframe::Theme::Light, + default_theme: eframe::Theme::Dark, renderer: eframe::Renderer::Wgpu, wgpu_options: crate::wgpu_options(), @@ -36,7 +39,7 @@ pub fn run_native_app(app_creator: AppCreator) -> eframe::Result<()> { Box::new(move |cc| { let re_ui = crate::customize_eframe(cc); app_creator(cc, re_ui) - }) + }), ) } @@ -44,25 +47,21 @@ pub fn run_native_viewer_with_messages( build_info: re_build_info::BuildInfo, app_env: crate::AppEnvironment, startup_options: crate::StartupOptions, - log_messages: Vec + log_messages: Vec, ) -> eframe::Result<()> { let (tx, rx) = re_smart_channel::smart_channel(re_smart_channel::Source::Sdk); for log_msg in log_messages { tx.send(log_msg).ok(); } - run_native_app( - Box::new(move |cc, re_ui| { - Box::new( - crate::App::from_receiver( - build_info, - &app_env, - startup_options, - re_ui, - cc.storage, - rx, - std::sync::Arc::new(std::sync::atomic::AtomicBool::new(false)) - ) - ) - }) - ) + run_native_app(Box::new(move |cc, re_ui| { + Box::new(crate::App::from_receiver( + build_info, + &app_env, + startup_options, + re_ui, + cc.storage, + rx, + std::sync::Arc::new(std::sync::atomic::AtomicBool::new(false)), + )) + })) } diff --git a/crates/re_viewer/src/ui/auto_layout.rs b/crates/re_viewer/src/ui/auto_layout.rs index e94a085fe9a1..819900902158 100644 --- a/crates/re_viewer/src/ui/auto_layout.rs +++ b/crates/re_viewer/src/ui/auto_layout.rs @@ -340,7 +340,7 @@ fn create_inner_viewport_layout( .iter() .filter(|space| { if let Some(last) = space.path.as_ref().and_then(|path| path.as_slice().last()) { - last == &EntityPathPart::from("color_cam") + last == &EntityPathPart::from("color_cam") || last == &EntityPathPart::from("tof") // Treat TOF as color for now } else { false } @@ -551,8 +551,8 @@ pub(crate) fn default_tree_from_space_views( let tree_clone = tree.clone(); let color_tabs = tree_clone.tabs().filter(|tab| { if let Some(space_path) = tab.space_path.clone() { - if let Some(first_part) = space_path.as_slice().first() { - first_part == &EntityPathPart::from("CAM_A") + if let Some(first_part) = space_path.as_slice().get(space_path.len() - 2) { + first_part == &EntityPathPart::from("color_cam") } else { false } diff --git a/crates/re_viewer/src/ui/blueprint.rs b/crates/re_viewer/src/ui/blueprint.rs index 969fb15465f5..21dbcf773d4d 100644 --- a/crates/re_viewer/src/ui/blueprint.rs +++ b/crates/re_viewer/src/ui/blueprint.rs @@ -18,7 +18,7 @@ impl Blueprint { pub fn new(egui_ctx: &egui::Context) -> Self { let screen_size = egui_ctx.screen_rect().size(); Self { - blueprint_panel_expanded: true, + blueprint_panel_expanded: false, selection_panel_expanded: true, time_panel_expanded: screen_size.y > 600.0, viewport: Default::default(), @@ -27,7 +27,6 @@ impl Blueprint { pub fn blueprint_panel_and_viewport(&mut self, ctx: &mut ViewerContext<'_>, ui: &mut egui::Ui) { crate::profile_function!(); - let spaces_info = SpaceInfoCollection::new(&ctx.log_db.entity_db); self.viewport.on_frame_start(ctx, &spaces_info); diff --git a/crates/re_viewer/src/ui/device_settings_panel.rs b/crates/re_viewer/src/ui/device_settings_panel.rs index c8f7445567b9..bb58ae97fb60 100644 --- a/crates/re_viewer/src/ui/device_settings_panel.rs +++ b/crates/re_viewer/src/ui/device_settings_panel.rs @@ -1,5 +1,5 @@ use crate::{ - depthai::depthai::{self, CameraBoardSocket}, + depthai::depthai::{self}, misc::ViewerContext, }; @@ -10,7 +10,7 @@ use strum::IntoEnumIterator; // Needed for enum::iter() #[serde(default)] pub(crate) struct DeviceSettingsPanel {} -const CONFIG_UI_WIDTH: f32 = 224.0; +const CONFIG_UI_WIDTH: f32 = 280.0; impl DeviceSettingsPanel { #[allow(clippy::unused_self)] @@ -26,12 +26,14 @@ impl DeviceSettingsPanel { egui::CentralPanel::default() .frame(egui::Frame { inner_margin: egui::Margin::same(0.0), - fill: egui::Color32::WHITE, + fill: ui.visuals().panel_fill, + // fill: egui::Color32::WHITE, ..Default::default() }) .show_inside(ui, |ui| { (egui::Frame { inner_margin: egui::Margin::same(re_ui::ReUi::view_padding()), + fill: ui.visuals().panel_fill, ..Default::default() }) .show(ui, |ui| { @@ -163,9 +165,10 @@ impl DeviceSettingsPanel { camera_features: &depthai::CameraFeatures, camera_config: &mut depthai::CameraConfig, ) { - let primary_700 = ctx.re_ui.design_tokens.primary_700; + // let text_color = ctx.re_ui.design_tokens.primary_700; + let text_color = ui.style().visuals.strong_text_color(); egui::CollapsingHeader::new( - egui::RichText::new(camera_features.board_socket.display_name(ctx)).color(primary_700), + egui::RichText::new(camera_features.board_socket.display_name(ctx)).color(text_color), ) .default_open(true) .show(ui, |ui| { @@ -204,14 +207,16 @@ impl DeviceSettingsPanel { 0..=camera_features.max_fps, ); ctx.re_ui - .labeled_checkbox(ui, "Stream", &mut camera_config.stream_enabled); + .labeled_toggle_switch(ui, "Stream", &mut camera_config.stream_enabled); }); }); } fn device_configuration_ui(ctx: &mut ViewerContext<'_>, ui: &mut egui::Ui) { let mut device_config = ctx.depthai_state.modified_device_config.clone(); - let primary_700 = ctx.re_ui.design_tokens.primary_700; + + let text_color = ui.style().visuals.strong_text_color(); + // let text_color = ctx.re_ui.design_tokens.primary_700; let connected_cameras = ctx.depthai_state.get_connected_cameras().clone(); ctx.re_ui.styled_scrollbar( @@ -221,7 +226,7 @@ impl DeviceSettingsPanel { false, |ui| { (egui::Frame { - fill: ctx.re_ui.design_tokens.gray_50, + fill: ui.style().visuals.panel_fill, inner_margin: egui::Margin::symmetric(30.0, 21.0), ..Default::default() }) @@ -229,16 +234,18 @@ impl DeviceSettingsPanel { ui.horizontal(|ui| { ui.vertical(|ui| { for cam in connected_cameras.clone() { - let Some(config) = device_config.cameras - .iter_mut() - .find(|conf| conf.board_socket == cam.board_socket) else { - continue; - }; + let Some(config) = device_config + .cameras + .iter_mut() + .find(|conf| conf.board_socket == cam.board_socket) + else { + continue; + }; Self::camera_config_ui(ctx, ui, &cam, config); } ui.collapsing( - egui::RichText::new("AI settings").color(primary_700), + egui::RichText::new("AI settings").color(text_color), |ui| { ui.vertical(|ui| { ui.set_width(CONFIG_UI_WIDTH); @@ -265,7 +272,17 @@ impl DeviceSettingsPanel { false, true, |ui| { - for cam in &connected_cameras { + let filtered_cameras: Vec<_> = connected_cameras + .iter() // iterates over references + .filter(|cam| { + !(cam.supported_types.contains( + &depthai::CameraSensorKind::THERMAL, + ) || cam.supported_types.contains( + &depthai::CameraSensorKind::TOF, + )) + }) + .collect(); + for cam in filtered_cameras { ui.selectable_value( &mut device_config.ai_model.camera, cam.board_socket, @@ -283,7 +300,7 @@ impl DeviceSettingsPanel { ctx.depthai_state.selected_device.has_stereo_pairs(), |ui| { egui::CollapsingHeader::new( - egui::RichText::new("Depth Settings").color(primary_700), + egui::RichText::new("Depth Settings").color(text_color), ) .open( if !ctx.depthai_state.selected_device.has_stereo_pairs() { @@ -324,7 +341,7 @@ impl DeviceSettingsPanel { } }, ); - ctx.re_ui.labeled_checkbox( + ctx.re_ui.labeled_toggle_switch( ui, "LR Check", &mut depth.lr_check, @@ -370,12 +387,12 @@ impl DeviceSettingsPanel { &mut depth.lrc_threshold, 0..=10, ); - ctx.re_ui.labeled_checkbox( + ctx.re_ui.labeled_toggle_switch( ui, "Extended Disparity", &mut depth.extended_disparity, ); - ctx.re_ui.labeled_checkbox( + ctx.re_ui.labeled_toggle_switch( ui, "Subpixel Disparity", &mut depth.subpixel_disparity, @@ -452,14 +469,11 @@ impl DeviceSettingsPanel { ui.add_enabled_ui(apply_enabled, |ui| { ui.scope(|ui| { let mut style = ui.style_mut().clone(); + let color = style.visuals.selection.bg_fill; + //TODO(tomas):Investigate whether this could be default button style if apply_enabled { - let color = - ctx.re_ui.design_tokens.primary_bg_color; - let hover_color = - ctx.re_ui.design_tokens.primary_hover_bg_color; - style.visuals.widgets.hovered.bg_fill = hover_color; - style.visuals.widgets.hovered.weak_bg_fill = - hover_color; + style.visuals.widgets.hovered.bg_fill = color; + style.visuals.widgets.hovered.weak_bg_fill = color; style.visuals.widgets.inactive.bg_fill = color; style.visuals.widgets.inactive.weak_bg_fill = color; style.visuals.widgets.inactive.fg_stroke.color = diff --git a/crates/re_viewer/src/ui/selection_panel.rs b/crates/re_viewer/src/ui/selection_panel.rs index f10cf76ca97e..fabc68b9c611 100644 --- a/crates/re_viewer/src/ui/selection_panel.rs +++ b/crates/re_viewer/src/ui/selection_panel.rs @@ -364,6 +364,13 @@ fn colormap_props_ui( ) { // Color mapping picker { + if entity_props.color_mapper.get() == &ColorMapper::AlbedoTexture { + if entity_props.albedo_texture.is_none() { + entity_props.color_mapper = EditableAutoValue::Auto(ColorMapper::Colormap( + Colormap::Turbo, // Same default as in images.rs (scene part) + )); + } + } let current = *entity_props.color_mapper.get(); ui.label("Color map"); egui::ComboBox::from_id_source("depth_color_mapper") diff --git a/crates/re_viewer/src/ui/space_view.rs b/crates/re_viewer/src/ui/space_view.rs index 79e32423fbf1..c788fe0909e8 100644 --- a/crates/re_viewer/src/ui/space_view.rs +++ b/crates/re_viewer/src/ui/space_view.rs @@ -98,8 +98,9 @@ impl SpaceView { let mut is_2d = false; if !is_3d { let last_part = space_path.iter().last().unwrap(); - is_2d = (last_part == &EntityPathPart::from("mono_cam") + is_2d = ((last_part == &EntityPathPart::from("mono_cam") || last_part == &EntityPathPart::from("color_cam")) + || last_part == &EntityPathPart::from("tof")) && last_part != &EntityPathPart::from("transform"); } if let Some(board_socket) = diff --git a/crates/re_viewer/src/ui/space_view_heuristics.rs b/crates/re_viewer/src/ui/space_view_heuristics.rs index 612134c46639..d08e7b4d3c7f 100644 --- a/crates/re_viewer/src/ui/space_view_heuristics.rs +++ b/crates/re_viewer/src/ui/space_view_heuristics.rs @@ -207,7 +207,7 @@ fn default_depthai_space_views( .collect::>(); // If a depth tensor is found, we want to find the 2D space view that has the Image + Depth tensor. - // We then wan't to create two separate 2D space views, one for the image and one for the depth. + // We then want to create two separate 2D space views, one for the image and one for the depth. // But we only want to hide the depth (or image), not remove it from the space view. if let Some(depth_2d) = space_views .iter_mut() diff --git a/crates/re_viewer/src/ui/stats_panel.rs b/crates/re_viewer/src/ui/stats_panel.rs index d6038cb08ff2..3f0f6c98567f 100644 --- a/crates/re_viewer/src/ui/stats_panel.rs +++ b/crates/re_viewer/src/ui/stats_panel.rs @@ -132,6 +132,7 @@ impl StatsPanelState { if xlink_stats.timestamp == then { return; } + written = (written - total_written) / (xlink_stats.timestamp - then); read = (read - total_read) / (xlink_stats.timestamp - then); } @@ -145,21 +146,23 @@ impl StatsPanelState { (xlink_stats.bytes_read / 1e6 as i64) as f64, ], ); - self.avg_xlink_stats_plot_history.add( - xlink_stats.timestamp, - [ - self.xlink_stats_history - .iter() - .map(|(_, [written, _, _, _])| written) - .sum::() - / self.xlink_stats_history.len() as f64, - self.xlink_stats_history - .iter() - .map(|(_, [_, read, _, _])| read) - .sum::() - / self.xlink_stats_history.len() as f64, - ], - ); + let written_sum = self + .xlink_stats_history + .iter() + .map(|(_, [written, _, _, _])| written) + .sum::(); + let read_sum = self + .xlink_stats_history + .iter() + .map(|(_, [_, read, _, _])| read) + .sum::(); + let history_len = self.xlink_stats_history.len() as f64; + + let written_avg = written_sum / history_len; + let read_avg = read_sum / history_len; + + self.avg_xlink_stats_plot_history + .add(now, [written_avg, read_avg]); }); } } @@ -233,16 +236,17 @@ impl<'a, 'b> StatsTabs<'a, 'b> { inner_margin: egui::Margin::same(re_ui::ReUi::view_padding()), ..Default::default() } - .show(ui, |ui| { + .show(ui, |ui| + { let (history, display_name, unit) = ( &mut self.state.avg_xlink_stats_plot_history, "XLink throughput", "", ); let Some(latest) = history.latest() else { - ui.label(format!("No {display_name} data yet")); - return; - }; + ui.label(format!("No {display_name} data yet")); + return; + }; ui.label(format!( "{display_name}: avg. Sent from device {:.2} MB/s, avg. Sent to Device: {:.2} MB/s", latest[0], latest[1] diff --git a/crates/re_viewer/src/ui/view_spatial/scene/scene_part/images.rs b/crates/re_viewer/src/ui/view_spatial/scene/scene_part/images.rs index d7f6d9731d0e..2e00c22fbb24 100644 --- a/crates/re_viewer/src/ui/view_spatial/scene/scene_part/images.rs +++ b/crates/re_viewer/src/ui/view_spatial/scene/scene_part/images.rs @@ -2,7 +2,7 @@ use egui::NumExt; use glam::Vec3; use itertools::Itertools; -use re_data_store::{ query_latest_single, EntityPath, EntityProperties }; +use re_data_store::{ query_latest_single, EntityPath, EntityProperties, EditableAutoValue }; use re_log_types::{ component_types::{ ColorRGBA, InstanceKey, Tensor, TensorData, TensorDataMeaning }, Component, @@ -344,7 +344,9 @@ impl ImagesPart { "Albedo texture couldn't be fetched ({:?})", properties.albedo_texture ); - colormap = Colormap::Grayscale; + colormap = Colormap::Turbo; + // Would need some way to update the space view blueprint properties here - to reflect the change in colormap. + // For now set the matching default in selection_panel.rs } } diff --git a/crates/re_viewer/src/ui/viewport.rs b/crates/re_viewer/src/ui/viewport.rs index 172b7051bd36..018b3191493b 100644 --- a/crates/re_viewer/src/ui/viewport.rs +++ b/crates/re_viewer/src/ui/viewport.rs @@ -824,31 +824,31 @@ fn space_view_options_ui( return; }; - if ctx - .re_ui - .small_icon_button(ui, &re_ui::icons::ADD) - .clicked() - { - // Create a new space view that is identical to this one - let new_sv = space_view.duplicate(ctx); - let id = new_sv.id.clone(); - viewport.add_space_view(new_sv); - viewport - .has_been_user_edited - .insert(viewport.space_views[&id].space_path.clone(), true); - } - - if ctx - .re_ui - .small_icon_button(ui, &re_ui::icons::REMOVE) - .clicked() - { - viewport.has_been_user_edited.insert( - viewport.space_views[&space_view_id].space_path.clone(), - true, - ); - viewport.remove(&space_view_id); - } + // if ctx + // .re_ui + // .small_icon_button(ui, &re_ui::icons::ADD) + // .clicked() + // { + // // Create a new space view that is identical to this one + // let new_sv = space_view.duplicate(ctx); + // let id = new_sv.id.clone(); + // viewport.add_space_view(new_sv); + // viewport + // .has_been_user_edited + // .insert(viewport.space_views[&id].space_path.clone(), true); + // } + + // if ctx + // .re_ui + // .small_icon_button(ui, &re_ui::icons::REMOVE) + // .clicked() + // { + // viewport.has_been_user_edited.insert( + // viewport.space_views[&space_view_id].space_path.clone(), + // true, + // ); + // viewport.remove(&space_view_id); + // } // Show help last, since not all space views have help text help_text_ui(ui, &space_view); diff --git a/rerun_py/depthai_viewer/_backend/.gitignore b/rerun_py/depthai_viewer/_backend/.gitignore index 32b40b2abc94..a3857a0ee5c0 100644 --- a/rerun_py/depthai_viewer/_backend/.gitignore +++ b/rerun_py/depthai_viewer/_backend/.gitignore @@ -1,4 +1,5 @@ .venv +venv* .vscode __pycache__ rs_try diff --git a/rerun_py/depthai_viewer/_backend/device.py b/rerun_py/depthai_viewer/_backend/device.py index cdc05e4348ae..f22388e80518 100644 --- a/rerun_py/depthai_viewer/_backend/device.py +++ b/rerun_py/depthai_viewer/_backend/device.py @@ -1,26 +1,31 @@ import itertools import time +from queue import Empty as QueueEmpty from queue import Queue from typing import Dict, List, Optional, Tuple import depthai as dai import numpy as np from depthai_sdk import OakCamera +from depthai_sdk.classes.packet_handlers import ComponentOutput from depthai_sdk.components import CameraComponent, NNComponent, StereoComponent from depthai_sdk.components.camera_helper import ( getClosestIspScale, ) +from depthai_sdk.components.tof_component import Component from numpy.typing import NDArray import depthai_viewer as viewer -from depthai_viewer._backend import classification_labels from depthai_viewer._backend.device_configuration import ( + ALL_NEURAL_NETWORKS, CameraConfiguration, CameraFeatures, + CameraSensorResolution, DeviceInfo, DeviceProperties, ImuKind, PipelineConfiguration, + StereoDepthConfiguration, XLinkConnection, calculate_isp_scale, compare_dai_camera_configs, @@ -33,12 +38,7 @@ Message, WarningMessage, ) -from depthai_viewer._backend.packet_handler import ( - AiModelCallbackArgs, - DepthCallbackArgs, - PacketHandler, - SyncedCallbackArgs, -) +from depthai_viewer._backend.packet_handler import PacketHandler from depthai_viewer._backend.store import Store @@ -81,6 +81,7 @@ class Device: _xlink_statistics: Optional[XlinkStatistics] = None _sys_info_q: Optional[Queue] = None # type: ignore[type-arg] _pipeline_start_t: Optional[float] = None + _queues: List[Tuple[Component, ComponentOutput]] = [] # _profiler = cProfile.Profile() @@ -119,10 +120,15 @@ def _get_possible_stereo_pairs_for_cam( """Tries to find the possible stereo pairs for a camera.""" if self._oak is None: return [] - calib_data = self._oak.device.readCalibration() + try: + calib_data = self._oak.device.readCalibration2() + except RuntimeError: + print("No calibration available.") + return [] try: calib_data.getCameraIntrinsics(cam.socket) except IndexError: + print("No intrisics for cam: ", cam.socket) return [] possible_stereo_pairs = [] if cam.name == "right": @@ -182,22 +188,33 @@ def get_device_properties(self) -> DeviceProperties: else: device_properties.default_stereo_pair = (left_cam, right_cam) except RuntimeError: - pass + print("No calibration found while trying to fetch the default stereo pair.") ordered_resolutions = list(sorted(size_to_resolution.keys(), key=lambda res: res[0] * res[1])) for cam in connected_cam_features: prioritized_type = cam.supportedTypes[0] - biggest_width, biggest_height = [ + biggest_width_height = [ (conf.width, conf.height) for conf in cam.configs[::-1] if conf.type == prioritized_type - ][ - 0 - ] # Only support the prioritized type for now - - all_supported_resolutions = [ - size_to_resolution[(w, h)] - for w, h in ordered_resolutions - if (w * h) <= (biggest_height * biggest_width) ] + # Some sensors don't have configs, use the sensor width, height + if not biggest_width_height: + biggest_width, biggest_height = cam.width, cam.height + else: + biggest_width, biggest_height = biggest_width_height[0] + + if cam.supportedTypes[0] == dai.CameraSensorType.TOF: + all_supported_resolutions = [size_to_resolution[(biggest_width, biggest_height)]] + else: + all_supported_resolutions = list( + filter( + lambda x: x, # type: ignore[arg-type] + [ + size_to_resolution.get((w, h), None) + for w, h in ordered_resolutions + if (w * h) <= (biggest_height * biggest_width) + ], + ) + ) # Fill in lower resolutions that can be achieved with ISP scaling device_properties.cameras.append( @@ -215,7 +232,7 @@ def get_device_properties(self) -> DeviceProperties: [(cam.board_socket, pair) for pair in cam.stereo_pairs] for cam in device_properties.cameras ) ) - print("Device properties: ", device_properties.default_stereo_pair) + print("Default stereo pair: ", device_properties.default_stereo_pair) return device_properties def close_oak(self) -> None: @@ -237,7 +254,9 @@ def reconnect_to_oak(self) -> Message: timeout_start = time.time() while time.time() - timeout_start < 10: available_devices = [ - device.getMxId() for device in dai.Device.getAllAvailableDevices() # type: ignore[call-arg] + # type: ignore[call-arg] + device.getMxId() + for device in dai.Device.getAllAvailableDevices() ] if self.id in available_devices: break @@ -265,6 +284,71 @@ def _get_camera_config_by_socket( return None return camera[0] + def _create_auto_pipeline_config(self, config: PipelineConfiguration) -> Message: + if self._oak is None: + return ErrorMessage("Oak device unavailable, can't create auto pipeline config!") + if self._oak.device is None: + return ErrorMessage("No device selected, can't create auto pipeline config!") + connected_cam_features = self._oak.device.getConnectedCameraFeatures() + if not connected_cam_features: + return ErrorMessage("No camera features found, can't create auto pipeline config!") + + print("Connected camera features: ", connected_cam_features) + # Step 1: Create all the cameras. Try to find RGB cam, to align depth to it later + # Step 2: Create stereo depth if calibration is present. Align to RGB if present, otherwise to left cam + # Step 3: Create YOLO + rgb_cam_socket = None + # 1. Create all the cameras + config.cameras = [] + has_tof = False + for cam in connected_cam_features: + if cam.name == "rgb": # By convention + rgb_cam_socket = cam.socket + resolution = ( + CameraSensorResolution.THE_1080_P if cam.width >= 1920 else size_to_resolution[(cam.width, cam.height)] + ) + resolution = CameraSensorResolution.THE_1200_P if cam.height == 1200 else resolution + preferred_type = cam.supportedTypes[0] + if preferred_type == dai.CameraSensorType.TOF: + has_tof = True + config.cameras.append( + CameraConfiguration(resolution=resolution, kind=preferred_type, board_socket=cam.socket, name=cam.name) + ) + # 2. Create stereo depth + if not has_tof: + try: + calibration = self._oak.device.readCalibration2() + left_cam = calibration.getStereoLeftCameraId() + right_cam = calibration.getStereoRightCameraId() + if left_cam.value != 255 and right_cam.value != 255: + config.depth = StereoDepthConfiguration( + stereo_pair=(left_cam, right_cam), + align=rgb_cam_socket if rgb_cam_socket is not None else left_cam, + ) + except RuntimeError: + calibration = None + else: + config.depth = None + # 3. Create YOLO + nnet_cam_sock = rgb_cam_socket + if nnet_cam_sock is None: + # Try to find a color camera config + nnet_cam_sock = next( + filter( + lambda cam: cam.kind == dai.CameraSensorType.COLOR, # type: ignore[arg-type,union-attr] + config.cameras, + ), + None, + ) # type: ignore[assignment] + if nnet_cam_sock is not None: + nnet_cam_sock = nnet_cam_sock.board_socket + if nnet_cam_sock is not None: + config.ai_model = ALL_NEURAL_NETWORKS[1] # Mobilenet SSd + config.ai_model.camera = nnet_cam_sock + else: + config.ai_model = None + return InfoMessage("Created auto pipeline config") + def update_pipeline(self, runtime_only: bool) -> Message: if self._oak is None: return ErrorMessage("No device selected, can't update pipeline!") @@ -285,15 +369,15 @@ def update_pipeline(self, runtime_only: bool) -> Message: if isinstance(message, ErrorMessage): return message + if config.auto: + self._create_auto_pipeline_config(config) + self._cameras = [] self._stereo = None self._packet_handler.reset() self._sys_info_q = None self._pipeline_start_t = None - synced_outputs = [] - synced_callback_args = SyncedCallbackArgs() - is_poe = self._oak.device.getDeviceInfo().protocol == dai.XLinkProtocol.X_LINK_TCP_IP print("Usb speed: ", self._oak.device.getUsbSpeed()) is_usb2 = self._oak.device.getUsbSpeed() == dai.UsbSpeed.HIGH @@ -318,24 +402,28 @@ def update_pipeline(self, runtime_only: bool) -> Message: # When the resolution is too small, the ISP needs to scale it down res_x, res_y = get_size_from_resolution(cam.resolution) - does_sensor_support_resolution = any( - [ - config.width == res_x and config.height == res_y - for config in camera_features.configs - if config.type == camera_features.supportedTypes[0] - ] - ) + does_sensor_support_resolution = ( + any( + [ + config.width == res_x and config.height == res_y + for config in camera_features.configs + if config.type == camera_features.supportedTypes[0] + ] + ) + or len(camera_features.configs) == 0 + ) # Some sensors don't have any configs... just assume the resolution is supported # In case of ISP scaling, don't change the sensor resolution in the pipeline config # to keep it logical for the user in the UI - sensor_resolution = cam.resolution + # None for ToF + sensor_resolution: Optional[CameraSensorResolution] = cam.resolution if not does_sensor_support_resolution: smallest_supported_resolution = [ config for config in camera_features.configs if config.type == camera_features.supportedTypes[0] ][0] - sensor_resolution = size_to_resolution[ - smallest_supported_resolution.width, smallest_supported_resolution.height - ] + sensor_resolution = size_to_resolution.get( + (smallest_supported_resolution.width, smallest_supported_resolution.height), None + ) is_used_by_depth = config.depth is not None and ( cam.board_socket == config.depth.align or cam.board_socket in config.depth.stereo_pair ) @@ -344,21 +432,27 @@ def update_pipeline(self, runtime_only: bool) -> Message: # Only create a camera node if it is used by stereo or AI. if cam.stream_enabled: - sdk_cam = self._oak.create_camera( - cam.board_socket, - sensor_resolution.as_sdk_resolution(), - cam.fps, - encode=self.use_encoding, - name=cam.name.capitalize(), - ) - if not does_sensor_support_resolution: - sdk_cam.config_color_camera( - isp_scale=getClosestIspScale( - (smallest_supported_resolution.width, smallest_supported_resolution.height), res_x - ) + if dai.CameraSensorType.TOF in camera_features.supportedTypes: + sdk_cam = self._oak.create_tof(cam.board_socket) + elif sensor_resolution is not None: + sdk_cam = self._oak.create_camera( + cam.board_socket, + # type: ignore[union-attr] + sensor_resolution.as_sdk_resolution(), + cam.fps, + encode=self.use_encoding, ) - synced_outputs.append(sdk_cam.out.main) - self._cameras.append(sdk_cam) + if not does_sensor_support_resolution: + sdk_cam.config_color_camera( + isp_scale=getClosestIspScale( + (smallest_supported_resolution.width, smallest_supported_resolution.height), res_x + ) + ) + self._cameras.append(sdk_cam) + else: + print("Skipped creating camera:", cam.board_socket, "because no valid sensor resolution was found.") + continue + self._queues.append((sdk_cam, self._oak.queue(sdk_cam.out.main))) if config.depth: print("Creating depth") @@ -391,13 +485,11 @@ def update_pipeline(self, runtime_only: bool) -> Message: aligned_camera = self._get_camera_config_by_socket(config, config.depth.align) if not aligned_camera: return ErrorMessage(f"{config.depth.align} is not configured. Couldn't create stereo pair.") - synced_callback_args.depth_args = DepthCallbackArgs( - alignment_camera=aligned_camera, stereo_pair=config.depth.stereo_pair - ) - synced_outputs.append(self._stereo.out.main) + self._queues.append((self._stereo, self._oak.queue(self._stereo.out.main))) - if self._oak.device.getConnectedIMU() != "NONE": - print("Creating IMU") + if self._oak.device.getConnectedIMU() != "NONE" and self._oak.device.getConnectedIMU() != "": + print("Creating IMU, connected IMU: ", self._oak.device.getConnectedIMU()) + # TODO(someone): Handle IMU updates imu = self._oak.create_imu() sensors = [ dai.IMUSensor.ACCELEROMETER_RAW, @@ -416,25 +508,17 @@ def update_pipeline(self, runtime_only: bool) -> Message: cam_component = self._get_component_by_socket(config.ai_model.camera) if not cam_component: return ErrorMessage(f"{config.ai_model.camera} is not configured. Couldn't create NN.") - labels: Optional[List[str]] = None if config.ai_model.path == "age-gender-recognition-retail-0013": face_detection = self._oak.create_nn("face-detection-retail-0004", cam_component) self._nnet = self._oak.create_nn("age-gender-recognition-retail-0013", input=face_detection) else: self._nnet = self._oak.create_nn(config.ai_model.path, cam_component) - labels = getattr(classification_labels, config.ai_model.path.upper().replace("-", "_"), None) camera = self._get_camera_config_by_socket(config, config.ai_model.camera) if not camera: return ErrorMessage(f"{config.ai_model.camera} is not configured. Couldn't create NN.") - synced_callback_args.ai_args = AiModelCallbackArgs( - model_name=config.ai_model.path, camera=camera, labels=labels - ) - synced_outputs.append(self._nnet.out.main) - - if synced_outputs: - self._oak.sync(synced_outputs, self._packet_handler.build_sync_callback(synced_callback_args)) + self._queues.append((self._nnet, self._oak.queue(self._nnet.out.main))) sys_logger_xlink = self._oak.pipeline.createXLinkOut() logger = self._oak.pipeline.createSystemLogger() @@ -452,7 +536,8 @@ def update_pipeline(self, runtime_only: bool) -> Message: if running: self._pipeline_start_t = time.time() self._sys_info_q = self._oak.device.getOutputQueue("sys_logger", 1, False) - self.store.set_pipeline_config(config) # We might have modified the config, so store it + # We might have modified the config, so store it + self.store.set_pipeline_config(config) try: self._oak.poll() except RuntimeError: @@ -467,6 +552,14 @@ def update(self) -> None: if not self._oak.running(): return self._oak.poll() + + for component, queue in self._queues: + try: + packet = queue.get_queue().get_nowait() + self._packet_handler.log_packet(component, packet) + except QueueEmpty: + continue + if self._xlink_statistics is not None: self._xlink_statistics.update() diff --git a/rerun_py/depthai_viewer/_backend/device_configuration.py b/rerun_py/depthai_viewer/_backend/device_configuration.py index f59ba9afc414..73835f918d4b 100644 --- a/rerun_py/depthai_viewer/_backend/device_configuration.py +++ b/rerun_py/depthai_viewer/_backend/device_configuration.py @@ -10,7 +10,7 @@ # enabled: bool = True -class DepthConfiguration(BaseModel): # type: ignore[misc] +class StereoDepthConfiguration(BaseModel): # type: ignore[misc] median: Optional[dai.MedianFilter] = dai.MedianFilter.KERNEL_7x7 lr_check: Optional[bool] = True lrc_threshold: int = 5 # 0..10 @@ -26,9 +26,9 @@ class Config: arbitrary_types_allowed = True def __init__(self, **v) -> None: # type: ignore[no-untyped-def] - if v.get("median", None): + if v.get("median", None) and isinstance(v["median"], str): v["median"] = getattr(dai.MedianFilter, v["median"]) - if v.get("align", None): + if v.get("align", None) and isinstance(v["align"], str): v["align"] = getattr(dai.CameraBoardSocket, v["align"]) if v.get("stereo_pair", None) and all(isinstance(pair, str) for pair in v["stereo_pair"]): v["stereo_pair"] = ( @@ -105,6 +105,30 @@ def dict(self, *args, **kwargs): # type: ignore[no-untyped-def] } +ALL_NEURAL_NETWORKS = [ + AiModelConfiguration( + path="yolov8n_coco_640x352", + display_name="Yolo V8", + camera=dai.CameraBoardSocket.CAM_A, + ), + AiModelConfiguration( + path="mobilenet-ssd", + display_name="MobileNet SSD", + camera=dai.CameraBoardSocket.CAM_A, + ), + AiModelConfiguration( + path="face-detection-retail-0004", + display_name="Face Detection", + camera=dai.CameraBoardSocket.CAM_A, + ), + AiModelConfiguration( + path="age-gender-recognition-retail-0013", + display_name="Age gender recognition", + camera=dai.CameraBoardSocket.CAM_A, + ), +] + + class ImuConfiguration(BaseModel): # type: ignore[misc] report_rate: int = 100 batch_report_threshold: int = 5 @@ -119,6 +143,7 @@ class CameraSensorResolution(Enum): THE_1440X1080: str = "THE_1440X1080" THE_1080_P: str = "THE_1080_P" THE_1200_P: str = "THE_1200_P" + THE_1280_P: str = "THE_1280_P" THE_4_K: str = "THE_4_K" THE_4000X3000: str = "THE_4000X3000" THE_12_MP: str = "THE_12_MP" @@ -168,7 +193,8 @@ def dict(self, *args, **kwargs) -> Dict[str, Any]: # type: ignore[no-untyped-de } @classmethod - def create_left(cls, **kwargs) -> "CameraConfiguration": # type: ignore[no-untyped-def] + # type: ignore[no-untyped-def] + def create_left(cls, **kwargs) -> "CameraConfiguration": if not kwargs.get("kind", None): kwargs["kind"] = dai.CameraSensorType.MONO if not kwargs.get("resolution", None): @@ -176,7 +202,8 @@ def create_left(cls, **kwargs) -> "CameraConfiguration": # type: ignore[no-unty return cls(board_socket="LEFT", **kwargs) @classmethod - def create_right(cls, **kwargs) -> "CameraConfiguration": # type: ignore[no-untyped-def] + # type: ignore[no-untyped-def] + def create_right(cls, **kwargs) -> "CameraConfiguration": if not kwargs.get("kind", None): kwargs["kind"] = dai.CameraSensorType.MONO if not kwargs.get("resolution", None): @@ -184,7 +211,8 @@ def create_right(cls, **kwargs) -> "CameraConfiguration": # type: ignore[no-unt return cls(board_socket="RIGHT", **kwargs) @classmethod - def create_color(cls, **kwargs) -> "CameraConfiguration": # type: ignore[no-untyped-def] + # type: ignore[no-untyped-def] + def create_color(cls, **kwargs) -> "CameraConfiguration": if not kwargs.get("kind", None): kwargs["kind"] = dai.CameraSensorType.COLOR if not kwargs.get("resolution", None): @@ -217,8 +245,9 @@ def dict(self, *args, **kwargs) -> Dict[str, Any]: # type: ignore[no-untyped-de class PipelineConfiguration(BaseModel): # type: ignore[misc] + auto: bool = False # Should the backend automatically create a pipeline? cameras: List[CameraConfiguration] = [] - depth: Optional[DepthConfiguration] + depth: Optional[StereoDepthConfiguration] ai_model: Optional[AiModelConfiguration] imu: ImuConfiguration = ImuConfiguration() @@ -277,13 +306,15 @@ def dict(self, *args, **kwargs) -> Dict[str, Any]: # type: ignore[no-untyped-de (640, 400): CameraSensorResolution.THE_400_P, (640, 480): CameraSensorResolution.THE_480_P, # OV7251 (1280, 720): CameraSensorResolution.THE_720_P, + (1280, 962): CameraSensorResolution.THE_1280_P, # TOF (1280, 800): CameraSensorResolution.THE_800_P, # OV9782 (2592, 1944): CameraSensorResolution.THE_5_MP, # OV5645 (1440, 1080): CameraSensorResolution.THE_1440X1080, (1920, 1080): CameraSensorResolution.THE_1080_P, (1920, 1200): CameraSensorResolution.THE_1200_P, # AR0234 (3840, 2160): CameraSensorResolution.THE_4_K, - (4000, 3000): CameraSensorResolution.THE_4000X3000, # IMX582 with binning enabled + # IMX582 with binning enabled + (4000, 3000): CameraSensorResolution.THE_4000X3000, (4056, 3040): CameraSensorResolution.THE_12_MP, # IMX378, IMX477, IMX577 (4208, 3120): CameraSensorResolution.THE_13_MP, # AR214 (5312, 6000): CameraSensorResolution.THE_5312X6000, # IMX582 cropped diff --git a/rerun_py/depthai_viewer/_backend/main.py b/rerun_py/depthai_viewer/_backend/main.py index e7682ed32db5..79639836ace7 100644 --- a/rerun_py/depthai_viewer/_backend/main.py +++ b/rerun_py/depthai_viewer/_backend/main.py @@ -1,4 +1,5 @@ import threading +import traceback from multiprocessing import Queue from queue import Empty as QueueEmptyException from typing import Optional @@ -95,7 +96,11 @@ def on_update_pipeline(self, runtime_only: bool) -> Message: print("No device selected, can't update pipeline!") return ErrorMessage("No device selected, can't update pipeline!") print("Updating pipeline...") - message = self._device.update_pipeline(runtime_only) + try: + message = self._device.update_pipeline(runtime_only) + except RuntimeError as e: + print("Failed to update pipeline:", e) + return ErrorMessage(str(e)) if isinstance(message, InfoMessage): return PipelineMessage(self.store.pipeline_config) return message @@ -146,7 +151,9 @@ def run(self) -> None: try: self._device.update() except Exception as e: - print("Error while updating device:", e) + print("Error while updating device:", end="") + # Print exception with traceback + print("\n".join(traceback.format_exception(type(e), e, e.__traceback__))) self.store.send_message_to_frontend(ErrorMessage("Depthai error: " + str(e))) self.on_reset() continue diff --git a/rerun_py/depthai_viewer/_backend/packet_handler.py b/rerun_py/depthai_viewer/_backend/packet_handler.py index 2e1c04c1ec00..e025262bd815 100644 --- a/rerun_py/depthai_viewer/_backend/packet_handler.py +++ b/rerun_py/depthai_viewer/_backend/packet_handler.py @@ -1,54 +1,29 @@ -from typing import Any, Callable, Dict, List, Optional, Tuple, Union +from typing import Callable, List, Optional, Tuple, Union import cv2 import depthai as dai import numpy as np from ahrs.filters import Mahony from depthai_sdk.classes.packets import ( # PointcloudPacket, + BasePacket, DepthPacket, + Detection, DetectionPacket, + DisparityDepthPacket, FramePacket, IMUPacket, TwoStagePacket, - _Detection, ) +from depthai_sdk.components import CameraComponent, Component, NNComponent, StereoComponent +from depthai_sdk.components.tof_component import ToFComponent from numpy.typing import NDArray -from pydantic import BaseModel import depthai_viewer as viewer -from depthai_viewer._backend.device_configuration import CameraConfiguration from depthai_viewer._backend.store import Store from depthai_viewer._backend.topic import Topic from depthai_viewer.components.rect2d import RectFormat -class CallbackArgs(BaseModel): # type: ignore[misc] - pass - - -class DepthCallbackArgs(CallbackArgs): # type: ignore[misc] - alignment_camera: CameraConfiguration - stereo_pair: Tuple[dai.CameraBoardSocket, dai.CameraBoardSocket] - - class Config: - arbitrary_types_allowed = True - - -class AiModelCallbackArgs(CallbackArgs): # type: ignore[misc] - model_name: str - camera: CameraConfiguration - labels: Optional[List[str]] = None - - class Config: - arbitrary_types_allowed = True - protected_namespaces = () - - -class SyncedCallbackArgs(BaseModel): # type: ignore[misc] - depth_args: Optional[DepthCallbackArgs] = None - ai_args: Optional[AiModelCallbackArgs] = None - - class PacketHandler: store: Store _ahrs: Mahony @@ -71,46 +46,36 @@ def reset(self) -> None: def set_camera_intrinsics_getter( self, camera_intrinsics_getter: Callable[[dai.CameraBoardSocket, int, int], NDArray[np.float32]] ) -> None: - self._get_camera_intrinsics = camera_intrinsics_getter # type: ignore[assignment, misc] - - def build_sync_callback(self, args: SyncedCallbackArgs) -> Callable[[Any], None]: - return lambda packets: self._on_synced_packets(args, packets) - - def _on_synced_packets(self, args: SyncedCallbackArgs, packets: Dict[str, Any]) -> None: - for descriptor, packet in packets.items(): - if type(packet) is FramePacket: - # Create dai.CameraBoardSocket from descriptor - split_descriptor = descriptor.split(".") - sock = getattr(dai, split_descriptor[0]) - for split in split_descriptor[1:]: - sock = getattr(sock, split) - self._on_camera_frame(packet, sock) - elif type(packet) is DepthPacket: - if args.depth_args is None: - continue - self._on_stereo_frame(packet, args.depth_args) - elif type(packet) is DetectionPacket: - if args.ai_args is None: - continue - self._on_detections(packet, args.ai_args) - elif type(packet) is TwoStagePacket: - if args.ai_args is None: - continue - self._on_age_gender_packet(packet, args.ai_args) - - def build_callback( - self, args: Union[dai.CameraBoardSocket, DepthCallbackArgs, AiModelCallbackArgs] - ) -> Callable[[Any], None]: - if isinstance(args, dai.CameraBoardSocket): - return lambda packet: self._on_camera_frame(packet, args) # type: ignore[arg-type] - elif isinstance(args, DepthCallbackArgs): - return lambda packet: self._on_stereo_frame(packet, args) # type: ignore[arg-type] - elif isinstance(args, AiModelCallbackArgs): - callback: Callable[[Any, AiModelCallbackArgs], None] = self._on_detections - if args.model_name == "age-gender-recognition-retail-0013": - callback = self._on_age_gender_packet - return lambda packet: callback(packet, args) # type: ignore[arg-type] - raise ValueError(f"Unknown callback args type: {type(args)}") + # type: ignore[assignment, misc] + self._get_camera_intrinsics = camera_intrinsics_getter + + def log_packet( + self, + component: Component, + packet: BasePacket, + ) -> None: + if type(packet) is FramePacket: + if isinstance(component, CameraComponent): + self._on_camera_frame(packet, component._socket) + else: + print("Unknown component type:", type(component), "for packet:", type(packet)) + # Create dai.CameraBoardSocket from descriptor + elif type(packet) is DepthPacket: + if isinstance(component, StereoComponent): + self._on_stereo_frame(packet, component) + elif type(packet) is DisparityDepthPacket: + if isinstance(component, ToFComponent): + self._on_tof_packet(packet, component) + elif isinstance(component, StereoComponent): + self._on_stereo_frame(packet, component) + else: + print("Unknown component type:", type(component), "for packet:", type(packet)) + elif type(packet) is DetectionPacket: + self._on_detections(packet, component) + elif type(packet) is TwoStagePacket: + self._on_age_gender_packet(packet, component) + else: + print("Unknown packet type:", type(packet)) def _on_camera_frame(self, packet: FramePacket, board_socket: dai.CameraBoardSocket) -> None: viewer.log_rigid3( @@ -152,32 +117,51 @@ def _on_camera_frame(self, packet: FramePacket, board_socket: dai.CameraBoardSoc viewer.log_image(entity_path, img_frame) def on_imu(self, packet: IMUPacket) -> None: - for data in packet.data: - gyro: dai.IMUReportGyroscope = data.gyroscope - accel: dai.IMUReportAccelerometer = data.acceleroMeter - mag: dai.IMUReportMagneticField = data.magneticField - # TODO(filip): Move coordinate mapping to sdk - self._ahrs.Q = self._ahrs.updateIMU( - self._ahrs.Q, np.array([gyro.z, gyro.x, gyro.y]), np.array([accel.z, accel.x, accel.y]) - ) + gyro: dai.IMUReportGyroscope = packet.gyroscope + accel: dai.IMUReportAccelerometer = packet.acceleroMeter + mag: dai.IMUReportMagneticField = packet.magneticField + # TODO(filip): Move coordinate mapping to sdk + self._ahrs.Q = self._ahrs.updateIMU( + self._ahrs.Q, np.array([gyro.z, gyro.x, gyro.y]), np.array([accel.z, accel.x, accel.y]) + ) if Topic.ImuData not in self.store.subscriptions: return viewer.log_imu([accel.z, accel.x, accel.y], [gyro.z, gyro.x, gyro.y], self._ahrs.Q, [mag.x, mag.y, mag.z]) - def _on_stereo_frame(self, packet: DepthPacket, args: DepthCallbackArgs) -> None: + def _on_stereo_frame(self, packet: Union[DepthPacket, DisparityDepthPacket], component: StereoComponent) -> None: depth_frame = packet.frame - cam = cam_kind_from_sensor_kind(args.alignment_camera.kind) - path = f"{args.alignment_camera.board_socket.name}/transform/{cam}" + "/Depth" + cam = "color_cam" if component._align_component.is_color() else "mono_cam" + path = f"{component._align_component._socket.name}/transform/{cam}" + "/Depth" if not self.store.pipeline_config or not self.store.pipeline_config.depth: # Essentially impossible to get here return viewer.log_depth_image(path, depth_frame, meter=1e3) - def _on_detections(self, packet: DetectionPacket, args: AiModelCallbackArgs) -> None: - rects, colors, labels = self._detections_to_rects_colors_labels(packet, args.labels) - cam = cam_kind_from_sensor_kind(args.camera.kind) + def _on_tof_packet( + self, + packet: DisparityDepthPacket, + component: ToFComponent, + ) -> None: + depth_frame = packet.frame + viewer.log_rigid3( + f"{component.camera_socket.name}/transform", child_from_parent=([0, 0, 0], [1, 0, 0, 0]), xyz="RDF" + ) + intrinsics = np.array([[471.451, 0.0, 317.897], [0.0, 471.539, 245.027], [0.0, 0.0, 1.0]]) + viewer.log_pinhole( + f"{component.camera_socket.name}/transform/tof", + child_from_parent=intrinsics, + width=component.camera_node.getVideoWidth(), + height=component.camera_node.getVideoHeight(), + ) + + path = f"{component.camera_socket.name}/transform/tof/Depth" + viewer.log_depth_image(path, depth_frame, meter=1e3) + + def _on_detections(self, packet: DetectionPacket, component: NNComponent) -> None: + rects, colors, labels = self._detections_to_rects_colors_labels(packet, component.get_labels()) + cam = "color_cam" if component._get_camera_comp().is_color() else "mono_cam" viewer.log_rects( - f"{args.camera.board_socket.name}/transform/{cam}/Detections", + f"{component._get_camera_comp()._socket.name}/transform/{cam}/Detections", rects, rect_format=RectFormat.XYXY, colors=colors, @@ -193,7 +177,7 @@ def _detections_to_rects_colors_labels( for detection in packet.detections: rects.append(self._rect_from_detection(detection, packet.frame.shape[0], packet.frame.shape[1])) colors.append([0, 255, 0]) - label: str = detection.label + label: str = detection.label_str # Open model zoo models output label index if omz_labels is not None and isinstance(label, int): label += omz_labels[label] @@ -201,7 +185,7 @@ def _detections_to_rects_colors_labels( labels.append(label) return rects, colors, labels - def _on_age_gender_packet(self, packet: TwoStagePacket, args: AiModelCallbackArgs) -> None: + def _on_age_gender_packet(self, packet: TwoStagePacket, component: NNComponent) -> None: for det, rec in zip(packet.detections, packet.nnData): age = int(float(np.squeeze(np.array(rec.getLayerFp16("age_conv3")))) * 100) gender = np.squeeze(np.array(rec.getLayerFp16("prob"))) @@ -210,21 +194,21 @@ def _on_age_gender_packet(self, packet: TwoStagePacket, args: AiModelCallbackArg color = [255, 0, 0] if gender[0] > gender[1] else [0, 0, 255] # TODO(filip): maybe use viewer.log_annotation_context to log class colors for detections - cam = cam_kind_from_sensor_kind(args.camera.kind) + cam = "color_cam" if component._get_camera_comp().is_color() else "mono_cam" viewer.log_rect( - f"{args.camera.board_socket.name}/transform/{cam}/Detection", + f"{component._get_camera_comp()._socket.name}/transform/{cam}/Detection", self._rect_from_detection(det, packet.frame.shape[0], packet.frame.shape[1]), rect_format=RectFormat.XYXY, color=color, label=label, ) - def _rect_from_detection(self, detection: _Detection, max_height: int, max_width: int) -> List[int]: + def _rect_from_detection(self, detection: Detection, max_height: int, max_width: int) -> List[int]: return [ - max(min(detection.bottom_right[0], max_width), 0), - max(min(detection.bottom_right[1], max_height), 0), - max(min(detection.top_left[0], max_width), 0), - max(min(detection.top_left[1], max_height), 0), + max(min(detection.bottom_right[0], max_width), 0) * max_width, + max(min(detection.bottom_right[1], max_height), 0) * max_height, + max(min(detection.top_left[0], max_width), 0) * max_width, + max(min(detection.top_left[1], max_height), 0) * max_height, ] diff --git a/rerun_py/depthai_viewer/_backend/topic.py b/rerun_py/depthai_viewer/_backend/topic.py index 3d7562ce6db2..2413337fbbff 100644 --- a/rerun_py/depthai_viewer/_backend/topic.py +++ b/rerun_py/depthai_viewer/_backend/topic.py @@ -16,9 +16,9 @@ class Topic(Enum): @classmethod def create(cls, name_or_id: Union[str, int]) -> "Topic": - if type(name_or_id) == str: + if isinstance(name_or_id, str): return Topic[name_or_id] - elif type(name_or_id) == int: + elif isinstance(name_or_id, int): return Topic(name_or_id) else: raise ValueError("Invalid topic name or id: ", name_or_id) diff --git a/rerun_py/depthai_viewer/install_requirements.py b/rerun_py/depthai_viewer/install_requirements.py index 713f32f83fae..d810ccade7e4 100644 --- a/rerun_py/depthai_viewer/install_requirements.py +++ b/rerun_py/depthai_viewer/install_requirements.py @@ -7,7 +7,8 @@ import traceback from typing import Any, Dict -from depthai_viewer import version as depthai_viewer_version # type: ignore[attr-defined] +# type: ignore[attr-defined] +from depthai_viewer import version as depthai_viewer_version script_path = os.path.dirname(os.path.abspath(__file__)) venv_dir = os.path.join(script_path, "venv-" + depthai_viewer_version()) @@ -87,8 +88,10 @@ def create_venv_and_install_dependencies() -> None: "-m", "pip", "install", - "depthai-sdk==1.11.0" - # "git+https://github.com/luxonis/depthai@refactor_xout#subdirectory=depthai_sdk", + "depthai-sdk==1.13.1.dev0+b0340e0c4ad869711d7d5fff48e41c46fe41f475", + "--extra-index-url", + "https://artifacts.luxonis.com/artifactory/luxonis-python-snapshot-local/", + # "git+https://github.com/luxonis/depthai@develop#subdirectory=depthai_sdk", ], check=True, ) @@ -110,11 +113,26 @@ def create_venv_and_install_dependencies() -> None: env = os.environ.copy() env["PYTHONPATH"] = venv_packages_dir # Download blobs - subprocess.run( - [sys.executable, "-c", "from depthai_viewer.install_requirements import download_blobs; download_blobs()"], - check=True, - env=env, - ) + try: + subprocess.run( + [ + sys.executable, + "-c", + "from depthai_viewer.install_requirements import download_blobs; download_blobs()", + ], + check=True, + env=env, + capture_output=True, + ) + except subprocess.CalledProcessError as e: + print("stderr") + print(e.stderr.decode("utf-8")) + print("stdout") + print(e.stdout.decode("utf-8")) + print("output") + print(e.output.decode("utf-8")) + + raise e # Restore original SIGINT handler signal.signal(signal.SIGINT, original_sigint_handler) diff --git a/rerun_py/depthai_viewer/requirements.txt b/rerun_py/depthai_viewer/requirements.txt index 600f12662da8..433c05a4c9f2 100644 --- a/rerun_py/depthai_viewer/requirements.txt +++ b/rerun_py/depthai_viewer/requirements.txt @@ -3,7 +3,7 @@ pyarrow==10.0.1 setuptools ahrs # depthai_sdk conflicts with depthai, so it's installed seperatelly in __main__.py -depthai==2.22.0.0 +depthai==2.23.0.0 websockets pydantic==1.9 deprecated diff --git a/rust-toolchain b/rust-toolchain index 03d64db16230..9ea4f2e8b9c5 100644 --- a/rust-toolchain +++ b/rust-toolchain @@ -5,6 +5,6 @@ # to the user in the error, instead of "error: invalid channel name '[toolchain]'". [toolchain] -channel = "1.70" +channel = "1.74" components = ["rustfmt", "clippy"] targets = ["wasm32-unknown-unknown"]