diff --git a/.github/workflows/python.yml b/.github/workflows/python.yml index 82a8a32833fe..aedba554dbef 100644 --- a/.github/workflows/python.yml +++ b/.github/workflows/python.yml @@ -88,10 +88,11 @@ jobs: if [[ $TAGGED_OR_MAIN ]]; then # MacOS build is really slow (>30 mins); uses up a lot of CI minutes - matrix+=('{"platform": "macos", "runs_on": "macos-latest"},') + matrix+=('{"platform": "macos", "runs_on": "macos-latest", "pip": "pip", "python": "python3"},') fi - matrix+=('{"platform": "windows", "runs_on": "windows-latest"},') - matrix+=('{"platform": "linux", "runs_on": "ubuntu-latest", container: {"image": "rerunio/ci_docker:0.5"}}') + matrix+=('{"platform": "windows", "runs_on": "windows-latest", "pip": "pip", "python": "python"},') + matrix+=('{"platform": "linux", "runs_on": "ubuntu-latest", container: {"image": "rerunio/ci_docker:0.5"}, "pip": "pip", "python": "python3"},') + matrix+=('{"platform": "aarch64", "runs_on": ["self-hosted", "linux", "ARM64"], container: {"image": "quay.io/pypa/manylinux_2_28_aarch64"}, "pip": "python3.8 -m pip", "python": "python3.8"}') echo "Matrix values: ${matrix[@]}" @@ -109,6 +110,10 @@ jobs: container: ${{ matrix.container }} steps: + - name: Install rust + if: matrix.platform == 'aarch64' + run: curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y && echo "$HOME/.cargo/bin" >> $GITHUB_PATH + - uses: actions/checkout@v3 # These should already be in the docker container, but run for good measure. A no-op install @@ -122,6 +127,20 @@ jobs: version: 2.0 # Increment this to pull newer packages execute_install_scripts: true + - name: Cache DNF packages + if: matrix.platform == 'aarch64' + uses: actions/cache@v2 + with: + path: | + /var/cache/dnf + key: ${{ runner.os }}-dnf-aarch64 + + - name: AARCH64 install packages + if: matrix.platform == 'aarch64' + run: | + dnf makecache --refresh + dnf install -y gtk3-devel openssl-devel + - name: Set up cargo cache uses: Swatinem/rust-cache@v2 with: @@ -134,7 +153,7 @@ jobs: # The pip-cache setup logic doesn't work in the ubuntu docker container # That's probably fine since we bake these deps into the container already - name: Setup python - if: matrix.platform != 'linux' + if: matrix.platform != 'linux' && matrix.platform != 'aarch64' uses: actions/setup-python@v4 with: python-version: ${{ env.PYTHON_VERSION }} @@ -144,7 +163,14 @@ jobs: # These should already be in the docker container, but run for good measure. A no-op install # should be fast, and this way things don't break if we add new packages without rebuilding # docker - - run: pip install -r rerun_py/requirements-build.txt + - name: "Install build requirements" + run: | + if [ "${{ matrix.platform }}" = "aarch64" ]; then + ${{ matrix.pip }} install -r rerun_py/requirements-build.txt && echo "/opt/_internal/cpython-3.8.16/bin" >> $GITHUB_PATH + else + ${{ matrix.pip }} install -r rerun_py/requirements-build.txt + fi + shell: bash # ---------------------------------------------------------------------------------- # Install prerequisites for building the web-viewer Wasm @@ -186,16 +212,17 @@ jobs: # After patching the pre-release version, run cargo check. # This updates the cargo.lock file with the new version numbers and keeps the wheel build from failing run: | - python3 scripts/version_util.py --patch_prerelease + ${{ matrix.python }} scripts/version_util.py --patch_prerelease cargo check - name: Version check for tagged-release if: startsWith(github.ref, 'refs/tags/v') && github.event_name != 'workflow_dispatch' # This call to version_util.py will assert version from Cargo.toml matches git tagged version vX.Y.Z run: | - python3 scripts/version_util.py --check_version + ${{ matrix.python }} scripts/version_util.py --check_version - name: Build Wheel + if: matrix.platform != 'aarch64' uses: PyO3/maturin-action@v1 with: maturin-version: "0.14.10" @@ -209,19 +236,33 @@ jobs: --features pypi --universal2 --out pre-dist + -i ${{ matrix.python }} + - name: Build Wheel (aarch64) + if: matrix.platform == 'aarch64' + run: python3.8 -m maturin build --manifest-path rerun_py/Cargo.toml --release --no-default-features --features pypi --universal2 --out pre-dist - name: Install built wheel run: | - pip install depthai_viewer --find-links pre-dist --force-reinstall + ${{ matrix.pip }} install depthai_viewer --find-links pre-dist --force-reinstall - name: Run tests - run: cd rerun_py/tests && pytest + shell: bash + run: | + if [ "${{ matrix.platform }}" = "aarch64" ]; then + cd rerun_py/tests && python3.8 -m pytest + else + cd rerun_py/tests && pytest + fi - name: Unpack the wheel shell: bash run: | mkdir unpack-dist - wheel unpack pre-dist/*.whl --dest unpack-dist + if [ "${{ matrix.platform }}" == "aarch64" ]; then + python3.8 -m wheel unpack pre-dist/*.whl --dest unpack-dist + else + wheel unpack pre-dist/*.whl --dest unpack-dist + fi - name: Get the folder name shell: bash @@ -232,7 +273,11 @@ jobs: shell: bash run: | mkdir dist - wheel pack unpack-dist/${{ env.pkg_folder }} --dest dist/ + if [ "${{ matrix.platform }}" == "aarch64" ]; then + python3.8 -m wheel pack unpack-dist/${{ env.pkg_folder }} --dest dist/ + else + wheel pack unpack-dist/${{ env.pkg_folder }} --dest dist/ + fi - name: Upload wheels uses: actions/upload-artifact@v3 diff --git a/CHANGELOG.md b/CHANGELOG.md index 2bb4140268fb..6184621915ed 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,12 @@ # Depthai Viewer changelog +## 0.1.9 + +- Added the new ToF decoding improvements. +- The default AI model is now Yolo V6 instead of mobilenet-ssd. +- Fixed OAK-D-SR-POE crashing on startup. +- Fixed deformed bounding boxes. + ## 0.1.8 - Performance fix. diff --git a/Cargo.lock b/Cargo.lock index 02440f66adaa..a890af3072a5 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -45,9 +45,9 @@ checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" [[package]] name = "ahash" -version = "0.8.10" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b79b82693f705137f8fb9b37871d99e4f9a7df12b917eed79c3d3954830a60b" +checksum = "91429305e9f0a25f6205c5b8e0d2db09e0708a7a6df0f42212bb56c32c8ac97a" dependencies = [ "cfg-if", "const-random", @@ -120,9 +120,9 @@ checksum = "4b46cbb362ab8752921c97e041f5e366ee6297bd428a31275b9fcf1e380f7299" [[package]] name = "anstream" -version = "0.6.13" +version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d96bd03f33fe50a863e394ee9718a706f988b9079b20c3784fb726e7678b62fb" +checksum = "2ab91ebe16eb252986481c5b62f6098f3b698a45e34b5b98200cf20dd2484a44" dependencies = [ "anstyle", "anstyle-parse", @@ -134,9 +134,9 @@ dependencies = [ [[package]] name = "anstyle" -version = "1.0.6" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8901269c6307e8d93993578286ac0edf7f195079ffff5ebdeea6a59ffb7e36bc" +checksum = "7079075b41f533b8c61d2a4d073c4676e1f8b249ff94a393b0595db304e0dd87" [[package]] name = "anstyle-parse" @@ -149,9 +149,9 @@ dependencies = [ [[package]] name = "anstyle-query" -version = "1.0.2" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e28923312444cdd728e4738b3f9c9cac739500909bb3d3c94b43551b16517648" +checksum = "a3a318f1f38d2418400f8209655bfd825785afd25aa30bb7ba6cc792e4596748" dependencies = [ "windows-sys 0.52.0", ] @@ -168,16 +168,16 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.80" +version = "1.0.75" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ad32ce52e4161730f7098c077cd2ed6229b5804ccf99e5366be1ab72a98b4e1" +checksum = "a4668cab20f66d8d020e1fbc0ebe47217433c1b6c8f2040faf858554e394ace6" [[package]] name = "api_demo" -version = "0.1.8" +version = "0.1.9" dependencies = [ "anyhow", - "clap 4.5.1", + "clap 4.4.11", "depthai-viewer", "glam", "itertools", @@ -188,12 +188,12 @@ dependencies = [ [[package]] name = "arboard" -version = "3.3.1" +version = "3.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1faa3c733d9a3dd6fbaf85da5d162a2e03b2e0033a90dceb0e2a90fdd1e5380a" +checksum = "aafb29b107435aa276664c1db8954ac27a6e105cdad3c88287a199eb0e313c08" dependencies = [ "clipboard-win", - "core-graphics 0.23.1", + "core-graphics", "image", "log", "objc", @@ -201,7 +201,7 @@ dependencies = [ "objc_id", "parking_lot 0.12.1", "thiserror", - "windows-sys 0.48.0", + "winapi", "x11rb", ] @@ -338,13 +338,13 @@ dependencies = [ [[package]] name = "async-channel" -version = "2.2.0" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f28243a43d821d11341ab73c80bed182dc015c514b951616cf79bd4af39af0c3" +checksum = "1ca33f4bc4ed1babef42cad36cc1f51fa88be00420404e5b1e80ab1b18f7678c" dependencies = [ "concurrent-queue", - "event-listener 5.2.0", - "event-listener-strategy 0.5.0", + "event-listener 4.0.0", + "event-listener-strategy", "futures-core", "pin-project-lite", ] @@ -355,11 +355,11 @@ version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "17ae5ebefcc48e7452b4987947920dac9450be1110cadf34d1b8c116bdbaf97c" dependencies = [ - "async-lock 3.3.0", + "async-lock 3.2.0", "async-task", "concurrent-queue", "fastrand 2.0.1", - "futures-lite 2.2.0", + "futures-lite 2.1.0", "slab", ] @@ -377,16 +377,16 @@ dependencies = [ [[package]] name = "async-global-executor" -version = "2.4.1" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05b1b633a2115cd122d73b955eadd9916c18c8f510ec9cd1686404c60ad1c29c" +checksum = "9b4353121d5644cdf2beb5726ab752e79a8db1ebb52031770ec47db31d245526" dependencies = [ - "async-channel 2.2.0", + "async-channel 2.1.1", "async-executor", - "async-io 2.3.1", - "async-lock 3.3.0", + "async-io 2.2.1", + "async-lock 3.2.0", "blocking", - "futures-lite 2.2.0", + "futures-lite 2.1.0", "once_cell", ] @@ -412,18 +412,18 @@ dependencies = [ [[package]] name = "async-io" -version = "2.3.1" +version = "2.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f97ab0c5b00a7cdbe5a371b9a782ee7be1316095885c8a4ea1daf490eb0ef65" +checksum = "d6d3b15875ba253d1110c740755e246537483f152fa334f91abd7fe84c88b3ff" dependencies = [ - "async-lock 3.3.0", + "async-lock 3.2.0", "cfg-if", "concurrent-queue", "futures-io", - "futures-lite 2.2.0", + "futures-lite 2.1.0", "parking", - "polling 3.5.0", - "rustix 0.38.31", + "polling 3.3.1", + "rustix 0.38.26", "slab", "tracing", "windows-sys 0.52.0", @@ -440,12 +440,12 @@ dependencies = [ [[package]] name = "async-lock" -version = "3.3.0" +version = "3.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d034b430882f8381900d3fe6f0aaa3ad94f2cb4ac519b429692a1bc2dda4ae7b" +checksum = "7125e42787d53db9dd54261812ef17e937c95a51e4d291373b670342fa44310c" dependencies = [ - "event-listener 4.0.3", - "event-listener-strategy 0.4.0", + "event-listener 4.0.0", + "event-listener-strategy", "pin-project-lite", ] @@ -462,7 +462,7 @@ dependencies = [ "cfg-if", "event-listener 3.1.0", "futures-lite 1.13.0", - "rustix 0.38.31", + "rustix 0.38.26", "windows-sys 0.48.0", ] @@ -474,7 +474,7 @@ checksum = "5fd55a5ba1179988837d24ab4c7cc8ed6efdeff578ede0416b4225a5fca35bd0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.52", + "syn 2.0.39", ] [[package]] @@ -483,13 +483,13 @@ version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9e47d90f65a225c4527103a8d747001fc56e375203592b25ad103e1ca13124c5" dependencies = [ - "async-io 2.3.1", + "async-io 2.2.1", "async-lock 2.8.0", "atomic-waker", "cfg-if", "futures-core", "futures-io", - "rustix 0.38.31", + "rustix 0.38.26", "signal-hook-registry", "slab", "windows-sys 0.48.0", @@ -540,24 +540,24 @@ checksum = "16e62a023e7c117e27523144c5d2459f4397fcc3cab0085af8e2224f643a0193" dependencies = [ "proc-macro2", "quote", - "syn 2.0.52", + "syn 2.0.39", ] [[package]] name = "async-task" -version = "4.7.0" +version = "4.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fbb36e985947064623dbd357f727af08ffd077f93d696782f3c56365fa2e2799" +checksum = "b4eb2cdb97421e01129ccb49169d8279ed21e829929144f4a22a6e54ac549ca1" [[package]] name = "async-trait" -version = "0.1.77" +version = "0.1.74" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c980ee35e870bd1a4d2c8294d4c04d0499e67bca1e4b5cefcc693c2fa00caea9" +checksum = "a66537f1bb974b254c98ed142ff995236e81b9d0fe4db0575f46612cb15eb0f9" dependencies = [ "proc-macro2", "quote", - "syn 2.0.52", + "syn 2.0.39", ] [[package]] @@ -628,9 +628,9 @@ checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" [[package]] name = "base64" -version = "0.21.7" +version = "0.21.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" +checksum = "35636a1494ede3b646cc98f74f8e62c773a38a659ebc777a2cf26b9b74171df9" [[package]] name = "bincode" @@ -664,9 +664,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.4.2" +version = "2.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed570934406eb16438a4e976b1b4500774099c13b8cb96eec99f620f05090ddf" +checksum = "327762f6e5a765692301e5bb513e0d9fef63be86bbc14528052b1cd3e6f03e07" dependencies = [ "serde", ] @@ -711,27 +711,27 @@ version = "1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6a37913e8dc4ddcc604f0c6d3bf2887c995153af3611de9e23c352b44c1b9118" dependencies = [ - "async-channel 2.2.0", - "async-lock 3.3.0", + "async-channel 2.1.1", + "async-lock 3.2.0", "async-task", "fastrand 2.0.1", "futures-io", - "futures-lite 2.2.0", + "futures-lite 2.1.0", "piper", "tracing", ] [[package]] name = "bumpalo" -version = "3.15.3" +version = "3.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ea184aa71bb362a1157c896979544cc23974e08fd265f29ea96b59f0b4a555b" +checksum = "7f30e7476521f6f8af1a1c4c0b8cc94f0bee37d91763d0ca2665f299b6cd8aec" [[package]] name = "bytemuck" -version = "1.14.3" +version = "1.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2ef034f05691a48569bd920a96c81b9d91bbad1ab5ac7c4616c1f6ef36cb79f" +checksum = "374d28ec25809ee0e23827c2ab573d729e293f281dfe393500e7ad618baa61c6" dependencies = [ "bytemuck_derive", ] @@ -744,7 +744,7 @@ checksum = "965ab7eb5f8f97d2a083c799f3a1b994fc397b2fe2da5d1da1626ce15a39f2b1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.52", + "syn 2.0.39", ] [[package]] @@ -784,9 +784,9 @@ dependencies = [ [[package]] name = "cargo-platform" -version = "0.1.7" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "694c8807f2ae16faecc43dc17d74b3eb042482789fd0eb64b39a2e04e087053f" +checksum = "e34637b3140142bdf929fb439e8aa4ebad7651ebf7b1080b3930aa16ac1459ff" dependencies = [ "serde", ] @@ -825,10 +825,11 @@ checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5" [[package]] name = "cc" -version = "1.0.88" +version = "1.0.83" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02f341c093d19155a6e41631ce5971aac4e9a868262212153124c15fa22d1cdc" +checksum = "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0" dependencies = [ + "jobserver", "libc", ] @@ -852,23 +853,23 @@ checksum = "fd16c4719339c4530435d38e511904438d07cce7950afa3718a84ac36c10e89e" [[package]] name = "chrono" -version = "0.4.34" +version = "0.4.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5bc015644b92d5890fab7489e49d21f879d5c990186827d42ec511919404f38b" +checksum = "7f2c685bad3eb3d45a01354cedb7d5faa66194d1d58ba6e267a8de788f79db38" dependencies = [ "android-tzdata", "iana-time-zone", "js-sys", "num-traits", "wasm-bindgen", - "windows-targets 0.52.4", + "windows-targets 0.48.5", ] [[package]] name = "ciborium" -version = "0.2.2" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42e69ffd6f0917f5c029256a24d0161db17cea3997d185db0d35926308770f0e" +checksum = "effd91f6c78e5a4ace8a5d3c0b6bfaec9e2baaef55f3efc00e45fb2e477ee926" dependencies = [ "ciborium-io", "ciborium-ll", @@ -877,18 +878,18 @@ dependencies = [ [[package]] name = "ciborium-io" -version = "0.2.2" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05afea1e0a06c9be33d539b876f1ce3692f4afea2cb41f740e7743225ed1c757" +checksum = "cdf919175532b369853f5d5e20b26b43112613fd6fe7aee757e35f7a44642656" [[package]] name = "ciborium-ll" -version = "0.2.2" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57663b653d948a338bfb3eeba9bb2fd5fcfaecb9e199e87e1eda4d9e8b240fd9" +checksum = "defaa24ecc093c77630e6c15e17c51f5e187bf35ee514f4e2d67baaa96dae22b" dependencies = [ "ciborium-io", - "half", + "half 1.8.2", ] [[package]] @@ -905,9 +906,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.1" +version = "4.4.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c918d541ef2913577a0f9566e9ce27cb35b6df072075769e0b26cb5a554520da" +checksum = "bfaff671f6b22ca62406885ece523383b9b64022e341e53e009a62ebc47a45f2" dependencies = [ "clap_builder", "clap_derive", @@ -915,26 +916,26 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.1" +version = "4.4.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f3e7391dad68afb0c2ede1bf619f579a3dc9c2ec67f089baa397123a2f3d1eb" +checksum = "a216b506622bb1d316cd51328dce24e07bdff4a6128a47c7e7fad11878d5adbb" dependencies = [ "anstream", "anstyle", - "clap_lex 0.7.0", + "clap_lex 0.6.0", "strsim", ] [[package]] name = "clap_derive" -version = "4.5.0" +version = "4.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "307bc0538d5f0f83b8248db3087aa92fe504e4691294d0c96c0eabc33f47ba47" +checksum = "cf9804afaaf59a91e75b022a30fb7229a7901f60c755489cc61c9b423b836442" dependencies = [ "heck 0.4.1", "proc-macro2", "quote", - "syn 2.0.52", + "syn 2.0.39", ] [[package]] @@ -948,9 +949,9 @@ dependencies = [ [[package]] name = "clap_lex" -version = "0.7.0" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "98cc8fbded0c607b7ba9dd60cd98df59af97e84d24e49c8557331cfc26d301ce" +checksum = "702fc72eb24e5a1e48ce58027a675bc24edd52096d5397d4aea7c6dd9eca0bd1" [[package]] name = "clean-path" @@ -960,11 +961,13 @@ checksum = "aaa6b4b263a5d737e9bf6b7c09b72c41a5480aec4d7219af827f6564e950b6a5" [[package]] name = "clipboard-win" -version = "5.2.0" +version = "4.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12f9a0700e0127ba15d1d52dd742097f821cd9c65939303a44d970465040a297" +checksum = "7191c27c2357d9b7ef96baac1773290d4ca63b24205b82a3fd8a0637afcf0362" dependencies = [ "error-code", + "str-buf", + "winapi", ] [[package]] @@ -977,8 +980,8 @@ dependencies = [ "block", "cocoa-foundation", "core-foundation", - "core-graphics 0.22.3", - "foreign-types 0.3.2", + "core-graphics", + "foreign-types", "libc", "objc", ] @@ -1069,14 +1072,14 @@ dependencies = [ [[package]] name = "console" -version = "0.15.8" +version = "0.15.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e1f83fc076bd6dd27517eacdf25fef6c4dfe5f1d7448bafaaf3a26f13b5e4eb" +checksum = "c926e00cc70edefdc64d3a5ff31cc65bb97a3460097762bd23afb4d8145fccf8" dependencies = [ "encode_unicode", "lazy_static", "libc", - "windows-sys 0.52.0", + "windows-sys 0.45.0", ] [[package]] @@ -1134,20 +1137,7 @@ dependencies = [ "bitflags 1.3.2", "core-foundation", "core-graphics-types", - "foreign-types 0.3.2", - "libc", -] - -[[package]] -name = "core-graphics" -version = "0.23.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "970a29baf4110c26fedbc7f82107d42c23f7e88e404c4577ed73fe99ff85a212" -dependencies = [ - "bitflags 1.3.2", - "core-foundation", - "core-graphics-types", - "foreign-types 0.5.0", + "foreign-types", "libc", ] @@ -1164,18 +1154,18 @@ dependencies = [ [[package]] name = "cpufeatures" -version = "0.2.12" +version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53fe5e26ff1b7aef8bca9c6080520cfb8d9333c7568e1829cef191a9723e5504" +checksum = "ce420fe07aecd3e67c5f910618fe65e94158f6dcc0adf44e00d69ce2bdfe0fd0" dependencies = [ "libc", ] [[package]] name = "crc32fast" -version = "1.4.0" +version = "1.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3855a8a784b474f333699ef2bbca9db2c4a1f6d9088a90a2d25b1eb53111eaa" +checksum = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d" dependencies = [ "cfg-if", ] @@ -1218,10 +1208,11 @@ dependencies = [ [[package]] name = "crossbeam" -version = "0.8.4" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1137cd7e7fc0fb5d3c5a8678be38ec56e819125d8d7907411fe24ccb943faca8" +checksum = "2801af0d36612ae591caa9568261fddce32ce6e08a7275ea334a06a4ad021a2c" dependencies = [ + "cfg-if", "crossbeam-channel", "crossbeam-deque", "crossbeam-epoch", @@ -1231,46 +1222,56 @@ dependencies = [ [[package]] name = "crossbeam-channel" -version = "0.5.12" +version = "0.5.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab3db02a9c5b5121e1e42fbdb1aeb65f5e02624cc58c43f2884c6ccac0b82f95" +checksum = "a33c2bf77f2df06183c3aa30d1e96c0695a313d4f9c453cc3762a6db39f99200" dependencies = [ + "cfg-if", "crossbeam-utils", ] [[package]] name = "crossbeam-deque" -version = "0.8.5" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "613f8cc01fe9cf1a3eb3d7f488fd2fa8388403e97039e2f73692932e291a770d" +checksum = "ce6fd6f855243022dcecf8702fef0c297d4338e226845fe067f6341ad9fa0cef" dependencies = [ + "cfg-if", "crossbeam-epoch", "crossbeam-utils", ] [[package]] name = "crossbeam-epoch" -version = "0.9.18" +version = "0.9.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" +checksum = "ae211234986c545741a7dc064309f67ee1e5ad243d0e48335adc0484d960bcc7" dependencies = [ + "autocfg", + "cfg-if", "crossbeam-utils", + "memoffset 0.9.0", + "scopeguard", ] [[package]] name = "crossbeam-queue" -version = "0.3.11" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df0346b5d5e76ac2fe4e327c5fd1118d6be7c51dfb18f9b7922923f287471e35" +checksum = "d1cfb3ea8a53f37c40dea2c7bedcbd88bdfae54f5e2175d6ecaff1c988353add" dependencies = [ + "cfg-if", "crossbeam-utils", ] [[package]] name = "crossbeam-utils" -version = "0.8.19" +version = "0.8.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "248e3bacc7dc6baa3b21e405ee045c3047101a49145e7e9eca583ab4c2ca5345" +checksum = "5a22b2d63d4d1dc0b7f1b6b2747dd0088008a9be28b6ddf0b1e7d335e3037294" +dependencies = [ + "cfg-if", +] [[package]] name = "crossterm" @@ -1315,12 +1316,12 @@ dependencies = [ [[package]] name = "ctrlc" -version = "3.4.2" +version = "3.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b467862cc8610ca6fc9a1532d7777cee0804e678ab45410897b9396495994a0b" +checksum = "82e95fbd621905b854affdc67943b043a0fbb6ed7385fd5a25650d19a8a6cfdf" dependencies = [ "nix 0.27.1", - "windows-sys 0.52.0", + "windows-sys 0.48.0", ] [[package]] @@ -1335,9 +1336,9 @@ dependencies = [ [[package]] name = "darling" -version = "0.20.8" +version = "0.20.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54e36fcd13ed84ffdfda6f5be89b31287cbb80c439841fe69e04841435464391" +checksum = "0209d94da627ab5605dcccf08bb18afa5009cfbef48d8a8b7d7bdbc79be25c5e" dependencies = [ "darling_core", "darling_macro", @@ -1345,26 +1346,26 @@ dependencies = [ [[package]] name = "darling_core" -version = "0.20.8" +version = "0.20.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c2cf1c23a687a1feeb728783b993c4e1ad83d99f351801977dd809b48d0a70f" +checksum = "177e3443818124b357d8e76f53be906d60937f0d3a90773a664fa63fa253e621" dependencies = [ "fnv", "ident_case", "proc-macro2", "quote", - "syn 2.0.52", + "syn 2.0.39", ] [[package]] name = "darling_macro" -version = "0.20.8" +version = "0.20.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a668eda54683121533a393014d8692171709ff57a7d61f187b6e782719f8933f" +checksum = "836a9bbc7ad63342d6d6e7b815ccab164bc77a2d95d84bc3117a8c0d5c98e2d5" dependencies = [ "darling_core", "quote", - "syn 2.0.52", + "syn 2.0.39", ] [[package]] @@ -1389,11 +1390,11 @@ dependencies = [ [[package]] name = "depthai-viewer" -version = "0.1.8" +version = "0.1.9" dependencies = [ "anyhow", "backtrace", - "clap 4.5.1", + "clap 4.4.11", "ctrlc", "document-features", "itertools", @@ -1421,9 +1422,9 @@ dependencies = [ [[package]] name = "deranged" -version = "0.3.11" +version = "0.3.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4" +checksum = "8eb30d70a07a3b04884d2677f06bec33509dc67ca60d92949e5535352d3191dc" dependencies = [ "powerfmt", "serde", @@ -1489,12 +1490,12 @@ version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "330c60081dcc4c72131f8eb70510f1ac07223e5d4163db481a04a0befcffa412" dependencies = [ - "libloading 0.8.2", + "libloading 0.8.1", ] [[package]] name = "dna" -version = "0.1.8" +version = "0.1.9" dependencies = [ "depthai-viewer", "itertools", @@ -1503,9 +1504,9 @@ dependencies = [ [[package]] name = "document-features" -version = "0.2.8" +version = "0.2.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef5282ad69563b5fc40319526ba27e0e7363d552a896f0297d54f767717f9b95" +checksum = "e493c573fce17f00dcab13b6ac057994f3ce17d1af4dc39bfd482b83c6eb6157" dependencies = [ "litrs", ] @@ -1518,9 +1519,9 @@ checksum = "9ea835d29036a4087793836fa931b08837ad5e957da9e23886b29586fb9b6650" [[package]] name = "dyn-clone" -version = "1.0.17" +version = "1.0.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d6ef0072f8a535281e4876be788938b528e9a1d43900b82c2569af7da799125" +checksum = "545b22097d44f8a9581187cdf93de7a71e4722bf51200cfaba810865b49a495d" [[package]] name = "ecolor" @@ -1659,9 +1660,9 @@ dependencies = [ [[package]] name = "either" -version = "1.10.0" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11157ac094ffbdde99aa67b23417ebdd801842852b500e395a45a9c0aac03e4a" +checksum = "a26ae43d7bcc3b814de94796a5e736d4029efb0ee900c12e2d54c993ad1a1e07" [[package]] name = "emath" @@ -1689,9 +1690,9 @@ dependencies = [ [[package]] name = "enumflags2" -version = "0.7.9" +version = "0.7.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3278c9d5fb675e0a51dabcf4c0d355f692b064171535ba72361be1528a9d8e8d" +checksum = "5998b4f30320c9d93aed72f63af821bfdac50465b75428fce77b48ec482c3939" dependencies = [ "enumflags2_derive", "serde", @@ -1699,24 +1700,24 @@ dependencies = [ [[package]] name = "enumflags2_derive" -version = "0.7.9" +version = "0.7.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c785274071b1b420972453b306eeca06acf4633829db4223b58a2a8c5953bc4" +checksum = "f95e2801cd355d4a1a3e3953ce6ee5ae9603a5c833455343a8bfe3f44d418246" dependencies = [ "proc-macro2", "quote", - "syn 2.0.52", + "syn 2.0.39", ] [[package]] name = "enumn" -version = "0.1.13" +version = "0.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6fd000fd6988e73bbe993ea3db9b1aa64906ab88766d654973924340c8cddb42" +checksum = "c2ad8cef1d801a4686bfd8919f0b30eac4c8e48968c437a6405ded4fb5272d2b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.52", + "syn 2.0.39", ] [[package]] @@ -1737,14 +1738,14 @@ dependencies = [ "darling", "proc-macro2", "quote", - "syn 2.0.52", + "syn 2.0.39", ] [[package]] name = "env_logger" -version = "0.10.2" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4cd405aab171cb85d6735e5c8d9db038c17d3ca007a4d2c25f337935c3d90580" +checksum = "95b3f3e67048839cb0d0781f445682a35113da7121f7c949db0e2be96a4fbece" dependencies = [ "humantime", "is-terminal", @@ -1802,9 +1803,13 @@ dependencies = [ [[package]] name = "error-code" -version = "3.2.0" +version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0474425d51df81997e2f90a21591180b38eccf27292d755f3e30750225c175b" +checksum = "64f18991e7bf11e7ffee451b5318b5c1a73c52d0d0ada6e5a3017c8c1ced6a21" +dependencies = [ + "libc", + "str-buf", +] [[package]] name = "ethnum" @@ -1831,20 +1836,9 @@ dependencies = [ [[package]] name = "event-listener" -version = "4.0.3" +version = "4.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67b215c49b2b248c855fb73579eb1f4f26c38ffdc12973e20e07b91d78d5646e" -dependencies = [ - "concurrent-queue", - "parking", - "pin-project-lite", -] - -[[package]] -name = "event-listener" -version = "5.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b5fb89194fa3cad959b833185b3063ba881dbfc7030680b314250779fb4cc91" +checksum = "770d968249b5d99410d61f5bf89057f3199a077a04d087092f58e7d10692baae" dependencies = [ "concurrent-queue", "parking", @@ -1857,17 +1851,7 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "958e4d70b6d5e81971bebec42271ec641e7ff4e170a6fa605f2b8a8b65cb97d3" dependencies = [ - "event-listener 4.0.3", - "pin-project-lite", -] - -[[package]] -name = "event-listener-strategy" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "feedafcaa9b749175d5ac357452a9d41ea2911da598fde46ce1fe02c37751291" -dependencies = [ - "event-listener 5.2.0", + "event-listener 4.0.0", "pin-project-lite", ] @@ -1907,9 +1891,9 @@ checksum = "25cbce373ec4653f1a01a31e8a5e5ec0c622dc27ff9c4e6606eefef5cbbed4a5" [[package]] name = "fdeflate" -version = "0.3.4" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f9bfee30e4dedf0ab8b422f03af778d9612b63f502710fc500a334ebe2de645" +checksum = "64d6dafc854908ff5da46ff3f8f473c6984119a2876a383a860246dd7841a868" dependencies = [ "simd-adler32", ] @@ -1940,13 +1924,13 @@ dependencies = [ [[package]] name = "fixed" -version = "1.25.1" +version = "1.24.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e29e5681dc8556fb9df1409e95eae050e12e8776394313da3546dcb8cf390c73" +checksum = "02c69ce7e7c0f17aa18fdd9d0de39727adb9c6281f2ad12f57cbe54ae6e76e7d" dependencies = [ "az", "bytemuck", - "half", + "half 2.3.1", "serde", "typenum", ] @@ -1979,28 +1963,7 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" dependencies = [ - "foreign-types-shared 0.1.1", -] - -[[package]] -name = "foreign-types" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d737d9aa519fb7b749cbc3b962edcf310a8dd1f4b67c91c4f83975dbdd17d965" -dependencies = [ - "foreign-types-macros", - "foreign-types-shared 0.3.1", -] - -[[package]] -name = "foreign-types-macros" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.52", + "foreign-types-shared", ] [[package]] @@ -2009,12 +1972,6 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" -[[package]] -name = "foreign-types-shared" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa9a19cbb55df58761df49b23516a86d432839add4af60fc256da840f66ed35b" - [[package]] name = "foreign_vec" version = "0.1.0" @@ -2047,9 +2004,9 @@ checksum = "a06f77d526c1a601b7c4cdd98f54b5eaabffc14d5f2f0296febdc7f357c6d3ba" [[package]] name = "futures" -version = "0.3.30" +version = "0.3.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "645c6916888f6cb6350d2550b80fb63e734897a8498abe35cfb732b6487804b0" +checksum = "da0290714b38af9b4a7b094b8a37086d1b4e61f2df9122c3cad2577669145335" dependencies = [ "futures-channel", "futures-core", @@ -2062,9 +2019,9 @@ dependencies = [ [[package]] name = "futures-channel" -version = "0.3.30" +version = "0.3.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eac8f7d7865dcb88bd4373ab671c8cf4508703796caa2b1985a9ca867b3fcb78" +checksum = "ff4dd66668b557604244583e3e1e1eada8c5c2e96a6d0d6653ede395b78bbacb" dependencies = [ "futures-core", "futures-sink", @@ -2072,15 +2029,15 @@ dependencies = [ [[package]] name = "futures-core" -version = "0.3.30" +version = "0.3.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d" +checksum = "eb1d22c66e66d9d72e1758f0bd7d4fd0bee04cad842ee34587d68c07e45d088c" [[package]] name = "futures-executor" -version = "0.3.30" +version = "0.3.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a576fc72ae164fca6b9db127eaa9a9dda0d61316034f33a0a0d4eda41f02b01d" +checksum = "0f4fb8693db0cf099eadcca0efe2a5a22e4550f98ed16aba6c48700da29597bc" dependencies = [ "futures-core", "futures-task", @@ -2089,9 +2046,9 @@ dependencies = [ [[package]] name = "futures-io" -version = "0.3.30" +version = "0.3.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1" +checksum = "8bf34a163b5c4c52d0478a4d757da8fb65cabef42ba90515efee0f6f9fa45aaa" [[package]] name = "futures-lite" @@ -2110,9 +2067,9 @@ dependencies = [ [[package]] name = "futures-lite" -version = "2.2.0" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "445ba825b27408685aaecefd65178908c36c6e96aaf6d8599419d46e624192ba" +checksum = "aeee267a1883f7ebef3700f262d2d54de95dfaf38189015a74fdc4e0c7ad8143" dependencies = [ "fastrand 2.0.1", "futures-core", @@ -2123,32 +2080,32 @@ dependencies = [ [[package]] name = "futures-macro" -version = "0.3.30" +version = "0.3.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" +checksum = "53b153fd91e4b0147f4aced87be237c98248656bb01050b96bf3ee89220a8ddb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.52", + "syn 2.0.39", ] [[package]] name = "futures-sink" -version = "0.3.30" +version = "0.3.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fb8e00e87438d937621c1c6269e53f536c14d3fbd6a042bb24879e57d474fb5" +checksum = "e36d3378ee38c2a36ad710c5d30c2911d752cb941c00c72dbabfb786a7970817" [[package]] name = "futures-task" -version = "0.3.30" +version = "0.3.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004" +checksum = "efd193069b0ddadc69c46389b740bbccdd97203899b48d09c5f7969591d6bae2" [[package]] name = "futures-util" -version = "0.3.30" +version = "0.3.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48" +checksum = "a19526d624e703a3179b3d322efec918b6246ea0fa51d41124525f00f1cc8104" dependencies = [ "futures-channel", "futures-core", @@ -2174,19 +2131,19 @@ dependencies = [ [[package]] name = "gethostname" -version = "0.4.3" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0176e0459c2e4a1fe232f984bca6890e681076abb9934f6cea7c326f3fc47818" +checksum = "bb65d4ba3173c56a500b555b532f72c42e8d1fe64962b518897f8959fae2c177" dependencies = [ "libc", - "windows-targets 0.48.5", + "winapi", ] [[package]] name = "getrandom" -version = "0.2.12" +version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "190092ea657667030ac6a35e305e62fc4dd69fd98ac98631e5d3a2b1575a12b5" +checksum = "fe9006bed769170c11f845cf00c7c1e9092aeb3f268e007c3e760ac68008070f" dependencies = [ "cfg-if", "js-sys", @@ -2244,36 +2201,35 @@ dependencies = [ [[package]] name = "gltf" -version = "1.4.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b78f069cf941075835822953c345b9e1edd67ae347b81ace3aea9de38c2ef33" +checksum = "ad2dcfb6dd7a66f9eb3d181a29dcfb22d146b0bcdc2e1ed1713cbf03939a88ea" dependencies = [ "base64 0.13.1", "byteorder", "gltf-json", "image", "lazy_static", - "serde_json", "urlencoding", ] [[package]] name = "gltf-derive" -version = "1.4.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "438ffe1a5540d75403feaf23636b164e816e93f6f03131674722b3886ce32a57" +checksum = "f2cbcea5dd47e7ad4e9ee6f040384fcd7204bbf671aa4f9e7ca7dfc9bfa1de20" dependencies = [ "inflections", "proc-macro2", "quote", - "syn 2.0.52", + "syn 2.0.39", ] [[package]] name = "gltf-json" -version = "1.4.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "655951ba557f2bc69ea4b0799446bae281fa78efae6319968bdd2c3e9a06d8e1" +checksum = "7d5b810806b78dde4b71a95cc0e6fdcab34c4c617da3574df166f9987be97d03" dependencies = [ "gltf-derive", "serde", @@ -2319,7 +2275,7 @@ version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cc11df1ace8e7e564511f53af41f3e42ddc95b56fd07b3f4445d2a6048bc682c" dependencies = [ - "bitflags 2.4.2", + "bitflags 2.4.1", "gpu-descriptor-types", "hashbrown 0.14.3", ] @@ -2330,14 +2286,14 @@ version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6bf0b36e6f090b7e1d8a4b49c0cb81c1f8376f72198c65dd3ad9ff3556b8b78c" dependencies = [ - "bitflags 2.4.2", + "bitflags 2.4.1", ] [[package]] name = "h2" -version = "0.3.24" +version = "0.3.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb2c4422095b67ee78da96fbb51a4cc413b3b25883c7717ff7ca1ab31022c9c9" +checksum = "4d6250322ef6e60f93f9a2162799302cd6f68f79f6e5d85c8c16f14d1d958178" dependencies = [ "bytes", "fnv", @@ -2345,7 +2301,7 @@ dependencies = [ "futures-sink", "futures-util", "http", - "indexmap 2.2.5", + "indexmap 2.1.0", "slab", "tokio", "tokio-util", @@ -2354,9 +2310,15 @@ dependencies = [ [[package]] name = "half" -version = "2.4.0" +version = "1.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eabb4a44450da02c90444cf74558da904edde8fb4e9035a9a6a4e15445af0bd7" + +[[package]] +name = "half" +version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5eceaaeec696539ddaf7b333340f1af35a5aa87ae3e4f3ead0532f72affab2e" +checksum = "bc52e53916c08643f1b56ec082790d1e86a32e58dc5268f897f313fbae7b4872" dependencies = [ "bytemuck", "cfg-if", @@ -2437,9 +2399,9 @@ dependencies = [ [[package]] name = "hermit-abi" -version = "0.3.9" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" +checksum = "d77f7ec81a6d05a3abb01ab6eb7590f6083d08449fe5a1c8b1e620283546ccb7" [[package]] name = "hex" @@ -2455,11 +2417,11 @@ checksum = "dfa686283ad6dd069f105e5ab091b04c62850d3e4cf5d67debad1933f55023df" [[package]] name = "home" -version = "0.5.9" +version = "0.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3d1354bf6b7235cb4a0576c2619fd4ed18183f689b12b006a0ee7329eeff9a5" +checksum = "5444c27eef6923071f7ebcc33e3444508466a76f7a2b93da00ed6e19f30c1ddb" dependencies = [ - "windows-sys 0.52.0", + "windows-sys 0.48.0", ] [[package]] @@ -2486,9 +2448,9 @@ dependencies = [ [[package]] name = "http-body" -version = "0.4.6" +version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ceab25649e9960c0311ea418d17bee82c0dcec1bd053b5f9a66e265a693bed2" +checksum = "d5f38f16d184e36f2408a55281cd658ecbd3ca05cce6d6510a176eca393e26d1" dependencies = [ "bytes", "http", @@ -2515,9 +2477,9 @@ checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" [[package]] name = "hyper" -version = "0.14.28" +version = "0.14.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf96e135eb83a2a8ddf766e426a841d8ddd7449d5f00d34ea02b41d2f19eef80" +checksum = "ffb1cfd654a8219eaef89881fdb3bb3b1cdc5fa75ded05d6933b2b382e395468" dependencies = [ "bytes", "futures-channel", @@ -2530,7 +2492,7 @@ dependencies = [ "httpdate", "itoa", "pin-project-lite", - "socket2 0.5.6", + "socket2 0.4.10", "tokio", "tower-service", "tracing", @@ -2552,9 +2514,9 @@ dependencies = [ [[package]] name = "iana-time-zone" -version = "0.1.60" +version = "0.1.58" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7ffbb5a1b541ea2561f8c41c087286cc091e21e556a4f09a8f6cbf17b69b141" +checksum = "8326b86b6cff230b97d0d312a6c40a60726df3332e721f72a1b035f451663b20" dependencies = [ "android_system_properties", "core-foundation-sys", @@ -2597,14 +2559,15 @@ dependencies = [ [[package]] name = "image" -version = "0.24.9" +version = "0.24.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5690139d2f55868e080017335e4b94cb7414274c74f1669c84fb5feba2c9f69d" +checksum = "6f3dfdbdd72063086ff443e297b61695500514b1e41095b6fb9a5ab48a70a711" dependencies = [ "bytemuck", "byteorder", "color_quant", "jpeg-decoder", + "num-rational", "num-traits", "png", "tiff", @@ -2628,9 +2591,9 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.2.5" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b0b929d511467233429c45a44ac1dcaa21ba0f5ba11e4879e6ed28ddb4f9df4" +checksum = "d530e1a18b1cb4c484e6e34556a0d948706958449fca0cab753d649f2bce3d1f" dependencies = [ "equivalent", "hashbrown 0.14.3", @@ -2670,9 +2633,9 @@ dependencies = [ [[package]] name = "insta" -version = "1.35.1" +version = "1.34.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c985c1bef99cf13c58fade470483d81a2bfe846ebde60ed28cc2dddec2df9e2" +checksum = "5d64600be34b2fcfc267740a243fa7744441bb4947a619ac4e5bb6507f35fbfc" dependencies = [ "console", "lazy_static", @@ -2699,7 +2662,7 @@ version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eae7b9aee968036d54dce06cebaefd919e4472e753296daccd6d344e3e2df0c2" dependencies = [ - "hermit-abi 0.3.9", + "hermit-abi 0.3.3", "libc", "windows-sys 0.48.0", ] @@ -2712,13 +2675,13 @@ checksum = "8f518f335dce6725a761382244631d86cf0ccb2863413590b31338feb467f9c3" [[package]] name = "is-terminal" -version = "0.4.12" +version = "0.4.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f23ff5ef2b80d608d61efee834934d862cd92461afc0560dedf493e4c033738b" +checksum = "cb0889898416213fab133e1d33a0e5858a48177452750691bde3666d0fdbaf8b" dependencies = [ - "hermit-abi 0.3.9", - "libc", - "windows-sys 0.52.0", + "hermit-abi 0.3.3", + "rustix 0.38.26", + "windows-sys 0.48.0", ] [[package]] @@ -2732,9 +2695,9 @@ dependencies = [ [[package]] name = "itoa" -version = "1.0.10" +version = "1.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1a46d1a171d865aa5f83f92695765caa047a9b4cbae2cbf37dbd613a793fd4c" +checksum = "af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38" [[package]] name = "jni" @@ -2758,11 +2721,20 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8eaf4bc02d17cbdd7ff4c7438cafcdf7fb9a4613313ad11b4f8fefe7d3fa0130" +[[package]] +name = "jobserver" +version = "0.1.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c37f63953c4c63420ed5fd3d6d398c719489b9f872b9fa683262f8edd363c7d" +dependencies = [ + "libc", +] + [[package]] name = "jpeg-decoder" -version = "0.3.1" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f5d4a7da358eff58addd2877a45865158f0d78c911d43a5784ceb7bbf52833b0" +checksum = "bc0000e42512c92e31c2252315bda326620a4e034105e900c98ec492fa077b3e" [[package]] name = "js-sys" @@ -2891,9 +2863,9 @@ dependencies = [ [[package]] name = "libc" -version = "0.2.153" +version = "0.2.150" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c198f91728a82281a64e1f4f9eeb25d82cb32a5de251c6bd1b5154d63a8e7bd" +checksum = "89d92a4743f9a61002fae18374ed11e7973f530cb3a3255fb354818118b2203c" [[package]] name = "libloading" @@ -2907,12 +2879,12 @@ dependencies = [ [[package]] name = "libloading" -version = "0.8.2" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2caa5afb8bf9f3a2652760ce7d4f62d21c4d5a423e68466fca30df82f2330164" +checksum = "c571b676ddfc9a8c12f1f3d3085a7b163966a8fd8098a90640953ce5f6170161" dependencies = [ "cfg-if", - "windows-targets 0.52.4", + "windows-sys 0.48.0", ] [[package]] @@ -2937,7 +2909,7 @@ version = "0.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "85c833ca1e66078851dba29046874e38f08b2c883700aa29a03ddd3b23814ee8" dependencies = [ - "bitflags 2.4.2", + "bitflags 2.4.1", "libc", "redox_syscall 0.4.1", ] @@ -2948,7 +2920,7 @@ version = "0.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3af92c55d7d839293953fcd0fda5ecfe93297cfde6ffbdec13b41d99c0ba6607" dependencies = [ - "bitflags 2.4.2", + "bitflags 2.4.1", "libc", "redox_syscall 0.4.1", ] @@ -2967,15 +2939,15 @@ checksum = "ef53942eb7bf7ff43a617b3e2c1c4a5ecf5944a7c1bc12d7ee39bbb15e5c1519" [[package]] name = "linux-raw-sys" -version = "0.4.13" +version = "0.4.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01cda141df6706de531b6c46c3a33ecca755538219bd484262fa09410c13539c" +checksum = "c4cd1a83af159aa67994778be9070f0ae1bd732942279cabb14f86f986a21456" [[package]] name = "litrs" -version = "0.4.1" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4ce301924b7887e9d637144fdade93f9dfff9b60981d4ac161db09720d39aa5" +checksum = "f9275e0933cf8bb20f008924c0cb07a0692fe54d8064996520bf998de9eb79aa" [[package]] name = "lock_api" @@ -2989,18 +2961,18 @@ dependencies = [ [[package]] name = "log" -version = "0.4.21" +version = "0.4.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90ed8c1e510134f979dbc4f070f87d4313098b704861a105fe34231c70a3901c" +checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f" dependencies = [ "value-bag", ] [[package]] name = "log-once" -version = "0.4.1" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d8a05e3879b317b1b6dbf353e5bba7062bedcc59815267bb23eaa0c576cebf0" +checksum = "1ae8737764ac12e9cfc5ab42a9ec2bdb7e2b376ce9694a4dffc92b7adee09cb5" dependencies = [ "log", ] @@ -3043,9 +3015,9 @@ dependencies = [ [[package]] name = "memchr" -version = "2.7.1" +version = "2.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "523dc4f511e55ab87b694dc30d0f820d60906ef06413f93d4d7a1385599cc149" +checksum = "f665ee40bc4a3c5590afb1e9677db74a508659dfd71e126420da8274909a0167" [[package]] name = "memmap2" @@ -3111,7 +3083,7 @@ dependencies = [ "bitflags 1.3.2", "block", "core-graphics-types", - "foreign-types 0.3.2", + "foreign-types", "log", "objc", ] @@ -3133,26 +3105,32 @@ checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" [[package]] name = "minimal" -version = "0.1.8" +version = "0.1.9" dependencies = [ "depthai-viewer", ] +[[package]] +name = "minimal-lexical" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" + [[package]] name = "minimal_options" -version = "0.1.8" +version = "0.1.9" dependencies = [ "anyhow", - "clap 4.5.1", + "clap 4.4.11", "depthai-viewer", "glam", ] [[package]] name = "miniz_oxide" -version = "0.7.2" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d811f3e15f28568be3407c8e7fdb6514c1cda3cb30683f15b6a1a1dc4ea14a7" +checksum = "e7810e0be55b428ada41041c41f32c9f1a42817901b4ccf45fa3d4b6561e74c7" dependencies = [ "adler", "simd-adler32", @@ -3166,9 +3144,9 @@ checksum = "e53debba6bda7a793e5f99b8dacf19e626084f525f7829104ba9898f367d85ff" [[package]] name = "mio" -version = "0.8.11" +version = "0.8.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4a650543ca06a924e8b371db273b2756685faae30f8487da1b56505a8f78b0c" +checksum = "3dce281c5e46beae905d4de1870d8b1509a9142b62eedf18b443b011ca8343d0" dependencies = [ "libc", "log", @@ -3341,7 +3319,7 @@ version = "0.27.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2eb04e9c688eff1c89d72b407f168cf79bb9e867a9d3323ed6c01519eb9cc053" dependencies = [ - "bitflags 2.4.2", + "bitflags 2.4.1", "cfg-if", "libc", ] @@ -3352,6 +3330,16 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2bf50223579dc7cdcfb3bfcacf7069ff68243f8c363f62ffa99cf000a6b9c451" +[[package]] +name = "nom" +version = "7.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" +dependencies = [ + "memchr", + "minimal-lexical", +] + [[package]] name = "notify" version = "5.2.0" @@ -3406,19 +3394,13 @@ dependencies = [ [[package]] name = "num-complex" -version = "0.4.5" +version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23c6602fda94a57c990fe0df199a035d83576b496aa29f4e634a8ac6004e68a6" +checksum = "1ba157ca0885411de85d6ca030ba7e2a83a28636056c7c699b07c8b6f7383214" dependencies = [ "num-traits", ] -[[package]] -name = "num-conv" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" - [[package]] name = "num-derive" version = "0.3.3" @@ -3432,18 +3414,19 @@ dependencies = [ [[package]] name = "num-integer" -version = "0.1.46" +version = "0.1.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" +checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9" dependencies = [ + "autocfg", "num-traits", ] [[package]] name = "num-iter" -version = "0.1.44" +version = "0.1.43" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d869c01cc0c455284163fd0092f1f93835385ccab5a98a0dcc497b2f8bf055a9" +checksum = "7d03e6c028c5dc5cac6e2dec0efda81fc887605bb3d884578bb6d6bf7514e252" dependencies = [ "autocfg", "num-integer", @@ -3464,9 +3447,9 @@ dependencies = [ [[package]] name = "num-traits" -version = "0.2.18" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da0df0e5185db44f69b44f26786fe401b6c293d1907744beaa7fa62b2e5a517a" +checksum = "39e3200413f237f41ab11ad6d161bc7239c84dcb631773ccd7de3dfe4b5c267c" dependencies = [ "autocfg", "libm", @@ -3478,7 +3461,7 @@ version = "1.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" dependencies = [ - "hermit-abi 0.3.9", + "hermit-abi 0.3.3", "libc", ] @@ -3521,7 +3504,7 @@ dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.52", + "syn 2.0.39", ] [[package]] @@ -3530,7 +3513,7 @@ version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "96b0fee4571867d318651c24f4a570c3f18408cf95f16ccb576b3ce85496a46e" dependencies = [ - "half", + "half 2.3.1", "libc", "ndarray", "num-complex", @@ -3607,19 +3590,19 @@ dependencies = [ [[package]] name = "object" -version = "0.32.2" +version = "0.32.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6a622008b6e321afc04970976f62ee297fdbaa6f95318ca343e3eebb9648441" +checksum = "9cf5f9dd3933bd50a9e1f149ec995f39ae2c496d31fd772c1fd45ebc27e902b0" dependencies = [ "memchr", ] [[package]] name = "objectron" -version = "0.1.8" +version = "0.1.9" dependencies = [ "anyhow", - "clap 4.5.1", + "clap 4.4.11", "depthai-viewer", "glam", "prost", @@ -3628,9 +3611,9 @@ dependencies = [ [[package]] name = "once_cell" -version = "1.19.0" +version = "1.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" +checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d" [[package]] name = "oorandom" @@ -3640,13 +3623,13 @@ checksum = "0ab1bc2a289d34bd04a330323ac98a1b4bc82c9d9fcb1e66b63caa84da26b575" [[package]] name = "openssl" -version = "0.10.64" +version = "0.10.61" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95a0481286a310808298130d22dd1fef0fa571e05a8f44ec801801e84b216b1f" +checksum = "6b8419dc8cc6d866deb801274bba2e6f8f6108c1bb7fcc10ee5ab864931dbb45" dependencies = [ - "bitflags 2.4.2", + "bitflags 2.4.1", "cfg-if", - "foreign-types 0.3.2", + "foreign-types", "libc", "once_cell", "openssl-macros", @@ -3661,7 +3644,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.52", + "syn 2.0.39", ] [[package]] @@ -3672,9 +3655,9 @@ checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" [[package]] name = "openssl-sys" -version = "0.9.101" +version = "0.9.97" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dda2b0f344e78efc2facf7d195d098df0dd72151b26ab98da807afc26c198dff" +checksum = "c3eaad34cdd97d81de97964fc7f29e2d104f483840d906ef56daa1912338460b" dependencies = [ "cc", "libc", @@ -3818,7 +3801,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e1d3afd2628e69da2be385eb6f2fd57c8ac7977ceeff6dc166ff1657b0e386a9" dependencies = [ "fixedbitset", - "indexmap 2.2.5", + "indexmap 2.1.0", ] [[package]] @@ -3852,9 +3835,9 @@ dependencies = [ [[package]] name = "pkg-config" -version = "0.3.30" +version = "0.3.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec" +checksum = "26072860ba924cbfa98ea39c8c19b4dd6a4a25423dbdf219c1eca91aa0cf6964" [[package]] name = "planus" @@ -3895,9 +3878,9 @@ dependencies = [ [[package]] name = "png" -version = "0.17.13" +version = "0.17.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06e4b0d3d1312775e782c86c91a111aa1f910cbb65e1337f9975b5f9a554b5e1" +checksum = "dd75bf2d8dd3702b9707cdbc56a5b9ef42cec752eb8b3bafc01234558442aa64" dependencies = [ "bitflags 1.3.2", "crc32fast", @@ -3993,14 +3976,14 @@ dependencies = [ [[package]] name = "polling" -version = "3.5.0" +version = "3.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24f040dee2588b4963afb4e420540439d126f73fdacf4a9c486a96d840bac3c9" +checksum = "cf63fa624ab313c11656b4cda960bfc46c410187ad493c41f6ba2d8c1e991c9e" dependencies = [ "cfg-if", "concurrent-queue", "pin-project-lite", - "rustix 0.38.31", + "rustix 0.38.26", "tracing", "windows-sys 0.52.0", ] @@ -4069,18 +4052,18 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.78" +version = "1.0.70" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2422ad645d89c99f8f3e6b88a9fdeca7fabeac836b1002371c4367c8f984aae" +checksum = "39278fbbf5fb4f646ce651690877f89d1c5811a3d4acb27700c1cb3cdb78fd3b" dependencies = [ "unicode-ident", ] [[package]] name = "profiling" -version = "1.0.15" +version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43d84d1d7a6ac92673717f9f6d1518374ef257669c24ebc5ac25d5033828be58" +checksum = "f89dff0959d98c9758c88826cc002e2c3d0b9dfac4139711d1f30de442f1139b" [[package]] name = "prost" @@ -4252,9 +4235,9 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.35" +version = "1.0.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef" +checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae" dependencies = [ "proc-macro2", ] @@ -4341,11 +4324,11 @@ checksum = "f2ff9a1f06a88b01621b7ae906ef0211290d1c8a168a15542486a8f61c0833b9" [[package]] name = "raw_mesh" -version = "0.1.8" +version = "0.1.9" dependencies = [ "anyhow", "bytes", - "clap 4.5.1", + "clap 4.4.11", "depthai-viewer", "gltf", "mimalloc", @@ -4359,9 +4342,9 @@ checksum = "60a357793950651c4ed0f3f52338f53b2f809f32d83a07f72909fa13e4c6c1e3" [[package]] name = "rayon" -version = "1.9.0" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e4963ed1bc86e4f3ee217022bd855b297cef07fb9eac5dfa1f788b220b49b3bd" +checksum = "9c27db03db7734835b3f53954b534c91069375ce6ccaa2e065441e07d9b6cdb1" dependencies = [ "either", "rayon-core", @@ -4369,9 +4352,9 @@ dependencies = [ [[package]] name = "rayon-core" -version = "1.12.1" +version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1465873a3dfdaa8ae7cb14b4383657caab0b3e8a0aa9ae8e04b044854c8dfce2" +checksum = "5ce3fb6ad83f861aac485e76e1985cd109d9a3713802152be56c3b1f0e0658ed" dependencies = [ "crossbeam-deque", "crossbeam-utils", @@ -4388,7 +4371,7 @@ dependencies = [ [[package]] name = "re_analytics" -version = "0.1.8" +version = "0.1.9" dependencies = [ "anyhow", "crossbeam", @@ -4409,7 +4392,7 @@ dependencies = [ [[package]] name = "re_arrow_store" -version = "0.1.8" +version = "0.1.9" dependencies = [ "ahash", "anyhow", @@ -4436,7 +4419,7 @@ dependencies = [ [[package]] name = "re_build_build_info" -version = "0.1.8" +version = "0.1.9" dependencies = [ "anyhow", "time", @@ -4444,18 +4427,18 @@ dependencies = [ [[package]] name = "re_build_info" -version = "0.1.8" +version = "0.1.9" [[package]] name = "re_build_web_viewer" -version = "0.1.8" +version = "0.1.9" dependencies = [ "cargo_metadata", ] [[package]] name = "re_data_store" -version = "0.1.8" +version = "0.1.9" dependencies = [ "ahash", "criterion", @@ -4478,14 +4461,14 @@ dependencies = [ [[package]] name = "re_error" -version = "0.1.8" +version = "0.1.9" dependencies = [ "anyhow", ] [[package]] name = "re_format" -version = "0.1.8" +version = "0.1.9" dependencies = [ "arrow2", "arrow2_convert", @@ -4495,7 +4478,7 @@ dependencies = [ [[package]] name = "re_int_histogram" -version = "0.1.8" +version = "0.1.9" dependencies = [ "criterion", "insta", @@ -4506,7 +4489,7 @@ dependencies = [ [[package]] name = "re_log" -version = "0.1.8" +version = "0.1.9" dependencies = [ "env_logger", "js-sys", @@ -4519,7 +4502,7 @@ dependencies = [ [[package]] name = "re_log_encoding" -version = "0.1.8" +version = "0.1.9" dependencies = [ "criterion", "ehttp", @@ -4544,7 +4527,7 @@ dependencies = [ [[package]] name = "re_log_types" -version = "0.1.8" +version = "0.1.9" dependencies = [ "ahash", "array-init", @@ -4555,7 +4538,7 @@ dependencies = [ "ecolor", "fixed", "glam", - "half", + "half 2.3.1", "image", "itertools", "lazy_static", @@ -4583,7 +4566,7 @@ dependencies = [ [[package]] name = "re_memory" -version = "0.1.8" +version = "0.1.9" dependencies = [ "ahash", "backtrace", @@ -4603,7 +4586,7 @@ dependencies = [ [[package]] name = "re_query" -version = "0.1.8" +version = "0.1.9" dependencies = [ "arrow2", "criterion", @@ -4621,7 +4604,7 @@ dependencies = [ [[package]] name = "re_renderer" -version = "0.1.8" +version = "0.1.9" dependencies = [ "ahash", "anyhow", @@ -4639,7 +4622,7 @@ dependencies = [ "glam", "glob", "gltf", - "half", + "half 2.3.1", "image", "instant", "itertools", @@ -4674,7 +4657,7 @@ dependencies = [ [[package]] name = "re_sdk" -version = "0.1.8" +version = "0.1.9" dependencies = [ "arrow2_convert", "document-features", @@ -4694,7 +4677,7 @@ dependencies = [ [[package]] name = "re_sdk_comms" -version = "0.1.8" +version = "0.1.9" dependencies = [ "ahash", "anyhow", @@ -4710,7 +4693,7 @@ dependencies = [ [[package]] name = "re_smart_channel" -version = "0.1.8" +version = "0.1.9" dependencies = [ "crossbeam", "instant", @@ -4718,7 +4701,7 @@ dependencies = [ [[package]] name = "re_string_interner" -version = "0.1.8" +version = "0.1.9" dependencies = [ "ahash", "nohash-hasher", @@ -4729,7 +4712,7 @@ dependencies = [ [[package]] name = "re_tensor_ops" -version = "0.1.8" +version = "0.1.9" dependencies = [ "ahash", "ndarray", @@ -4739,7 +4722,7 @@ dependencies = [ [[package]] name = "re_tuid" -version = "0.1.8" +version = "0.1.9" dependencies = [ "arrow2", "arrow2_convert", @@ -4753,7 +4736,7 @@ dependencies = [ [[package]] name = "re_ui" -version = "0.1.8" +version = "0.1.9" dependencies = [ "eframe", "egui", @@ -4772,7 +4755,7 @@ dependencies = [ [[package]] name = "re_viewer" -version = "0.1.8" +version = "0.1.9" dependencies = [ "ahash", "anyhow", @@ -4791,7 +4774,7 @@ dependencies = [ "enumset", "ewebsock", "glam", - "half", + "half 2.3.1", "image", "instant", "itertools", @@ -4847,7 +4830,7 @@ dependencies = [ [[package]] name = "re_web_viewer_server" -version = "0.1.8" +version = "0.1.9" dependencies = [ "cargo_metadata", "ctrlc", @@ -4864,7 +4847,7 @@ dependencies = [ [[package]] name = "re_ws_comms" -version = "0.1.8" +version = "0.1.9" dependencies = [ "anyhow", "bincode", @@ -4922,9 +4905,9 @@ dependencies = [ [[package]] name = "regex" -version = "1.10.3" +version = "1.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b62dbe01f0b06f9d8dc7d49e05a0785f153b00b2c227856282f671e0318c9b15" +checksum = "380b951a9c5e80ddfd6136919eef32310721aa4aacd4889a8d39124b026ab343" dependencies = [ "aho-corasick", "memchr", @@ -4934,9 +4917,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.5" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5bb987efffd3c6d0d8f5f89510bb458559eab11e4f869acb20bf845e016259cd" +checksum = "5f804c7828047e88b2d32e2d7fe5a105da8ee3264f01902f796c8e067dc2483f" dependencies = [ "aho-corasick", "memchr", @@ -4966,11 +4949,11 @@ checksum = "216080ab382b992234dda86873c18d4c48358f5cfcb70fd693d7f6f2131b628b" [[package]] name = "reqwest" -version = "0.11.24" +version = "0.11.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6920094eb85afde5e4a138be3f2de8bbdf28000f0029e72c45025a56b042251" +checksum = "046cd98826c46c2ac8ddecae268eb5c2e58628688a5fc7a2643704a73faba95b" dependencies = [ - "base64 0.21.7", + "base64 0.21.5", "bytes", "encoding_rs", "futures-core", @@ -4988,11 +4971,9 @@ dependencies = [ "once_cell", "percent-encoding", "pin-project-lite", - "rustls-pemfile", "serde", "serde_json", "serde_urlencoded", - "sync_wrapper", "system-configuration", "tokio", "tokio-native-tls", @@ -5006,7 +4987,7 @@ dependencies = [ [[package]] name = "rerun_py" -version = "0.1.8" +version = "0.1.9" dependencies = [ "arrow2", "depthai-viewer", @@ -5077,17 +5058,16 @@ dependencies = [ [[package]] name = "ring" -version = "0.17.8" +version = "0.17.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c17fa4cb658e3583423e915b9f3acc01cceaee1860e33d59ebae66adc3a2dc0d" +checksum = "688c63d65483050968b2a8937f7995f443e27041a0f7700aa59b0822aedebb74" dependencies = [ "cc", - "cfg-if", "getrandom", "libc", "spin 0.9.8", "untrusted 0.9.0", - "windows-sys 0.52.0", + "windows-sys 0.48.0", ] [[package]] @@ -5118,15 +5098,15 @@ version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b91f7eff05f748767f183df4320a63d6936e9c6107d97c9e6bdd9784f4289c94" dependencies = [ - "base64 0.21.7", - "bitflags 2.4.2", + "base64 0.21.5", + "bitflags 2.4.1", "serde", "serde_derive", ] [[package]] name = "run_wasm" -version = "0.1.8" +version = "0.1.9" dependencies = [ "cargo-run-wasm", "pico-args", @@ -5170,14 +5150,14 @@ dependencies = [ [[package]] name = "rustix" -version = "0.38.31" +version = "0.38.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ea3e1a662af26cd7a3ba09c0297a31af215563ecf42817c98df621387f4e949" +checksum = "9470c4bf8246c8daf25f9598dca807fb6510347b1e1cfa55749113850c79d88a" dependencies = [ - "bitflags 2.4.2", + "bitflags 2.4.1", "errno", "libc", - "linux-raw-sys 0.4.13", + "linux-raw-sys 0.4.12", "windows-sys 0.52.0", ] @@ -5195,41 +5175,23 @@ dependencies = [ [[package]] name = "rustls" -version = "0.22.2" +version = "0.21.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e87c9956bd9807afa1f77e0f7594af32566e830e088a5576d27c5b6f30f49d41" +checksum = "629648aced5775d558af50b2b4c7b02983a04b312126d45eeead26e7caa498b9" dependencies = [ "log", - "ring 0.17.8", - "rustls-pki-types", + "ring 0.17.7", "rustls-webpki", - "subtle", - "zeroize", -] - -[[package]] -name = "rustls-pemfile" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c74cae0a4cf6ccbbf5f359f08efdf8ee7e1dc532573bf0db71968cb56b1448c" -dependencies = [ - "base64 0.21.7", + "sct", ] -[[package]] -name = "rustls-pki-types" -version = "1.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ede67b28608b4c60685c7d54122d4400d90f62b40caee7700e700380a390fa8" - [[package]] name = "rustls-webpki" -version = "0.102.2" +version = "0.101.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "faaa0a62740bedb9b2ef5afa303da42764c012f743917351dc9a237ea1663610" +checksum = "8b6275d1ee7a1cd780b64aca7726599a1dbc893b1e64144529e55c3c2f745765" dependencies = [ - "ring 0.17.8", - "rustls-pki-types", + "ring 0.17.7", "untrusted 0.9.0", ] @@ -5252,9 +5214,9 @@ dependencies = [ [[package]] name = "ryu" -version = "1.0.17" +version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e86697c916019a8588c99b5fac3cead74ec0b4b819707a682fd4d23fa0ce1ba1" +checksum = "1ad4cc8da4ef723ed60bced201181d83791ad433213d8c24efffda1eec85d741" [[package]] name = "safemem" @@ -5273,11 +5235,11 @@ dependencies = [ [[package]] name = "schannel" -version = "0.1.23" +version = "0.1.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fbc91545643bcf3a0bbb6569265615222618bdf33ce4ffbbd13c4bbd4c093534" +checksum = "0c3733bf4cf7ea0880754e19cb5a462007c4a8c1914bff372ccc95b464f1df88" dependencies = [ - "windows-sys 0.52.0", + "windows-sys 0.48.0", ] [[package]] @@ -5298,7 +5260,7 @@ version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "da046153aa2352493d6cb7da4b6e5c0c057d8a1d0a9aa8560baffdd945acd414" dependencies = [ - "ring 0.17.8", + "ring 0.17.7", "untrusted 0.9.0", ] @@ -5340,9 +5302,9 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.22" +version = "1.0.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92d43fe69e652f3df9bdc2b85b2854a0825b86e4fb76bc44d945137d053639ca" +checksum = "836fa6a3e1e547f9a2c4040802ec865b5d85f4014efe00555d7090a3dcaa1090" dependencies = [ "serde", ] @@ -5457,38 +5419,38 @@ dependencies = [ [[package]] name = "serde" -version = "1.0.197" +version = "1.0.193" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fb1c873e1b9b056a4dc4c0c198b24c3ffa059243875552b2bd0933b1aee4ce2" +checksum = "25dd9975e68d0cb5aa1120c288333fc98731bd1dd12f561e468ea4728c042b89" dependencies = [ "serde_derive", ] [[package]] name = "serde_bytes" -version = "0.11.14" +version = "0.11.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b8497c313fd43ab992087548117643f6fcd935cbf36f176ffda0aacf9591734" +checksum = "ab33ec92f677585af6d88c65593ae2375adde54efdbf16d597f2cbc7a6d368ff" dependencies = [ "serde", ] [[package]] name = "serde_derive" -version = "1.0.197" +version = "1.0.193" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7eb0b34b42edc17f6b7cac84a52a1c5f0e1bb2227e997ca9011ea3dd34e8610b" +checksum = "43576ca501357b9b071ac53cdc7da8ef0cbd9493d8df094cd821777ea6e894d3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.52", + "syn 2.0.39", ] [[package]] name = "serde_json" -version = "1.0.114" +version = "1.0.108" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5f09b1bd632ef549eaa9f60a1f8de742bdbc698e6cee2095fc84dde5f549ae0" +checksum = "3d1c7e3eac408d115102c4c24ad393e0821bb3a5df4d506a80f85f7a742a526b" dependencies = [ "itoa", "ryu", @@ -5497,13 +5459,13 @@ dependencies = [ [[package]] name = "serde_repr" -version = "0.1.18" +version = "0.1.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b2e6b945e9d3df726b65d6ee24060aff8e3533d431f677a9695db04eff9dfdb" +checksum = "3081f5ffbb02284dda55132aa26daecedd7372a42417bbbab6f14ab7d6bb9145" dependencies = [ "proc-macro2", "quote", - "syn 2.0.52", + "syn 2.0.39", ] [[package]] @@ -5604,9 +5566,9 @@ checksum = "f27f6278552951f1f2b8cf9da965d10969b2efdea95a6ec47987ab46edfe263a" [[package]] name = "similar" -version = "2.4.0" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32fea41aca09ee824cc9724996433064c89f7777e60762749a4170a14abbfa21" +checksum = "2aeaf503862c419d66959f5d7ca015337d864e9c49485d771b732e2a20453597" [[package]] name = "slab" @@ -5629,9 +5591,9 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.13.1" +version = "1.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7" +checksum = "4dccd0940a2dcdf68d092b8cbab7dc0ad8fa938bf95787e1b916b0e3d0e8e970" dependencies = [ "serde", ] @@ -5688,12 +5650,12 @@ dependencies = [ [[package]] name = "socket2" -version = "0.5.6" +version = "0.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05ffd9c0a93b7543e062e759284fcf5f5e3b098501104bfbdde4d404db792871" +checksum = "7b5fac59a5cb5dd637972e5fca70daf0523c9067fcdc4842f053dae04a18f8e9" dependencies = [ "libc", - "windows-sys 0.52.0", + "windows-sys 0.48.0", ] [[package]] @@ -5724,6 +5686,12 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" +[[package]] +name = "str-buf" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e08d8363704e6c71fc928674353e6b7c23dcea9d82d7012c8faf2a3a025f8d0" + [[package]] name = "strength_reduce" version = "0.2.4" @@ -5738,9 +5706,9 @@ checksum = "6637bab7722d379c8b41ba849228d680cc12d0a45ba1fa2b48f2a30577a06731" [[package]] name = "strsim" -version = "0.11.0" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ee073c9e4cd00e28217186dbe12796d692868f432bf2e97ee73bed0c56dfa01" +checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" [[package]] name = "strum" @@ -5799,12 +5767,6 @@ dependencies = [ "winapi", ] -[[package]] -name = "subtle" -version = "2.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81cdd64d312baedb58e21336b31bc043b77e01cc99033ce76ef539f78e965ebc" - [[package]] name = "syn" version = "1.0.109" @@ -5818,21 +5780,15 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.52" +version = "2.0.39" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b699d15b36d1f02c3e7c69f8ffef53de37aefae075d8488d4ba1a7788d574a07" +checksum = "23e78b90f2fcf45d3e842032ce32e3f2d1545ba6636271dcbf24fa306d87be7a" dependencies = [ "proc-macro2", "quote", "unicode-ident", ] -[[package]] -name = "sync_wrapper" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" - [[package]] name = "synstructure" version = "0.12.6" @@ -5882,9 +5838,9 @@ dependencies = [ [[package]] name = "target-lexicon" -version = "0.12.14" +version = "0.12.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1fc403891a21bcfb7c37834ba66a547a8f402146eba7265b5a6d88059c9ff2f" +checksum = "14c39fd04924ca3a864207c66fc2cd7d22d7c016007f9ce846cbb9326331930a" [[package]] name = "tempdir" @@ -5898,28 +5854,29 @@ dependencies = [ [[package]] name = "tempfile" -version = "3.10.1" +version = "3.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85b77fafb263dd9d05cbeac119526425676db3784113aa9295c88498cbf8bff1" +checksum = "7ef1adac450ad7f4b3c28589471ade84f25f731a7a0fe30d71dfa9f60fd808e5" dependencies = [ "cfg-if", "fastrand 2.0.1", - "rustix 0.38.31", - "windows-sys 0.52.0", + "redox_syscall 0.4.1", + "rustix 0.38.26", + "windows-sys 0.48.0", ] [[package]] name = "termcolor" -version = "1.4.1" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755" +checksum = "ff1bc3d3f05aff0403e8ac0d92ced918ec05b666a43f83297ccef5bea8a3d449" dependencies = [ "winapi-util", ] [[package]] name = "test_image_memory" -version = "0.1.8" +version = "0.1.9" dependencies = [ "depthai-viewer", "mimalloc", @@ -5928,28 +5885,28 @@ dependencies = [ [[package]] name = "textwrap" -version = "0.16.1" +version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23d434d3f8967a09480fb04132ebe0a3e088c173e6d0ee7897abbdf4eab0f8b9" +checksum = "222a222a5bfe1bba4a77b45ec488a741b3cb8872e5e499451fd7d0129c9c7c3d" [[package]] name = "thiserror" -version = "1.0.57" +version = "1.0.50" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e45bcbe8ed29775f228095caf2cd67af7a4ccf756ebff23a306bf3e8b47b24b" +checksum = "f9a7210f5c9a7156bb50aa36aed4c95afb51df0df00713949448cf9e97d382d2" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.57" +version = "1.0.50" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a953cb265bef375dae3de6663da4d3804eee9682ea80d8e2542529b73c531c81" +checksum = "266b2e40bc00e5a6c09c3584011e08b06f123c00362c92b975ba9843aaaa14b8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.52", + "syn 2.0.39", ] [[package]] @@ -5964,9 +5921,9 @@ dependencies = [ [[package]] name = "tiff" -version = "0.9.1" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba1310fcea54c6a9a4fd1aad794ecc02c31682f6bfbecdf460bf19533eed1e3e" +checksum = "6d172b0f4d3fba17ba89811858b9d3d97f928aece846475bbda076ca46736211" dependencies = [ "flate2", "jpeg-decoder", @@ -5975,14 +5932,13 @@ dependencies = [ [[package]] name = "time" -version = "0.3.34" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8248b6521bb14bc45b4067159b9b6ad792e2d6d754d6c41fb50e29fefe38749" +checksum = "c4a34ab300f2dee6e562c10a046fc05e358b29f9bf92277f30c3c8d82275f6f5" dependencies = [ "deranged", "itoa", "js-sys", - "num-conv", "powerfmt", "serde", "time-core", @@ -5997,11 +5953,10 @@ checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" [[package]] name = "time-macros" -version = "0.2.17" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ba3a3ef41e6672a2f0f001392bb5dcd3ff0a9992d618ca761a11c3121547774" +checksum = "4ad70d68dba9e1f8aceda7aa6711965dfec1cac869f311a51bd08b3a2ccbce20" dependencies = [ - "num-conv", "time-core", ] @@ -6075,9 +6030,9 @@ dependencies = [ [[package]] name = "tokio" -version = "1.36.0" +version = "1.34.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61285f6515fa018fb2d1e46eb21223fff441ee8db5d0f1435e8ab4f5cdb80931" +checksum = "d0c014766411e834f7af5b8f4cf46257aab4036ca95e9d2c144a10f59ad6f5b9" dependencies = [ "backtrace", "bytes", @@ -6085,7 +6040,7 @@ dependencies = [ "mio", "num_cpus", "pin-project-lite", - "socket2 0.5.6", + "socket2 0.5.5", "tokio-macros", "windows-sys 0.48.0", ] @@ -6098,7 +6053,7 @@ checksum = "5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.52", + "syn 2.0.39", ] [[package]] @@ -6164,7 +6119,7 @@ version = "0.19.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" dependencies = [ - "indexmap 2.2.5", + "indexmap 2.1.0", "toml_datetime", "winnow", ] @@ -6195,7 +6150,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.52", + "syn 2.0.39", ] [[package]] @@ -6219,9 +6174,9 @@ dependencies = [ [[package]] name = "try-lock" -version = "0.2.5" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" +checksum = "3528ecfd12c466c6f163363caf2d02a71161dd5e1cc6ae7b34207ea2d42d81ed" [[package]] name = "ttf-parser" @@ -6278,11 +6233,10 @@ checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" [[package]] name = "uds_windows" -version = "1.1.0" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89daebc3e6fd160ac4aa9fc8b3bf71e1f74fbf92367ae71fb83a037e8bf164b9" +checksum = "ce65604324d3cce9b966701489fbd0cf318cb1f7bd9dd07ac9a4ee6fb791930d" dependencies = [ - "memoffset 0.9.0", "tempfile", "winapi", ] @@ -6298,9 +6252,9 @@ dependencies = [ [[package]] name = "unicode-bidi" -version = "0.3.15" +version = "0.3.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75" +checksum = "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460" [[package]] name = "unicode-ident" @@ -6310,18 +6264,18 @@ checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" [[package]] name = "unicode-normalization" -version = "0.1.23" +version = "0.1.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a56d1686db2308d901306f92a263857ef59ea39678a5458e7cb17f01415101f5" +checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921" dependencies = [ "tinyvec", ] [[package]] name = "unicode-segmentation" -version = "1.11.0" +version = "1.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4c87d22b6e3f4a18d4d40ef354e97c90fcb14dd91d7dc0aa9d8a1172ebf7202" +checksum = "1dd624098567895118886609431a7c3b8f516e41d30e0643f03d94592a147e36" [[package]] name = "unicode-width" @@ -6355,22 +6309,21 @@ checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" [[package]] name = "ureq" -version = "2.9.6" +version = "2.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11f214ce18d8b2cbe84ed3aa6486ed3f5b285cf8d8fbdbce9f3f767a724adc35" +checksum = "f8cdd25c339e200129fe4de81451814e5228c9b771d57378817d6117cc2b3f97" dependencies = [ - "base64 0.21.7", + "base64 0.21.5", "flate2", "log", "native-tls", "once_cell", - "rustls 0.22.2", - "rustls-pki-types", + "rustls 0.21.9", "rustls-webpki", "serde", "serde_json", "url", - "webpki-roots 0.26.1", + "webpki-roots 0.25.3", ] [[package]] @@ -6405,9 +6358,9 @@ checksum = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a" [[package]] name = "uuid" -version = "1.7.0" +version = "1.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f00cc9702ca12d3c81455259621e676d0f7251cec66a21e98fe2e9a37db93b2a" +checksum = "5e395fcf16a7a3d8127ec99782007af141946b4795001f876d54fb0d55978560" dependencies = [ "getrandom", "serde", @@ -6422,9 +6375,9 @@ checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" [[package]] name = "value-bag" -version = "1.7.0" +version = "1.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "126e423afe2dd9ac52142e7e9d5ce4135d7e13776c529d27fd6bc49f19e3280b" +checksum = "4a72e1902dde2bd6441347de2b70b7f5d59bf157c6c62f0c44572607a1d55bbe" [[package]] name = "vcpkg" @@ -6458,9 +6411,9 @@ checksum = "f3c4517f54858c779bbcbf228f4fca63d121bf85fbecb2dc578cdf4a39395690" [[package]] name = "walkdir" -version = "2.5.0" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b" +checksum = "d71d857dc86794ca4c280d616f7da00d2dbfd8cd788846559a6813e6aa4b54ee" dependencies = [ "same-file", "winapi-util", @@ -6793,7 +6746,7 @@ version = "0.22.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ed63aea5ce73d0ff405984102c42de94fc55a6b75765d621c65262469b3c9b53" dependencies = [ - "ring 0.17.8", + "ring 0.17.7", "untrusted 0.9.0", ] @@ -6808,18 +6761,15 @@ dependencies = [ [[package]] name = "webpki-roots" -version = "0.26.1" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3de34ae270483955a94f4b21bdaaeb83d508bb84a01435f393818edb0012009" -dependencies = [ - "rustls-pki-types", -] +checksum = "1778a42e8b3b90bff8d0f5032bf22250792889a5cdc752aa0020c84abe3aaf10" [[package]] name = "weezl" -version = "0.1.8" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53a85b86a771b1c87058196170769dd264f66c0782acf1ae6cc51bfd64b39082" +checksum = "9193164d4de03a926d909d3bc7c30543cecb35400c02114792c2cae20d5e2dbb" [[package]] name = "wgpu" @@ -6851,7 +6801,7 @@ source = "git+https://github.com/rerun-io/wgpu?rev=de497aeda152a3515bac5eb4bf1b1 dependencies = [ "arrayvec", "bit-vec", - "bitflags 2.4.2", + "bitflags 2.4.1", "codespan-reporting", "log", "naga", @@ -6875,11 +6825,11 @@ dependencies = [ "arrayvec", "ash", "bit-set", - "bitflags 2.4.2", + "bitflags 2.4.1", "block", "core-graphics-types", "d3d12", - "foreign-types 0.3.2", + "foreign-types", "glow", "gpu-alloc", "gpu-allocator", @@ -6888,7 +6838,7 @@ dependencies = [ "js-sys", "khronos-egl", "libc", - "libloading 0.8.2", + "libloading 0.8.1", "log", "metal", "naga", @@ -6912,7 +6862,7 @@ name = "wgpu-types" version = "0.16.0" source = "git+https://github.com/rerun-io/wgpu?rev=de497aeda152a3515bac5eb4bf1b17f1757b9dac#de497aeda152a3515bac5eb4bf1b17f1757b9dac" dependencies = [ - "bitflags 2.4.2", + "bitflags 2.4.1", "js-sys", "web-sys", ] @@ -6926,7 +6876,7 @@ dependencies = [ "either", "home", "once_cell", - "rustix 0.38.31", + "rustix 0.38.26", ] [[package]] @@ -6960,6 +6910,15 @@ dependencies = [ "winapi", ] +[[package]] +name = "winapi-wsapoll" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44c17110f57155602a80dca10be03852116403c9ff3cd25b079d666f2aa3df6e" +dependencies = [ + "winapi", +] + [[package]] name = "winapi-x86_64-pc-windows-gnu" version = "0.4.0" @@ -6977,11 +6936,11 @@ dependencies = [ [[package]] name = "windows-core" -version = "0.52.0" +version = "0.51.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" +checksum = "f1f8cf84f35d2db49a46868f947758c7a1138116f7fac3bc844f43ade1292e64" dependencies = [ - "windows-targets 0.52.4", + "windows-targets 0.48.5", ] [[package]] @@ -7008,7 +6967,7 @@ version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" dependencies = [ - "windows-targets 0.52.4", + "windows-targets 0.52.0", ] [[package]] @@ -7043,17 +7002,17 @@ dependencies = [ [[package]] name = "windows-targets" -version = "0.52.4" +version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7dd37b7e5ab9018759f893a1952c9420d060016fc19a472b4bb20d1bdd694d1b" +checksum = "8a18201040b24831fbb9e4eb208f8892e1f50a37feb53cc7ff887feb8f50e7cd" dependencies = [ - "windows_aarch64_gnullvm 0.52.4", - "windows_aarch64_msvc 0.52.4", - "windows_i686_gnu 0.52.4", - "windows_i686_msvc 0.52.4", - "windows_x86_64_gnu 0.52.4", - "windows_x86_64_gnullvm 0.52.4", - "windows_x86_64_msvc 0.52.4", + "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]] @@ -7070,9 +7029,9 @@ checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" [[package]] name = "windows_aarch64_gnullvm" -version = "0.52.4" +version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bcf46cf4c365c6f2d1cc93ce535f2c8b244591df96ceee75d8e83deb70a9cac9" +checksum = "cb7764e35d4db8a7921e09562a0304bf2f93e0a51bfccee0bd0bb0b666b015ea" [[package]] name = "windows_aarch64_msvc" @@ -7088,9 +7047,9 @@ checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" [[package]] name = "windows_aarch64_msvc" -version = "0.52.4" +version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da9f259dd3bcf6990b55bffd094c4f7235817ba4ceebde8e6d11cd0c5633b675" +checksum = "bbaa0368d4f1d2aaefc55b6fcfee13f41544ddf36801e793edbbfd7d7df075ef" [[package]] name = "windows_i686_gnu" @@ -7106,9 +7065,9 @@ checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" [[package]] name = "windows_i686_gnu" -version = "0.52.4" +version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b474d8268f99e0995f25b9f095bc7434632601028cf86590aea5c8a5cb7801d3" +checksum = "a28637cb1fa3560a16915793afb20081aba2c92ee8af57b4d5f28e4b3e7df313" [[package]] name = "windows_i686_msvc" @@ -7124,9 +7083,9 @@ checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" [[package]] name = "windows_i686_msvc" -version = "0.52.4" +version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1515e9a29e5bed743cb4415a9ecf5dfca648ce85ee42e15873c3cd8610ff8e02" +checksum = "ffe5e8e31046ce6230cc7215707b816e339ff4d4d67c65dffa206fd0f7aa7b9a" [[package]] name = "windows_x86_64_gnu" @@ -7142,9 +7101,9 @@ checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" [[package]] name = "windows_x86_64_gnu" -version = "0.52.4" +version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5eee091590e89cc02ad514ffe3ead9eb6b660aedca2183455434b93546371a03" +checksum = "3d6fa32db2bc4a2f5abeacf2b69f7992cd09dca97498da74a151a3132c26befd" [[package]] name = "windows_x86_64_gnullvm" @@ -7160,9 +7119,9 @@ checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" [[package]] name = "windows_x86_64_gnullvm" -version = "0.52.4" +version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77ca79f2451b49fa9e2af39f0747fe999fcda4f5e241b2898624dca97a1f2177" +checksum = "1a657e1e9d3f514745a572a6846d3c7aa7dbe1658c056ed9c3344c4109a6949e" [[package]] name = "windows_x86_64_msvc" @@ -7178,9 +7137,9 @@ checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" [[package]] name = "windows_x86_64_msvc" -version = "0.52.4" +version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32b752e52a2da0ddfbdbcc6fceadfeede4c939ed16d13e648833a61dfb611ed8" +checksum = "dff9641d1cd4be8d1a070daf9e3773c5f67e78b4d9d42263020c057706765c04" [[package]] name = "winit" @@ -7192,7 +7151,7 @@ dependencies = [ "bitflags 1.3.2", "cfg_aliases", "core-foundation", - "core-graphics 0.22.3", + "core-graphics", "dispatch", "instant", "libc", @@ -7219,9 +7178,9 @@ dependencies = [ [[package]] name = "winnow" -version = "0.5.40" +version = "0.5.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f593a95398737aeed53e489c785df13f3618e41dbcd6718c6addbf1395aa6876" +checksum = "b7e87b8dfbe3baffbe687eef2e164e32286eff31a5ee16463ce03d991643ec94" dependencies = [ "memchr", ] @@ -7313,34 +7272,42 @@ dependencies = [ [[package]] name = "x11rb" -version = "0.13.0" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8f25ead8c7e4cba123243a6367da5d3990e0d3affa708ea19dce96356bd9f1a" +checksum = "b1641b26d4dec61337c35a1b1aaf9e3cba8f46f0b43636c609ab0291a648040a" dependencies = [ "gethostname", - "rustix 0.38.31", + "nix 0.26.4", + "winapi", + "winapi-wsapoll", "x11rb-protocol", ] [[package]] name = "x11rb-protocol" -version = "0.13.0" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e63e71c4b8bd9ffec2c963173a4dc4cbde9ee96961d4fcb4429db9929b606c34" +checksum = "82d6c3f9a0fb6701fab8f6cea9b0c0bd5d6876f1f89f7fada07e558077c344bc" +dependencies = [ + "nix 0.26.4", +] [[package]] name = "xcursor" -version = "0.3.5" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a0ccd7b4a5345edfcd0c3535718a4e9ff7798ffc536bb5b5a0e26ff84732911" +checksum = "463705a63313cd4301184381c5e8042f0a7e9b4bb63653f216311d4ae74690b7" +dependencies = [ + "nom", +] [[package]] name = "xdg-home" -version = "1.1.0" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21e5a325c3cb8398ad6cf859c1135b25dd29e186679cf2da7581d9679f63b38e" +checksum = "2769203cd13a0c6015d515be729c526d041e9cf2c0cc478d57faee85f40c6dcd" dependencies = [ - "libc", + "nix 0.26.4", "winapi", ] @@ -7352,9 +7319,9 @@ checksum = "0fcb9cbac069e033553e8bb871be2fbdffcab578eb25bd0f7c508cedc6dcd75a" [[package]] name = "xxhash-rust" -version = "0.8.10" +version = "0.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "927da81e25be1e1a2901d59b81b37dd2efd1fc9c9345a55007f09bf5a2d3ee03" +checksum = "9828b178da53440fa9c766a3d2f73f7cf5d0ac1fe3980c1e5018d899fd19e07b" [[package]] name = "yaml-rust" @@ -7367,9 +7334,9 @@ dependencies = [ [[package]] name = "zbus" -version = "3.15.2" +version = "3.14.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "675d170b632a6ad49804c8cf2105d7c31eddd3312555cffd4b740e08e97c25e6" +checksum = "31de390a2d872e4cd04edd71b425e29853f786dc99317ed72d73d6fcf5ebb948" dependencies = [ "async-broadcast", "async-executor", @@ -7408,9 +7375,9 @@ dependencies = [ [[package]] name = "zbus_macros" -version = "3.15.2" +version = "3.14.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7131497b0f887e8061b430c530240063d33bf9455fa34438f388a245da69e0a5" +checksum = "41d1794a946878c0e807f55a397187c11fc7a038ba5d868e7db4f3bd7760bc9d" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -7422,9 +7389,9 @@ dependencies = [ [[package]] name = "zbus_names" -version = "2.6.1" +version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "437d738d3750bed6ca9b8d423ccc7a8eb284f6b1d6d4e225a0e4e6258d864c8d" +checksum = "fb80bb776dbda6e23d705cf0123c3b95df99c4ebeaec6c2599d4a5419902b4a9" dependencies = [ "serde", "static_assertions", @@ -7433,30 +7400,24 @@ dependencies = [ [[package]] name = "zerocopy" -version = "0.7.32" +version = "0.7.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74d4d3961e53fa4c9a25a8637fc2bfaf2595b3d3ae34875568a5cf64787716be" +checksum = "5d075cf85bbb114e933343e087b92f2146bac0d55b534cbb8188becf0039948e" dependencies = [ "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.7.32" +version = "0.7.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ce1b18ccd8e73a9321186f97e46f9f04b778851177567b1975109d26a08d2a6" +checksum = "86cd5ca076997b97ef09d3ad65efe811fa68c9e874cb636ccb211223a813b0c2" dependencies = [ "proc-macro2", "quote", - "syn 2.0.52", + "syn 2.0.39", ] -[[package]] -name = "zeroize" -version = "1.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "525b4ec142c6b68a2d10f01f7bbf6755599ca3f81ea53b8431b7dd348f5fdb2d" - [[package]] name = "zip" version = "0.6.6" @@ -7500,9 +7461,9 @@ dependencies = [ [[package]] name = "zvariant" -version = "3.15.2" +version = "3.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4eef2be88ba09b358d3b58aca6e41cd853631d44787f319a1383ca83424fb2db" +checksum = "44b291bee0d960c53170780af148dca5fa260a63cdd24f1962fa82e03e53338c" dependencies = [ "byteorder", "enumflags2", @@ -7515,9 +7476,9 @@ dependencies = [ [[package]] name = "zvariant_derive" -version = "3.15.2" +version = "3.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37c24dc0bed72f5f90d1f8bb5b07228cbf63b3c6e9f82d82559d4bae666e7ed9" +checksum = "934d7a7dfc310d6ee06c87ffe88ef4eca7d3e37bb251dece2ef93da8f17d8ecd" dependencies = [ "proc-macro-crate", "proc-macro2", diff --git a/Cargo.toml b/Cargo.toml index e22b775e8055..7b79f8524777 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -16,39 +16,39 @@ include = ["../../LICENSE-APACHE", "../../LICENSE-MIT", "**/*.rs", "Cargo.toml"] license = "MIT OR Apache-2.0" repository = "https://github.com/rerun-io/rerun" rust-version = "1.74" -version = "0.1.8" +version = "0.1.9" [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.8" } -re_analytics = { path = "crates/re_analytics", version = "0.1.8" } -re_arrow_store = { path = "crates/re_arrow_store", version = "0.1.8" } -re_build_build_info = { path = "crates/re_build_build_info", version = "0.1.8" } -re_build_info = { path = "crates/re_build_info", version = "0.1.8" } -re_build_web_viewer = { path = "crates/re_build_web_viewer", version = "0.1.8", default-features = false } -re_data_store = { path = "crates/re_data_store", version = "0.1.8" } -re_error = { path = "crates/re_error", version = "0.1.8" } -re_format = { path = "crates/re_format", version = "0.1.8" } -re_int_histogram = { path = "crates/re_int_histogram", version = "0.1.8" } -re_log = { path = "crates/re_log", version = "0.1.8" } -re_log_encoding = { path = "crates/re_log_encoding", version = "0.1.8" } -re_log_types = { path = "crates/re_log_types", version = "0.1.8" } -re_memory = { path = "crates/re_memory", version = "0.1.8" } -re_query = { path = "crates/re_query", version = "0.1.8" } -re_renderer = { path = "crates/re_renderer", version = "0.1.8", default-features = false } -re_sdk = { path = "crates/re_sdk", version = "0.1.8" } -re_smart_channel = { path = "crates/re_smart_channel", version = "0.1.8" } -re_string_interner = { path = "crates/re_string_interner", version = "0.1.8" } -re_tensor_ops = { path = "crates/re_tensor_ops", version = "0.1.8" } -re_tuid = { path = "crates/re_tuid", version = "0.1.8" } -re_ui = { path = "crates/re_ui", version = "0.1.8" } -re_viewer = { path = "crates/re_viewer", version = "0.1.8", default-features = false } -re_web_viewer_server = { path = "crates/re_web_viewer_server", version = "0.1.8" } -re_ws_comms = { path = "crates/re_ws_comms", version = "0.1.8" } -depthai-viewer = { path = "crates/rerun", version = "0.1.8" } +re_sdk_comms = { path = "crates/re_sdk_comms", version = "0.1.9" } +re_analytics = { path = "crates/re_analytics", version = "0.1.9" } +re_arrow_store = { path = "crates/re_arrow_store", version = "0.1.9" } +re_build_build_info = { path = "crates/re_build_build_info", version = "0.1.9" } +re_build_info = { path = "crates/re_build_info", version = "0.1.9" } +re_build_web_viewer = { path = "crates/re_build_web_viewer", version = "0.1.9", default-features = false } +re_data_store = { path = "crates/re_data_store", version = "0.1.9" } +re_error = { path = "crates/re_error", version = "0.1.9" } +re_format = { path = "crates/re_format", version = "0.1.9" } +re_int_histogram = { path = "crates/re_int_histogram", version = "0.1.9" } +re_log = { path = "crates/re_log", version = "0.1.9" } +re_log_encoding = { path = "crates/re_log_encoding", version = "0.1.9" } +re_log_types = { path = "crates/re_log_types", version = "0.1.9" } +re_memory = { path = "crates/re_memory", version = "0.1.9" } +re_query = { path = "crates/re_query", version = "0.1.9" } +re_renderer = { path = "crates/re_renderer", version = "0.1.9", default-features = false } +re_sdk = { path = "crates/re_sdk", version = "0.1.9" } +re_smart_channel = { path = "crates/re_smart_channel", version = "0.1.9" } +re_string_interner = { path = "crates/re_string_interner", version = "0.1.9" } +re_tensor_ops = { path = "crates/re_tensor_ops", version = "0.1.9" } +re_tuid = { path = "crates/re_tuid", version = "0.1.9" } +re_ui = { path = "crates/re_ui", version = "0.1.9" } +re_viewer = { path = "crates/re_viewer", version = "0.1.9", default-features = false } +re_web_viewer_server = { path = "crates/re_web_viewer_server", version = "0.1.9" } +re_ws_comms = { path = "crates/re_ws_comms", version = "0.1.9" } +depthai-viewer = { path = "crates/rerun", version = "0.1.9" } ahash = "0.8" anyhow = "1.0" diff --git a/crates/re_renderer/src/config.rs b/crates/re_renderer/src/config.rs index 7b85283b505f..6808976753e1 100644 --- a/crates/re_renderer/src/config.rs +++ b/crates/re_renderer/src/config.rs @@ -1,3 +1,5 @@ +use std::process::Command; + /// Hardware tiers `re_renderer` distinguishes. /// /// To reduce complexity, we don't do fine-grained feature checks, @@ -57,11 +59,23 @@ impl HardwareTier { /// Wgpu limits required by the given hardware tier. pub fn limits(self) -> wgpu::Limits { + // RPI are a specific platform where we know max texture size is 4096. + let mut is_rpi = false; + if cfg!(unix) { + if let Ok(cat_out) = Command::new("cat") + .arg("/sys/firmware/devicetree/base/model") + .output() + { + if let Ok(stdout) = String::from_utf8(cat_out.stdout) { + is_rpi = stdout.find("Raspberry Pi").is_some(); + } + } + } wgpu::Limits { // In any scenario require high texture resolution to facilitate rendering into large surfaces // (important for 4k screens and beyond) // 8192 is widely supported by now. - max_texture_dimension_2d: 8192, + max_texture_dimension_2d: if is_rpi { 4096 } else { 8192 }, ..wgpu::Limits::downlevel_webgl2_defaults() } } diff --git a/crates/re_ui/src/lib.rs b/crates/re_ui/src/lib.rs index 034052bfd0bf..4b85be33799e 100644 --- a/crates/re_ui/src/lib.rs +++ b/crates/re_ui/src/lib.rs @@ -316,20 +316,27 @@ impl ReUi { response } - pub fn labeled_toggle_switch(&self, ui: &mut egui::Ui, label: &str, value: &mut bool) { + pub fn labeled_toggle_switch( + &self, + ui: &mut egui::Ui, + label: &str, + value: &mut bool, + ) -> egui::Response { let text_color = ui.style().visuals.weak_text_color(); ui.with_layout(egui::Layout::right_to_left(egui::Align::Center), |ui| { - ui.add_sized( + let toggle_response = ui.add_sized( [Self::box_width(), Self::box_height()], |ui: &mut egui::Ui| { ui.with_layout(egui::Layout::left_to_right(egui::Align::Min), |ui| { - ui.add(toggle_switch(value)); + ui.add(toggle_switch(value)) }) - .response + .inner }, ); ui.label(egui::RichText::new(label).color(text_color)); - }); + toggle_response + }) + .inner } pub fn top_panel_frame(&self) -> egui::Frame { diff --git a/crates/re_viewer/src/depthai/api.rs b/crates/re_viewer/src/depthai/api.rs index b020e48a26e9..7cdc459342d9 100644 --- a/crates/re_viewer/src/depthai/api.rs +++ b/crates/re_viewer/src/depthai/api.rs @@ -1,5 +1,5 @@ use super::depthai; -use super::ws::{ BackWsMessage as WsMessage, WebSocket, WsMessageData, WsMessageType }; +use super::ws::{BackWsMessage as WsMessage, WebSocket, WsMessageData, WsMessageType}; #[derive(Clone, serde::Serialize, serde::Deserialize)] pub struct ApiError { @@ -26,57 +26,53 @@ impl BackendCommChannel { pub fn set_subscriptions(&mut self, subscriptions: &Vec) { self.ws.send( - serde_json - ::to_string( - &(WsMessage { - kind: WsMessageType::Subscriptions, - data: WsMessageData::Subscriptions(subscriptions.clone()), - ..Default::default() - }) - ) - .unwrap() + serde_json::to_string( + &(WsMessage { + kind: WsMessageType::Subscriptions, + data: WsMessageData::Subscriptions(subscriptions.clone()), + ..Default::default() + }), + ) + .unwrap(), ); } pub fn set_pipeline(&mut self, config: &depthai::DeviceConfig, runtime_only: bool) { self.ws.send( - serde_json - ::to_string( - &(WsMessage { - kind: WsMessageType::Pipeline, - data: WsMessageData::Pipeline((config.clone(), runtime_only)), - ..Default::default() - }) - ) - .unwrap() + serde_json::to_string( + &(WsMessage { + kind: WsMessageType::Pipeline, + data: WsMessageData::Pipeline((config.clone(), runtime_only)), + ..Default::default() + }), + ) + .unwrap(), ); } pub fn set_dot_brightness(&mut self, brightness: u32) { self.ws.send( - serde_json - ::to_string( - &(WsMessage { - kind: WsMessageType::SetDotBrightness, - data: WsMessageData::SetDotBrightness(brightness), - ..Default::default() - }) - ) - .unwrap() + serde_json::to_string( + &(WsMessage { + kind: WsMessageType::SetDotBrightness, + data: WsMessageData::SetDotBrightness(brightness), + ..Default::default() + }), + ) + .unwrap(), ); } pub fn set_flood_brightness(&mut self, brightness: u32) { self.ws.send( - serde_json - ::to_string( - &(WsMessage { - kind: WsMessageType::SetFloodBrightness, - data: WsMessageData::SetFloodBrightness(brightness), - ..Default::default() - }) - ) - .unwrap() + serde_json::to_string( + &(WsMessage { + kind: WsMessageType::SetFloodBrightness, + data: WsMessageData::SetFloodBrightness(brightness), + ..Default::default() + }), + ) + .unwrap(), ); } @@ -86,32 +82,47 @@ impl BackendCommChannel { pub fn get_devices(&mut self) { self.ws.send( - serde_json - ::to_string( - &(WsMessage { - kind: WsMessageType::Devices, - data: WsMessageData::Devices(Vec::new()), - ..Default::default() - }) - ) - .unwrap() + serde_json::to_string( + &(WsMessage { + kind: WsMessageType::Devices, + data: WsMessageData::Devices(Vec::new()), + ..Default::default() + }), + ) + .unwrap(), ); } pub fn select_device(&mut self, device_id: depthai::DeviceId) { self.ws.send( - serde_json - ::to_string( - &(WsMessage { - kind: WsMessageType::DeviceProperties, - data: WsMessageData::DeviceProperties(depthai::DeviceProperties { - id: device_id, - ..Default::default() - }), + serde_json::to_string( + &(WsMessage { + kind: WsMessageType::DeviceProperties, + data: WsMessageData::DeviceProperties(depthai::DeviceProperties { + id: device_id, ..Default::default() - }) - ) - .unwrap() + }), + ..Default::default() + }), + ) + .unwrap(), + ); + } + + pub fn set_tof_config( + &mut self, + socket: depthai::CameraBoardSocket, + config: depthai::ToFConfig, + ) { + self.ws.send( + serde_json::to_string( + &(WsMessage { + kind: WsMessageType::SetToFConfig, + data: WsMessageData::SetToFConfig((socket, config)), + ..Default::default() + }), + ) + .unwrap(), ); } } diff --git a/crates/re_viewer/src/depthai/depthai.rs b/crates/re_viewer/src/depthai/depthai.rs index a1827714b99a..3cefbb35d294 100644 --- a/crates/re_viewer/src/depthai/depthai.rs +++ b/crates/re_viewer/src/depthai/depthai.rs @@ -101,8 +101,7 @@ impl Default for CameraBoardSocket { } impl CameraBoardSocket { - pub fn display_name(&self, ctx: &ViewerContext<'_>) -> String { - let camera_features = ctx.depthai_state.get_connected_cameras(); + pub fn display_name(&self, camera_features: &Vec) -> String { if let Some(cam) = camera_features.iter().find(|cam| cam.board_socket == *self) { if !cam.name.is_empty() { return format!("{} ({self:?})", cam.name); @@ -186,6 +185,7 @@ pub struct CameraFeatures { pub stereo_pairs: Vec, // Which cameras can be paired with this one pub name: String, pub intrinsics: Option<[[f32; 3]; 3]>, + pub tof_config: Option, } impl CameraFeatures { @@ -234,14 +234,14 @@ impl fmt::Display for DepthProfilePreset { #[derive(serde::Deserialize, serde::Serialize, Clone, Copy, PartialEq, Debug, EnumIter)] #[allow(non_camel_case_types)] -pub enum DepthMedianFilter { +pub enum MedianFilter { MEDIAN_OFF, KERNEL_3x3, KERNEL_5x5, KERNEL_7x7, } -impl Default for DepthMedianFilter { +impl Default for MedianFilter { fn default() -> Self { Self::KERNEL_7x7 } @@ -249,7 +249,7 @@ impl Default for DepthMedianFilter { #[derive(serde::Deserialize, serde::Serialize, Clone, PartialEq, Debug)] pub struct StereoDepthConfig { - pub median: DepthMedianFilter, + pub median: MedianFilter, pub lr_check: bool, pub lrc_threshold: u64, pub extended_disparity: bool, @@ -263,7 +263,7 @@ pub struct StereoDepthConfig { impl Default for StereoDepthConfig { fn default() -> Self { Self { - median: DepthMedianFilter::default(), + median: MedianFilter::default(), lr_check: true, lrc_threshold: 5, extended_disparity: false, @@ -303,7 +303,7 @@ impl From<&DeviceProperties> for Option { if let Some((cam_a, cam_b)) = props.default_stereo_pair { config.stereo_pair = (cam_a, cam_b); } else { - // Better to not configure depth if there's no default stereo pair - let the user do it if they really want to... + // Better to not configure stereo if there's no default stereo pair - let the user do it if they really want to... return None; } config.align = @@ -323,7 +323,7 @@ pub struct DeviceConfig { #[serde(default = "bool_true")] pub depth_enabled: bool, // Much easier to have an explicit bool for checkbox #[serde(default = "StereoDepthConfig::default_as_option")] - pub depth: Option, + pub stereo: Option, pub ai_model: Option, #[serde(skip)] pub dot_brightness: u32, @@ -337,7 +337,7 @@ impl Default for DeviceConfig { auto: false, cameras: Vec::new(), depth_enabled: true, - depth: Some(StereoDepthConfig::default()), + stereo: Some(StereoDepthConfig::default()), ai_model: None, dot_brightness: 0, flood_brightness: 0, @@ -345,6 +345,130 @@ impl Default for DeviceConfig { } } +#[derive(serde::Deserialize, serde::Serialize, Clone, Copy, PartialEq, Debug)] +pub struct ToFConfig { + median: MedianFilter, + phase_unwrapping_level: i32, + phase_unwrap_error_threshold: u16, + enable_fppn_correction: Option, + enable_optical_correction: Option, + enable_temperature_correction: Option, + enable_wiggle_correction: Option, + enable_phase_unwrapping: Option, + #[serde(skip)] + modified: bool, +} + +impl Default for ToFConfig { + fn default() -> Self { + Self { + median: MedianFilter::MEDIAN_OFF, + phase_unwrapping_level: 4, + phase_unwrap_error_threshold: 100, + enable_fppn_correction: None, + enable_optical_correction: None, + enable_temperature_correction: None, + enable_wiggle_correction: None, + enable_phase_unwrapping: None, + modified: false, + } + } +} + +impl ToFConfig { + pub fn get_median_filter(&self) -> MedianFilter { + self.median + } + + pub fn get_phase_unwrapping_level(&self) -> i32 { + self.phase_unwrapping_level + } + + pub fn get_phase_unwrap_error_threshold(&self) -> u16 { + self.phase_unwrap_error_threshold + } + + pub fn get_enable_fppn_correction(&self) -> Option { + self.enable_fppn_correction + } + + pub fn get_enable_optical_correction(&self) -> Option { + self.enable_optical_correction + } + + pub fn get_enable_temperature_correction(&self) -> Option { + self.enable_temperature_correction + } + + pub fn get_enable_wiggle_correction(&self) -> Option { + self.enable_wiggle_correction + } + + pub fn get_enable_phase_unwrapping(&self) -> Option { + self.enable_phase_unwrapping + } + + pub fn set_median_filter(&mut self, median: MedianFilter) { + if self.median != median { + self.modified = true; + } + self.median = median; + } + + pub fn set_phase_unwrapping_level(&mut self, level: i32) { + if self.phase_unwrapping_level != level { + self.modified = true; + } + self.phase_unwrapping_level = level; + } + + pub fn set_phase_unwrap_error_threshold(&mut self, threshold: u16) { + if self.phase_unwrap_error_threshold != threshold { + self.modified = true; + } + self.phase_unwrap_error_threshold = threshold; + } + + pub fn set_enable_fppn_correction(&mut self, enable: Option) { + if self.enable_fppn_correction != enable { + self.modified = true; + } + self.enable_fppn_correction = enable; + } + + pub fn set_enable_optical_correction(&mut self, enable: Option) { + if self.enable_optical_correction != enable { + self.modified = true; + } + self.enable_optical_correction = enable; + } + + pub fn set_enable_temperature_correction(&mut self, enable: Option) { + if self.enable_temperature_correction != enable { + self.modified = true; + } + self.enable_temperature_correction = enable; + } + + pub fn set_enable_wiggle_correction(&mut self, enable: Option) { + if self.enable_wiggle_correction != enable { + self.modified = true; + } + self.enable_wiggle_correction = enable; + } + + pub fn set_enable_phase_unwrapping(&mut self, enable: Option) { + if self.enable_phase_unwrapping != enable { + self.modified = true; + } + self.enable_phase_unwrapping = enable; + } + + pub fn is_modified(&self) -> bool { + self.modified + } +} + impl From<&DeviceProperties> for DeviceConfig { fn from(props: &DeviceProperties) -> Self { let mut config = Self::default(); @@ -371,7 +495,7 @@ impl From<&DeviceProperties> for DeviceConfig { kind: *cam.supported_types.first().unwrap(), }) .collect(); - config.depth = Option::::from(props); + config.stereo = Option::::from(props); config.ai_model = Option::::from(props); config } @@ -410,7 +534,7 @@ pub enum CameraImageOrientation { impl PartialEq for DeviceConfig { fn eq(&self, other: &Self) -> bool { - let depth_eq = match (&self.depth, &other.depth) { + let depth_eq = match (&self.stereo, &other.stereo) { (Some(a), Some(b)) => a == b, _ => true, // If one is None, it's only different if depth_enabled is different }; @@ -438,8 +562,8 @@ impl fmt::Debug for DeviceConfig { fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { write!( f, - "Device config: cams: {:?}, depth: {:?}, ai_model: {:?}, depth_enabled: {:?}", - self.cameras, self.depth, self.ai_model, self.depth_enabled + "Device config: cams: {:?}, stereo: {:?}, ai_model: {:?}, depth_enabled: {:?}", + self.cameras, self.stereo, self.ai_model, self.depth_enabled ) } } @@ -502,7 +626,7 @@ impl Default for AiModel { fn default() -> Self { match default_neural_networks()[2].clone() { Some(model) => model, - None => panic!("Default neural network not found!") + None => panic!("Default neural network not found!"), } } } @@ -611,8 +735,8 @@ fn default_neural_networks() -> Vec> { camera: CameraBoardSocket::CAM_A, }), Some(AiModel { - path: String::from("mobilenet-ssd"), - display_name: String::from("MobileNet SSD"), + path: String::from("yolov6nr3_coco_640x352d"), + display_name: String::from("Yolo V6"), camera: CameraBoardSocket::CAM_A, }), Some(AiModel { @@ -628,7 +752,7 @@ fn default_neural_networks() -> Vec> { Some(AiModel { path: String::from("yolov6n_thermal_people_256x192"), display_name: String::from("Thermal Person Detection"), - camera: CameraBoardSocket::CAM_E + camera: CameraBoardSocket::CAM_E, }), ] } @@ -669,7 +793,7 @@ impl State { old_config: &DeviceConfig, new_config: &DeviceConfig, ) -> bool { - let any_runtime_conf_changed = match (&old_config.depth, &new_config.depth) { + let any_runtime_conf_changed = match (&old_config.stereo, &new_config.stereo) { (Some(old_depth), Some(new_depth)) => old_depth.only_runtime_configs_differ(new_depth), _ => false, }; @@ -705,6 +829,10 @@ impl State { &self.selected_device.cameras } + pub fn get_connected_cameras_mut(&mut self) -> &mut Vec { + &mut self.selected_device.cameras + } + pub fn shutdown(&mut self) { self.backend_comms.shutdown(); } @@ -723,7 +851,9 @@ impl State { self.set_update_in_progress(false); } } - + // TODO(filip): this architecture is suboptimal.. + // no concise way to get a reply for a specific message. + // Each SET should be ack or nack(message) by backend... this is very hacky I don't like it. if let Some(ws_message) = self.backend_comms.receive() { re_log::debug!("Received message: {:?}", ws_message); match ws_message.data { @@ -758,7 +888,7 @@ impl State { } WsMessageData::Pipeline((config, _)) => { let mut subs = self.subscriptions.clone(); - if config.depth.is_some() { + if config.stereo.is_some() { subs.push(ChannelId::DepthImage); } if let Some(color_camera) = @@ -787,9 +917,9 @@ impl State { self.applied_device_config.update_in_progress = false; return; }; - applied_device_config.depth_enabled = config.depth.is_some(); + applied_device_config.depth_enabled = config.stereo.is_some(); self.modified_device_config.depth_enabled = - self.modified_device_config.depth.is_some(); + self.modified_device_config.stereo.is_some(); self.modified_device_config.auto = false; // Always reset auto self.set_subscriptions(&subs); self.set_update_in_progress(false); @@ -831,6 +961,32 @@ impl State { WsMessageData::SetFloodBrightness(_brightness) => { re_log::debug!("Set flood brightness received from backend.") } + WsMessageData::SetToFConfig((_board_socket, _config)) => { + re_log::debug!("SetToFConfig received from backend.") + } + } + } + + if let Some(active_config) = &self.applied_device_config.config { + for tof in active_config + .cameras + .iter() + .filter(|cam| cam.kind == CameraSensorKind::TOF) + { + if let Some(cam) = self + .selected_device + .cameras + .iter_mut() + .find(|c| c.board_socket == tof.board_socket) + { + if let Some(tof_config) = &mut cam.tof_config { + if tof_config.is_modified() { + tof_config.modified = false; + self.backend_comms + .set_tof_config(cam.board_socket, *tof_config); + } + } + } } } @@ -876,11 +1032,11 @@ impl State { return; } if !config.depth_enabled { - config.depth = None; + config.stereo = None; } if !self.selected_device.has_stereo_pairs() { - config.depth = None; + config.stereo = None; } if self.selected_device.id.is_empty() { diff --git a/crates/re_viewer/src/depthai/ws.rs b/crates/re_viewer/src/depthai/ws.rs index 4042e20c5e81..3011f23d370d 100644 --- a/crates/re_viewer/src/depthai/ws.rs +++ b/crates/re_viewer/src/depthai/ws.rs @@ -89,6 +89,7 @@ pub enum WsMessageData { Error(depthai::Error), Info(depthai::Info), Warning(depthai::Warning), + SetToFConfig((depthai::CameraBoardSocket, depthai::ToFConfig)), } #[derive(Deserialize, Serialize, fmt::Debug)] @@ -102,6 +103,7 @@ pub enum WsMessageType { Error, Info, Warning, + SetToFConfig, } impl Default for WsMessageType { @@ -160,6 +162,9 @@ impl<'de> Deserialize<'de> for BackWsMessage { WsMessageType::SetFloodBrightness => { WsMessageData::SetFloodBrightness(serde_json::from_value(message.data).unwrap()) } + WsMessageType::SetToFConfig => { + WsMessageData::SetToFConfig(serde_json::from_value(message.data).unwrap()) + } }; Ok(Self { @@ -173,7 +178,7 @@ impl<'de> Deserialize<'de> for BackWsMessage { impl Default for BackWsMessage { fn default() -> Self { Self { - kind: WsMessageType::Error.into(), + kind: WsMessageType::Error, data: WsMessageData::Error(depthai::Error::default()), message: None, } @@ -194,15 +199,14 @@ pub struct WebSocket { impl Default for WebSocket { fn default() -> Self { - Self { - inner: None - } + Self { inner: None } } } impl WebSocket { - - pub fn is_initialized(&self) -> bool {self.inner.is_some()} + pub fn is_initialized(&self) -> bool { + self.inner.is_some() + } pub fn connect(&mut self, port: u32) { re_log::debug!("Creating websocket client"); @@ -236,30 +240,28 @@ impl WebSocket { )); } - self.inner = Some( - WsInner { - receiver: recv_rx, - sender: send_tx, - shutdown, - task, - connected - } - ); + self.inner = Some(WsInner { + receiver: recv_rx, + sender: send_tx, + shutdown, + task, + connected, + }); } pub fn is_connected(&self) -> bool { match &self.inner { - Some(ws_state) => { - ws_state.connected.load(std::sync::atomic::Ordering::SeqCst) - }, - None => false + Some(ws_state) => ws_state.connected.load(std::sync::atomic::Ordering::SeqCst), + None => false, } } pub fn shutdown(&mut self) { match &mut self.inner { - Some(ws_state) => ws_state.shutdown.store(true, std::sync::atomic::Ordering::SeqCst), - None => () + Some(ws_state) => ws_state + .shutdown + .store(true, std::sync::atomic::Ordering::SeqCst), + None => (), } } @@ -287,8 +289,8 @@ impl WebSocket { } else { None } - }, - None => None + } + None => None, } } @@ -300,9 +302,8 @@ impl WebSocket { // This makes the websocket actually send the previous msg // It has to be something related to tokio::spawn, because it works fine when just running in the current thread ws_state.sender.send(WsMessage::Text("".to_string())); - }, - None => () + } + None => (), } - } } diff --git a/crates/re_viewer/src/ui/device_settings_panel.rs b/crates/re_viewer/src/ui/device_settings_panel.rs index ac4f61e546c5..ccb573d65ddf 100644 --- a/crates/re_viewer/src/ui/device_settings_panel.rs +++ b/crates/re_viewer/src/ui/device_settings_panel.rs @@ -162,54 +162,210 @@ impl DeviceSettingsPanel { fn camera_config_ui( ctx: &mut ViewerContext<'_>, ui: &mut egui::Ui, - camera_features: &depthai::CameraFeatures, - camera_config: &mut depthai::CameraConfig, + device_config: &mut depthai::DeviceConfig, ) { - // 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(text_color), - ) - .default_open(true) - .show(ui, |ui| { - ui.vertical(|ui| { - ui.set_width(CONFIG_UI_WIDTH); - ctx.re_ui.labeled_combo_box( - ui, - "Resolution", - format!("{}", camera_config.resolution), - false, - true, - |ui| { - for res in camera_features.resolutions.clone() { - let disabled = false; - ui.add_enabled_ui(!disabled, |ui| { - ui.selectable_value( - &mut camera_config.resolution, - res, - format!("{res}"), - ) - .on_disabled_hover_ui(|ui| { - ui.label(format!( - "{res} will be available in a future release!" - )); + let mut connected_cameras_clone = ctx.depthai_state.get_connected_cameras().clone(); + for mut camera_features in ctx.depthai_state.get_connected_cameras_mut() { + let Some(camera_config) = device_config + .cameras + .iter_mut() + .find(|conf| conf.board_socket == camera_features.board_socket) + else { + continue; + }; + // 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(&connected_cameras_clone), + ) + .color(text_color), + ) + .default_open(true) + .show(ui, |ui| { + ui.vertical(|ui| { + ui.set_width(CONFIG_UI_WIDTH); + ctx.re_ui.labeled_combo_box( + ui, + "Resolution", + format!("{}", camera_config.resolution), + false, + true, + |ui| { + for res in camera_features.resolutions.clone() { + let disabled = false; + ui.add_enabled_ui(!disabled, |ui| { + ui.selectable_value( + &mut camera_config.resolution, + res, + format!("{res}"), + ) + .on_disabled_hover_ui( + |ui| { + ui.label(format!( + "{res} will be available in a future release!" + )); + }, + ); }); - }); - } - }, - ); - ctx.re_ui.labeled_dragvalue( - ui, - egui::Id::from("fps"), // TODO(filip): using "fps" as id causes all fps sliders to be linked - This is a bug, but also kind of a feature - None, - "FPS", - &mut camera_config.fps, - 0..=camera_features.max_fps, - ); - ctx.re_ui - .labeled_toggle_switch(ui, "Stream", &mut camera_config.stream_enabled); + } + }, + ); + ctx.re_ui.labeled_dragvalue( + ui, + egui::Id::from("fps"), // TODO(filip): using "fps" as id causes all fps sliders to be linked - This is a bug, but also kind of a feature + None, + "FPS", + &mut camera_config.fps, + 0..=camera_features.max_fps, + ); + if let Some(tof_config) = &mut camera_features.tof_config { + // Add a UI that is hidden by default Drop + ui.collapsing("ToF config", |mut ui| { + ui.vertical(|ui| { + ctx.re_ui.labeled_combo_box( + ui, + "Median Filter", + format!("{:?}", tof_config.get_median_filter()), + false, + true, + |ui| { + let mut median_filter = tof_config.get_median_filter(); + for filter in depthai::MedianFilter::iter() { + if ui + .selectable_value( + &mut median_filter, + filter, + format!("{filter:?}"), + ) + .changed() + { + tof_config.set_median_filter(median_filter); + } + } + }, + ); + let mut phase_unwrapping_level = + tof_config.get_phase_unwrapping_level(); + if ctx + .re_ui + .labeled_dragvalue( + ui, + egui::Id::new("tof-phase-unwrap-level"), + None, + "Phase unwrap level", + &mut phase_unwrapping_level, + 0..=100, + ) + .changed() + { + tof_config.set_phase_unwrapping_level(phase_unwrapping_level); + } + let mut phase_unwrap_error_threshold = + tof_config.get_phase_unwrap_error_threshold(); + if ctx + .re_ui + .labeled_dragvalue( + ui, + egui::Id::new("tof-phase-unwrap-error-threshold"), + None, + "Phase unwrap error threshold", + &mut phase_unwrap_error_threshold, + 0..=u16::MAX, + ) + .changed() + { + tof_config.set_phase_unwrap_error_threshold( + phase_unwrap_error_threshold, + ); + } + let mut enable_phase_unwrapping = + tof_config.get_enable_phase_unwrapping().unwrap_or(false); + if ctx + .re_ui + .labeled_toggle_switch( + ui, + "Enable phase unwrapping", + &mut enable_phase_unwrapping, + ) + .changed() + { + tof_config + .set_enable_phase_unwrapping(Some(enable_phase_unwrapping)); + } + let mut enable_fppn_correction = + tof_config.get_enable_fppn_correction().unwrap_or(false); + if ctx + .re_ui + .labeled_toggle_switch( + ui, + "Enable FPPN correction", + &mut enable_fppn_correction, + ) + .changed() + { + tof_config + .set_enable_fppn_correction(Some(enable_fppn_correction)); + } + let mut enable_optical_correction = + tof_config.get_enable_optical_correction().unwrap_or(false); + if ctx + .re_ui + .labeled_toggle_switch( + ui, + "Enable optical correction", + &mut enable_optical_correction, + ) + .changed() + { + tof_config.set_enable_optical_correction(Some( + enable_optical_correction, + )); + } + let mut enable_temperature_correction = tof_config + .get_enable_temperature_correction() + .unwrap_or(false); + if ctx + .re_ui + .labeled_toggle_switch( + ui, + "Enable temperature correction", + &mut enable_temperature_correction, + ) + .changed() + { + tof_config.set_enable_temperature_correction(Some( + enable_temperature_correction, + )); + } + let mut enable_wiggle_correction = + tof_config.get_enable_wiggle_correction().unwrap_or(false); + if ctx + .re_ui + .labeled_toggle_switch( + ui, + "Enable wiggle correction", + &mut enable_wiggle_correction, + ) + .changed() + { + tof_config.set_enable_wiggle_correction(Some( + enable_wiggle_correction, + )); + } + }) + }); + } + ctx.re_ui.labeled_toggle_switch( + ui, + "Stream", + &mut camera_config.stream_enabled, + ); + }); }); - }); + } } fn device_configuration_ui(ctx: &mut ViewerContext<'_>, ui: &mut egui::Ui) { @@ -217,7 +373,6 @@ impl DeviceSettingsPanel { 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( ui, @@ -231,19 +386,10 @@ impl DeviceSettingsPanel { ..Default::default() }) .show(ui, |ui| { + 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; - }; - Self::camera_config_ui(ctx, ui, &cam, config); - } - + Self::camera_config_ui(ctx, ui, &mut device_config); ui.collapsing( egui::RichText::new("AI settings").color(text_color), |ui| { @@ -276,11 +422,11 @@ impl DeviceSettingsPanel { ctx.re_ui.labeled_combo_box( ui, "Run on", - model.camera.display_name(ctx), + model.camera.display_name(ctx.depthai_state.get_connected_cameras()), false, true, |ui| { - let filtered_cameras: Vec<_> = connected_cameras + let filtered_cameras: Vec<_> = ctx.depthai_state.get_connected_cameras() .iter() // iterates over references .filter(|cam| { !(cam.supported_types.contains( @@ -294,7 +440,7 @@ impl DeviceSettingsPanel { ui.selectable_value( &mut model.camera, cam.board_socket, - cam.board_socket.display_name(ctx), + cam.board_socket.display_name(ctx.depthai_state.get_connected_cameras()), ); } }, @@ -306,7 +452,7 @@ impl DeviceSettingsPanel { }); }); - let mut depth = device_config.depth.unwrap_or_default(); + let mut stereo: depthai::StereoDepthConfig = device_config.stereo.unwrap_or_default(); ui.add_enabled_ui( ctx.depthai_state.selected_device.has_stereo_pairs(), |ui| { @@ -323,14 +469,14 @@ impl DeviceSettingsPanel { .show(ui, |ui| { ui.vertical(|ui| { ui.set_width(CONFIG_UI_WIDTH); - let (cam1, cam2) = depth.stereo_pair; + let (cam1, cam2) = stereo.stereo_pair; ctx.re_ui.labeled_combo_box( ui, "Camera Pair", format!( "{}, {}", - cam1.display_name(ctx), - cam2.display_name(ctx) + cam1.display_name(ctx.depthai_state.get_connected_cameras()), + cam2.display_name(ctx.depthai_state.get_connected_cameras()) ), false, true, @@ -341,12 +487,12 @@ impl DeviceSettingsPanel { .stereo_pairs { ui.selectable_value( - &mut depth.stereo_pair, + &mut stereo.stereo_pair, *pair, format!( "{} {}", - pair.0.display_name(ctx), - pair.1.display_name(ctx) + pair.0.display_name(ctx.depthai_state.get_connected_cameras()), + pair.1.display_name(ctx.depthai_state.get_connected_cameras()) ), ); } @@ -382,20 +528,20 @@ impl DeviceSettingsPanel { ctx.re_ui.labeled_toggle_switch( ui, "LR Check", - &mut depth.lr_check, + &mut stereo.lr_check, ); ctx.re_ui.labeled_combo_box( ui, "Align to", - depth.align.display_name(ctx), + stereo.align.display_name(ctx.depthai_state.get_connected_cameras()), false, true, |ui| { - for align in &connected_cameras { + for align in ctx.depthai_state.get_connected_cameras() { ui.selectable_value( - &mut depth.align, + &mut stereo.align, align.board_socket, - align.board_socket.display_name(ctx), + align.board_socket.display_name(ctx.depthai_state.get_connected_cameras()), ); } }, @@ -403,14 +549,14 @@ impl DeviceSettingsPanel { ctx.re_ui.labeled_combo_box( ui, "Median Filter", - format!("{:?}", depth.median), + format!("{:?}", stereo.median), false, true, |ui| { - for filter in depthai::DepthMedianFilter::iter() + for filter in depthai::MedianFilter::iter() { ui.selectable_value( - &mut depth.median, + &mut stereo.median, filter, format!("{filter:?}"), ); @@ -422,25 +568,25 @@ impl DeviceSettingsPanel { egui::Id::from("LR Threshold"), Some(100.0), "LR Threshold", - &mut depth.lrc_threshold, + &mut stereo.lrc_threshold, 0..=10, ); ctx.re_ui.labeled_toggle_switch( ui, "Extended Disparity", - &mut depth.extended_disparity, + &mut stereo.extended_disparity, ); ctx.re_ui.labeled_toggle_switch( ui, "Subpixel Disparity", - &mut depth.subpixel_disparity, + &mut stereo.subpixel_disparity, ); ctx.re_ui.labeled_dragvalue( ui, egui::Id::from("Sigma"), Some(100.0), "Sigma", - &mut depth.sigma, + &mut stereo.sigma, 0..=65535, ); ctx.re_ui.labeled_dragvalue( @@ -448,7 +594,7 @@ impl DeviceSettingsPanel { egui::Id::from("Confidence"), Some(100.0), "Confidence", - &mut depth.confidence, + &mut stereo.confidence, 0..=255, ); ctx.re_ui.labeled_toggle_switch( @@ -469,8 +615,9 @@ impl DeviceSettingsPanel { }, ); - device_config.depth = Some(depth); + device_config.stereo = Some(stereo); ctx.depthai_state.modified_device_config = device_config.clone(); + ui.vertical(|ui| { ui.horizontal(|ui| { let apply_enabled = { diff --git a/crates/re_viewer/src/ui/space_view.rs b/crates/re_viewer/src/ui/space_view.rs index c788fe0909e8..8fc4c4e75c69 100644 --- a/crates/re_viewer/src/ui/space_view.rs +++ b/crates/re_viewer/src/ui/space_view.rs @@ -113,10 +113,18 @@ impl SpaceView { { if is_3d { is_depthai_spaceview = true; - format!("{} ({})", camera.board_socket.display_name(ctx), "3D") + format!( + "{} ({})", + camera.board_socket.display_name(camera_features), + "3D" + ) } else if is_2d { is_depthai_spaceview = true; - format!("{} ({})", camera.board_socket.display_name(ctx), "2D") + format!( + "{} ({})", + camera.board_socket.display_name(camera_features), + "2D" + ) } else { space_path.iter().last().unwrap().to_string() } @@ -146,9 +154,18 @@ impl SpaceView { } } - pub fn duplicate(&self, ctx: &ViewerContext<'_>) -> Self { - Self::new(ctx, self.category, &self.space_path, self.data_blueprint.entity_paths().iter().cloned().collect_vec().as_slice()) + Self::new( + ctx, + self.category, + &self.space_path, + self.data_blueprint + .entity_paths() + .iter() + .cloned() + .collect_vec() + .as_slice(), + ) } pub fn on_frame_start( diff --git a/rerun_py/depthai_viewer/_backend/config_api.py b/rerun_py/depthai_viewer/_backend/config_api.py index 075b09519882..5731394a256e 100644 --- a/rerun_py/depthai_viewer/_backend/config_api.py +++ b/rerun_py/depthai_viewer/_backend/config_api.py @@ -11,7 +11,7 @@ import websockets from websockets.server import WebSocketServerProtocol -from depthai_viewer._backend.device_configuration import PipelineConfiguration +from depthai_viewer._backend.device_configuration import PipelineConfiguration, ToFConfig from depthai_viewer._backend.messages import ( DevicesMessage, ErrorMessage, @@ -45,6 +45,7 @@ class Action(Enum): SET_DOT_BRIGHTNESS = auto() RESET = auto() # When anything bad happens, a reset occurs (like closing ws connection) GET_AVAILABLE_DEVICES = auto() + SET_TOF_CONFIG = auto() def dispatch_action(action: Action, **kwargs) -> Message: # type: ignore[no-untyped-def] @@ -141,6 +142,23 @@ async def ws_api(websocket: WebSocketServerProtocol) -> None: print("Missing dot", message_type) continue await send_message(websocket, dispatch_action(Action.SET_DOT_BRIGHTNESS, dot_brightness=dot_brightness)) + elif message_type == MessageType.SET_TOF_CONFIG: + data = message.get("data", {}) + tof_config = data.get(message_type, None) + if len(tof_config) == 2: # Disregard the camera board socket for now. Only support one. + tof_config = tof_config[1] + else: + print("Invalid tof config: ", tof_config) + continue + if tof_config is None: + print("Missing tof config") + continue + try: + tof_config = ToFConfig(**tof_config) + except Exception as e: + print(f"Failed to deserialize tof_config: {tof_config}: {e}") + continue + await send_message(websocket, dispatch_action(Action.SET_TOF_CONFIG, tof_config=tof_config)) else: print("Unknown message type: ", message_type) continue diff --git a/rerun_py/depthai_viewer/_backend/device.py b/rerun_py/depthai_viewer/_backend/device.py index 677393690023..47dc8880130e 100644 --- a/rerun_py/depthai_viewer/_backend/device.py +++ b/rerun_py/depthai_viewer/_backend/device.py @@ -10,10 +10,8 @@ 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 depthai_sdk.components.camera_helper import getClosestIspScale +from depthai_sdk.components.tof_component import Component, ToFComponent from numpy.typing import NDArray import depthai_viewer as viewer @@ -27,6 +25,7 @@ ImuKind, PipelineConfiguration, StereoDepthConfiguration, + ToFConfig, XLinkConnection, calculate_isp_scale, compare_dai_camera_configs, @@ -40,7 +39,11 @@ Message, WarningMessage, ) -from depthai_viewer._backend.packet_handler import DetectionContext, PacketHandler, PacketHandlerContext +from depthai_viewer._backend.packet_handler import ( + DetectionContext, + PacketHandler, + PacketHandlerContext, +) from depthai_viewer._backend.store import Store from depthai_viewer.install_requirements import model_dir @@ -85,6 +88,7 @@ class Device: _pipeline_start_t: Optional[float] = None _queues: List[Tuple[Component, ComponentOutput]] = [] _dai_queues: List[Tuple[dai.Node, dai.DataOutputQueue, Optional[PacketHandlerContext]]] = [] + _tof_component: Optional[ToFComponent] = None # _profiler = cProfile.Profile() @@ -111,9 +115,14 @@ def get_intrinsic_matrix(self, board_socket: dai.CameraBoardSocket, width: int, return self.intrinsic_matrix.get((board_socket, width, height)) # type: ignore[return-value] if self.calibration_data is None: raise Exception("Missing calibration data!") - M_right = self.calibration_data.getCameraIntrinsics( # type: ignore[union-attr] - board_socket, dai.Size2f(width, height) - ) + try: + M_right = self.calibration_data.getCameraIntrinsics( # type: ignore[union-attr] + board_socket, dai.Size2f(width, height) + ) + except RuntimeError: + print("No intrinsics found for camera: ", board_socket, " assuming default.") + f_len = (height * width) ** 0.5 + M_right = [[f_len, 0, width / 2], [0, f_len, height / 2], [0, 0, 1]] self.intrinsic_matrix[(board_socket, width, height)] = np.array(M_right).reshape(3, 3) return self.intrinsic_matrix[(board_socket, width, height)] @@ -228,6 +237,7 @@ def get_device_properties(self) -> DeviceProperties: supported_types=cam.supportedTypes, stereo_pairs=self._get_possible_stereo_pairs_for_cam(cam, connected_cam_features), name=cam.name.capitalize(), + tof_config=ToFConfig() if dai.CameraSensorType.TOF in cam.supportedTypes else None, ) ) device_properties.stereo_pairs = list( @@ -330,14 +340,14 @@ def _create_auto_pipeline_config(self, config: PipelineConfiguration) -> Message left_cam = calibration.getStereoLeftCameraId() right_cam = calibration.getStereoRightCameraId() if left_cam.value != 255 and right_cam.value != 255: - config.depth = StereoDepthConfiguration( + config.stereo = 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 + config.stereo = None # 3. Create YOLO nnet_cam_sock = rgb_cam_socket if nnet_cam_sock is None: @@ -352,7 +362,7 @@ def _create_auto_pipeline_config(self, config: PipelineConfiguration) -> Message 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 = ALL_NEURAL_NETWORKS[1] # Yolo V6 config.ai_model.camera = nnet_cam_sock else: config.ai_model = ALL_NEURAL_NETWORKS[1] @@ -368,8 +378,8 @@ def update_pipeline(self, runtime_only: bool) -> Message: if self._oak.device.isPipelineRunning(): if runtime_only: - if config.depth is not None: - self._stereo.control.send_controls(config.depth.to_runtime_controls()) + if config.stereo is not None: + self._stereo.control.send_controls(config.stereo.to_runtime_controls()) return InfoMessage("") return ErrorMessage("Depth is disabled, can't send runtime controls!") print("Cam running, closing...") @@ -439,8 +449,8 @@ def update_pipeline(self, runtime_only: bool) -> Message: 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 + is_used_by_depth = config.stereo is not None and ( + cam.board_socket == config.stereo.align or cam.board_socket in config.stereo.stereo_pair ) is_used_by_ai = config.ai_model is not None and cam.board_socket == config.ai_model.camera cam.stream_enabled |= is_used_by_depth or is_used_by_ai @@ -449,6 +459,7 @@ def update_pipeline(self, runtime_only: bool) -> Message: if cam.stream_enabled: if dai.CameraSensorType.TOF in camera_features.supportedTypes: sdk_cam = self._oak.create_tof(cam.board_socket) + self._tof_component = sdk_cam self._queues.append((sdk_cam, self._oak.queue(sdk_cam.out.main))) elif dai.CameraSensorType.THERMAL in camera_features.supportedTypes: thermal_cam = self._oak.pipeline.create(dai.node.Camera) @@ -478,9 +489,9 @@ def update_pipeline(self, runtime_only: bool) -> Message: print("Skipped creating camera:", cam.board_socket, "because no valid sensor resolution was found.") continue - if config.depth: + if config.stereo: print("Creating depth") - stereo_pair = config.depth.stereo_pair + stereo_pair = config.stereo.stereo_pair left_cam = self._get_component_by_socket(stereo_pair[0]) right_cam = self._get_component_by_socket(stereo_pair[1]) if not left_cam or not right_cam: @@ -494,21 +505,21 @@ def update_pipeline(self, runtime_only: bool) -> Message: right_cam.config_color_camera(isp_scale=calculate_isp_scale(right_cam.node.getResolutionWidth())) self._stereo = self._oak.create_stereo(left=left_cam, right=right_cam, name="depth") - align_component = self._get_component_by_socket(config.depth.align) + align_component = self._get_component_by_socket(config.stereo.align) if not align_component: - return ErrorMessage(f"{config.depth.align} is not configured. Couldn't create stereo pair.") + return ErrorMessage(f"{config.stereo.align} is not configured. Couldn't create stereo pair.") self._stereo.config_stereo( - lr_check=config.depth.lr_check, - subpixel=config.depth.subpixel_disparity, - confidence=config.depth.confidence, + lr_check=config.stereo.lr_check, + subpixel=config.stereo.subpixel_disparity, + confidence=config.stereo.confidence, align=align_component, - lr_check_threshold=config.depth.lrc_threshold, - median=config.depth.median, + lr_check_threshold=config.stereo.lrc_threshold, + median=config.stereo.median, ) - aligned_camera = self._get_camera_config_by_socket(config, config.depth.align) + aligned_camera = self._get_camera_config_by_socket(config, config.stereo.align) if not aligned_camera: - return ErrorMessage(f"{config.depth.align} is not configured. Couldn't create stereo pair.") + return ErrorMessage(f"{config.stereo.align} is not configured. Couldn't create stereo pair.") self._queues.append((self._stereo, self._oak.queue(self._stereo.out.main))) if self._oak.device.getConnectedIMU() != "NONE" and self._oak.device.getConnectedIMU() != "": @@ -572,7 +583,7 @@ def update_pipeline(self, runtime_only: bool) -> Message: WarningMessage(f"{config.ai_model.camera} is not configured, won't create NNET.") ) elif config.ai_model.path == "age-gender-recognition-retail-0013": - face_detection = self._oak.create_nn(model_path, cam_component) + face_detection = self._oak.create_nn("face-detection-retail-0004", cam_component) self._nnet = self._oak.create_nn(model_path, input=face_detection) else: self._nnet = self._oak.create_nn(model_path, cam_component) @@ -643,6 +654,9 @@ def update(self) -> None: # self._profiler.enable() # self.start = time.time() + def get_tof_component(self) -> Optional[ToFComponent]: + return self._tof_component + def print_system_information(info: dai.SystemInformation) -> None: print( diff --git a/rerun_py/depthai_viewer/_backend/device_configuration.py b/rerun_py/depthai_viewer/_backend/device_configuration.py index 1b2e93a691c5..1ae0d63b0eb7 100644 --- a/rerun_py/depthai_viewer/_backend/device_configuration.py +++ b/rerun_py/depthai_viewer/_backend/device_configuration.py @@ -89,8 +89,8 @@ def out_queue_name(self) -> str: class AiModelConfiguration(BaseModel): # type: ignore[misc] - display_name: str = "MobileNet SSD" - path: str = "mobilenet-ssd" + display_name: str = "Yolo V6" + path: str = "yolov6nr3_coco_640x352" camera: dai.CameraBoardSocket class Config: @@ -116,8 +116,8 @@ def dict(self, *args, **kwargs): # type: ignore[no-untyped-def] camera=dai.CameraBoardSocket.CAM_A, ), AiModelConfiguration( - path="mobilenet-ssd", - display_name="MobileNet SSD", + path="yolov6nr3_coco_640x352", + display_name="Yolo V6", camera=dai.CameraBoardSocket.CAM_A, ), AiModelConfiguration( @@ -230,6 +230,50 @@ def create_color(cls, **kwargs) -> "CameraConfiguration": return cls(board_socket="RGB", **kwargs) +class ToFConfig(BaseModel): # type: ignore[misc] + median: Optional[dai.MedianFilter] = dai.MedianFilter.MEDIAN_OFF + phase_unwrapping_level: int = 4 + phase_unwrap_error_threshold: int = 100 + enable_phase_unwrapping: Optional[bool] = True + enable_fppn_correction: Optional[bool] = None + enable_optical_correction: Optional[bool] = None + enable_temperature_correction: Optional[bool] = None + enable_wiggle_correction: Optional[bool] = None + + class Config: + arbitrary_types_allowed = True + + def __init__(self, **v) -> None: # type: ignore[no-untyped-def] + if v.get("median", None): + if isinstance(v["median"], str): + v["median"] = getattr(dai.MedianFilter, v["median"]) + return super().__init__(**v) # type: ignore[no-any-return] + + def dict(self, *args, **kwargs) -> Dict[str, Any]: # type: ignore[no-untyped-def] + return { + "median": self.median.name if self.median else None, + "phase_unwrapping_level": self.phase_unwrapping_level, + "phase_unwrap_error_threshold": self.phase_unwrap_error_threshold, + "enable_fppn_correction": self.enable_fppn_correction, + "enable_optical_correction": self.enable_optical_correction, + "enable_temperature_correction": self.enable_temperature_correction, + "enable_wiggle_correction": self.enable_wiggle_correction, + "enable_phase_unwrapping": self.enable_phase_unwrapping, + } + + def to_dai(self) -> dai.RawToFConfig: + cfg = dai.RawToFConfig() + cfg.median = self.median # type: ignore[attr-defined] + cfg.phaseUnwrappingLevel = self.phase_unwrapping_level # type: ignore[attr-defined] + cfg.phaseUnwrapErrorThreshold = self.phase_unwrap_error_threshold # type: ignore[attr-defined] + cfg.enableFPPNCorrection = self.enable_fppn_correction # type: ignore[attr-defined] + cfg.enableOpticalCorrection = self.enable_optical_correction # type: ignore[attr-defined] + cfg.enableTemperatureCorrection = self.enable_temperature_correction # type: ignore[attr-defined] + cfg.enableWiggleCorrection = self.enable_wiggle_correction # type: ignore[attr-defined] + cfg.enablePhaseUnwrapping = self.enable_phase_unwrapping # type: ignore[attr-defined] + return cfg + + class CameraFeatures(BaseModel): # type: ignore[misc] resolutions: List[CameraSensorResolution] = [] max_fps: int = 60 @@ -238,6 +282,7 @@ class CameraFeatures(BaseModel): # type: ignore[misc] stereo_pairs: List[dai.CameraBoardSocket] = [] """Which cameras can be paired with this one""" name: str + tof_config: Optional[ToFConfig] = None class Config: arbitrary_types_allowed = True @@ -251,13 +296,14 @@ def dict(self, *args, **kwargs) -> Dict[str, Any]: # type: ignore[no-untyped-de "supported_types": [sensor_type.name for sensor_type in self.supported_types], "stereo_pairs": [socket.name for socket in self.stereo_pairs], "name": self.name, + "tof_config": self.tof_config.dict() if self.tof_config else None, } class PipelineConfiguration(BaseModel): # type: ignore[misc] auto: bool = False # Should the backend automatically create a pipeline? cameras: List[CameraConfiguration] = [] - depth: Optional[StereoDepthConfiguration] + stereo: Optional[StereoDepthConfiguration] ai_model: Optional[AiModelConfiguration] imu: ImuConfiguration = ImuConfiguration() diff --git a/rerun_py/depthai_viewer/_backend/main.py b/rerun_py/depthai_viewer/_backend/main.py index eaa3432e0d66..31052ec52821 100644 --- a/rerun_py/depthai_viewer/_backend/main.py +++ b/rerun_py/depthai_viewer/_backend/main.py @@ -147,6 +147,15 @@ def handle_action(self, action: Action, **kwargs) -> Message: # type: ignore[no self._device._oak.device.setIrLaserDotProjectorBrightness(self.store.dot_brightness) return InfoMessage("Dot projector set successfully") return ErrorMessage("No device selected") + elif action == Action.SET_TOF_CONFIG: + if self._device and self._device._oak: + if tof_component := self._device.get_tof_component(): + if tof_config := kwargs.get("tof_config", None): + tof_component.control.send_controls(tof_config.to_dai()) + return InfoMessage("ToF config updated successfully") + return ErrorMessage("ToF config not provided") + return ErrorMessage("Failed to update ToF config. ToF node wasn't found.") + return ErrorMessage("No device selected") return ErrorMessage(f"Action: {action} not implemented") def run(self) -> None: diff --git a/rerun_py/depthai_viewer/_backend/messages.py b/rerun_py/depthai_viewer/_backend/messages.py index c7d30d6d1bab..318c06a5efdf 100644 --- a/rerun_py/depthai_viewer/_backend/messages.py +++ b/rerun_py/depthai_viewer/_backend/messages.py @@ -14,6 +14,7 @@ class MessageType: DEVICE = "DeviceProperties" # Get or set device SET_FLOOD_BRIGHTNESS = "SetFloodBrightness" # Set floodlight SET_DOT_BRIGHTNESS = "SetDotBrightness" # Set floodlight + SET_TOF_CONFIG = "SetToFConfig" # Set ToF config ERROR = "Error" # Error message INFO = "Info" # Info message WARNING = "Warning" # Warning message diff --git a/rerun_py/depthai_viewer/_backend/packet_handler.py b/rerun_py/depthai_viewer/_backend/packet_handler.py index 88331d44dfa0..c3145536a263 100644 --- a/rerun_py/depthai_viewer/_backend/packet_handler.py +++ b/rerun_py/depthai_viewer/_backend/packet_handler.py @@ -6,14 +6,21 @@ from ahrs.filters import Mahony from depthai_sdk.classes.packets import ( # PointcloudPacket, BasePacket, + BoundingBox, DepthPacket, + Detection, DetectionPacket, DisparityDepthPacket, FramePacket, IMUPacket, TwoStagePacket, ) -from depthai_sdk.components import CameraComponent, Component, NNComponent, StereoComponent +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 @@ -198,7 +205,7 @@ def _on_stereo_frame(self, packet: Union[DepthPacket, DisparityDepthPacket], com depth_frame = packet.frame 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: + if not self.store.pipeline_config or not self.store.pipeline_config.stereo: # Essentially impossible to get here return viewer.log_depth_image(path, depth_frame, meter=1e3) @@ -234,6 +241,18 @@ def _on_detections(self, packet: DetectionPacket, component: NNComponent) -> Non labels=labels, ) + def _rect_from_sdk_detection( + self, packet_bbox: BoundingBox, detection: Detection, max_height: int, max_width: int + ) -> List[int]: + bbox = packet_bbox.get_relative_bbox(detection.bbox) + (x1, y1), (x2, y2) = bbox.denormalize((max_height, max_width)) + return [ + max(x1, 0), + max(y1, 0), + min(x2, max_width), + min(y2, max_height), + ] + def _detections_to_rects_colors_labels( self, packet: DetectionPacket, omz_labels: Optional[List[str]] = None ) -> Tuple[List[List[int]], List[List[int]], List[str]]: @@ -242,7 +261,7 @@ def _detections_to_rects_colors_labels( labels = [] for detection in packet.detections: rects.append( - self._rect_from_detection(detection.img_detection, packet.frame.shape[0], packet.frame.shape[1]) + self._rect_from_sdk_detection(packet.bbox, detection, packet.frame.shape[0], packet.frame.shape[1]) ) colors.append([0, 255, 0]) label: str = detection.label_str @@ -265,7 +284,7 @@ def _on_age_gender_packet(self, packet: TwoStagePacket, component: NNComponent) cam = "color_cam" if component._get_camera_comp().is_color() else "mono_cam" viewer.log_rect( f"{component._get_camera_comp()._socket.name}/transform/{cam}/Detection", - self._rect_from_detection(det.img_detection, packet.frame.shape[0], packet.frame.shape[1]), + self._rect_from_sdk_detection(packet.bbox, det, packet.frame.shape[0], packet.frame.shape[1]), rect_format=RectFormat.XYXY, color=color, label=label, diff --git a/rerun_py/depthai_viewer/install_requirements.py b/rerun_py/depthai_viewer/install_requirements.py index c2e0bdbd66e2..7acc644a1f7a 100644 --- a/rerun_py/depthai_viewer/install_requirements.py +++ b/rerun_py/depthai_viewer/install_requirements.py @@ -50,7 +50,7 @@ def download_blobs() -> None: os.makedirs(model_dir) models = { "yolov8n_coco_640x352": "depthai", - "mobilenet-ssd": "intel", + "yolov6nr3_coco_640x352": "depthai", "face-detection-retail-0004": "intel", "age-gender-recognition-retail-0013": "intel", "yolov6n_thermal_people_256x192": "depthai", @@ -91,10 +91,10 @@ def create_venv_and_install_dependencies() -> None: "-m", "pip", "install", - "depthai-sdk==1.13.1.dev0+b0340e0c4ad869711d7d5fff48e41c46fe41f475", + "depthai-sdk==1.13.1.dev0+dd1a6d8a797107d24b9b91b7b63c3fcffb932712", "--extra-index-url", "https://artifacts.luxonis.com/artifactory/luxonis-python-snapshot-local/", - # "git+https://github.com/luxonis/depthai@develop#subdirectory=depthai_sdk", + # "git+https://github.com/luxonis/depthai@tof_decoding#subdirectory=depthai_sdk", ], check=True, ) diff --git a/rerun_py/depthai_viewer/requirements.txt b/rerun_py/depthai_viewer/requirements.txt index b7ed15103bc7..431a5f5235b2 100644 --- a/rerun_py/depthai_viewer/requirements.txt +++ b/rerun_py/depthai_viewer/requirements.txt @@ -4,7 +4,7 @@ setuptools ahrs # depthai_sdk conflicts with depthai, so it's installed seperatelly in __main__.py --extra-index-url https://artifacts.luxonis.com/artifactory/luxonis-python-snapshot-local -depthai==2.24.0.0.dev0+c014e27e224f7ef3f6407be6b3f05be6c2fffd13 +depthai==2.25.0.0.dev0+dca8245b0b1c52349b73e5a0bf23589b7c4ac3e8 websockets pydantic==1.9 deprecated