diff --git a/.github/workflows/android_test.sh b/.github/workflows/android_test.sh deleted file mode 100755 index b782a650..00000000 --- a/.github/workflows/android_test.sh +++ /dev/null @@ -1,38 +0,0 @@ -#!/bin/bash - -set -ex - -# Make sure the package is removed since it may end up in the AVD cache. This causes -# INSTALL_FAILED_UPDATE_INCOMPATIBLE errors when the debug keystore is regenerated, -# as it is not stored/cached on the CI: -# https://github.com/rust-windowing/android-ndk-rs/blob/240389f1e281f582b84a8049e2afaa8677d901c2/ndk-build/src/ndk.rs#L308-L332 -adb uninstall rust.example.hello_world || true - -if [ -z "$1" ]; -then - cargo apk run -p ndk-examples --target x86_64-linux-android --example hello_world -else - adb install -r "$1/hello_world.apk" - adb shell am start -a android.intent.action.MAIN -n "rust.example.hello_world/android.app.NativeActivity" -fi - -sleep 30s - -adb logcat *:E hello-world:V -d | tee ~/logcat.log - -if grep 'hello world' ~/logcat.log; -then - echo "App running" -else - echo "::error::App not running" - exit 1 -fi - -ERROR_MSG=$(grep -e 'thread.*panicked at' "$HOME"/logcat.log | true) -if [ -z "${ERROR_MSG}" ]; -then - exit 0 -else - echo "::error::${ERROR_MSG}" - exit 1 -fi diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 22b83e91..092895bf 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -16,11 +16,6 @@ jobs: crate: - { name: "ndk-sys", target: "armv7-linux-androideabi" } - { name: "ndk", target: "armv7-linux-androideabi" } - - { name: "ndk-macro", target: "x86_64-unknown-linux-gnu" } - - { name: "ndk-context", target: "armv7-linux-androideabi" } - - { name: "ndk-glue", target: "armv7-linux-androideabi" } - - { name: "ndk-build", target: "x86_64-unknown-linux-gnu" } - - { name: "cargo-apk", target: "x86_64-unknown-linux-gnu" } steps: - uses: actions/checkout@v2 - uses: actions-rs/toolchain@v1 diff --git a/.github/workflows/rust.yml b/.github/workflows/rust.yml index d3c0e5ae..6506c6e6 100644 --- a/.github/workflows/rust.yml +++ b/.github/workflows/rust.yml @@ -30,12 +30,23 @@ jobs: uses: actions-rs/cargo@v1 with: command: clippy - # Use one of our supported targets to lint all crates including - # the target-specific `ndk` in one go. - # This assumes our host-tools (cargo-apk and dependencies) - # also compile cleanly under this target. + # Use a cross-compilation target (that's typical for Android) to lint everything args: --all --all-targets --all-features --target aarch64-linux-android -- -Dwarnings + check_msrv: + name: Check MSRV (1.60.0) + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v1 + - uses: dtolnay/rust-toolchain@1.60.0 + with: + target: aarch64-linux-android + - uses: actions-rs/cargo@v1 + with: + command: check + # Use a cross-compilation target (that's typical for Android) to lint everything + args: --workspace --all-targets --all-features --target aarch64-linux-android + build: strategy: fail-fast: false @@ -43,123 +54,39 @@ jobs: os: [ubuntu-latest] rust-channel: ['stable', 'nightly'] rust-target: - - 'armv7-linux-androideabi' - - 'aarch64-linux-android' - - 'i686-linux-android' - - 'x86_64-linux-android' + - { triple: 'armv7-linux-androideabi', abi: armeabi-v7a } + - { triple: 'aarch64-linux-android', abi: arm64-v8a } + - { triple: 'i686-linux-android', abi: x86 } + - { triple: 'x86_64-linux-android', abi: x86_64 } include: - os: windows-latest rust-channel: 'stable' - rust-target: 'aarch64-linux-android' + rust-target: { triple: 'aarch64-linux-android', abi: arm64-v8a } - os: windows-latest rust-channel: 'stable' - rust-target: 'x86_64-linux-android' + rust-target: { triple: 'x86_64-linux-android', abi: x86_64 } runs-on: ${{ matrix.os }} - name: Build apk + name: Cross-compile steps: - uses: actions/checkout@v2 - - name: Installing Rust ${{ matrix.rust-channel }} w/ ${{ matrix.rust-target }} + - name: Setup Android SDK + uses: android-actions/setup-android@v2 + + - name: Install cargo-ndk + run: cargo install cargo-ndk + + - name: Installing Rust ${{ matrix.rust-channel }} w/ ${{ matrix.rust-target.triple }} uses: actions-rs/toolchain@v1 with: toolchain: ${{ matrix.rust-channel }} - target: ${{ matrix.rust-target }} + target: ${{ matrix.rust-target.triple }} override: true - - name: Install cargo-apk - run: - cargo install --path cargo-apk - - - name: Cargo check for target ${{ matrix.rust-target }} - run: cargo check -p ndk --target ${{ matrix.rust-target }} --all-features - - - name: Cargo apk build for target ${{ matrix.rust-target }} - run: cargo apk build -p ndk-examples --target ${{ matrix.rust-target }} --examples - - - uses: actions/upload-artifact@v2 - # Only need this for CI, unless users are interested in downloading - # a ready-made app that does nothing but printing "hello world". - if: ${{ matrix.rust-target == 'x86_64-linux-android' }} - name: Upload hello_world apk - with: - name: hello_world_${{ matrix.os }}_${{ matrix.rust-target }} - path: ./target/debug/apk/examples/hello_world.apk - - android_emulator: - name: hello_world example on emulator - needs: build - runs-on: macos-latest - strategy: - matrix: - source_os: [ubuntu-latest, windows-latest, local] - env: - api-level: 29 - emulator-options: -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none - arch: x86_64 - # the `googleapis` emulator target is considerably slower on CI. - target: default - profile: Nexus 6 - - steps: - - name: Checkout - uses: actions/checkout@v2 - - - uses: actions/download-artifact@v2 - name: Download hello_world APK - if: ${{ matrix.source_os != 'local' }} - id: download - with: - name: hello_world_${{ matrix.source_os }}_x86_64-linux-android - - - name: Install `cargo-apk` and add `x86_64-linux-android` target - if: ${{ matrix.source_os == 'local' }} - run: | - cargo install --path cargo-apk - rustup target add x86_64-linux-android - - - name: AVD cache - uses: actions/cache@v2 - id: avd-cache - with: - path: | - ~/.android/avd/* - ~/.android/adb* - # Bump the trailing number when making changes to the emulator setup below - key: avd-${{ env.api-level }}-1 - - - name: create AVD and generate snapshot for caching - if: steps.avd-cache.outputs.cache-hit != 'true' - uses: reactivecircus/android-emulator-runner@v2 - with: - api-level: ${{ env.api-level }} - arch: ${{ env.arch }} - target: ${{ env.target }} - profile: ${{ env.profile }} - emulator-options: ${{ env.emulator-options }} - disable-animations: true - force-avd-creation: false - script: echo "Generated AVD snapshot for caching." - - - name: Start hello_world example - uses: reactivecircus/android-emulator-runner@v2 - with: - api-level: ${{ env.api-level }} - arch: ${{ env.arch }} - target: ${{ env.target }} - profile: ${{ env.profile }} - emulator-options: -no-snapshot-save ${{ env.emulator-options }} - disable-animations: true - force-avd-creation: false - script: ./.github/workflows/android_test.sh "${{ steps.download.outputs.download-path }}" - - - name: Upload emulator logs - uses: actions/upload-artifact@v2 - if: ${{ always() }} - with: - name: log - path: ~/logcat.log + - name: Compile for ${{ matrix.rust-target.triple }} + run: cargo ndk -t ${{ matrix.rust-target.abi }} build build-host: strategy: @@ -188,22 +115,6 @@ jobs: run: cargo test -p ndk --all-features - - name: Test ndk-build - run: - cargo test -p ndk-build --all-features - - - name: Test ndk-glue - run: - cargo test -p ndk-glue --all-features - - - name: Test ndk-macro - run: - cargo test -p ndk-macro --all-features - - - name: Test cargo-apk - run: - cargo test -p cargo-apk --all-features - docs: strategy: fail-fast: false diff --git a/Cargo.toml b/Cargo.toml index b189f3e0..44881983 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,11 +1,5 @@ [workspace] members = [ "ndk", - "ndk-context", - "ndk-macro", - "ndk-build", - "ndk-examples", - "ndk-glue", "ndk-sys", - "cargo-apk", ] diff --git a/README.md b/README.md index 412e5b21..699d3667 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,7 @@ # Rust on Android -[![Rust](https://github.com/rust-windowing/android-ndk-rs/workflows/Rust/badge.svg)](https://github.com/rust-windowing/android-ndk-rs/actions) ![MIT license](https://img.shields.io/badge/License-MIT-green.svg) ![APACHE2 license](https://img.shields.io/badge/License-APACHE2-green.svg) +[![Rust](https://github.com/rust-windowing/android-ndk-rs/workflows/Rust/badge.svg)](https://github.com/rust-windowing/android-ndk-rs/actions) ![MIT license](https://img.shields.io/badge/License-MIT-green.svg) ![APACHE2 license](https://img.shields.io/badge/License-APACHE2-green.svg) [![MSRV](https://img.shields.io/badge/rustc-1.60.0+-ab6000.svg)](https://blog.rust-lang.org/2022/04/07/Rust-1.60.0.html) + Libraries and tools for Rust programming on Android targets: @@ -19,7 +20,7 @@ See [`ndk-examples`](./ndk-examples) for examples using the NDK and the README f `android-ndk-rs` aims to support at least the `LTS` and `Rolling Release` branches of the NDK, as described on [their wiki](https://github.com/android/ndk/wiki#supported-downloads). Additionally the `Beta Release` might be supported to prepare for an upcoming release. -As of writing (2021-07-24) the following NDKs are tested: +As of writing (2022-10-10) the following NDKs are tested: Branch | Version | Status | Working -|-|:-:|:-: @@ -28,10 +29,9 @@ r19 | 19.2.5345600 | _Deprecated_ | :heavy_check_mark: r20 | 20.1.5948944 | _Deprecated_ | :heavy_check_mark: r21 | 21.4.7075529 | _Deprecated_ | :heavy_check_mark: r22 | 22.1.7171670 | _Deprecated_ | :heavy_check_mark: -r23 | beta 1/2 | _Deprecated_ | :heavy_check_mark: -r23 | 23.0.7272597-beta3 | _Deprecated_ | :heavy_check_mark: Workaround in [#189](https://github.com/rust-windowing/android-ndk-rs/pull/189) -r23 | 23.1.7779620 | LTS | :heavy_check_mark: Workaround in [#189](https://github.com/rust-windowing/android-ndk-rs/pull/189) -r24 | 24.0.7856742-beta1 | Rolling Release | :heavy_check_mark: Workaround in [#189](https://github.com/rust-windowing/android-ndk-rs/pull/189) +r23 | 23.1.7779620 | _Deprecated_ | :heavy_check_mark: +r24 | 24.0.8215888 | _Deprecated_ | :heavy_check_mark: +r25 | 25.1.8937393 | LTS | :heavy_check_mark: ## Quick start: `Hello World` crate on Android diff --git a/cargo-apk/CHANGELOG.md b/cargo-apk/CHANGELOG.md deleted file mode 100644 index 46a1df6d..00000000 --- a/cargo-apk/CHANGELOG.md +++ /dev/null @@ -1,91 +0,0 @@ -# Unreleased - -- Upgrade to latest `ndk-build` to deduplicate libraries before packaging them into the APK. ([#333](https://github.com/rust-windowing/android-ndk-rs/pull/333)) -- Support `android:resizeableActivity`. ([#338](https://github.com/rust-windowing/android-ndk-rs/pull/338)) -- Add `--device` argument to select `adb` device by serial (see `adb devices` for connected devices and their serial). ([#329](https://github.com/rust-windowing/android-ndk-rs/pull/329)) - -# 0.9.3 (2022-07-05) - -- Allow configuration of alternate debug keystore location; require keystore location for release builds. ([#299](https://github.com/rust-windowing/android-ndk-rs/pull/299)) -- **Breaking:** Rename `Activity::intent_filters` back to `Activity::intent_filter`. ([#305](https://github.com/rust-windowing/android-ndk-rs/pull/305)) - -# 0.9.2 (2022-06-11) - -- Move NDK r23 `-lgcc` workaround to `ndk_build::cargo::cargo_ndk()`, to also apply to our `cargo apk --` invocations. ([#286](https://github.com/rust-windowing/android-ndk-rs/pull/286)) -- Disable `aapt` compression for the [(default) `dev` profile](https://doc.rust-lang.org/cargo/reference/profiles.html). ([#283](https://github.com/rust-windowing/android-ndk-rs/pull/283)) -- Append `--target` to blanket `cargo apk --` calls when not provided by the user. ([#287](https://github.com/rust-windowing/android-ndk-rs/pull/287)) - -# 0.9.1 (2022-05-12) - -- Reimplement NDK r23 `-lgcc` workaround using `RUSTFLAGS`, to apply to transitive `cdylib` compilations. (#270) - -# 0.9.0 (2022-05-07) - -- **Breaking:** Use `min_sdk_version` to select compiler target instead of `target_sdk_version`. ([#197](https://github.com/rust-windowing/android-ndk-rs/pull/197)) - See https://developer.android.com/ndk/guides/sdk-versions#minsdkversion for more details. -- **Breaking:** Default `target_sdk_version` to `30` or lower (instead of the highest supported SDK version by the detected NDK toolchain) - for more consistent interaction with Android backwards compatibility handling and its increasingly strict usage rules: - https://developer.android.com/distribute/best-practices/develop/target-sdk - ([#203](https://github.com/rust-windowing/android-ndk-rs/pull/203)) -- Allow manifest `package` property to be provided in `Cargo.toml`. ([#236](https://github.com/rust-windowing/android-ndk-rs/pull/236)) -- Add `MAIN` intent filter in `from_subcommand` instead of relying on a custom serialization function in `ndk-build`. ([#241](https://github.com/rust-windowing/android-ndk-rs/pull/241)) -- Export the sole `NativeActivity` (through `android:exported="true"`) to allow it to be started by default if targeting Android S or higher. ([#242](https://github.com/rust-windowing/android-ndk-rs/pull/242)) -- `cargo-apk` version can now be queried through `cargo apk version`. ([#218](https://github.com/rust-windowing/android-ndk-rs/pull/218)) -- Environment variables from `.cargo/config.toml`'s `[env]` section are now propagated to the process environment. ([#249](https://github.com/rust-windowing/android-ndk-rs/pull/249)) - -# 0.8.2 (2021-11-22) - -- Fixed the library name in case of multiple build artifacts in the Android manifest. -- Work around missing `libgcc` on NDK r23 beta 3 and above, by providing linker script that "redirects" to `libunwind`. - See https://github.com/rust-windowing/android-ndk-rs/issues/149 and https://github.com/rust-lang/rust/pull/85806 for more details. - -# 0.8.1 (2021-08-06) - -- Updated to use [ndk-build 0.4.2](../ndk-build/CHANGELOG.md#042-2021-08-06) - -# 0.8.0 (2021-07-06) - -- Added `runtime_libs` path to android metadata for packaging extra dynamic libraries into the apk. - -# 0.7.0 (2021-05-10) - -- Added `cargo apk check`. Useful for compile-testing crates that contain C/C++ dependencies or - target-specific conditional compilation, but do not provide a cdylib target. -- Added `apk_name` field to android metadata for APK file naming (defaults to Rust library name if unspecified). - The application label is now no longer used for this purpose, and can contain a string resource ID from now on. - -# 0.6.0 (2021-04-20) - -- **Breaking:** uses `ndk-build`'s new (de)serialized `Manifest` struct to properly serialize a toml's `[package.metadata.android]` to an `AndroidManifest.xml`. The `[package.metadata.android]` now closely resembles the structure of [an android manifest file](https://developer.android.com/guide/topics/manifest/manifest-element). See [README](README.md) for an example of the new `[package.metadata.android]` structure and all manifest attributes that are currently supported. - -# 0.5.6 (2020-11-25) - -- Use `dunce::simplified` when extracting the manifest's assets and resource folder -- Updated to use [ndk-build 0.1.4](../ndk-build/CHANGELOG.md#014-2020-11-25) - -# 0.5.5 (2020-11-21) - -- Updated to use [ndk-build 0.1.3](../ndk-build/CHANGELOG.md#013-2020-11-21) - -# 0.5.4 (2020-11-01) - -- Added support for activity metadata entries. -- Fix glob member resolution in workspaces. - -# 0.5.3 (2020-10-15) - -- Fix `res` folder resolve. - -# 0.5.2 (2020-09-15) - -- Updated to use [ndk-build 0.1.2](../ndk-build/CHANGELOG.md#012-2020-09-15) - -# 0.5.1 (2020-07-15) - -- Updated to use [ndk-build 0.1.1](../ndk-build/CHANGELOG.md#011-2020-07-15) - -# 0.5.0 (2020-04-22) - -- Updated to use [ndk-build 0.1.0](../ndk-build/CHANGELOG.md#010-2020-04-22) -- First release in almost 3 years! 🎉 -- **Breaking:** A ton of things changed! diff --git a/cargo-apk/Cargo.toml b/cargo-apk/Cargo.toml deleted file mode 100644 index 1fadd458..00000000 --- a/cargo-apk/Cargo.toml +++ /dev/null @@ -1,22 +0,0 @@ -[package] -name = "cargo-apk" -version = "0.9.3" -authors = ["The Rust Windowing contributors"] -edition = "2018" -description = "Helps cargo build APKs" -license = "MIT OR Apache-2.0" -keywords = ["android", "ndk", "apk"] -documentation = "https://docs.rs/cargo-apk" -homepage = "https://github.com/rust-windowing/android-ndk-rs" -repository = "https://github.com/rust-windowing/android-ndk-rs" - -[dependencies] -anyhow = "1.0.57" -cargo-subcommand = "0.7" -dunce = "1" -env_logger = "0.9" -log = "0.4" -ndk-build = { path = "../ndk-build", version = "0.7.0" } -serde = "1" -thiserror = "1.0.31" -toml = "0.5" diff --git a/cargo-apk/README.md b/cargo-apk/README.md deleted file mode 100644 index 8a18492c..00000000 --- a/cargo-apk/README.md +++ /dev/null @@ -1,197 +0,0 @@ -# cargo apk - -Tool for creating Android packages. - -## Installation - -From crates.io: -```console -$ cargo install cargo-apk -``` - -From source: -```console -$ cargo install --path . -``` - -## Commands - -- `build`: Compiles the current package -- `run`: Run a binary or example of the local package -- `gdb`: Start a gdb session attached to an adb device with symbols loaded - -## Manifest - -`cargo` supports the `metadata` table for configurations for external tools like `cargo apk`. -Following configuration options are supported by `cargo apk` under `[package.metadata.android]`: - -```toml -[package.metadata.android] -# Specifies the package property of the manifest. -package = "com.foo.bar" - -# Specifies the array of targets to build for. -build_targets = [ "armv7-linux-androideabi", "aarch64-linux-android", "i686-linux-android", "x86_64-linux-android" ] - -# Path to your application's resources folder. -# If not specified, resources will not be included in the APK. -resources = "path/to/resources_folder" - -# Path to the folder containing your application's assets. -# If not specified, assets will not be included in the APK. -assets = "path/to/assets_folder" - -# Name for final APK file. -# Defaults to package name. -apk_name = "myapp" - -# Folder containing extra shared libraries intended to be dynamically loaded at runtime. -# Files matching `libs_folder/${android_abi}/*.so` are added to the apk -# according to the specified build_targets. -runtime_libs = "path/to/libs_folder" - -# Defaults to `$HOME/.android/debug.keystore` for the `dev` profile. Will ONLY generate a new -# debug.keystore if this file does NOT exist. -# A keystore path is always required on the `release` profile. -[package.metadata.android.signing.] -path = "$HOME/.android/debug.keystore" -keystore_password = "android" - -# See https://developer.android.com/guide/topics/manifest/uses-sdk-element -# -# Defaults to a `min_sdk_version` of 23 and `target_sdk_version` of 30 (or lower if the detected NDK doesn't support this). -[package.metadata.android.sdk] -min_sdk_version = 23 -target_sdk_version = 30 -max_sdk_version = 29 - -# See https://developer.android.com/guide/topics/manifest/uses-feature-element -# -# Note: there can be multiple .uses_feature entries. -[[package.metadata.android.uses_feature]] -name = "android.hardware.vulkan.level" -required = true -version = 1 - -# See https://developer.android.com/guide/topics/manifest/uses-permission-element -# -# Note: there can be multiple .uses_permission entries. -[[package.metadata.android.uses_permission]] -name = "android.permission.WRITE_EXTERNAL_STORAGE" -max_sdk_version = 18 - -# See https://developer.android.com/guide/topics/manifest/queries-element#provider -[[package.metadata.android.queries.provider]] -authorities = "org.khronos.openxr.runtime_broker;org.khronos.openxr.system_runtime_broker" -# Note: The `name` attribute is normally not required for a queries provider, but is non-optional -# as a workaround for aapt throwing errors about missing `android:name` attribute. -# This will be made optional if/when cargo-apk migrates to aapt2. -name = "org.khronos.openxr" - -# See https://developer.android.com/guide/topics/manifest/queries-element#intent -[[package.metadata.android.queries.intent]] -actions = ["android.intent.action.SEND"] - -# See https://developer.android.com/guide/topics/manifest/queries-element#intent -# Note: there can be several .data entries. -[[package.metadata.android.queries.intent.data]] -mime_type = "image/jpeg" - -# See https://developer.android.com/guide/topics/manifest/queries-element#package -[[package.metadata.android.queries.package]] -name = "org.freedesktop.monado.openxr_runtime.in_process" - -# See https://developer.android.com/guide/topics/manifest/application-element -[package.metadata.android.application] - -# See https://developer.android.com/guide/topics/manifest/application-element#debug -# -# Defaults to false. -debuggable = false - -# See https://developer.android.com/guide/topics/manifest/application-element#theme -# -# Example shows setting the theme of an application to fullscreen. -theme = "@android:style/Theme.DeviceDefault.NoActionBar.Fullscreen" - -# Virtual path your application's icon for any mipmap level. -# If not specified, an icon will not be included in the APK. -icon = "@mipmap/ic_launcher" - -# See https://developer.android.com/guide/topics/manifest/application-element#label -# -# Defaults to the compiled artifact's name. -label = "Application Name" - -# See https://developer.android.com/guide/topics/manifest/meta-data-element -# -# Note: there can be several .meta_data entries. -# Note: the `resource` attribute is currently not supported. -[[package.metadata.android.application.meta_data]] -name = "com.samsung.android.vr.application.mode" -value = "vr_only" - -# See https://developer.android.com/guide/topics/manifest/activity-element -[package.metadata.android.application.activity] - -# See https://developer.android.com/guide/topics/manifest/activity-element#config -# -# Defaults to "orientation|keyboardHidden|screenSize". -config_changes = "orientation" - -# See https://developer.android.com/guide/topics/manifest/activity-element#label -# -# Defaults to the application's label. -label = "Activity Name" - -# See https://developer.android.com/guide/topics/manifest/activity-element#lmode -# -# Defaults to "standard". -launch_mode = "singleTop" - -# See https://developer.android.com/guide/topics/manifest/activity-element#screen -# -# Defaults to "unspecified". -orientation = "landscape" - -# See https://developer.android.com/guide/topics/manifest/activity-element#exported -# -# Unset by default, or true when targeting Android >= 31 (S and up). -exported = true - -# See https://developer.android.com/guide/topics/manifest/activity-element#resizeableActivity -# -# Defaults to true on Android >= 24, no effect on earlier API levels -resizeable_activity = false - -# See https://developer.android.com/guide/topics/manifest/meta-data-element -# -# Note: there can be several .meta_data entries. -# Note: the `resource` attribute is currently not supported. -[[package.metadata.android.application.activity.meta_data]] -name = "com.oculus.vr.focusaware" -value = "true" - -# See https://developer.android.com/guide/topics/manifest/intent-filter-element -# -# Note: there can be several .intent_filter entries. -[[package.metadata.android.application.activity.intent_filter]] -# See https://developer.android.com/guide/topics/manifest/action-element -actions = ["android.intent.action.VIEW", "android.intent.action.WEB_SEARCH"] -# See https://developer.android.com/guide/topics/manifest/category-element -categories = ["android.intent.category.DEFAULT", "android.intent.category.BROWSABLE"] - -# See https://developer.android.com/guide/topics/manifest/data-element -# -# Note: there can be several .data entries. -# Note: not specifying an attribute excludes it from the final data specification. -[[package.metadata.android.application.activity.intent_filter.data]] -scheme = "https" -host = "github.com" -port = "8080" -path = "/rust-windowing/android-ndk-rs/tree/master/cargo-apk" -path_prefix = "/rust-windowing/" -mime_type = "image/jpeg" -``` - -If a manifest attribute is not supported by `cargo apk` feel free to create a PR that adds the missing attribute. diff --git a/cargo-apk/src/apk.rs b/cargo-apk/src/apk.rs deleted file mode 100644 index fd06b0a1..00000000 --- a/cargo-apk/src/apk.rs +++ /dev/null @@ -1,302 +0,0 @@ -use crate::error::Error; -use crate::manifest::Manifest; -use cargo_subcommand::{Artifact, CrateType, Profile, Subcommand}; -use ndk_build::apk::{Apk, ApkConfig}; -use ndk_build::cargo::{cargo_ndk, VersionCode}; -use ndk_build::dylibs::get_libs_search_paths; -use ndk_build::error::NdkError; -use ndk_build::manifest::{IntentFilter, MetaData}; -use ndk_build::ndk::{Key, Ndk}; -use ndk_build::target::Target; -use std::path::PathBuf; -use std::process::Command; - -pub struct ApkBuilder<'a> { - cmd: &'a Subcommand, - ndk: Ndk, - manifest: Manifest, - build_dir: PathBuf, - build_targets: Vec, - device_serial: Option, -} - -impl<'a> ApkBuilder<'a> { - pub fn from_subcommand( - cmd: &'a Subcommand, - device_serial: Option, - ) -> Result { - let ndk = Ndk::from_env()?; - let mut manifest = Manifest::parse_from_toml(cmd.manifest())?; - let build_targets = if let Some(target) = cmd.target() { - vec![Target::from_rust_triple(target)?] - } else if !manifest.build_targets.is_empty() { - manifest.build_targets.clone() - } else { - vec![ndk - .detect_abi(device_serial.as_deref()) - .unwrap_or(Target::Arm64V8a)] - }; - let build_dir = dunce::simplified(cmd.target_dir()) - .join(cmd.profile()) - .join("apk"); - - // Set default Android manifest values - if manifest - .android_manifest - .version_name - .replace(manifest.version.clone()) - .is_some() - { - panic!("version_name should not be set in TOML"); - } - - if manifest - .android_manifest - .version_code - .replace(VersionCode::from_semver(&manifest.version)?.to_code(1)) - .is_some() - { - panic!("version_code should not be set in TOML"); - } - - let target_sdk_version = *manifest - .android_manifest - .sdk - .target_sdk_version - .get_or_insert_with(|| ndk.default_target_platform()); - - manifest - .android_manifest - .application - .debuggable - .get_or_insert_with(|| *cmd.profile() == Profile::Dev); - - let activity = &mut manifest.android_manifest.application.activity; - - // Add a default `MAIN` action to launch the activity, if the user didn't supply it by hand. - if activity - .intent_filter - .iter() - .all(|i| i.actions.iter().all(|f| f != "android.intent.action.MAIN")) - { - activity.intent_filter.push(IntentFilter { - actions: vec!["android.intent.action.MAIN".to_string()], - categories: vec!["android.intent.category.LAUNCHER".to_string()], - data: vec![], - }); - } - - // Export the sole Rust activity on Android S and up, if the user didn't explicitly do so. - // Without this, apps won't start on S+. - // https://developer.android.com/about/versions/12/behavior-changes-12#exported - if target_sdk_version >= 31 { - activity.exported.get_or_insert(true); - } - - Ok(Self { - cmd, - ndk, - manifest, - build_dir, - build_targets, - device_serial, - }) - } - - pub fn check(&self) -> Result<(), Error> { - for target in &self.build_targets { - let mut cargo = cargo_ndk( - &self.ndk, - *target, - self.min_sdk_version(), - self.cmd.target_dir(), - )?; - cargo.arg("check"); - if self.cmd.target().is_none() { - let triple = target.rust_triple(); - cargo.arg("--target").arg(triple); - } - cargo.args(self.cmd.args()); - if !cargo.status()?.success() { - return Err(NdkError::CmdFailed(cargo).into()); - } - } - Ok(()) - } - - pub fn build(&self, artifact: &Artifact) -> Result { - // Set artifact specific manifest default values. - let mut manifest = self.manifest.android_manifest.clone(); - - if manifest.package.is_empty() { - manifest.package = match artifact { - Artifact::Root(name) => format!("rust.{}", name.replace('-', "_")), - Artifact::Example(name) => format!("rust.example.{}", name.replace('-', "_")), - }; - } - - if manifest.application.label.is_empty() { - manifest.application.label = artifact.name().to_string(); - } - - manifest.application.activity.meta_data.push(MetaData { - name: "android.app.lib_name".to_string(), - value: artifact.name().replace('-', "_"), - }); - - let crate_path = self.cmd.manifest().parent().expect("invalid manifest path"); - - let is_debug_profile = *self.cmd.profile() == Profile::Dev; - - let assets = self - .manifest - .assets - .as_ref() - .map(|assets| dunce::simplified(&crate_path.join(&assets)).to_owned()); - let resources = self - .manifest - .resources - .as_ref() - .map(|res| dunce::simplified(&crate_path.join(&res)).to_owned()); - let runtime_libs = self - .manifest - .runtime_libs - .as_ref() - .map(|libs| dunce::simplified(&crate_path.join(&libs)).to_owned()); - let apk_name = self - .manifest - .apk_name - .clone() - .unwrap_or_else(|| artifact.name().to_string()); - - let config = ApkConfig { - ndk: self.ndk.clone(), - build_dir: self.build_dir.join(artifact), - apk_name, - assets, - resources, - manifest, - disable_aapt_compression: is_debug_profile, - }; - let mut apk = config.create_apk()?; - - for target in &self.build_targets { - let triple = target.rust_triple(); - let build_dir = dunce::simplified(self.cmd.target_dir()) - .join(triple) - .join(self.cmd.profile()); - let artifact = build_dir - .join(artifact) - .join(artifact.file_name(CrateType::Cdylib, triple)); - - let mut cargo = cargo_ndk( - &self.ndk, - *target, - self.min_sdk_version(), - self.cmd.target_dir(), - )?; - cargo.arg("build"); - if self.cmd.target().is_none() { - cargo.arg("--target").arg(triple); - } - cargo.args(self.cmd.args()); - - if !cargo.status()?.success() { - return Err(NdkError::CmdFailed(cargo).into()); - } - - let mut libs_search_paths = - get_libs_search_paths(self.cmd.target_dir(), triple, self.cmd.profile().as_ref())?; - libs_search_paths.push(build_dir.join("deps")); - - let libs_search_paths = libs_search_paths - .iter() - .map(|path| path.as_path()) - .collect::>(); - - apk.add_lib_recursively(&artifact, *target, libs_search_paths.as_slice())?; - - if let Some(runtime_libs) = &runtime_libs { - apk.add_runtime_libs(runtime_libs, *target, libs_search_paths.as_slice())?; - } - } - - let profile_name = match self.cmd.profile() { - Profile::Dev => "dev", - Profile::Release => "release", - Profile::Custom(c) => c.as_str(), - }; - - let signing_key = self.manifest.signing.get(profile_name); - - let signing_key = match (signing_key, is_debug_profile) { - (Some(signing), _) => Key { - path: crate_path.join(&signing.path), - password: signing.keystore_password.clone(), - }, - (None, true) => self.ndk.debug_key()?, - (None, false) => return Err(Error::MissingReleaseKey(profile_name.to_owned())), - }; - - Ok(apk.add_pending_libs_and_align()?.sign(signing_key)?) - } - - pub fn run(&self, artifact: &Artifact) -> Result<(), Error> { - let apk = self.build(artifact)?; - apk.install(self.device_serial.as_deref())?; - apk.start(self.device_serial.as_deref())?; - Ok(()) - } - - pub fn gdb(&self, artifact: &Artifact) -> Result<(), Error> { - self.run(artifact)?; - let abi = self.ndk.detect_abi(self.device_serial.as_deref())?; - let target_dir = self.build_dir.join(artifact); - let jni_dir = target_dir.join("jni"); - std::fs::create_dir_all(&jni_dir)?; - std::fs::write( - jni_dir.join("Android.mk"), - format!("APP_ABI=\"{}\"\nTARGET_OUT=\"\"\n", abi.android_abi()), - )?; - Command::new(self.ndk.ndk().join("ndk-gdb")) - .current_dir(target_dir) - .status()?; - Ok(()) - } - - pub fn default(&self) -> Result<(), Error> { - for target in &self.build_targets { - let mut cargo = cargo_ndk( - &self.ndk, - *target, - self.min_sdk_version(), - self.cmd.target_dir(), - )?; - cargo.args(self.cmd.args()); - - if self.cmd.target().is_none() { - let triple = target.rust_triple(); - cargo.arg("--target").arg(triple); - } - - if !cargo.status()?.success() { - return Err(NdkError::CmdFailed(cargo).into()); - } - } - Ok(()) - } - - /// Returns `minSdkVersion` for use in compiler target selection: - /// - /// - /// Has a lower bound of `23` to retain backwards compatibility with - /// the previous default. - fn min_sdk_version(&self) -> u32 { - self.manifest - .android_manifest - .sdk - .min_sdk_version - .unwrap_or(23) - .max(23) - } -} diff --git a/cargo-apk/src/error.rs b/cargo-apk/src/error.rs deleted file mode 100644 index 8dc864f9..00000000 --- a/cargo-apk/src/error.rs +++ /dev/null @@ -1,25 +0,0 @@ -use cargo_subcommand::Error as SubcommandError; -use ndk_build::error::NdkError; -use std::io::Error as IoError; -use thiserror::Error; -use toml::de::Error as TomlError; - -#[derive(Debug, Error)] -pub enum Error { - #[error(transparent)] - Subcommand(#[from] SubcommandError), - #[error("Failed to parse config.")] - Config(#[from] TomlError), - #[error(transparent)] - Ndk(#[from] NdkError), - #[error(transparent)] - Io(#[from] IoError), - #[error("Configure a release keystore via `[package.metadata.android.signing.{0}]`")] - MissingReleaseKey(String), -} - -impl Error { - pub fn invalid_args() -> Self { - Self::Subcommand(SubcommandError::InvalidArgs) - } -} diff --git a/cargo-apk/src/lib.rs b/cargo-apk/src/lib.rs deleted file mode 100644 index 4288b6e7..00000000 --- a/cargo-apk/src/lib.rs +++ /dev/null @@ -1,6 +0,0 @@ -mod apk; -mod error; -mod manifest; - -pub use apk::ApkBuilder; -pub use error::Error; diff --git a/cargo-apk/src/main.rs b/cargo-apk/src/main.rs deleted file mode 100644 index c72207b1..00000000 --- a/cargo-apk/src/main.rs +++ /dev/null @@ -1,104 +0,0 @@ -use cargo_apk::{ApkBuilder, Error}; -use cargo_subcommand::Subcommand; -use std::process::Command; - -fn main() -> anyhow::Result<()> { - env_logger::init(); - let args = std::env::args(); - let mut device_serial = None; - let cmd = Subcommand::new(args, "apk", |name, value| { - if name == "--device" { - if let Some(value) = value { - println!("Running on {}", value); - device_serial = Some(value.to_owned()); - Ok(true) - } else { - Err(cargo_subcommand::Error::InvalidArgs) - } - } else { - Ok(false) - } - }) - .map_err(Error::Subcommand)?; - let builder = ApkBuilder::from_subcommand(&cmd, device_serial)?; - - match cmd.cmd() { - "check" | "c" => builder.check()?, - "build" | "b" => { - for artifact in cmd.artifacts() { - builder.build(artifact)?; - } - } - "run" | "r" => { - anyhow::ensure!(cmd.artifacts().len() == 1, Error::invalid_args()); - builder.run(&cmd.artifacts()[0])?; - } - "--" => { - builder.default()?; - } - "gdb" => { - anyhow::ensure!(cmd.artifacts().len() == 1, Error::invalid_args()); - builder.gdb(&cmd.artifacts()[0])?; - } - "help" => { - if let Some(arg) = cmd.args().get(0) { - match &**arg { - "build" | "b" | "check" | "c" | "run" | "r" | "test" | "t" | "doc" => { - run_cargo(&cmd)? - } - "gdb" => print_gdb_help(), - _ => print_help(), - } - } else { - print_help(); - } - } - "version" => { - println!("{} {}", env!("CARGO_PKG_NAME"), env!("CARGO_PKG_VERSION")); - } - _ => print_help(), - } - - Ok(()) -} - -fn run_cargo(cmd: &Subcommand) -> Result<(), Error> { - Command::new("cargo") - .arg(cmd.cmd()) - .args(cmd.args()) - .status()?; - Ok(()) -} - -fn print_help() { - println!( - r#"cargo-apk -Helps cargo build apk's for android - -USAGE: - cargo apk [SUBCOMMAND] - -SUBCOMMAND: - check, c Checks that the current package builds without creating an apk - build, b Compiles the current package and creates an apk - run, r Run a binary or example of the local package - gdb Start a gdb session attached to an adb device with symbols loaded - version Print the version of cargo-apk - -OPTIONS: - --device Use device with the given serial. See `adb devices` for a list of - connected Android devices. -"# - ); -} - -fn print_gdb_help() { - println!( - r#"cargo-apk gdb -Start a gdb session attached to an adb device with symbols loaded - -USAGE: - cargo apk gdb -"# - ); -} diff --git a/cargo-apk/src/manifest.rs b/cargo-apk/src/manifest.rs deleted file mode 100644 index 02a42af7..00000000 --- a/cargo-apk/src/manifest.rs +++ /dev/null @@ -1,80 +0,0 @@ -use crate::error::Error; -use ndk_build::manifest::AndroidManifest; -use ndk_build::target::Target; -use serde::Deserialize; -use std::{ - collections::HashMap, - path::{Path, PathBuf}, -}; - -pub(crate) struct Manifest { - pub(crate) version: String, - pub(crate) apk_name: Option, - pub(crate) android_manifest: AndroidManifest, - pub(crate) build_targets: Vec, - pub(crate) assets: Option, - pub(crate) resources: Option, - pub(crate) runtime_libs: Option, - /// Maps profiles to keystores - pub(crate) signing: HashMap, -} - -impl Manifest { - pub(crate) fn parse_from_toml(path: &Path) -> Result { - let contents = std::fs::read_to_string(path)?; - let toml: Root = toml::from_str(&contents)?; - let metadata = toml - .package - .metadata - .unwrap_or_default() - .android - .unwrap_or_default(); - Ok(Self { - version: toml.package.version, - apk_name: metadata.apk_name, - android_manifest: metadata.android_manifest, - build_targets: metadata.build_targets, - assets: metadata.assets, - resources: metadata.resources, - runtime_libs: metadata.runtime_libs, - signing: metadata.signing, - }) - } -} - -#[derive(Debug, Clone, Deserialize)] -struct Root { - package: Package, -} - -#[derive(Debug, Clone, Deserialize)] -struct Package { - version: String, - metadata: Option, -} - -#[derive(Clone, Debug, Default, Deserialize)] -struct PackageMetadata { - android: Option, -} - -#[derive(Clone, Debug, Default, Deserialize)] -struct AndroidMetadata { - apk_name: Option, - #[serde(flatten)] - android_manifest: AndroidManifest, - #[serde(default)] - build_targets: Vec, - assets: Option, - resources: Option, - runtime_libs: Option, - /// Maps profiles to keystores - #[serde(default)] - signing: HashMap, -} - -#[derive(Clone, Debug, Default, Deserialize)] -pub(crate) struct Signing { - pub(crate) path: PathBuf, - pub(crate) keystore_password: String, -} diff --git a/ndk-build/CHANGELOG.md b/ndk-build/CHANGELOG.md deleted file mode 100644 index 1d5bc033..00000000 --- a/ndk-build/CHANGELOG.md +++ /dev/null @@ -1,77 +0,0 @@ -# Unreleased - -- **Breaking:** Postpone APK library packaging until before zip alignment, to deduplicate possibly overlapping entries. ([#333](https://github.com/rust-windowing/android-ndk-rs/pull/333)) -- Add `adb` device serial parameter to `detect_abi()` and `Apk::{install,start}()`. ([#329](https://github.com/rust-windowing/android-ndk-rs/pull/329)) -- Fix missing `.exe` extension for `adb` on Windows inside `detect_abi()`. ([#339](https://github.com/rust-windowing/android-ndk-rs/pull/339)) - -# 0.7.0 (2022-07-05) - -- Fix NDK r23 `-lgcc` workaround for target directories containing spaces. ([#298](https://github.com/rust-windowing/android-ndk-rs/pull/298)) -- Invoke `clang` directly instead of through the NDK's wrapper scripts. ([#306](https://github.com/rust-windowing/android-ndk-rs/pull/306)) -- **Breaking:** Rename `Activity::intent_filters` back to `Activity::intent_filter`. ([#305](https://github.com/rust-windowing/android-ndk-rs/pull/305)) - -# 0.6.0 (2022-06-11) - -- **Breaking:** Provide NDK r23 `-lgcc` workaround in `cargo_ndk()` function, now requiring `target_dir` as argument. ([#286](https://github.com/rust-windowing/android-ndk-rs/pull/286)) -- **Breaking:** Add `disable_aapt_compression` field to `ApkConfig` to disable `aapt` compression. ([#283](https://github.com/rust-windowing/android-ndk-rs/pull/283)) - -# 0.5.0 (2022-05-07) - -- **Breaking:** Default `target_sdk_version` to `30` or lower (instead of the highest supported SDK version by the detected NDK toolchain) - for more consistent interaction with Android backwards compatibility handling and its increasingly strict usage rules: - https://developer.android.com/distribute/best-practices/develop/target-sdk -- **Breaking:** Remove default insertion of `MAIN` intent filter through a custom serialization function, this is better filled in by - the default setup in `cargo-apk`. ([#241](https://github.com/rust-windowing/android-ndk-rs/pull/241)) -- Add `android:exported` attribute to the manifest's `Activity` element. ([#242](https://github.com/rust-windowing/android-ndk-rs/pull/242)) -- Add `android:sharedUserId` attribute to the manifest's top-level `manifest` element. ([#252](https://github.com/rust-windowing/android-ndk-rs/pull/252)) -- Add `queries` element to the manifest's top-level `manifest` element. ([#259](https://github.com/rust-windowing/android-ndk-rs/pull/259)) - -# 0.4.3 (2021-11-22) - -- Provide NDK `build_tag` version from `source.properties` in the NDK root. - -# 0.4.2 (2021-08-06) - -- Pass UNIX path separators to `aapt` on non-UNIX systems, ensuring the resulting separator is compatible with the target device instead of the host platform. - -# 0.4.1 (2021-08-02) - -- Only the highest platform supported by the NDK is now selected as default platform. - -# 0.4.0 (2021-07-06) - -- Added `add_runtime_libs` function for including extra dynamic libraries in the APK. - -# 0.3.0 (2021-05-10) - -- New `ApkConfig` field `apk_name` is now used for APK file naming, instead of the application label. -- Renamed `cargo_apk` utility to `cargo_ndk`. - -# 0.2.0 (2021-04-20) - -- **Breaking:** refactored `Manifest` into a proper (de)serialization struct. `Manifest` now closely matches [an android manifest file](https://developer.android.com/guide/topics/manifest/manifest-element). -- **Breaking:** removed `Config` in favor of using the new `Manifest` struct directly. Instead of using `Config::from_config` to create a `Manifest`, now you instantiate `Manifest` directly using, almost all, the same values. - -# 0.1.4 (2020-11-25) - -- On Windows, fixed UNC path handling for resource folder. - -# 0.1.3 (2020-11-21) - -- `android:launchMode` is configurable. - -# 0.1.2 (2020-09-15) - -- `android:label` is configurable. -- Library search paths are much more intelligent. -- `android:screenOrientation` is configurable. - -# 0.1.1 (2020-07-15) - -- Added support for custom intent filters. -- On Windows, fixed UNC path handling. -- Fixed toolchain path handling when the NDK installation has no host arch suffix on its prebuilt LLVM directories. - -# 0.1.0 (2020-04-22) - -- Initial release! 🎉 diff --git a/ndk-build/Cargo.toml b/ndk-build/Cargo.toml deleted file mode 100644 index 4b9ff4f6..00000000 --- a/ndk-build/Cargo.toml +++ /dev/null @@ -1,19 +0,0 @@ -[package] -name = "ndk-build" -version = "0.7.0" -authors = ["The Rust Windowing contributors"] -edition = "2018" -description = "Utilities for building Android binaries" -license = "MIT OR Apache-2.0" -keywords = ["android", "ndk", "apk"] -documentation = "https://docs.rs/ndk-build" -homepage = "https://github.com/rust-windowing/android-ndk-rs" -repository = "https://github.com/rust-windowing/android-ndk-rs" - -[dependencies] -dirs = "4" -dunce = "1" -quick-xml = { version = "0.23", features = ["serialize"] } -serde = { version = "1", features = ["derive"] } -thiserror = "1" -which = "4" diff --git a/ndk-build/src/apk.rs b/ndk-build/src/apk.rs deleted file mode 100644 index 082e0e41..00000000 --- a/ndk-build/src/apk.rs +++ /dev/null @@ -1,236 +0,0 @@ -use crate::error::NdkError; -use crate::manifest::AndroidManifest; -use crate::ndk::{Key, Ndk}; -use crate::target::Target; -use std::collections::HashSet; -use std::ffi::OsStr; -use std::fs; -use std::path::{Path, PathBuf}; -use std::process::Command; - -pub struct ApkConfig { - pub ndk: Ndk, - pub build_dir: PathBuf, - pub apk_name: String, - pub assets: Option, - pub resources: Option, - pub manifest: AndroidManifest, - pub disable_aapt_compression: bool, -} - -impl ApkConfig { - fn build_tool(&self, tool: &'static str) -> Result { - let mut cmd = self.ndk.build_tool(tool)?; - cmd.current_dir(&self.build_dir); - Ok(cmd) - } - - fn unaligned_apk(&self) -> PathBuf { - self.build_dir - .join(format!("{}-unaligned.apk", self.apk_name)) - } - - fn apk(&self) -> PathBuf { - self.build_dir.join(format!("{}.apk", self.apk_name)) - } - - pub fn create_apk(&self) -> Result { - std::fs::create_dir_all(&self.build_dir)?; - self.manifest.write_to(&self.build_dir)?; - - let target_sdk_version = self - .manifest - .sdk - .target_sdk_version - .unwrap_or_else(|| self.ndk.default_target_platform()); - let mut aapt = self.build_tool(bin!("aapt"))?; - aapt.arg("package") - .arg("-f") - .arg("-F") - .arg(self.unaligned_apk()) - .arg("-M") - .arg("AndroidManifest.xml") - .arg("-I") - .arg(self.ndk.android_jar(target_sdk_version)?); - - if self.disable_aapt_compression { - aapt.arg("-0").arg(""); - } - - if let Some(res) = &self.resources { - aapt.arg("-S").arg(res); - } - - if let Some(assets) = &self.assets { - aapt.arg("-A").arg(assets); - } - - if !aapt.status()?.success() { - return Err(NdkError::CmdFailed(aapt)); - } - - Ok(UnalignedApk { - config: self, - pending_libs: HashSet::default(), - }) - } -} - -pub struct UnalignedApk<'a> { - config: &'a ApkConfig, - pending_libs: HashSet, -} - -impl<'a> UnalignedApk<'a> { - pub fn config(&self) -> &ApkConfig { - self.config - } - - pub fn add_lib(&mut self, path: &Path, target: Target) -> Result<(), NdkError> { - if !path.exists() { - return Err(NdkError::PathNotFound(path.into())); - } - let abi = target.android_abi(); - let lib_path = Path::new("lib").join(abi).join(path.file_name().unwrap()); - let out = self.config.build_dir.join(&lib_path); - std::fs::create_dir_all(out.parent().unwrap())?; - std::fs::copy(path, out)?; - - // Pass UNIX path separators to `aapt` on non-UNIX systems, ensuring the resulting separator - // is compatible with the target device instead of the host platform. - // Otherwise, it results in a runtime error when loading the NativeActivity `.so` library. - let lib_path_unix = lib_path.to_str().unwrap().replace('\\', "/"); - - self.pending_libs.insert(lib_path_unix); - - Ok(()) - } - - pub fn add_runtime_libs( - &mut self, - path: &Path, - target: Target, - search_paths: &[&Path], - ) -> Result<(), NdkError> { - let abi_dir = path.join(target.android_abi()); - for entry in fs::read_dir(&abi_dir).map_err(|e| NdkError::IoPathError(abi_dir, e))? { - let entry = entry?; - let path = entry.path(); - if path.extension() == Some(OsStr::new("so")) { - self.add_lib_recursively(&path, target, search_paths)?; - } - } - Ok(()) - } - - pub fn add_pending_libs_and_align(self) -> Result, NdkError> { - let mut aapt = self.config.build_tool(bin!("aapt"))?; - aapt.arg("add"); - - if self.config.disable_aapt_compression { - aapt.arg("-0").arg(""); - } - - aapt.arg(self.config.unaligned_apk()); - - for lib_path_unix in self.pending_libs { - aapt.arg(lib_path_unix); - } - - if !aapt.status()?.success() { - return Err(NdkError::CmdFailed(aapt)); - } - - let mut zipalign = self.config.build_tool(bin!("zipalign"))?; - zipalign - .arg("-f") - .arg("-v") - .arg("4") - .arg(self.config.unaligned_apk()) - .arg(self.config.apk()); - if !zipalign.status()?.success() { - return Err(NdkError::CmdFailed(zipalign)); - } - Ok(UnsignedApk(self.config)) - } -} - -pub struct UnsignedApk<'a>(&'a ApkConfig); - -impl<'a> UnsignedApk<'a> { - pub fn sign(self, key: Key) -> Result { - let mut apksigner = self.0.build_tool(bat!("apksigner"))?; - apksigner - .arg("sign") - .arg("--ks") - .arg(&key.path) - .arg("--ks-pass") - .arg(format!("pass:{}", &key.password)) - .arg(self.0.apk()); - if !apksigner.status()?.success() { - return Err(NdkError::CmdFailed(apksigner)); - } - Ok(Apk::from_config(self.0)) - } -} - -pub struct Apk { - path: PathBuf, - package_name: String, - ndk: Ndk, -} - -impl Apk { - pub fn from_config(config: &ApkConfig) -> Self { - let ndk = config.ndk.clone(); - Self { - path: config.apk(), - package_name: config.manifest.package.clone(), - ndk, - } - } - - pub fn install(&self, device_serial: Option<&str>) -> Result<(), NdkError> { - let mut adb = self.ndk.adb(device_serial)?; - - adb.arg("install").arg("-r").arg(&self.path); - if !adb.status()?.success() { - return Err(NdkError::CmdFailed(adb)); - } - Ok(()) - } - - pub fn start(&self, device_serial: Option<&str>) -> Result { - let mut am_start = self.ndk.adb(device_serial)?; - am_start - .arg("shell") - .arg("am") - .arg("start") - .arg("-W") - .arg("-a") - .arg("android.intent.action.MAIN") - .arg("-n") - .arg(format!("{}/android.app.NativeActivity", &self.package_name)); - if !am_start.status()?.success() { - return Err(NdkError::CmdFailed(am_start)); - } - - let pid_vec = self - .ndk - .adb(device_serial)? - .arg("shell") - .arg("pidof") - .arg(&self.package_name) - .output()? - .stdout; - - let pid = std::str::from_utf8(&pid_vec).unwrap().trim(); - let pid: u32 = pid - .parse() - .map_err(|e| NdkError::NotAPid(e, pid.to_owned()))?; - - println!("Launched with PID {}", pid); - - Ok(pid) - } -} diff --git a/ndk-build/src/cargo.rs b/ndk-build/src/cargo.rs deleted file mode 100644 index dd7e5f66..00000000 --- a/ndk-build/src/cargo.rs +++ /dev/null @@ -1,135 +0,0 @@ -use crate::error::NdkError; -use crate::ndk::Ndk; -use crate::target::Target; -use std::path::Path; -use std::process::Command; - -pub fn cargo_ndk( - ndk: &Ndk, - target: Target, - sdk_version: u32, - target_dir: impl AsRef, -) -> Result { - let triple = target.rust_triple(); - let clang_target = format!("--target={}{}", target.ndk_llvm_triple(), sdk_version); - let mut cargo = Command::new("cargo"); - - // Read initial RUSTFLAGS - let mut rustflags = match std::env::var("CARGO_ENCODED_RUSTFLAGS") { - Ok(val) => val, - Err(std::env::VarError::NotPresent) => "".to_string(), - Err(std::env::VarError::NotUnicode(_)) => { - panic!("RUSTFLAGS environment variable contains non-unicode characters") - } - }; - - let (clang, clang_pp) = ndk.clang()?; - - // Configure cross-compiler for `cc` crate - // https://github.com/rust-lang/cc-rs#external-configuration-via-environment-variables - cargo.env(format!("CC_{}", triple), &clang); - cargo.env(format!("CFLAGS_{}", triple), &clang_target); - cargo.env(format!("CXX_{}", triple), &clang_pp); - cargo.env(format!("CXXFLAGS_{}", triple), &clang_target); - - // Configure LINKER for `rustc` - // https://doc.rust-lang.org/beta/cargo/reference/environment-variables.html#configuration-environment-variables - cargo.env(cargo_env_target_cfg("LINKER", triple), &clang); - if !rustflags.is_empty() { - rustflags.push('\x1f'); - } - rustflags.push_str("-Clink-arg="); - rustflags.push_str(&clang_target); - - let ar = ndk.toolchain_bin("ar", target)?; - cargo.env(format!("AR_{}", triple), &ar); - cargo.env(cargo_env_target_cfg("AR", triple), &ar); - - // Workaround for https://github.com/rust-windowing/android-ndk-rs/issues/149: - // Rust (1.56 as of writing) still requires libgcc during linking, but this does - // not ship with the NDK anymore since NDK r23 beta 3. - // See https://github.com/rust-lang/rust/pull/85806 for a discussion on why libgcc - // is still required even after replacing it with libunwind in the source. - // XXX: Add an upper-bound on the Rust version whenever this is not necessary anymore. - if ndk.build_tag() > 7272597 { - let cargo_apk_link_dir = target_dir - .as_ref() - .join("cargo-apk-temp-extra-link-libraries"); - std::fs::create_dir_all(&cargo_apk_link_dir) - .map_err(|e| NdkError::IoPathError(cargo_apk_link_dir.clone(), e))?; - let libgcc = cargo_apk_link_dir.join("libgcc.a"); - std::fs::write(&libgcc, "INPUT(-lunwind)").map_err(|e| NdkError::IoPathError(libgcc, e))?; - - // cdylibs in transitive dependencies still get built and also need this - // workaround linker flag, yet arguments passed to `cargo rustc` are only - // forwarded to the final compiler invocation rendering our workaround ineffective. - // The cargo page documenting this discrepancy (https://doc.rust-lang.org/cargo/commands/cargo-rustc.html) - // suggests to resort to RUSTFLAGS. - // Note that `rustflags` will never be empty because of an unconditional `.push_str` above, - // so we can safely start with appending \x1f here. - rustflags.push_str("\x1f-L\x1f"); - rustflags.push_str( - cargo_apk_link_dir - .to_str() - .expect("Target dir must be valid UTF-8"), - ); - } - - cargo.env("CARGO_ENCODED_RUSTFLAGS", rustflags); - - Ok(cargo) -} - -fn cargo_env_target_cfg(tool: &str, target: &str) -> String { - let utarget = target.replace('-', "_"); - let env = format!("CARGO_TARGET_{}_{}", &utarget, tool); - env.to_uppercase() -} - -#[derive(Clone, Copy, Debug, Eq, Hash, PartialEq)] -pub struct VersionCode { - major: u8, - minor: u8, - patch: u8, -} - -impl VersionCode { - pub fn new(major: u8, minor: u8, patch: u8) -> Self { - Self { - major, - minor, - patch, - } - } - - pub fn from_semver(version: &str) -> Result { - let mut iter = version.split(|c1| ['.', '-', '+'].iter().any(|c2| c1 == *c2)); - let mut p = || { - iter.next() - .ok_or(NdkError::InvalidSemver)? - .parse() - .map_err(|_| NdkError::InvalidSemver) - }; - Ok(Self::new(p()?, p()?, p()?)) - } - - pub fn to_code(&self, apk_id: u8) -> u32 { - (apk_id as u32) << 24 - | (self.major as u32) << 16 - | (self.minor as u32) << 8 - | self.patch as u32 - } -} - -#[cfg(test)] -mod tests { - use super::*; - - #[test] - fn from_semver() { - let v = VersionCode::from_semver("0.0.0").unwrap(); - assert_eq!(v, VersionCode::new(0, 0, 0)); - let v = VersionCode::from_semver("254.254.254-alpha.fix+2").unwrap(); - assert_eq!(v, VersionCode::new(254, 254, 254)); - } -} diff --git a/ndk-build/src/dylibs.rs b/ndk-build/src/dylibs.rs deleted file mode 100644 index 14347605..00000000 --- a/ndk-build/src/dylibs.rs +++ /dev/null @@ -1,43 +0,0 @@ -use std::io::Result; -use std::path::{Path, PathBuf}; - -pub fn get_libs_search_paths( - target_dir: &Path, - target_triple: &str, - target_profile: &Path, -) -> Result> { - let mut paths = Vec::new(); - - let deps_dir = target_dir - .join(target_triple) - .join(target_profile) - .join("build"); - - for dep_dir in deps_dir.read_dir()? { - let output_file = dep_dir?.path().join("output"); - if output_file.is_file() { - use std::{ - fs::File, - io::{BufRead, BufReader}, - }; - for line in BufReader::new(File::open(output_file)?).lines() { - let line = line?; - if let Some(link_search) = line.strip_prefix("cargo:rustc-link-search=") { - let mut pie = link_search.split('='); - let (kind, path) = match (pie.next(), pie.next()) { - (Some(kind), Some(path)) => (kind, path), - (Some(path), None) => ("all", path), - _ => unreachable!(), - }; - match kind { - // FIXME: which kinds of search path we interested in - "dependency" | "native" | "all" => paths.push(path.into()), - _ => (), - }; - } - } - } - } - - Ok(paths) -} diff --git a/ndk-build/src/error.rs b/ndk-build/src/error.rs deleted file mode 100644 index 9dee0317..00000000 --- a/ndk-build/src/error.rs +++ /dev/null @@ -1,53 +0,0 @@ -use std::io::Error as IoError; -use std::num::ParseIntError; -use std::path::PathBuf; -use std::process::Command; -use thiserror::Error; - -#[derive(Debug, Error)] -pub enum NdkError { - #[error( - "Android SDK is not found. \ - Please set the path to the Android SDK with the $ANDROID_SDK_ROOT \ - environment variable." - )] - SdkNotFound, - #[error( - "Android NDK is not found. \ - Please set the path to the Android NDK with $ANDROID_NDK_ROOT \ - environment variable." - )] - NdkNotFound, - #[error("GNU toolchain binary `{gnu_bin}` nor LLVM toolchain binary `{llvm_bin}` found in `{toolchain_path:?}`.")] - ToolchainBinaryNotFound { - toolchain_path: PathBuf, - gnu_bin: String, - llvm_bin: String, - }, - #[error("Path `{0:?}` doesn't exist.")] - PathNotFound(PathBuf), - #[error("Command `{0}` not found.")] - CmdNotFound(String), - #[error("Android SDK has no build tools.")] - BuildToolsNotFound, - #[error("Android SDK has no platforms installed.")] - NoPlatformFound, - #[error("Platform `{0}` is not installed.")] - PlatformNotFound(u32), - #[error("Target is not supported.")] - UnsupportedTarget, - #[error("Host `{0}` is not supported.")] - UnsupportedHost(String), - #[error(transparent)] - Io(#[from] IoError), - #[error("IoError on `{0:?}`: {1}")] - IoPathError(PathBuf, #[source] IoError), - #[error("Invalid semver")] - InvalidSemver, - #[error("Command `{}` had a non-zero exit code.", format!("{:?}", .0).replace('"', ""))] - CmdFailed(Command), - #[error(transparent)] - Serialize(#[from] quick_xml::de::DeError), - #[error("String `{1}` is not a PID")] - NotAPid(#[source] ParseIntError, String), -} diff --git a/ndk-build/src/lib.rs b/ndk-build/src/lib.rs deleted file mode 100644 index a4323002..00000000 --- a/ndk-build/src/lib.rs +++ /dev/null @@ -1,28 +0,0 @@ -macro_rules! bin { - ($bin:expr) => { - if cfg!(target_os = "windows") { - concat!($bin, ".exe") - } else { - $bin - } - }; -} - -macro_rules! bat { - ($bat:expr) => { - if cfg!(target_os = "windows") { - concat!($bat, ".bat") - } else { - $bat - } - }; -} - -pub mod apk; -pub mod cargo; -pub mod dylibs; -pub mod error; -pub mod manifest; -pub mod ndk; -pub mod readelf; -pub mod target; diff --git a/ndk-build/src/manifest.rs b/ndk-build/src/manifest.rs deleted file mode 100644 index 924fdbb6..00000000 --- a/ndk-build/src/manifest.rs +++ /dev/null @@ -1,329 +0,0 @@ -use crate::error::NdkError; -use serde::{Deserialize, Serialize, Serializer}; -use std::{fs::File, path::Path}; - -/// Android [manifest element](https://developer.android.com/guide/topics/manifest/manifest-element), containing an [`Application`] element. -#[derive(Clone, Debug, Deserialize, Serialize)] -#[serde(rename = "manifest")] -pub struct AndroidManifest { - #[serde(rename(serialize = "xmlns:android"))] - #[serde(default = "default_namespace")] - ns_android: String, - #[serde(default)] - pub package: String, - #[serde(rename(serialize = "android:sharedUserId"))] - pub shared_user_id: Option, - #[serde(rename(serialize = "android:versionCode"))] - pub version_code: Option, - #[serde(rename(serialize = "android:versionName"))] - pub version_name: Option, - - #[serde(rename(serialize = "uses-sdk"))] - #[serde(default)] - pub sdk: Sdk, - - #[serde(rename(serialize = "uses-feature"))] - #[serde(default)] - pub uses_feature: Vec, - #[serde(rename(serialize = "uses-permission"))] - #[serde(default)] - pub uses_permission: Vec, - - #[serde(default)] - pub queries: Option, - - #[serde(default)] - pub application: Application, -} - -impl Default for AndroidManifest { - fn default() -> Self { - Self { - ns_android: default_namespace(), - package: Default::default(), - shared_user_id: Default::default(), - version_code: Default::default(), - version_name: Default::default(), - sdk: Default::default(), - uses_feature: Default::default(), - uses_permission: Default::default(), - queries: Default::default(), - application: Default::default(), - } - } -} - -impl AndroidManifest { - pub fn write_to(&self, dir: &Path) -> Result<(), NdkError> { - let file = File::create(dir.join("AndroidManifest.xml"))?; - let w = std::io::BufWriter::new(file); - quick_xml::se::to_writer(w, &self)?; - Ok(()) - } -} - -/// Android [application element](https://developer.android.com/guide/topics/manifest/application-element), containing an [`Activity`] element. -#[derive(Clone, Debug, Default, Deserialize, Serialize)] -pub struct Application { - #[serde(rename(serialize = "android:debuggable"))] - pub debuggable: Option, - #[serde(rename(serialize = "android:theme"))] - pub theme: Option, - #[serde(rename(serialize = "android:hasCode"))] - #[serde(default)] - pub has_code: bool, - #[serde(rename(serialize = "android:icon"))] - pub icon: Option, - #[serde(rename(serialize = "android:label"))] - #[serde(default)] - pub label: String, - - #[serde(rename(serialize = "meta-data"))] - #[serde(default)] - pub meta_data: Vec, - #[serde(default)] - pub activity: Activity, -} - -/// Android [activity element](https://developer.android.com/guide/topics/manifest/activity-element). -#[derive(Clone, Debug, Deserialize, Serialize)] -pub struct Activity { - #[serde(rename(serialize = "android:configChanges"))] - #[serde(default = "default_config_changes")] - pub config_changes: Option, - #[serde(rename(serialize = "android:label"))] - pub label: Option, - #[serde(rename(serialize = "android:launchMode"))] - pub launch_mode: Option, - #[serde(rename(serialize = "android:name"))] - #[serde(default = "default_activity_name")] - pub name: String, - #[serde(rename(serialize = "android:screenOrientation"))] - pub orientation: Option, - #[serde(rename(serialize = "android:exported"))] - pub exported: Option, - #[serde(rename(serialize = "android:resizeableActivity"))] - pub resizeable_activity: Option, - - #[serde(rename(serialize = "meta-data"))] - #[serde(default)] - pub meta_data: Vec, - /// If no `MAIN` action exists in any intent filter, a default `MAIN` filter is serialized by `cargo-apk`. - #[serde(rename(serialize = "intent-filter"))] - #[serde(default)] - pub intent_filter: Vec, -} - -impl Default for Activity { - fn default() -> Self { - Self { - config_changes: default_config_changes(), - label: None, - launch_mode: None, - name: default_activity_name(), - orientation: None, - exported: None, - resizeable_activity: None, - meta_data: Default::default(), - intent_filter: Default::default(), - } - } -} - -/// Android [intent filter element](https://developer.android.com/guide/topics/manifest/intent-filter-element). -#[derive(Clone, Debug, Default, Deserialize, Serialize)] -pub struct IntentFilter { - /// Serialize strings wrapped in `` - #[serde(serialize_with = "serialize_actions")] - #[serde(rename(serialize = "action"))] - #[serde(default)] - pub actions: Vec, - /// Serialize as vector of structs for proper xml formatting - #[serde(serialize_with = "serialize_catergories")] - #[serde(rename(serialize = "category"))] - #[serde(default)] - pub categories: Vec, - #[serde(default)] - pub data: Vec, -} - -fn serialize_actions(actions: &[String], serializer: S) -> Result -where - S: Serializer, -{ - use serde::ser::SerializeSeq; - - #[derive(Serialize)] - struct Action { - #[serde(rename = "android:name")] - name: String, - } - let mut seq = serializer.serialize_seq(Some(actions.len()))?; - for action in actions { - seq.serialize_element(&Action { - name: action.clone(), - })?; - } - seq.end() -} - -fn serialize_catergories(categories: &[String], serializer: S) -> Result -where - S: Serializer, -{ - use serde::ser::SerializeSeq; - - #[derive(Serialize)] - struct Category { - #[serde(rename = "android:name")] - pub name: String, - } - - let mut seq = serializer.serialize_seq(Some(categories.len()))?; - for category in categories { - seq.serialize_element(&Category { - name: category.clone(), - })?; - } - seq.end() -} - -/// Android [intent filter data element](https://developer.android.com/guide/topics/manifest/data-element). -#[derive(Clone, Debug, Default, Deserialize, Serialize)] -pub struct IntentFilterData { - #[serde(rename(serialize = "android:scheme"))] - pub scheme: Option, - #[serde(rename(serialize = "android:host"))] - pub host: Option, - #[serde(rename(serialize = "android:port"))] - pub port: Option, - #[serde(rename(serialize = "android:path"))] - pub path: Option, - #[serde(rename(serialize = "android:pathPattern"))] - pub path_pattern: Option, - #[serde(rename(serialize = "android:pathPrefix"))] - pub path_prefix: Option, - #[serde(rename(serialize = "android:mimeType"))] - pub mime_type: Option, -} - -/// Android [meta-data element](https://developer.android.com/guide/topics/manifest/meta-data-element). -#[derive(Clone, Debug, Default, Deserialize, Serialize)] -pub struct MetaData { - #[serde(rename(serialize = "android:name"))] - pub name: String, - #[serde(rename(serialize = "android:value"))] - pub value: String, -} - -/// Android [uses-feature element](https://developer.android.com/guide/topics/manifest/uses-feature-element). -#[derive(Clone, Debug, Default, Deserialize, Serialize)] -pub struct Feature { - #[serde(rename(serialize = "android:name"))] - pub name: Option, - #[serde(rename(serialize = "android:required"))] - pub required: Option, - /// The `version` field is currently used for the following features: - /// - /// - `name="android.hardware.vulkan.compute"`: The minimum level of compute features required. See the [Android documentation](https://developer.android.com/reference/android/content/pm/PackageManager#FEATURE_VULKAN_HARDWARE_COMPUTE) - /// for available levels and the respective Vulkan features required/provided. - /// - /// - `name="android.hardware.vulkan.level"`: The minimum Vulkan requirements. See the [Android documentation](https://developer.android.com/reference/android/content/pm/PackageManager#FEATURE_VULKAN_HARDWARE_LEVEL) - /// for available levels and the respective Vulkan features required/provided. - /// - /// - `name="android.hardware.vulkan.version"`: Represents the value of Vulkan's `VkPhysicalDeviceProperties::apiVersion`. See the [Android documentation](https://developer.android.com/reference/android/content/pm/PackageManager#FEATURE_VULKAN_HARDWARE_VERSION) - /// for available levels and the respective Vulkan features required/provided. - #[serde(rename(serialize = "android:version"))] - pub version: Option, - #[serde(rename(serialize = "android:glEsVersion"))] - #[serde(serialize_with = "serialize_opengles_version")] - pub opengles_version: Option<(u8, u8)>, -} - -fn serialize_opengles_version( - version: &Option<(u8, u8)>, - serializer: S, -) -> Result -where - S: Serializer, -{ - match version { - Some(version) => { - let opengles_version = format!("0x{:04}{:04}", version.0, version.1); - serializer.serialize_some(&opengles_version) - } - None => serializer.serialize_none(), - } -} - -/// Android [uses-permission element](https://developer.android.com/guide/topics/manifest/uses-permission-element). -#[derive(Clone, Debug, Default, Deserialize, Serialize)] -pub struct Permission { - #[serde(rename(serialize = "android:name"))] - pub name: String, - #[serde(rename(serialize = "android:maxSdkVersion"))] - pub max_sdk_version: Option, -} - -/// Android [package element](https://developer.android.com/guide/topics/manifest/queries-element#package). -#[derive(Clone, Debug, Default, Deserialize, Serialize)] -pub struct Package { - #[serde(rename(serialize = "android:name"))] - pub name: String, -} - -/// Android [provider element](https://developer.android.com/guide/topics/manifest/queries-element#provider). -#[derive(Clone, Debug, Default, Deserialize, Serialize)] -pub struct QueryProvider { - #[serde(rename(serialize = "android:authorities"))] - pub authorities: String, - - // The specs say only an `authorities` attribute is required for providers contained in a `queries` element - // however this is required for aapt support and should be made optional if/when cargo-apk migrates to aapt2 - #[serde(rename(serialize = "android:name"))] - pub name: String, -} - -/// Android [queries element](https://developer.android.com/guide/topics/manifest/queries-element). -#[derive(Clone, Debug, Default, Deserialize, Serialize)] -pub struct Queries { - #[serde(default)] - pub package: Vec, - #[serde(default)] - pub intent: Vec, - #[serde(default)] - pub provider: Vec, -} - -/// Android [uses-sdk element](https://developer.android.com/guide/topics/manifest/uses-sdk-element). -#[derive(Clone, Debug, Deserialize, Serialize)] -pub struct Sdk { - #[serde(rename(serialize = "android:minSdkVersion"))] - pub min_sdk_version: Option, - #[serde(rename(serialize = "android:targetSdkVersion"))] - pub target_sdk_version: Option, - #[serde(rename(serialize = "android:maxSdkVersion"))] - pub max_sdk_version: Option, -} - -impl Default for Sdk { - fn default() -> Self { - Self { - min_sdk_version: Some(23), - target_sdk_version: None, - max_sdk_version: None, - } - } -} - -fn default_namespace() -> String { - "http://schemas.android.com/apk/res/android".to_string() -} - -fn default_activity_name() -> String { - "android.app.NativeActivity".to_string() -} - -fn default_config_changes() -> Option { - Some("orientation|keyboardHidden|screenSize".to_string()) -} diff --git a/ndk-build/src/ndk.rs b/ndk-build/src/ndk.rs deleted file mode 100644 index 78e4abf6..00000000 --- a/ndk-build/src/ndk.rs +++ /dev/null @@ -1,420 +0,0 @@ -use crate::error::NdkError; -use crate::target::Target; -use std::collections::HashMap; -use std::path::{Path, PathBuf}; -use std::process::Command; - -#[derive(Clone, Debug, Eq, PartialEq)] -pub struct Ndk { - sdk_path: PathBuf, - ndk_path: PathBuf, - build_tools_version: String, - build_tag: u32, - platforms: Vec, -} - -impl Ndk { - pub fn from_env() -> Result { - let sdk_path = { - let mut sdk_path = std::env::var("ANDROID_HOME").ok(); - if sdk_path.is_some() { - println!( - "Warning: You use environment variable ANDROID_HOME that is deprecated. \ - Please, remove it and use ANDROID_SDK_ROOT instead. Now ANDROID_HOME is used" - ); - } - if sdk_path.is_none() { - sdk_path = std::env::var("ANDROID_SDK_ROOT").ok(); - } - - PathBuf::from(sdk_path.ok_or(NdkError::SdkNotFound)?) - }; - - let ndk_path = { - let ndk_path = std::env::var("ANDROID_NDK_ROOT") - .ok() - .or_else(|| std::env::var("ANDROID_NDK_PATH").ok()) - .or_else(|| std::env::var("ANDROID_NDK_HOME").ok()) - .or_else(|| std::env::var("NDK_HOME").ok()); - - // default ndk installation path - if ndk_path.is_none() && sdk_path.join("ndk-bundle").exists() { - sdk_path.join("ndk-bundle") - } else { - PathBuf::from(ndk_path.ok_or(NdkError::NdkNotFound)?) - } - }; - - let build_tools_dir = sdk_path.join("build-tools"); - let build_tools_version = std::fs::read_dir(&build_tools_dir) - .or(Err(NdkError::PathNotFound(build_tools_dir)))? - .filter_map(|path| path.ok()) - .filter(|path| path.path().is_dir()) - .filter_map(|path| path.file_name().into_string().ok()) - .filter(|name| name.chars().next().unwrap().is_ascii_digit()) - .max() - .ok_or(NdkError::BuildToolsNotFound)?; - - let build_tag = std::fs::read_to_string(ndk_path.join("source.properties")) - .expect("Failed to read source.properties"); - - let build_tag = build_tag - .split('\n') - .find_map(|line| { - let (key, value) = line - .split_once('=') - .expect("Failed to parse `key = value` from source.properties"); - if key.trim() == "Pkg.Revision" { - // AOSP writes a constantly-incrementing build version to the patch field. - // This number is incrementing across NDK releases. - let mut parts = value.trim().split('.'); - let _major = parts.next().unwrap(); - let _minor = parts.next().unwrap(); - let patch = parts.next().unwrap(); - // Can have an optional `XXX-beta1` - let patch = patch.split_once('-').map_or(patch, |(patch, _beta)| patch); - Some(patch.parse().expect("Failed to parse patch field")) - } else { - None - } - }) - .expect("No `Pkg.Revision` in source.properties"); - - let ndk_platforms = std::fs::read_to_string(ndk_path.join("build/core/platforms.mk"))?; - let ndk_platforms = ndk_platforms - .split('\n') - .map(|s| s.split_once(" := ").unwrap()) - .collect::>(); - - let min_platform_level = ndk_platforms["NDK_MIN_PLATFORM_LEVEL"] - .parse::() - .unwrap(); - let max_platform_level = ndk_platforms["NDK_MAX_PLATFORM_LEVEL"] - .parse::() - .unwrap(); - - let platforms_dir = sdk_path.join("platforms"); - let platforms: Vec = std::fs::read_dir(&platforms_dir) - .or(Err(NdkError::PathNotFound(platforms_dir)))? - .filter_map(|path| path.ok()) - .filter(|path| path.path().is_dir()) - .filter_map(|path| path.file_name().into_string().ok()) - .filter_map(|name| { - name.strip_prefix("android-") - .and_then(|api| api.parse::().ok()) - }) - .filter(|level| (min_platform_level..=max_platform_level).contains(level)) - .collect(); - - if platforms.is_empty() { - return Err(NdkError::NoPlatformFound); - } - - Ok(Self { - sdk_path, - ndk_path, - build_tools_version, - build_tag, - platforms, - }) - } - - pub fn sdk(&self) -> &Path { - &self.sdk_path - } - - pub fn ndk(&self) -> &Path { - &self.ndk_path - } - - pub fn build_tools_version(&self) -> &str { - &self.build_tools_version - } - - pub fn build_tag(&self) -> u32 { - self.build_tag - } - - pub fn platforms(&self) -> &[u32] { - &self.platforms - } - - pub fn build_tool(&self, tool: &str) -> Result { - let path = self - .sdk_path - .join("build-tools") - .join(&self.build_tools_version) - .join(tool); - if !path.exists() { - return Err(NdkError::CmdNotFound(tool.to_string())); - } - Ok(Command::new(dunce::canonicalize(path)?)) - } - - pub fn platform_tool(&self, tool: &str) -> Result { - let path = self.sdk_path.join("platform-tools").join(tool); - if !path.exists() { - return Err(NdkError::CmdNotFound(tool.to_string())); - } - Ok(Command::new(dunce::canonicalize(path)?)) - } - - pub fn highest_supported_platform(&self) -> u32 { - self.platforms().iter().max().cloned().unwrap() - } - - /// Returns platform `30` as currently [required by Google Play], or lower - /// when the detected SDK does not support it yet. - /// - /// [required by Google Play]: https://developer.android.com/distribute/best-practices/develop/target-sdk - pub fn default_target_platform(&self) -> u32 { - self.highest_supported_platform().min(30) - } - - pub fn platform_dir(&self, platform: u32) -> Result { - let dir = self - .sdk_path - .join("platforms") - .join(format!("android-{}", platform)); - if !dir.exists() { - return Err(NdkError::PlatformNotFound(platform)); - } - Ok(dir) - } - - pub fn android_jar(&self, platform: u32) -> Result { - let android_jar = self.platform_dir(platform)?.join("android.jar"); - if !android_jar.exists() { - return Err(NdkError::PathNotFound(android_jar)); - } - Ok(android_jar) - } - - pub fn toolchain_dir(&self) -> Result { - let host_os = std::env::var("HOST").ok(); - let host_contains = |s| host_os.as_ref().map(|h| h.contains(s)).unwrap_or(false); - - let arch = if host_contains("linux") { - "linux" - } else if host_contains("macos") { - "darwin" - } else if host_contains("windows") { - "windows" - } else if cfg!(target_os = "linux") { - "linux" - } else if cfg!(target_os = "macos") { - "darwin" - } else if cfg!(target_os = "windows") { - "windows" - } else { - return match host_os { - Some(host_os) => Err(NdkError::UnsupportedHost(host_os)), - _ => Err(NdkError::UnsupportedTarget), - }; - }; - - let mut toolchain_dir = self - .ndk_path - .join("toolchains") - .join("llvm") - .join("prebuilt") - .join(format!("{}-x86_64", arch)); - if !toolchain_dir.exists() { - toolchain_dir.set_file_name(arch); - } - if !toolchain_dir.exists() { - return Err(NdkError::PathNotFound(toolchain_dir)); - } - Ok(toolchain_dir) - } - - pub fn clang(&self) -> Result<(PathBuf, PathBuf), NdkError> { - let ext = if cfg!(target_os = "windows") { - "exe" - } else { - "" - }; - - let bin_path = self.toolchain_dir()?.join("bin"); - - let clang = bin_path.join("clang").with_extension(ext); - if !clang.exists() { - return Err(NdkError::PathNotFound(clang)); - } - - let clang_pp = bin_path.join("clang++").with_extension(ext); - if !clang_pp.exists() { - return Err(NdkError::PathNotFound(clang_pp)); - } - - Ok((clang, clang_pp)) - } - - pub fn toolchain_bin(&self, name: &str, target: Target) -> Result { - let ext = if cfg!(target_os = "windows") { - ".exe" - } else { - "" - }; - - let toolchain_path = self.toolchain_dir()?.join("bin"); - - // Since r21 (https://github.com/android/ndk/wiki/Changelog-r21) LLVM binutils are included _for testing_; - // Since r22 (https://github.com/android/ndk/wiki/Changelog-r22) GNU binutils are deprecated in favour of LLVM's; - // Since r23 (https://github.com/android/ndk/wiki/Changelog-r23) GNU binutils have been removed. - // To maintain stability with the current ndk-build crate release, prefer GNU binutils for - // as long as it is provided by the NDK instead of trying to use llvm-* from r21 onwards. - let gnu_bin = format!("{}-{}{}", target.ndk_triple(), name, ext); - let gnu_path = toolchain_path.join(&gnu_bin); - if gnu_path.exists() { - Ok(gnu_path) - } else { - let llvm_bin = format!("llvm-{}{}", name, ext); - let llvm_path = toolchain_path.join(&llvm_bin); - llvm_path - .exists() - .then(|| llvm_path) - .ok_or(NdkError::ToolchainBinaryNotFound { - toolchain_path, - gnu_bin, - llvm_bin, - }) - } - } - - pub fn android_dir(&self) -> Result { - let android_dir = dirs::home_dir() - .ok_or_else(|| NdkError::PathNotFound(PathBuf::from("$HOME")))? - .join(".android"); - std::fs::create_dir_all(&android_dir)?; - Ok(android_dir) - } - - pub fn keytool(&self) -> Result { - if let Ok(keytool) = which::which(bin!("keytool")) { - return Ok(Command::new(keytool)); - } - if let Ok(java) = std::env::var("JAVA_HOME") { - let keytool = PathBuf::from(java).join("bin").join(bin!("keytool")); - if keytool.exists() { - return Ok(Command::new(keytool)); - } - } - Err(NdkError::CmdNotFound("keytool".to_string())) - } - - pub fn debug_key(&self) -> Result { - let path = self.android_dir()?.join("debug.keystore"); - let password = "android".to_string(); - if !path.exists() { - let mut keytool = self.keytool()?; - keytool - .arg("-genkey") - .arg("-v") - .arg("-keystore") - .arg(&path) - .arg("-storepass") - .arg(&password) - .arg("-alias") - .arg("androiddebugkey") - .arg("-keypass") - .arg(&password) - .arg("-dname") - .arg("CN=Android Debug,O=Android,C=US") - .arg("-keyalg") - .arg("RSA") - .arg("-keysize") - .arg("2048") - .arg("-validity") - .arg("10000"); - if !keytool.status()?.success() { - return Err(NdkError::CmdFailed(keytool)); - } - } - Ok(Key { path, password }) - } - - pub fn sysroot_lib_dir(&self, target: Target) -> Result { - let sysroot_lib_dir = self - .toolchain_dir()? - .join("sysroot") - .join("usr") - .join("lib") - .join(target.ndk_triple()); - if !sysroot_lib_dir.exists() { - return Err(NdkError::PathNotFound(sysroot_lib_dir)); - } - Ok(sysroot_lib_dir) - } - - pub fn sysroot_platform_lib_dir( - &self, - target: Target, - min_sdk_version: u32, - ) -> Result { - let sysroot_lib_dir = self.sysroot_lib_dir(target)?; - - // Look for a platform <= min_sdk_version - let mut tmp_platform = min_sdk_version; - while tmp_platform > 1 { - let path = sysroot_lib_dir.join(tmp_platform.to_string()); - if path.exists() { - return Ok(path); - } - tmp_platform += 1; - } - - // Look for the minimum API level supported by the NDK - let mut tmp_platform = min_sdk_version; - while tmp_platform < 100 { - let path = sysroot_lib_dir.join(tmp_platform.to_string()); - if path.exists() { - return Ok(path); - } - tmp_platform += 1; - } - - Err(NdkError::PlatformNotFound(min_sdk_version)) - } - - pub fn detect_abi(&self, device_serial: Option<&str>) -> Result { - let mut adb = self.adb(device_serial)?; - - let stdout = adb - .arg("shell") - .arg("getprop") - .arg("ro.product.cpu.abi") - .output()? - .stdout; - let abi = std::str::from_utf8(&stdout).or(Err(NdkError::UnsupportedTarget))?; - Target::from_android_abi(abi.trim()) - } - - pub fn adb(&self, device_serial: Option<&str>) -> Result { - let mut adb = self.platform_tool(bin!("adb"))?; - - if let Some(device_serial) = device_serial { - adb.arg("-s").arg(device_serial); - } - - Ok(adb) - } -} - -pub struct Key { - pub path: PathBuf, - pub password: String, -} - -#[cfg(test)] -mod tests { - use super::*; - - #[test] - #[ignore] - fn test_detect() { - let ndk = Ndk::from_env().unwrap(); - assert_eq!(ndk.build_tools_version(), "29.0.2"); - assert_eq!(ndk.platforms(), &[29, 28]); - } -} diff --git a/ndk-build/src/readelf.rs b/ndk-build/src/readelf.rs deleted file mode 100644 index 1f8778f2..00000000 --- a/ndk-build/src/readelf.rs +++ /dev/null @@ -1,121 +0,0 @@ -use crate::apk::UnalignedApk; -use crate::error::NdkError; -use crate::target::Target; -use std::collections::HashSet; -use std::io::BufRead; -use std::path::{Path, PathBuf}; -use std::process::Command; - -impl<'a> UnalignedApk<'a> { - pub fn add_lib_recursively( - &mut self, - lib: &Path, - target: Target, - search_paths: &[&Path], - ) -> Result<(), NdkError> { - let ndk = &self.config().ndk; - let default_min_sdk = crate::manifest::Sdk::default().min_sdk_version.unwrap(); - let min_sdk_version = self - .config() - .manifest - .sdk - .min_sdk_version - .unwrap_or(default_min_sdk); - let readelf_path = ndk.toolchain_bin("readelf", target)?; - - let android_search_paths = [ - &*ndk.sysroot_lib_dir(target)?, - &*ndk.sysroot_platform_lib_dir(target, min_sdk_version)?, - ]; - - let mut provided = HashSet::new(); - for path in &android_search_paths { - for lib in list_libs(path)? { - if lib != "libc++_shared.so" { - provided.insert(lib); - } - } - } - - let mut artifacts = vec![lib.to_path_buf()]; - while let Some(artifact) = artifacts.pop() { - self.add_lib(&artifact, target)?; - for need in list_needed_libs(&readelf_path, &artifact)? { - // c++_shared is available in the NDK but not on-device. - // Must be bundled with the apk if used: - // https://developer.android.com/ndk/guides/cpp-support#libc - let search_paths = if need == "libc++_shared.so" { - &android_search_paths - } else if !provided.contains(&need) { - search_paths - } else { - continue; - }; - - if let Some(path) = find_library_path(search_paths, &need)? { - if provided.insert(path.file_name().unwrap().to_str().unwrap().to_string()) { - artifacts.push(path); - } - } else { - eprintln!("Shared library \"{}\" not found.", need); - } - } - } - - Ok(()) - } -} - -/// List all linked shared libraries -fn list_needed_libs(readelf_path: &Path, library_path: &Path) -> Result, NdkError> { - let mut readelf = Command::new(readelf_path); - let output = readelf.arg("-d").arg(library_path).output()?; - if !output.status.success() { - return Err(NdkError::CmdFailed(readelf)); - } - let mut needed = HashSet::new(); - for line in output.stdout.lines() { - let line = line?; - if line.contains("(NEEDED)") { - let lib = line - .split("Shared library: [") - .last() - .and_then(|line| line.split(']').next()); - if let Some(lib) = lib { - needed.insert(lib.to_string()); - } - } - } - Ok(needed) -} - -/// List shared libraries -fn list_libs(path: &Path) -> Result, NdkError> { - let mut libs = HashSet::new(); - let entries = std::fs::read_dir(path)?; - for entry in entries { - let entry = entry?; - if !entry.path().is_dir() { - if let Some(file_name) = entry.file_name().to_str() { - if file_name.ends_with(".so") { - libs.insert(file_name.to_string()); - } - } - } - } - Ok(libs) -} - -/// Resolves native library using search paths -fn find_library_path>( - paths: &[&Path], - library: S, -) -> Result, NdkError> { - for path in paths { - let lib_path = path.join(&library); - if lib_path.exists() { - return Ok(Some(dunce::canonicalize(lib_path)?)); - } - } - Ok(None) -} diff --git a/ndk-build/src/target.rs b/ndk-build/src/target.rs deleted file mode 100644 index 676b9005..00000000 --- a/ndk-build/src/target.rs +++ /dev/null @@ -1,79 +0,0 @@ -use crate::error::NdkError; -use serde::Deserialize; - -#[derive(Clone, Copy, Debug, Deserialize, Eq, PartialEq)] -#[repr(u8)] -pub enum Target { - #[serde(rename = "armv7-linux-androideabi")] - ArmV7a = 1, - #[serde(rename = "aarch64-linux-android")] - Arm64V8a = 2, - #[serde(rename = "i686-linux-android")] - X86 = 3, - #[serde(rename = "x86_64-linux-android")] - X86_64 = 4, -} - -impl Target { - /// Identifier used in the NDK to refer to the ABI - pub fn android_abi(self) -> &'static str { - match self { - Self::Arm64V8a => "arm64-v8a", - Self::ArmV7a => "armeabi-v7a", - Self::X86 => "x86", - Self::X86_64 => "x86_64", - } - } - - /// Returns `Target` for abi. - pub fn from_android_abi(abi: &str) -> Result { - match abi { - "arm64-v8a" => Ok(Self::Arm64V8a), - "armeabi-v7a" => Ok(Self::ArmV7a), - "x86" => Ok(Self::X86), - "x86_64" => Ok(Self::X86_64), - _ => Err(NdkError::UnsupportedTarget), - } - } - - /// Returns the triple used by the rust build tools - pub fn rust_triple(self) -> &'static str { - match self { - Self::Arm64V8a => "aarch64-linux-android", - Self::ArmV7a => "armv7-linux-androideabi", - Self::X86 => "i686-linux-android", - Self::X86_64 => "x86_64-linux-android", - } - } - - /// Returns `Target` for rust triple. - pub fn from_rust_triple(triple: &str) -> Result { - match triple { - "aarch64-linux-android" => Ok(Self::Arm64V8a), - "armv7-linux-androideabi" => Ok(Self::ArmV7a), - "i686-linux-android" => Ok(Self::X86), - "x86_64-linux-android" => Ok(Self::X86_64), - _ => Err(NdkError::UnsupportedTarget), - } - } - - // Returns the triple NDK provided LLVM - pub fn ndk_llvm_triple(self) -> &'static str { - match self { - Self::Arm64V8a => "aarch64-linux-android", - Self::ArmV7a => "armv7a-linux-androideabi", - Self::X86 => "i686-linux-android", - Self::X86_64 => "x86_64-linux-android", - } - } - - /// Returns the triple used by the non-LLVM parts of the NDK - pub fn ndk_triple(self) -> &'static str { - match self { - Self::Arm64V8a => "aarch64-linux-android", - Self::ArmV7a => "arm-linux-androideabi", - Self::X86 => "i686-linux-android", - Self::X86_64 => "x86_64-linux-android", - } - } -} diff --git a/ndk-context/CHANGELOG.md b/ndk-context/CHANGELOG.md deleted file mode 100644 index 585e9ae9..00000000 --- a/ndk-context/CHANGELOG.md +++ /dev/null @@ -1,9 +0,0 @@ -# Unreleased - -# 0.1.1 (2022-04-19) - -- Add `release_android_context()` function to remove `AndroidContext` when activity is destroyed. (#263) - -# 0.1.0 (2022-02-14) - -- Initial release! 🎉 diff --git a/ndk-context/Cargo.toml b/ndk-context/Cargo.toml deleted file mode 100644 index 79d1c307..00000000 --- a/ndk-context/Cargo.toml +++ /dev/null @@ -1,11 +0,0 @@ -[package] -name = "ndk-context" -version = "0.1.1" -authors = ["The Rust Windowing contributors"] -edition = "2021" -description = "Handles for accessing Android APIs" -license = "MIT OR Apache-2.0" -keywords = ["android", "ndk", "apk", "jni"] -documentation = "https://docs.rs/ndk-context" -homepage = "https://github.com/rust-windowing/android-ndk-rs" -repository = "https://github.com/rust-windowing/android-ndk-rs" diff --git a/ndk-context/README.md b/ndk-context/README.md deleted file mode 100644 index 38941eaf..00000000 --- a/ndk-context/README.md +++ /dev/null @@ -1,6 +0,0 @@ -# ndk-context - -Provides a stable api to rust crates for interfacing with the Android platform. It is -initialized by the runtime, usually [__ndk-glue__](https://crates.io/crates/ndk-glue), -but could also be initialized by Java or Kotlin code when embedding in an existing Android -project. diff --git a/ndk-context/src/lib.rs b/ndk-context/src/lib.rs deleted file mode 100644 index 1e1e54f5..00000000 --- a/ndk-context/src/lib.rs +++ /dev/null @@ -1,100 +0,0 @@ -//! Provides a stable api to rust crates for interfacing with the Android platform. It is -//! initialized by the runtime, usually [__ndk-glue__](https://crates.io/crates/ndk-glue), -//! but could also be initialized by Java or Kotlin code when embedding in an existing Android -//! project. -//! -//! ```no_run -//! let ctx = ndk_context::android_context(); -//! let vm = unsafe { jni::JavaVM::from_raw(ctx.vm().cast()) }?; -//! let env = vm.attach_current_thread(); -//! let class_ctx = env.find_class("android/content/Context")?; -//! let audio_service = env.get_static_field(class_ctx, "AUDIO_SERVICE", "Ljava/lang/String;")?; -//! let audio_manager = env -//! .call_method( -//! ctx.context() as jni::sys::jobject, -//! "getSystemService", -//! "(Ljava/lang/String;)Ljava/lang/Object;", -//! &[audio_service], -//! )? -//! .l()?; -//! ``` -use std::ffi::c_void; - -static mut ANDROID_CONTEXT: Option = None; - -/// [`AndroidContext`] provides the pointers required to interface with the jni on Android -/// platforms. -#[derive(Clone, Copy, Debug)] -pub struct AndroidContext { - java_vm: *mut c_void, - context_jobject: *mut c_void, -} - -impl AndroidContext { - /// A handle to the `JavaVM` object. - /// - /// Usage with [__jni__](https://crates.io/crates/jni) crate: - /// ```no_run - /// let ctx = ndk_context::android_context(); - /// let vm = unsafe { jni::JavaVM::from_raw(ctx.vm().cast()) }?; - /// let env = vm.attach_current_thread(); - /// ``` - pub fn vm(self) -> *mut c_void { - self.java_vm - } - - /// A handle to an [android.content.Context](https://developer.android.com/reference/android/content/Context). - /// In most cases this will be a ptr to an `Activity`, but this isn't guaranteed. - /// - /// Usage with [__jni__](https://crates.io/crates/jni) crate: - /// ```no_run - /// let ctx = ndk_context::android_context(); - /// let vm = unsafe { jni::JavaVM::from_raw(ctx.vm().cast()) }?; - /// let env = vm.attach_current_thread(); - /// let class_ctx = env.find_class("android/content/Context")?; - /// let audio_service = env.get_static_field(class_ctx, "AUDIO_SERVICE", "Ljava/lang/String;")?; - /// let audio_manager = env - /// .call_method( - /// ctx.context() as jni::sys::jobject, - /// "getSystemService", - /// "(Ljava/lang/String;)Ljava/lang/Object;", - /// &[audio_service], - /// )? - /// .l()?; - /// ``` - pub fn context(self) -> *mut c_void { - self.context_jobject - } -} - -/// Main entry point to this crate. Returns an [`AndroidContext`]. -pub fn android_context() -> AndroidContext { - unsafe { ANDROID_CONTEXT.expect("android context was not initialized") } -} - -/// Initializes the [`AndroidContext`]. [`AndroidContext`] is initialized by [__ndk-glue__](https://crates.io/crates/ndk-glue) -/// before `main` is called. -/// -/// # Safety -/// -/// The pointers must be valid and this function must be called exactly once before `main` is -/// called. -pub unsafe fn initialize_android_context(java_vm: *mut c_void, context_jobject: *mut c_void) { - let previous = ANDROID_CONTEXT.replace(AndroidContext { - java_vm, - context_jobject, - }); - assert!(previous.is_none()); -} - -/// Removes the [`AndroidContext`]. It is released by [__ndk-glue__](https://crates.io/crates/ndk-glue) -/// when the activity is finished and destroyed. -/// -/// # Safety -/// -/// This function must only be called after [`initialize_android_context()`], -/// when the activity is subsequently destroyed according to Android. -pub unsafe fn release_android_context() { - let previous = ANDROID_CONTEXT.take(); - assert!(previous.is_some()); -} diff --git a/ndk-examples/Cargo.toml b/ndk-examples/Cargo.toml deleted file mode 100644 index ad250ffc..00000000 --- a/ndk-examples/Cargo.toml +++ /dev/null @@ -1,30 +0,0 @@ -[package] -name = "ndk-examples" -version = "0.1.0" -authors = ["David Craven "] -edition = "2018" -publish = false - -[target.'cfg(target_os = "android")'.dependencies] -jni = "0.19" -libc = "0.2" -log = "0.4.14" -ndk = { path = "../ndk", features = ["api-level-23"] } -ndk-context = { path = "../ndk-context" } -ndk-glue = { path = "../ndk-glue", features = ["logger"] } - -[[example]] -name = "hello_world" -crate-type = ["cdylib"] - -[[example]] -name = "jni_audio" -crate-type = ["cdylib"] - -[[example]] -name = "looper" -crate-type = ["cdylib"] - -[package.metadata.android.sdk] -min_sdk_version = 16 -target_sdk_version = 29 diff --git a/ndk-examples/README.md b/ndk-examples/README.md deleted file mode 100644 index c4eec76b..00000000 --- a/ndk-examples/README.md +++ /dev/null @@ -1,26 +0,0 @@ -# ndk-examples - -Collection of examples showing different parts of the libraries. - -## Examples - -In order to see logs of the sample apps execute in a console: -```console -$ adb logcat RustStdoutStderr:D '*:S' -``` - -### hello_world - -Prints `hello world` in the console - -```console -$ cargo apk build --example hello_world -``` - -### jni_audio - -Prints output audio devices in the console - -```console -$ cargo apk run --example jni_audio -``` diff --git a/ndk-examples/examples/hello_world.rs b/ndk-examples/examples/hello_world.rs deleted file mode 100644 index 68fab11f..00000000 --- a/ndk-examples/examples/hello_world.rs +++ /dev/null @@ -1,14 +0,0 @@ -use log::info; -use ndk::trace; - -#[cfg_attr( - target_os = "android", - ndk_glue::main(backtrace = "on", logger(level = "debug", tag = "hello-world")) -)] -fn main() { - let _trace; - if trace::is_trace_enabled() { - _trace = trace::Section::new("ndk-rs example main").unwrap(); - } - info!("hello world"); -} diff --git a/ndk-examples/examples/jni_audio.rs b/ndk-examples/examples/jni_audio.rs deleted file mode 100644 index 9880bf67..00000000 --- a/ndk-examples/examples/jni_audio.rs +++ /dev/null @@ -1,72 +0,0 @@ -#[cfg_attr(target_os = "android", ndk_glue::main(backtrace = "on"))] -fn main() { - enumerate_audio_devices().unwrap(); -} - -const GET_DEVICES_OUTPUTS: jni::sys::jint = 2; - -fn enumerate_audio_devices() -> Result<(), Box> { - // Create a VM for executing Java calls - let ctx = ndk_context::android_context(); - let vm = unsafe { jni::JavaVM::from_raw(ctx.vm().cast()) }?; - let env = vm.attach_current_thread()?; - - // Query the global Audio Service - let class_ctxt = env.find_class("android/content/Context")?; - let audio_service = env.get_static_field(class_ctxt, "AUDIO_SERVICE", "Ljava/lang/String;")?; - - let audio_manager = env - .call_method( - ctx.context().cast(), - "getSystemService", - // JNI type signature needs to be derived from the Java API - // (ArgTys)ResultTy - "(Ljava/lang/String;)Ljava/lang/Object;", - &[audio_service], - )? - .l()?; - - // Enumerate output devices - let devices = env.call_method( - audio_manager, - "getDevices", - "(I)[Landroid/media/AudioDeviceInfo;", - &[GET_DEVICES_OUTPUTS.into()], - )?; - - println!("-- Output Audio Devices --"); - - let device_array = devices.l()?.into_inner(); - let len = env.get_array_length(device_array)?; - for i in 0..len { - let device = env.get_object_array_element(device_array, i)?; - - // Collect device information - // See https://developer.android.com/reference/android/media/AudioDeviceInfo - let product_name: String = { - let name = - env.call_method(device, "getProductName", "()Ljava/lang/CharSequence;", &[])?; - let name = env.call_method(name.l()?, "toString", "()Ljava/lang/String;", &[])?; - env.get_string(name.l()?.into())?.into() - }; - let id = env.call_method(device, "getId", "()I", &[])?.i()?; - let ty = env.call_method(device, "getType", "()I", &[])?.i()?; - - let sample_rates = { - let sample_array = env - .call_method(device, "getSampleRates", "()[I", &[])? - .l()? - .into_inner(); - let len = env.get_array_length(sample_array)?; - - let mut sample_rates = vec![0; len as usize]; - env.get_int_array_region(sample_array, 0, &mut sample_rates)?; - sample_rates - }; - - println!("Device {}: Id {}, Type {}", product_name, id, ty); - println!("sample rates: {:#?}", sample_rates); - } - - Ok(()) -} diff --git a/ndk-examples/examples/looper.rs b/ndk-examples/examples/looper.rs deleted file mode 100644 index bd11b6b8..00000000 --- a/ndk-examples/examples/looper.rs +++ /dev/null @@ -1,159 +0,0 @@ -//! Demonstrates how to manage application lifetime using Android's `Looper` - -use std::mem::MaybeUninit; -use std::os::unix::prelude::RawFd; -use std::time::Duration; - -use log::info; -use ndk::event::{InputEvent, Keycode}; -use ndk::looper::{FdEvent, Poll, ThreadLooper}; - -const U32_SIZE: usize = std::mem::size_of::(); - -#[cfg_attr( - target_os = "android", - ndk_glue::main(backtrace = "on", logger(level = "debug")) -)] -fn main() { - // Retrieve the Looper that ndk_glue created for us on the current thread. - // Android uses this to block on events and poll file descriptors with a single mechanism. - let looper = - ThreadLooper::for_thread().expect("ndk-glue did not attach thread looper before main()!"); - - // First free number after ndk_glue::NDK_GLUE_LOOPER_INPUT_QUEUE_IDENT. This might be fragile. - const CUSTOM_EVENT_IDENT: i32 = ndk_glue::NDK_GLUE_LOOPER_INPUT_QUEUE_IDENT + 1; - - fn create_pipe() -> [RawFd; 2] { - let mut ends = MaybeUninit::<[RawFd; 2]>::uninit(); - assert_eq!(unsafe { libc::pipe(ends.as_mut_ptr().cast()) }, 0); - unsafe { ends.assume_init() } - } - - // Create a Unix pipe to send custom events to the Looper. ndk-glue uses a similar mechanism to deliver - // ANativeActivityCallbacks asynchronously to the Looper through NDK_GLUE_LOOPER_EVENT_PIPE_IDENT. - let custom_event_pipe = create_pipe(); - let custom_callback_pipe = create_pipe(); - - // Attach the reading end of the pipe to the looper, so that it wakes up - // whenever data is available for reading (FdEvent::INPUT) - looper - .as_foreign() - .add_fd( - custom_event_pipe[0], - CUSTOM_EVENT_IDENT, - FdEvent::INPUT, - std::ptr::null_mut(), - ) - .expect("Failed to add file descriptor to Looper"); - - // Attach the reading end of a pipe to a callback, too - looper - .as_foreign() - .add_fd_with_callback(custom_callback_pipe[0], FdEvent::INPUT, |fd| { - let mut recv = !0u32; - assert_eq!( - unsafe { libc::read(fd, &mut recv as *mut _ as *mut _, U32_SIZE) } as usize, - U32_SIZE - ); - info!("Read custom event from pipe, in callback: {}", recv); - // Detach this handler by returning `false` once the count reaches 5 - recv < 5 - }) - .expect("Failed to add file descriptor to Looper"); - - std::thread::spawn(move || { - // Send a "custom event" to the looper every second - for i in 0.. { - let i_addr = &i as *const _ as *const _; - std::thread::sleep(Duration::from_secs(1)); - assert_eq!( - unsafe { libc::write(custom_event_pipe[1], i_addr, U32_SIZE) }, - U32_SIZE as isize - ); - assert_eq!( - unsafe { libc::write(custom_callback_pipe[1], i_addr, U32_SIZE,) }, - U32_SIZE as isize - ); - } - }); - - let mut exit = false; - - while !exit { - // looper.poll_*_timeout(timeout) to not block indefinitely. - // Pass a timeout of Duration::ZERO to never block. - match looper.poll_all().unwrap() { - Poll::Wake => { /* looper.as_foreign().wake() was called */ } - Poll::Callback => { - /* An event with a registered callback was received. - * Only received when polling for single events with poll_once_* - */ - unreachable!() - } - Poll::Timeout => { - /* Timed out as per poll_*_timeout */ - unreachable!() - } - Poll::Event { - ident, - fd, - events: _, - data: _, - } => { - info!("File descriptor event on identifier {}", ident); - match ident { - ndk_glue::NDK_GLUE_LOOPER_EVENT_PIPE_IDENT => { - // One of the callbacks in ANativeActivityCallbacks is called, and delivered - // to this application asynchronously by ndk_glue through a pipe. - // These consist mostly of important lifecycle and window events! Graphics - // applications will create and destroy their output surface/swapchain here. - info!( - "Event pipe yields: {:?}", - ndk_glue::poll_events() - .expect("Looper says event-pipe has data available!") - ) - } - ndk_glue::NDK_GLUE_LOOPER_INPUT_QUEUE_IDENT => { - let input_queue = ndk_glue::input_queue(); - let input_queue = input_queue.as_ref().expect("Input queue not attached"); - assert!(input_queue.has_events()); - // Consume as many events as possible - while let Some(event) = input_queue.get_event().unwrap() { - // Pass the event by a possible IME (Input Method Editor, ie. an open keyboard) first - if let Some(event) = input_queue.pre_dispatch(event) { - info!("Input event {:?}", event); - let mut handled = false; - if let InputEvent::KeyEvent(key_event) = &event { - if key_event.key_code() == Keycode::Back { - // Gracefully stop the app when the user presses the back button - exit = true; - handled = true; - } - } - // Let Android know that we did not consume the event - // (Pass true here if you did) - input_queue.finish_event(event, handled); - } - } - } - CUSTOM_EVENT_IDENT => { - // Expect to receive 32-bit numbers to describe events, - // as sent by the thread above - let mut recv = !0u32; - assert_eq!( - unsafe { libc::read(fd, &mut recv as *mut _ as *mut _, U32_SIZE) } - as usize, - U32_SIZE - ); - info!("Read custom event from pipe: {}", recv); - } - i => panic!("Unexpected event identifier {}", i), - } - } - } - } - - // Stop the activity - #[allow(deprecated)] - ndk_glue::native_activity().finish() -} diff --git a/ndk-glue/CHANGELOG.md b/ndk-glue/CHANGELOG.md deleted file mode 100644 index 7e107e95..00000000 --- a/ndk-glue/CHANGELOG.md +++ /dev/null @@ -1,71 +0,0 @@ -# Unreleased - -# 0.7.0 (2022-07-24) - -- **Breaking:** Provide a `LockReadGuard` newtype around `NativeWindow`/`InputQueue` to hide the underlying lock implementation. (#288) -- **Breaking:** Transpose `LockReadGuard>` into `Option>` to only necessitate an `Option` unpack/`unwrap()` once. (#282) - -# 0.6.2 (2022-04-19) - -- Call `ndk_context::release_android_context()` function to remove `AndroidContext` when activity is destroyed. (#263) - -# 0.6.1 (2022-02-14) - -- Initialize `ndk-context` for cross-version access to the Java `VM` and Android `Context`. - -# 0.6.0 (2022-01-05) - -- **Breaking:** Update to `ndk-sys 0.3.0` and `ndk 0.6.0`. (#214) - -# 0.5.2 (2022-04-19) - -- Call `ndk_context::release_android_context()` function to remove `AndroidContext` when activity is destroyed. (#263) - -# 0.5.1 (2022-02-15) - -- Initialize `ndk-context` for cross-version access to the Java `VM` and Android `Context`. - -# 0.5.0 (2021-11-22) - -- Document when to lock and unlock the window/input queue when certain events are received. -- **Breaking:** Update to `ndk 0.5.0` and `ndk-macros 0.3.0`. - -# 0.4.2 (2022-04-19) - -- Call `ndk_context::release_android_context()` function to remove `AndroidContext` when activity is destroyed. (#263) - -# 0.4.1 (2022-02-15) - -- Initialize `ndk-context` for cross-version access to the Java `VM` and Android `Context`. - -# 0.4.0 (2021-08-02) - -- Looper is now created before returning from `ANativeActivity_onCreate`, solving - race conditions in `onInputQueueCreated`. -- Event pipe and looper are now notified of removal _before_ destroying `NativeWindow` - and `InputQueue`. This allows applications to unlock their read-locks of these instances - first (which they are supposed to hold on to during use) instead of deadlocking in - Android callbacks. -- Reexport `android_logger` and `log` from the crate root for `ndk-macro` to use. -- Use new `FdEvents` `bitflags` for looper file descriptor events. -- Update to `ndk` 0.4.0. - This minor dependency bump causes a minor bump for `ndk-glue` too. - -# 0.3.0 (2021-01-30) - -- **Breaking:** Looper `ident` not passed in `data` pointer anymore. - If you are relying on `Poll::Event::data` to tell event fd and - input queue apart, please use `Poll::Event::ident` and the new - constants introduced in `ndk-glue`! - -# 0.2.1 (2020-10-15) - -- Fix documentation build on docs.rs - -# 0.2.0 (2020-09-15) - -- **Breaking:** Removed `ndk_glue` macro in favor of new `main` attribute macro. - -# 0.1.0 (2020-04-22) - -- Initial release! 🎉 diff --git a/ndk-glue/Cargo.toml b/ndk-glue/Cargo.toml deleted file mode 100644 index d199acf4..00000000 --- a/ndk-glue/Cargo.toml +++ /dev/null @@ -1,37 +0,0 @@ -[package] -name = "ndk-glue" -version = "0.7.0" -authors = ["The Rust Windowing contributors"] -edition = "2018" -description = "Startup code for android binaries" -license = "MIT OR Apache-2.0" -keywords = ["android", "ndk"] -readme = "README.md" -documentation = "https://docs.rs/ndk-glue" -homepage = "https://github.com/rust-windowing/android-ndk-rs" -repository = "https://github.com/rust-windowing/android-ndk-rs" - -[dependencies] -android_logger = { version = "0.11", optional = true } -libc = "0.2.84" -log = "0.4.14" -ndk = { path = "../ndk", version = "0.7.0" } -ndk-context = { path = "../ndk-context", version = "0.1.1" } -ndk-macro = { path = "../ndk-macro", version = "0.3.0" } -ndk-sys = { path = "../ndk-sys", version = "0.4.0" } -once_cell = "1" -parking_lot = "0.12" - -[features] -default = [] -test = ["ndk/test", "ndk-sys/test"] -logger = ["android_logger", "ndk-macro/logger"] - -[package.metadata.docs.rs] -rustdoc-args = ["--cfg", "docsrs"] -targets = [ - "aarch64-linux-android", - "armv7-linux-androideabi", - "i686-linux-android", - "x86_64-linux-android", -] diff --git a/ndk-glue/README.md b/ndk-glue/README.md deleted file mode 100644 index c434770e..00000000 --- a/ndk-glue/README.md +++ /dev/null @@ -1,6 +0,0 @@ -# ndk-glue - -Interoperability library for a native Rust application with the Android framework. -Provides access to `NativeActivity`, `NativeWindow` and `InputQueue`. - -This library exports the `main` attribute macro from `ndk-macro`, see the corresponding README for more details. diff --git a/ndk-glue/src/lib.rs b/ndk-glue/src/lib.rs deleted file mode 100644 index 7564a498..00000000 --- a/ndk-glue/src/lib.rs +++ /dev/null @@ -1,425 +0,0 @@ -#![cfg_attr(docsrs, feature(doc_cfg, doc_auto_cfg))] - -use log::Level; -use ndk::input_queue::InputQueue; -use ndk::looper::{FdEvent, ForeignLooper, ThreadLooper}; -use ndk::native_activity::NativeActivity; -use ndk::native_window::NativeWindow; -use ndk_sys::{AInputQueue, ANativeActivity, ANativeWindow, ARect}; -use once_cell::sync::Lazy; -use parking_lot::{MappedRwLockReadGuard, RwLock, RwLockReadGuard}; -use std::ffi::{CStr, CString}; -use std::fmt; -use std::fs::File; -use std::io::{BufRead, BufReader}; -use std::ops::Deref; -use std::os::raw; -use std::os::unix::prelude::*; -use std::ptr::NonNull; -use std::sync::{Arc, Condvar, Mutex}; -use std::thread; - -#[cfg(feature = "logger")] -pub use android_logger; -#[cfg(feature = "logger")] -pub use log; - -pub use ndk_macro::main; - -/// `ndk-glue` macros register the reading end of an event pipe with the -/// main [`ThreadLooper`] under this `ident`. -/// When returned from [`ThreadLooper::poll_*`][ThreadLooper::poll_once] -/// an event can be retrieved from [`poll_events()`]. -pub const NDK_GLUE_LOOPER_EVENT_PIPE_IDENT: i32 = 0; - -/// The [`InputQueue`] received from Android is registered with the main -/// [`ThreadLooper`] under this `ident`. -/// When returned from [`ThreadLooper::poll_*`][ThreadLooper::poll_once] -/// an event can be retrieved from [`input_queue()`]. -pub const NDK_GLUE_LOOPER_INPUT_QUEUE_IDENT: i32 = 1; - -pub fn android_log(level: Level, tag: &CStr, msg: &CStr) { - let prio = match level { - Level::Error => ndk_sys::android_LogPriority::ANDROID_LOG_ERROR, - Level::Warn => ndk_sys::android_LogPriority::ANDROID_LOG_WARN, - Level::Info => ndk_sys::android_LogPriority::ANDROID_LOG_INFO, - Level::Debug => ndk_sys::android_LogPriority::ANDROID_LOG_DEBUG, - Level::Trace => ndk_sys::android_LogPriority::ANDROID_LOG_VERBOSE, - }; - unsafe { - ndk_sys::__android_log_write(prio.0 as raw::c_int, tag.as_ptr(), msg.as_ptr()); - } -} - -static NATIVE_WINDOW: Lazy>> = Lazy::new(Default::default); -static INPUT_QUEUE: Lazy>> = Lazy::new(Default::default); -static CONTENT_RECT: Lazy> = Lazy::new(Default::default); -static LOOPER: Lazy>> = Lazy::new(Default::default); - -static mut NATIVE_ACTIVITY: Option = None; - -/// This function accesses a `static` variable internally and must only be used if you are sure -/// there is exactly one version of `ndk_glue` in your dependency tree. -/// -/// If you need access to the `JavaVM` through [`NativeActivity::vm()`] or Activity `Context` -/// through [`NativeActivity::activity()`], please use the [`ndk_context`] crate and its -/// [`ndk_context::android_context()`] getter to acquire the `JavaVM` and `Context` instead. -pub fn native_activity() -> &'static NativeActivity { - unsafe { NATIVE_ACTIVITY.as_ref().unwrap() } -} - -pub struct LockReadGuard(MappedRwLockReadGuard<'static, T>); - -impl LockReadGuard { - /// Transpose an [`Option`] wrapped inside a [`LockReadGuard`] - /// - /// This is a _read_ lock for which the contents can't change; hence allowing the user to only - /// check for [`None`] once and hold a lock containing `T` directly thereafter, without - /// subsequent infallible [`Option::unwrap()`]s. - fn from_wrapped_option(wrapped: RwLockReadGuard<'static, Option>) -> Option { - RwLockReadGuard::try_map(wrapped, Option::as_ref) - .ok() - .map(Self) - } -} - -impl Deref for LockReadGuard { - type Target = T; - - fn deref(&self) -> &Self::Target { - &self.0 - } -} - -impl fmt::Debug for LockReadGuard { - fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - self.0.fmt(f) - } -} - -impl fmt::Display for LockReadGuard { - fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - self.0.fmt(f) - } -} - -/// Returns a [`NativeWindow`] held inside a lock, preventing Android from freeing it immediately -/// in [its `NativeWindow` destructor]. -/// -/// If the window is in use by e.g. a graphics API, make sure to hold on to this lock. -/// -/// After receiving [`Event::WindowDestroyed`] `ndk-glue` will block in Android's [`NativeWindow`] destructor -/// callback until the lock is released, returning to Android and allowing it to free the window. -/// -/// [its `NativeWindow` destructor]: https://developer.android.com/ndk/reference/struct/a-native-activity-callbacks#onnativewindowdestroyed -/// -/// # Warning -/// This function accesses a `static` variable internally and must only be used if you are sure -/// there is exactly one version of `ndk_glue` in your dependency tree. -pub fn native_window() -> Option> { - LockReadGuard::from_wrapped_option(NATIVE_WINDOW.read()) -} - -/// Returns an [`InputQueue`] held inside a lock, preventing Android from freeing it immediately -/// in [its `InputQueue` destructor]. -/// -/// After receiving [`Event::InputQueueDestroyed`] `ndk-glue` will block in Android's [`InputQueue`] destructor -/// callback until the lock is released, returning to Android and allowing it to free the window. -/// -/// [its `InputQueue` destructor]: https://developer.android.com/ndk/reference/struct/a-native-activity-callbacks#oninputqueuedestroyed -/// -/// # Warning -/// This function accesses a `static` variable internally and must only be used if you are sure -/// there is exactly one version of `ndk_glue` in your dependency tree. -pub fn input_queue() -> Option> { - LockReadGuard::from_wrapped_option(INPUT_QUEUE.read()) -} - -/// This function accesses a `static` variable internally and must only be used if you are sure -/// there is exactly one version of `ndk_glue` in your dependency tree. -pub fn content_rect() -> Rect { - CONTENT_RECT.read().clone() -} - -static PIPE: Lazy<[RawFd; 2]> = Lazy::new(|| { - let mut pipe: [RawFd; 2] = Default::default(); - unsafe { libc::pipe(pipe.as_mut_ptr()) }; - pipe -}); - -pub fn poll_events() -> Option { - unsafe { - let size = std::mem::size_of::(); - let mut event = Event::Start; - if libc::read(PIPE[0], &mut event as *mut _ as *mut _, size) == size as _ { - Some(event) - } else { - None - } - } -} - -unsafe fn wake(_activity: *mut ANativeActivity, event: Event) { - log::trace!("{:?}", event); - let size = std::mem::size_of::(); - let res = libc::write(PIPE[1], &event as *const _ as *const _, size); - assert_eq!(res, size as _); -} - -#[derive(Clone, Debug, Default, Eq, PartialEq)] -pub struct Rect { - pub left: u32, - pub top: u32, - pub right: u32, - pub bottom: u32, -} - -#[derive(Clone, Debug, Eq, PartialEq)] -#[repr(u8)] -pub enum Event { - Start, - Resume, - SaveInstanceState, - Pause, - Stop, - Destroy, - ConfigChanged, - LowMemory, - WindowLostFocus, - WindowHasFocus, - /// A [`NativeWindow`] is now available through [`native_window()`]. See that function for more - /// details about holding on to the returned [`LockReadGuard`]. - /// - /// Be sure to release any resources (e.g. Vulkan/OpenGL graphics surfaces) created from - /// it followed by releasing this lock upon receiving [`Event::WindowDestroyed`]. - WindowCreated, - WindowResized, - WindowRedrawNeeded, - /// If the window is in use by e.g. a graphics API, make sure the [`LockReadGuard`] from - /// [`native_window()`] is held on to until after freeing those resources. - /// - /// After receiving this [`Event`] `ndk_glue` will block inside its [`NativeWindow`] destructor - /// until that read-lock is released before returning to Android and allowing it to free the - /// window. - /// - /// From this point [`native_window()`] will return [`None`] until receiving - /// [`Event::WindowCreated`] again. - WindowDestroyed, - /// An [`InputQueue`] is now available through [`input_queue()`]. - /// - /// Be sure to release the returned lock upon receiving [`Event::InputQueueDestroyed`]. - InputQueueCreated, - /// After receiving this [`Event`] `ndk_glue` will block inside its [`InputQueue`] destructor - /// until the read-lock from [`input_queue()`] is released before returning to Android and - /// allowing it to free the input queue. - /// - /// From this point [`input_queue()`] will return [`None`] until receiving - /// [`Event::InputQueueCreated`] again. - InputQueueDestroyed, - ContentRectChanged, -} - -/// # Safety -/// `activity` must either be null (resulting in a safe panic) -/// or a pointer to a valid Android `ANativeActivity`. -pub unsafe fn init( - activity: *mut ANativeActivity, - _saved_state: *mut u8, - _saved_state_size: usize, - main: fn(), -) { - let mut activity = NonNull::new(activity).unwrap(); - let mut callbacks = activity.as_mut().callbacks.as_mut().unwrap(); - callbacks.onStart = Some(on_start); - callbacks.onResume = Some(on_resume); - callbacks.onSaveInstanceState = Some(on_save_instance_state); - callbacks.onPause = Some(on_pause); - callbacks.onStop = Some(on_stop); - callbacks.onDestroy = Some(on_destroy); - callbacks.onWindowFocusChanged = Some(on_window_focus_changed); - callbacks.onNativeWindowCreated = Some(on_window_created); - callbacks.onNativeWindowResized = Some(on_window_resized); - callbacks.onNativeWindowRedrawNeeded = Some(on_window_redraw_needed); - callbacks.onNativeWindowDestroyed = Some(on_window_destroyed); - callbacks.onInputQueueCreated = Some(on_input_queue_created); - callbacks.onInputQueueDestroyed = Some(on_input_queue_destroyed); - callbacks.onContentRectChanged = Some(on_content_rect_changed); - callbacks.onConfigurationChanged = Some(on_configuration_changed); - callbacks.onLowMemory = Some(on_low_memory); - - let activity = NativeActivity::from_ptr(activity); - ndk_context::initialize_android_context(activity.vm().cast(), activity.activity().cast()); - NATIVE_ACTIVITY.replace(activity); - - let mut logpipe: [RawFd; 2] = Default::default(); - libc::pipe(logpipe.as_mut_ptr()); - libc::dup2(logpipe[1], libc::STDOUT_FILENO); - libc::dup2(logpipe[1], libc::STDERR_FILENO); - thread::spawn(move || { - let tag = CStr::from_bytes_with_nul(b"RustStdoutStderr\0").unwrap(); - let file = File::from_raw_fd(logpipe[0]); - let mut reader = BufReader::new(file); - let mut buffer = String::new(); - loop { - buffer.clear(); - if let Ok(len) = reader.read_line(&mut buffer) { - if len == 0 { - break; - } else if let Ok(msg) = CString::new(buffer.clone()) { - android_log(Level::Info, tag, &msg); - } - } - } - }); - - let looper_ready = Arc::new(Condvar::new()); - let signal_looper_ready = looper_ready.clone(); - - thread::spawn(move || { - let looper = ThreadLooper::prepare(); - let foreign = looper.into_foreign(); - foreign - .add_fd( - PIPE[0], - NDK_GLUE_LOOPER_EVENT_PIPE_IDENT, - FdEvent::INPUT, - std::ptr::null_mut(), - ) - .unwrap(); - - { - let mut locked_looper = LOOPER.lock().unwrap(); - locked_looper.replace(foreign); - signal_looper_ready.notify_one(); - } - - main() - }); - - // Don't return from this function (`ANativeActivity_onCreate`) until the thread - // has created its `ThreadLooper` and assigned it to the static `LOOPER` - // variable. It will be used from `on_input_queue_created` as soon as this - // function returns. - let locked_looper = LOOPER.lock().unwrap(); - let _mutex_guard = looper_ready - .wait_while(locked_looper, |looper| looper.is_none()) - .unwrap(); -} - -unsafe extern "C" fn on_start(activity: *mut ANativeActivity) { - wake(activity, Event::Start); -} - -unsafe extern "C" fn on_resume(activity: *mut ANativeActivity) { - wake(activity, Event::Resume); -} - -unsafe extern "C" fn on_save_instance_state( - activity: *mut ANativeActivity, - _out_size: *mut ndk_sys::size_t, -) -> *mut raw::c_void { - // TODO - wake(activity, Event::SaveInstanceState); - std::ptr::null_mut() -} - -unsafe extern "C" fn on_pause(activity: *mut ANativeActivity) { - wake(activity, Event::Pause); -} - -unsafe extern "C" fn on_stop(activity: *mut ANativeActivity) { - wake(activity, Event::Stop); -} - -unsafe extern "C" fn on_destroy(activity: *mut ANativeActivity) { - wake(activity, Event::Destroy); - ndk_context::release_android_context(); -} - -unsafe extern "C" fn on_configuration_changed(activity: *mut ANativeActivity) { - wake(activity, Event::ConfigChanged); -} - -unsafe extern "C" fn on_low_memory(activity: *mut ANativeActivity) { - wake(activity, Event::LowMemory); -} - -unsafe extern "C" fn on_window_focus_changed( - activity: *mut ANativeActivity, - has_focus: raw::c_int, -) { - let event = if has_focus == 0 { - Event::WindowLostFocus - } else { - Event::WindowHasFocus - }; - wake(activity, event); -} - -unsafe extern "C" fn on_window_created(activity: *mut ANativeActivity, window: *mut ANativeWindow) { - NATIVE_WINDOW - .write() - .replace(NativeWindow::clone_from_ptr(NonNull::new(window).unwrap())); - wake(activity, Event::WindowCreated); -} - -unsafe extern "C" fn on_window_resized( - activity: *mut ANativeActivity, - _window: *mut ANativeWindow, -) { - wake(activity, Event::WindowResized); -} - -unsafe extern "C" fn on_window_redraw_needed( - activity: *mut ANativeActivity, - _window: *mut ANativeWindow, -) { - wake(activity, Event::WindowRedrawNeeded); -} - -unsafe extern "C" fn on_window_destroyed( - activity: *mut ANativeActivity, - window: *mut ANativeWindow, -) { - wake(activity, Event::WindowDestroyed); - let mut native_window_guard = NATIVE_WINDOW.write(); - assert_eq!(native_window_guard.as_ref().unwrap().ptr().as_ptr(), window); - native_window_guard.take(); -} - -unsafe extern "C" fn on_input_queue_created( - activity: *mut ANativeActivity, - queue: *mut AInputQueue, -) { - let input_queue = InputQueue::from_ptr(NonNull::new(queue).unwrap()); - let locked_looper = LOOPER.lock().unwrap(); - // The looper should always be `Some` after `fn init()` returns, unless - // future code cleans it up and sets it back to `None` again. - let looper = locked_looper.as_ref().expect("Looper does not exist"); - input_queue.attach_looper(looper, NDK_GLUE_LOOPER_INPUT_QUEUE_IDENT); - INPUT_QUEUE.write().replace(input_queue); - wake(activity, Event::InputQueueCreated); -} - -unsafe extern "C" fn on_input_queue_destroyed( - activity: *mut ANativeActivity, - queue: *mut AInputQueue, -) { - wake(activity, Event::InputQueueDestroyed); - let mut input_queue_guard = INPUT_QUEUE.write(); - assert_eq!(input_queue_guard.as_ref().unwrap().ptr().as_ptr(), queue); - let input_queue = InputQueue::from_ptr(NonNull::new(queue).unwrap()); - input_queue.detach_looper(); - input_queue_guard.take(); -} - -unsafe extern "C" fn on_content_rect_changed(activity: *mut ANativeActivity, rect: *const ARect) { - let rect = Rect { - left: (*rect).left as _, - top: (*rect).top as _, - right: (*rect).right as _, - bottom: (*rect).bottom as _, - }; - *CONTENT_RECT.write() = rect; - wake(activity, Event::ContentRectChanged); -} diff --git a/ndk-macro/CHANGELOG.md b/ndk-macro/CHANGELOG.md deleted file mode 100644 index d4521b36..00000000 --- a/ndk-macro/CHANGELOG.md +++ /dev/null @@ -1,15 +0,0 @@ -# Unreleased - -# 0.3.0 (2021-11-22) - -- **Breaking:** Removed `android_logger` and `log` crate path overrides from macro input attributes in favour of using the reexports from `ndk-glue`. - Applications no longer have to provide these crates in scope of the `ndk_glue::main` macro when logging is enabled. - -# 0.2.0 (2020-09-15) - -- Added crate name override option -- **Breaking:** Changed macro attribute syntax - -# 0.1.0 (2020-07-29) - -- Initial release! 🎉 diff --git a/ndk-macro/Cargo.toml b/ndk-macro/Cargo.toml deleted file mode 100644 index bfbb3144..00000000 --- a/ndk-macro/Cargo.toml +++ /dev/null @@ -1,29 +0,0 @@ -[package] -name = "ndk-macro" -version = "0.3.0" -authors = ["The Rust Windowing contributors"] -edition = "2018" -description = "Helper macros for android ndk" -license = "MIT OR Apache-2.0" -keywords = ["android", "ndk"] -readme = "README.md" -documentation = "https://docs.rs/ndk-macro" -homepage = "https://github.com/rust-windowing/android-ndk-rs" -repository = "https://github.com/rust-windowing/android-ndk-rs" - -[lib] -proc-macro = true - -[dependencies] -proc-macro2 = "1.0.24" -proc-macro-crate = "1.0" -quote = "1.0.8" -syn = { version = "1.0.60", features = ["full"] } -darling = "0.14" - -[features] -default = [] -logger = [] - -[package.metadata.docs.rs] -rustdoc-args = ["--cfg", "docsrs"] diff --git a/ndk-macro/README.md b/ndk-macro/README.md deleted file mode 100644 index d09671f3..00000000 --- a/ndk-macro/README.md +++ /dev/null @@ -1,22 +0,0 @@ -# ndk-macro - -Implementation of the attribute procedural macro `main` which applied directly to main function. - -This macro is re-exported in `ndk-glue`. Typically, it's not needed to depend on this library directly! - -## Usage -```Rust -#[cfg_attr(target_os = "android", ndk_glue::main(backtrace = "on"))] -pub fn main() { - println!("hello world"); -} -``` - -The attribute macro supports optional input attributes: - -- `backtrace = "on|full"`: Enables backtraces by setting the `RUST_BACKTRACE` env var -- `ndk_glue = "path::to::ndk_glue"`: Overrides default path to __ndk_glue__ crate -- `logger(...props)`: Configures android logger with the passed configuration (requires the `logger` feature): - - `level = "error|warn|info|debug|trace"`: Changes log level for logger - - `tag = "my-tag"`: Assigns tag to logger - - `filter = "filtering-rules"`: Changes default filtering rules diff --git a/ndk-macro/src/expand.rs b/ndk-macro/src/expand.rs deleted file mode 100644 index 28df80ce..00000000 --- a/ndk-macro/src/expand.rs +++ /dev/null @@ -1,503 +0,0 @@ -use core::iter::once; -use proc_macro2::TokenStream; -use quote::{quote, ToTokens}; -use syn::ItemFn; - -use crate::{ - helper::crate_path, - parse::{BacktraceProp, MainAttr}, -}; - -impl ToTokens for BacktraceProp { - fn to_tokens(&self, tokens: &mut TokenStream) { - use BacktraceProp::*; - - let prop = match self { - On => Some(quote! { "1" }), - Full => Some(quote! { "full" }), - }; - - tokens.extend(quote! { - std::env::set_var("RUST_BACKTRACE", #prop); - }); - } -} - -#[cfg(feature = "logger")] -mod logger { - use super::*; - use crate::parse::{LogLevel, LoggerProp}; - use syn::Path; - - impl LoggerProp { - pub(crate) fn expand(&self, glue_crate: &Path) -> TokenStream { - let mut withs = Vec::new(); - - if let Some(tag) = &self.tag { - withs.push(quote! { with_tag(#tag) }); - } - if let Some(level) = &self.level { - withs.push(quote! { with_min_level(#glue_crate::log::Level::#level) }); - } - if let Some(filter) = &self.filter { - withs.push(quote! { - with_filter(#glue_crate::android_logger::FilterBuilder::new().parse(#filter).build()) - }); - } - - quote! { - #glue_crate::android_logger::init_once( - #glue_crate::android_logger::Config::default() - #(.#withs)* - ); - } - } - } - - impl ToTokens for LogLevel { - fn to_tokens(&self, tokens: &mut TokenStream) { - use LogLevel::*; - - tokens.extend(match self { - Error => quote! { Error }, - Warn => quote! { Warn }, - Info => quote! { Info }, - Debug => quote! { Debug }, - Trace => quote! { Trace }, - }); - } - } -} - -impl MainAttr { - pub fn expand(&self, main_fn_item: &ItemFn) -> TokenStream { - let main_fn_name = &main_fn_item.sig.ident; - let glue_crate = crate_path("ndk-glue", &self.ndk_glue); - - let preamble = { - let backtrace = &self.backtrace; - once(quote! { #backtrace }) - }; - - #[cfg(feature = "logger")] - let preamble = preamble.chain( - self.logger - .as_ref() - .map(|l| l.expand(&glue_crate)) - .into_iter(), - ); - - quote! { - #[no_mangle] - unsafe extern "C" fn ANativeActivity_onCreate( - activity: *mut std::os::raw::c_void, - saved_state: *mut std::os::raw::c_void, - saved_state_size: usize, - ) { - #(#preamble)* - #glue_crate::init( - activity as _, - saved_state as _, - saved_state_size as _, - #main_fn_name, - ); - } - - #main_fn_item - } - } -} - -#[cfg(test)] -mod test { - use crate::parse::{BacktraceProp, MainAttr}; - use quote::quote; - use syn::parse_quote; - - #[test] - fn main_without_props() { - let attr = MainAttr::default(); - let item = parse_quote! { fn main() {} }; - let actual = attr.expand(&item); - let expected = quote! { - #[no_mangle] - unsafe extern "C" fn ANativeActivity_onCreate( - activity: *mut std::os::raw::c_void, - saved_state: *mut std::os::raw::c_void, - saved_state_size: usize, - ) { - ndk_glue::init( - activity as _, - saved_state as _, - saved_state_size as _, - main, - ); - } - fn main() {} - }; - assert_eq!(actual.to_string(), expected.to_string()); - } - - #[test] - fn main_with_backtrace_on() { - let attr = MainAttr { - backtrace: Some(BacktraceProp::On), - ..Default::default() - }; - let item = parse_quote! { fn main() {} }; - let actual = attr.expand(&item); - let expected = quote! { - #[no_mangle] - unsafe extern "C" fn ANativeActivity_onCreate( - activity: *mut std::os::raw::c_void, - saved_state: *mut std::os::raw::c_void, - saved_state_size: usize, - ) { - std::env::set_var("RUST_BACKTRACE", "1"); - ndk_glue::init( - activity as _, - saved_state as _, - saved_state_size as _, - main, - ); - } - fn main() {} - }; - assert_eq!(actual.to_string(), expected.to_string()); - } - - #[test] - fn main_with_backtrace_full() { - let attr = MainAttr { - backtrace: Some(BacktraceProp::Full), - ..Default::default() - }; - let item = parse_quote! { fn main() {} }; - let actual = attr.expand(&item); - let expected = quote! { - #[no_mangle] - unsafe extern "C" fn ANativeActivity_onCreate( - activity: *mut std::os::raw::c_void, - saved_state: *mut std::os::raw::c_void, - saved_state_size: usize, - ) { - std::env::set_var("RUST_BACKTRACE", "full"); - ndk_glue::init( - activity as _, - saved_state as _, - saved_state_size as _, - main, - ); - } - fn main() {} - }; - assert_eq!(actual.to_string(), expected.to_string()); - } - - #[test] - fn main_with_overridden_ndk_glue() { - let attr = MainAttr { - ndk_glue: Some(parse_quote! { my::re::exported::ndk_glue }), - ..Default::default() - }; - let item = parse_quote! { fn main() {} }; - let actual = attr.expand(&item); - let expected = quote! { - #[no_mangle] - unsafe extern "C" fn ANativeActivity_onCreate( - activity: *mut std::os::raw::c_void, - saved_state: *mut std::os::raw::c_void, - saved_state_size: usize, - ) { - my::re::exported::ndk_glue::init( - activity as _, - saved_state as _, - saved_state_size as _, - main, - ); - } - fn main() {} - }; - assert_eq!(actual.to_string(), expected.to_string()); - } - - #[cfg(feature = "logger")] - mod logger { - use super::*; - use crate::parse::{LogLevel, LoggerProp}; - - #[test] - fn main_with_logger_default() { - let attr = MainAttr { - logger: Some(LoggerProp::default()), - ..Default::default() - }; - let item = parse_quote! { fn main() {} }; - let actual = attr.expand(&item); - let expected = quote! { - #[no_mangle] - unsafe extern "C" fn ANativeActivity_onCreate( - activity: *mut std::os::raw::c_void, - saved_state: *mut std::os::raw::c_void, - saved_state_size: usize, - ) { - ndk_glue::android_logger::init_once( - ndk_glue::android_logger::Config::default() - ); - ndk_glue::init( - activity as _, - saved_state as _, - saved_state_size as _, - main, - ); - } - fn main() {} - }; - assert_eq!(actual.to_string(), expected.to_string()); - } - - #[test] - fn main_with_logger_with_min_level() { - let attr = MainAttr { - logger: Some(LoggerProp { - level: Some(LogLevel::Debug), - ..Default::default() - }), - ..Default::default() - }; - let item = parse_quote! { fn main() {} }; - let actual = attr.expand(&item); - let expected = quote! { - #[no_mangle] - unsafe extern "C" fn ANativeActivity_onCreate( - activity: *mut std::os::raw::c_void, - saved_state: *mut std::os::raw::c_void, - saved_state_size: usize, - ) { - ndk_glue::android_logger::init_once( - ndk_glue::android_logger::Config::default() - .with_min_level(ndk_glue::log::Level::Debug) - ); - ndk_glue::init( - activity as _, - saved_state as _, - saved_state_size as _, - main, - ); - } - fn main() {} - }; - assert_eq!(actual.to_string(), expected.to_string()); - } - - #[test] - fn main_with_logger_with_tag() { - let attr = MainAttr { - logger: Some(LoggerProp { - tag: Some("my-tag".into()), - ..Default::default() - }), - ..Default::default() - }; - let item = parse_quote! { fn my_main() {} }; - let actual = attr.expand(&item); - let expected = quote! { - #[no_mangle] - unsafe extern "C" fn ANativeActivity_onCreate( - activity: *mut std::os::raw::c_void, - saved_state: *mut std::os::raw::c_void, - saved_state_size: usize, - ) { - ndk_glue::android_logger::init_once( - ndk_glue::android_logger::Config::default() - .with_tag("my-tag") - ); - ndk_glue::init( - activity as _, - saved_state as _, - saved_state_size as _, - my_main, - ); - } - fn my_main() {} - }; - assert_eq!(actual.to_string(), expected.to_string()); - } - - #[test] - fn main_with_logger_with_filter() { - let attr = MainAttr { - logger: Some(LoggerProp { - filter: Some("debug,hellow::world=trace".into()), - ..Default::default() - }), - ..Default::default() - }; - let item = parse_quote! { fn my_main() {} }; - let actual = attr.expand(&item); - let expected = quote! { - #[no_mangle] - unsafe extern "C" fn ANativeActivity_onCreate( - activity: *mut std::os::raw::c_void, - saved_state: *mut std::os::raw::c_void, - saved_state_size: usize, - ) { - ndk_glue::android_logger::init_once( - ndk_glue::android_logger::Config::default() - .with_filter(ndk_glue::android_logger::FilterBuilder::new().parse("debug,hellow::world=trace").build()) - ); - ndk_glue::init( - activity as _, - saved_state as _, - saved_state_size as _, - my_main, - ); - } - fn my_main() {} - }; - assert_eq!(actual.to_string(), expected.to_string()); - } - - #[test] - fn main_with_logger_with_min_level_and_with_tag() { - let attr = MainAttr { - logger: Some(LoggerProp { - level: Some(LogLevel::Warn), - tag: Some("my-tag".into()), - ..Default::default() - }), - ..Default::default() - }; - let item = parse_quote! { fn my_main() {} }; - let actual = attr.expand(&item); - let expected = quote! { - #[no_mangle] - unsafe extern "C" fn ANativeActivity_onCreate( - activity: *mut std::os::raw::c_void, - saved_state: *mut std::os::raw::c_void, - saved_state_size: usize, - ) { - ndk_glue::android_logger::init_once( - ndk_glue::android_logger::Config::default() - .with_tag("my-tag") - .with_min_level(ndk_glue::log::Level::Warn) - ); - ndk_glue::init( - activity as _, - saved_state as _, - saved_state_size as _, - my_main, - ); - } - fn my_main() {} - }; - assert_eq!(actual.to_string(), expected.to_string()); - } - - #[test] - fn main_with_backtrace_on_and_logger_with_tag() { - let attr = MainAttr { - backtrace: Some(BacktraceProp::On), - logger: Some(LoggerProp { - tag: Some("my-tag".into()), - ..Default::default() - }), - ..Default::default() - }; - let item = parse_quote! { fn main() {} }; - let actual = attr.expand(&item); - let expected = quote! { - #[no_mangle] - unsafe extern "C" fn ANativeActivity_onCreate( - activity: *mut std::os::raw::c_void, - saved_state: *mut std::os::raw::c_void, - saved_state_size: usize, - ) { - std::env::set_var("RUST_BACKTRACE", "1"); - ndk_glue::android_logger::init_once( - ndk_glue::android_logger::Config::default() - .with_tag("my-tag") - ); - ndk_glue::init( - activity as _, - saved_state as _, - saved_state_size as _, - main, - ); - } - fn main() {} - }; - assert_eq!(actual.to_string(), expected.to_string()); - } - - #[test] - fn main_with_logger_with_overridden_ndk_glue_and_filter() { - let attr = MainAttr { - logger: Some(LoggerProp { - filter: Some("debug,hellow::world=trace".into()), - ..Default::default() - }), - ndk_glue: Some(parse_quote! { my::re::exported::ndk_glue }), - ..Default::default() - }; - let item = parse_quote! { fn main() {} }; - let actual = attr.expand(&item); - let expected = quote! { - #[no_mangle] - unsafe extern "C" fn ANativeActivity_onCreate( - activity: *mut std::os::raw::c_void, - saved_state: *mut std::os::raw::c_void, - saved_state_size: usize, - ) { - my::re::exported::ndk_glue::android_logger::init_once( - my::re::exported::ndk_glue::android_logger::Config::default() - .with_filter(my::re::exported::ndk_glue::android_logger::FilterBuilder::new().parse("debug,hellow::world=trace").build()) - ); - my::re::exported::ndk_glue::init( - activity as _, - saved_state as _, - saved_state_size as _, - main, - ); - } - fn main() {} - }; - assert_eq!(actual.to_string(), expected.to_string()); - } - - #[test] - fn main_with_logger_with_overridden_ndk_glue_and_log_level() { - let attr = MainAttr { - logger: Some(LoggerProp { - level: Some(LogLevel::Trace), - ..Default::default() - }), - ndk_glue: Some(parse_quote! { my::re::exported::ndk_glue }), - ..Default::default() - }; - let item = parse_quote! { fn main() {} }; - let actual = attr.expand(&item); - let expected = quote! { - #[no_mangle] - unsafe extern "C" fn ANativeActivity_onCreate( - activity: *mut std::os::raw::c_void, - saved_state: *mut std::os::raw::c_void, - saved_state_size: usize, - ) { - my::re::exported::ndk_glue::android_logger::init_once( - my::re::exported::ndk_glue::android_logger::Config::default() - .with_min_level(my::re::exported::ndk_glue::log::Level::Trace) - ); - my::re::exported::ndk_glue::init( - activity as _, - saved_state as _, - saved_state_size as _, - main, - ); - } - fn main() {} - }; - assert_eq!(actual.to_string(), expected.to_string()); - } - } -} diff --git a/ndk-macro/src/helper.rs b/ndk-macro/src/helper.rs deleted file mode 100644 index caf53bf9..00000000 --- a/ndk-macro/src/helper.rs +++ /dev/null @@ -1,66 +0,0 @@ -use core::ops::Deref; -use proc_macro2::{Ident, Span}; -use proc_macro_crate::FoundCrate; -use syn::{ - parse::{Parse, ParseStream, Result}, - Path, Token, -}; - -/// A newtype for testing -/// -/// This needed because AttributeArgs from syn crate is not a newtype and does not implements `Parse` trait -#[derive(Debug)] -pub struct AttributeArgs(syn::AttributeArgs); - -impl Deref for AttributeArgs { - type Target = syn::AttributeArgs; - fn deref(&self) -> &Self::Target { - &self.0 - } -} - -impl Parse for AttributeArgs { - fn parse(input: ParseStream) -> Result { - let mut metas = Vec::new(); - - loop { - if input.is_empty() { - break; - } - let value = input.parse()?; - metas.push(value); - if input.is_empty() { - break; - } - input.parse::()?; - } - - Ok(Self(metas)) - } -} - -#[cfg(not(test))] -use proc_macro_crate::crate_name; - -#[cfg(test)] -fn crate_name(name: &str) -> Result { - Ok(FoundCrate::Name(name.replace('-', "_"))) -} - -pub fn crate_path(name: &str, overridden_path: &Option) -> Path { - // try to use overridden crate path - overridden_path.clone().unwrap_or_else(|| { - Ident::new( - // try to determine crate name from Cargo.toml - match crate_name(name) - .as_ref() - .expect("Crate not found in `Cargo.toml`") - { - FoundCrate::Itself => "ndk_macro", - FoundCrate::Name(n) => n.as_str(), - }, - Span::call_site(), - ) - .into() - }) -} diff --git a/ndk-macro/src/lib.rs b/ndk-macro/src/lib.rs deleted file mode 100644 index 19daf679..00000000 --- a/ndk-macro/src/lib.rs +++ /dev/null @@ -1,24 +0,0 @@ -#![cfg_attr(docsrs, feature(doc_cfg, doc_auto_cfg))] - -use darling::FromMeta; -use proc_macro::TokenStream; -use syn::{parse_macro_input, ItemFn}; - -mod expand; -mod helper; -mod parse; - -use helper::AttributeArgs; -use parse::MainAttr; - -#[proc_macro_attribute] -pub fn main(attr_input: TokenStream, item_input: TokenStream) -> TokenStream { - let item_ast = parse_macro_input!(item_input as ItemFn); - let attr_ast = parse_macro_input!(attr_input as AttributeArgs); - let attr: MainAttr = match FromMeta::from_list(&attr_ast) { - Ok(attr) => attr, - Err(errs) => return TokenStream::from(errs.write_errors()), - }; - - attr.expand(&item_ast).into() -} diff --git a/ndk-macro/src/parse.rs b/ndk-macro/src/parse.rs deleted file mode 100644 index 70d0cd55..00000000 --- a/ndk-macro/src/parse.rs +++ /dev/null @@ -1,197 +0,0 @@ -use darling::FromMeta; -use syn::Path; - -#[cfg(feature = "logger")] -pub use logger::{LogLevel, LoggerProp}; - -#[derive(Default, FromMeta, Debug)] -#[darling(default)] -pub struct MainAttr { - pub backtrace: Option, - // Path to `ndk_glue` to override - pub ndk_glue: Option, - #[cfg(feature = "logger")] - pub logger: Option, -} - -#[derive(FromMeta, PartialEq, Eq, Debug, Clone, Copy)] -#[darling(default)] -pub enum BacktraceProp { - On, - Full, -} - -impl Default for BacktraceProp { - fn default() -> Self { - BacktraceProp::On - } -} - -#[cfg(feature = "logger")] -mod logger { - use super::*; - - #[derive(FromMeta, PartialEq, Eq, Default, Debug, Clone)] - #[darling(default)] - pub struct LoggerProp { - // Minimum log level - pub level: Option, - // Tag name for logger - pub tag: Option, - // Filtering rules - pub filter: Option, - } - - #[derive(FromMeta, PartialEq, Eq, Debug, Clone, Copy)] - #[darling(default)] - pub enum LogLevel { - Error, - Warn, - Info, - Debug, - Trace, - } - - impl Default for LogLevel { - fn default() -> Self { - LogLevel::Error - } - } -} - -#[cfg(test)] -mod test { - use super::*; - use crate::AttributeArgs; - use syn::parse_quote; - - #[test] - fn empty_attr() { - let attr: AttributeArgs = parse_quote! {}; - let attr: MainAttr = FromMeta::from_list(&attr).unwrap(); - - assert_eq!(attr.backtrace, None); - #[cfg(feature = "logger")] - assert_eq!(attr.logger, None); - } - - #[should_panic] - #[test] - fn invalid_attr() { - let attr: AttributeArgs = parse_quote! { - wrong - }; - let _attr: MainAttr = FromMeta::from_list(&attr).unwrap(); - } - - #[test] - fn backtrace_on() { - let attr: AttributeArgs = parse_quote! { - backtrace = "on" - }; - let attr: MainAttr = FromMeta::from_list(&attr).unwrap(); - - assert_eq!(attr.backtrace, Some(BacktraceProp::On)); - #[cfg(feature = "logger")] - assert_eq!(attr.logger, None); - } - - #[test] - fn backtrace_full() { - let attr: AttributeArgs = parse_quote! { - backtrace = "full" - }; - let attr: MainAttr = FromMeta::from_list(&attr).unwrap(); - - assert_eq!(attr.backtrace, Some(BacktraceProp::Full)); - #[cfg(feature = "logger")] - assert_eq!(attr.logger, None); - } - - #[test] - fn overridden_ndk_glue() { - let attr: AttributeArgs = parse_quote! { - ndk_glue = "my::re::exported::ndk_glue" - }; - let attr: MainAttr = FromMeta::from_list(&attr).unwrap(); - - let expected_path: Path = parse_quote! { - my::re::exported::ndk_glue - }; - - assert_eq!(attr.ndk_glue.unwrap(), expected_path); - } - - #[cfg(feature = "logger")] - mod logger { - use super::*; - - #[test] - fn logger_with_level() { - let attr: AttributeArgs = parse_quote! { - logger(level = "debug") - }; - let attr: MainAttr = FromMeta::from_list(&attr).unwrap(); - - let logger = attr.logger.unwrap(); - - assert_eq!(logger.level, Some(LogLevel::Debug)); - assert_eq!(logger.tag, None); - } - - #[test] - fn logger_with_tag() { - let attr: AttributeArgs = parse_quote! { - logger(tag = "my-tag") - }; - let attr: MainAttr = FromMeta::from_list(&attr).unwrap(); - - let logger = attr.logger.unwrap(); - - assert_eq!(logger.level, None); - assert_eq!(logger.tag.unwrap(), "my-tag"); - } - - #[test] - fn logger_with_filter() { - let attr: AttributeArgs = parse_quote! { - logger(filter = "debug,hello::world=trace") - }; - let attr: MainAttr = FromMeta::from_list(&attr).unwrap(); - - let logger = attr.logger.unwrap(); - - assert_eq!(logger.level, None); - assert_eq!(logger.filter.unwrap(), "debug,hello::world=trace"); - } - - #[test] - fn logger_with_level_and_with_tag() { - let attr: AttributeArgs = parse_quote! { - logger(level = "error", tag = "my-app") - }; - let attr: MainAttr = FromMeta::from_list(&attr).unwrap(); - - let logger = attr.logger.unwrap(); - - assert_eq!(logger.level, Some(LogLevel::Error)); - assert_eq!(logger.tag.unwrap(), "my-app"); - } - - #[test] - fn backtrace_on_and_logger_with_level_and_with_tag() { - let attr: AttributeArgs = parse_quote! { - logger(level = "warn", tag = "my-app"), - backtrace = "on" - }; - let attr: MainAttr = FromMeta::from_list(&attr).unwrap(); - - assert_eq!(attr.backtrace, Some(BacktraceProp::On)); - - let logger = attr.logger.unwrap(); - - assert_eq!(logger.level, Some(LogLevel::Warn)); - assert_eq!(logger.tag.unwrap(), "my-app"); - } - } -} diff --git a/ndk-sys/CHANGELOG.md b/ndk-sys/CHANGELOG.md index 23f10767..fb21f98a 100644 --- a/ndk-sys/CHANGELOG.md +++ b/ndk-sys/CHANGELOG.md @@ -1,14 +1,20 @@ # Unreleased +- Regenerate against NDK 25.0.8775105 with `rust-bindgen 0.59.2`. (#324) + +# 0.4.1 (2022-11-23) + +- Re-release of `0.4.0` to combat a faulty `0.4.0+25.0.8775105` publish. Now also includes `+23.1.7779620` version metadata. + # 0.4.0 (2022-07-24) -- **Breaking:** Turn `enum` type aliases into newtype wrappers. (#245, #315) +- **Breaking:** Turn `enum` type aliases into newtype wrappers (and regenerate with `rust-bindgen 0.59.2`). (#245, #315) # 0.3.0 (2022-01-05) - **Breaking:** Use `jni-sys` for low-level JNI types instead of those autogenerated by `bindgen` based on the header. These JNI types are _not_ publicly (re)exported anymore. (#209) -- Regenerate against NDK 23.1.7779620, now including all Android-related headers. (#201) +- Regenerate against NDK 23.1.7779620 with `rust-bindgen 0.59.1`, now including all Android-related headers. (#201) # 0.2.2 (2021-11-22) diff --git a/ndk-sys/Cargo.toml b/ndk-sys/Cargo.toml index 7c2ff123..34f1ef0f 100644 --- a/ndk-sys/Cargo.toml +++ b/ndk-sys/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "ndk-sys" -version = "0.4.0" +version = "0.4.0+25.0.8775105" authors = ["The Rust Windowing contributors"] edition = "2018" description = "FFI bindings for the Android NDK" @@ -10,6 +10,7 @@ readme = "../README.md" documentation = "https://docs.rs/android-ndk-sys" homepage = "https://github.com/rust-windowing/android-ndk-rs" repository = "https://github.com/rust-windowing/android-ndk-rs" +rust-version = "1.60" [dependencies] jni-sys = "0.3.0" diff --git a/ndk-sys/generate_bindings.sh b/ndk-sys/generate_bindings.sh index 7694c17d..9f81e760 100755 --- a/ndk-sys/generate_bindings.sh +++ b/ndk-sys/generate_bindings.sh @@ -1,5 +1,8 @@ #!/bin/sh +sysroot="${ANDROID_NDK_ROOT}"/toolchains/llvm/prebuilt/linux-x86_64/sysroot/ +[ ! -d "$sysroot" ] && echo "Android sysroot $sysroot does not exist!" && exit 1 + while read ARCH && read TARGET ; do bindgen wrapper.h -o src/ffi_$ARCH.rs \ --blocklist-item 'JNI\w+' \ @@ -14,8 +17,11 @@ while read ARCH && read TARGET ; do --newtype-enum 'AHdrMetadataType' \ --newtype-enum 'AIMAGE_FORMATS' \ --newtype-enum 'AMediaDrmEventType' \ + --newtype-enum 'AMediaDrmKeyRequestType' \ --newtype-enum 'AMediaDrmKeyType' \ --newtype-enum 'AMediaKeyStatusType' \ + --newtype-enum 'AMidiDevice_Protocol' \ + --newtype-enum 'AMotionClassification' \ --newtype-enum 'ANativeWindowTransform' \ --newtype-enum 'ANativeWindow_ChangeFrameRateStrategy' \ --newtype-enum 'ANativeWindow_FrameRateCompatibility' \ @@ -44,9 +50,7 @@ while read ARCH && read TARGET ; do --newtype-enum 'cryptoinfo_mode_t' \ --newtype-enum 'log_id' \ -- \ - --sysroot="${ANDROID_NDK_ROOT}"/toolchains/llvm/prebuilt/linux-x86_64/sysroot/ --target=$TARGET - - # --newtype-enum '_bindgen_ty_63' \ + --sysroot="$sysroot" --target=$TARGET done << EOF arm arm-linux-androideabi diff --git a/ndk-sys/src/ffi_aarch64.rs b/ndk-sys/src/ffi_aarch64.rs index 933d64fa..f7a08003 100644 --- a/ndk-sys/src/ffi_aarch64.rs +++ b/ndk-sys/src/ffi_aarch64.rs @@ -34,10 +34,10 @@ pub const __BIONIC__: u32 = 1; pub const __WORDSIZE: u32 = 64; pub const __bos_level: u32 = 0; pub const __ANDROID_NDK__: u32 = 1; -pub const __NDK_MAJOR__: u32 = 23; -pub const __NDK_MINOR__: u32 = 1; +pub const __NDK_MAJOR__: u32 = 25; +pub const __NDK_MINOR__: u32 = 0; pub const __NDK_BETA__: u32 = 0; -pub const __NDK_BUILD__: u32 = 7779620; +pub const __NDK_BUILD__: u32 = 8775105; pub const __NDK_CANARY__: u32 = 0; pub const __ANDROID_API_FUTURE__: u32 = 10000; pub const __ANDROID_API__: u32 = 10000; @@ -396,6 +396,8 @@ pub const SO_DETACH_REUSEPORT_BPF: u32 = 68; pub const SO_PREFER_BUSY_POLL: u32 = 69; pub const SO_BUSY_POLL_BUDGET: u32 = 70; pub const SO_NETNS_COOKIE: u32 = 71; +pub const SO_BUF_LOCK: u32 = 72; +pub const SO_RESERVE_MEM: u32 = 73; pub const SO_TIMESTAMP: u32 = 29; pub const SO_TIMESTAMPNS: u32 = 35; pub const SO_TIMESTAMPING: u32 = 37; @@ -1903,6 +1905,9 @@ impl AndroidBitmapFormat { impl AndroidBitmapFormat { pub const ANDROID_BITMAP_FORMAT_RGBA_F16: AndroidBitmapFormat = AndroidBitmapFormat(9); } +impl AndroidBitmapFormat { + pub const ANDROID_BITMAP_FORMAT_RGBA_1010102: AndroidBitmapFormat = AndroidBitmapFormat(10); +} #[repr(transparent)] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] pub struct AndroidBitmapFormat(pub ::std::os::raw::c_uint); @@ -2060,12 +2065,24 @@ extern "C" { pub struct AChoreographer { _unused: [u8; 0], } +pub type AVsyncId = i64; +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct AChoreographerFrameCallbackData { + _unused: [u8; 0], +} pub type AChoreographer_frameCallback = ::std::option::Option< unsafe extern "C" fn(frameTimeNanos: ::std::os::raw::c_long, data: *mut ::std::os::raw::c_void), >; pub type AChoreographer_frameCallback64 = ::std::option::Option< unsafe extern "C" fn(frameTimeNanos: i64, data: *mut ::std::os::raw::c_void), >; +pub type AChoreographer_vsyncCallback = ::std::option::Option< + unsafe extern "C" fn( + callbackData: *const AChoreographerFrameCallbackData, + data: *mut ::std::os::raw::c_void, + ), +>; pub type AChoreographer_refreshRateCallback = ::std::option::Option< unsafe extern "C" fn(vsyncPeriodNanos: i64, data: *mut ::std::os::raw::c_void), >; @@ -2102,6 +2119,13 @@ extern "C" { delayMillis: u32, ); } +extern "C" { + pub fn AChoreographer_postVsyncCallback( + choreographer: *mut AChoreographer, + callback: AChoreographer_vsyncCallback, + data: *mut ::std::os::raw::c_void, + ); +} extern "C" { pub fn AChoreographer_registerRefreshRateCallback( choreographer: *mut AChoreographer, @@ -2116,6 +2140,39 @@ extern "C" { data: *mut ::std::os::raw::c_void, ); } +extern "C" { + pub fn AChoreographerFrameCallbackData_getFrameTimeNanos( + data: *const AChoreographerFrameCallbackData, + ) -> i64; +} +extern "C" { + pub fn AChoreographerFrameCallbackData_getFrameTimelinesLength( + data: *const AChoreographerFrameCallbackData, + ) -> size_t; +} +extern "C" { + pub fn AChoreographerFrameCallbackData_getPreferredFrameTimelineIndex( + data: *const AChoreographerFrameCallbackData, + ) -> size_t; +} +extern "C" { + pub fn AChoreographerFrameCallbackData_getFrameTimelineVsyncId( + data: *const AChoreographerFrameCallbackData, + index: size_t, + ) -> AVsyncId; +} +extern "C" { + pub fn AChoreographerFrameCallbackData_getFrameTimelineExpectedPresentationTimeNanos( + data: *const AChoreographerFrameCallbackData, + index: size_t, + ) -> i64; +} +extern "C" { + pub fn AChoreographerFrameCallbackData_getFrameTimelineDeadlineNanos( + data: *const AChoreographerFrameCallbackData, + index: size_t, + ) -> i64; +} #[repr(C)] #[derive(Debug, Copy, Clone)] pub struct AConfiguration { @@ -2447,6 +2504,90 @@ extern "C" { impl ADataSpace { pub const ADATASPACE_UNKNOWN: ADataSpace = ADataSpace(0); } +impl ADataSpace { + pub const STANDARD_MASK: ADataSpace = ADataSpace(4128768); +} +impl ADataSpace { + pub const STANDARD_UNSPECIFIED: ADataSpace = ADataSpace(0); +} +impl ADataSpace { + pub const STANDARD_BT709: ADataSpace = ADataSpace(65536); +} +impl ADataSpace { + pub const STANDARD_BT601_625: ADataSpace = ADataSpace(131072); +} +impl ADataSpace { + pub const STANDARD_BT601_625_UNADJUSTED: ADataSpace = ADataSpace(196608); +} +impl ADataSpace { + pub const STANDARD_BT601_525: ADataSpace = ADataSpace(262144); +} +impl ADataSpace { + pub const STANDARD_BT601_525_UNADJUSTED: ADataSpace = ADataSpace(327680); +} +impl ADataSpace { + pub const STANDARD_BT2020: ADataSpace = ADataSpace(393216); +} +impl ADataSpace { + pub const STANDARD_BT2020_CONSTANT_LUMINANCE: ADataSpace = ADataSpace(458752); +} +impl ADataSpace { + pub const STANDARD_BT470M: ADataSpace = ADataSpace(524288); +} +impl ADataSpace { + pub const STANDARD_FILM: ADataSpace = ADataSpace(589824); +} +impl ADataSpace { + pub const STANDARD_DCI_P3: ADataSpace = ADataSpace(655360); +} +impl ADataSpace { + pub const STANDARD_ADOBE_RGB: ADataSpace = ADataSpace(720896); +} +impl ADataSpace { + pub const TRANSFER_MASK: ADataSpace = ADataSpace(130023424); +} +impl ADataSpace { + pub const TRANSFER_UNSPECIFIED: ADataSpace = ADataSpace(0); +} +impl ADataSpace { + pub const TRANSFER_LINEAR: ADataSpace = ADataSpace(4194304); +} +impl ADataSpace { + pub const TRANSFER_SRGB: ADataSpace = ADataSpace(8388608); +} +impl ADataSpace { + pub const TRANSFER_SMPTE_170M: ADataSpace = ADataSpace(12582912); +} +impl ADataSpace { + pub const TRANSFER_GAMMA2_2: ADataSpace = ADataSpace(16777216); +} +impl ADataSpace { + pub const TRANSFER_GAMMA2_6: ADataSpace = ADataSpace(20971520); +} +impl ADataSpace { + pub const TRANSFER_GAMMA2_8: ADataSpace = ADataSpace(25165824); +} +impl ADataSpace { + pub const TRANSFER_ST2084: ADataSpace = ADataSpace(29360128); +} +impl ADataSpace { + pub const TRANSFER_HLG: ADataSpace = ADataSpace(33554432); +} +impl ADataSpace { + pub const RANGE_MASK: ADataSpace = ADataSpace(939524096); +} +impl ADataSpace { + pub const RANGE_UNSPECIFIED: ADataSpace = ADataSpace(0); +} +impl ADataSpace { + pub const RANGE_FULL: ADataSpace = ADataSpace(134217728); +} +impl ADataSpace { + pub const RANGE_LIMITED: ADataSpace = ADataSpace(268435456); +} +impl ADataSpace { + pub const RANGE_EXTENDED: ADataSpace = ADataSpace(402653184); +} impl ADataSpace { pub const ADATASPACE_SCRGB_LINEAR: ADataSpace = ADataSpace(406913024); } @@ -2462,9 +2603,21 @@ impl ADataSpace { impl ADataSpace { pub const ADATASPACE_BT2020_PQ: ADataSpace = ADataSpace(163971072); } +impl ADataSpace { + pub const ADATASPACE_BT2020_ITU_PQ: ADataSpace = ADataSpace(298188800); +} impl ADataSpace { pub const ADATASPACE_ADOBE_RGB: ADataSpace = ADataSpace(151715840); } +impl ADataSpace { + pub const ADATASPACE_JFIF: ADataSpace = ADataSpace(146931712); +} +impl ADataSpace { + pub const ADATASPACE_BT601_625: ADataSpace = ADataSpace(281149440); +} +impl ADataSpace { + pub const ADATASPACE_BT601_525: ADataSpace = ADataSpace(281280512); +} impl ADataSpace { pub const ADATASPACE_BT2020: ADataSpace = ADataSpace(147193856); } @@ -2477,6 +2630,18 @@ impl ADataSpace { impl ADataSpace { pub const ADATASPACE_SRGB_LINEAR: ADataSpace = ADataSpace(138477568); } +impl ADataSpace { + pub const ADATASPACE_BT2020_HLG: ADataSpace = ADataSpace(168165376); +} +impl ADataSpace { + pub const ADATASPACE_BT2020_ITU_HLG: ADataSpace = ADataSpace(302383104); +} +impl ADataSpace { + pub const DEPTH: ADataSpace = ADataSpace(4096); +} +impl ADataSpace { + pub const DYNAMIC_DEPTH: ADataSpace = ADataSpace(4098); +} #[repr(transparent)] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] pub struct ADataSpace(pub ::std::os::raw::c_uint); @@ -2843,6 +3008,13 @@ impl AHardwareBuffer_Format { pub const AHARDWAREBUFFER_FORMAT_Y8Cb8Cr8_420: AHardwareBuffer_Format = AHardwareBuffer_Format(35); } +impl AHardwareBuffer_Format { + pub const AHARDWAREBUFFER_FORMAT_YCbCr_P010: AHardwareBuffer_Format = + AHardwareBuffer_Format(54); +} +impl AHardwareBuffer_Format { + pub const AHARDWAREBUFFER_FORMAT_R8_UNORM: AHardwareBuffer_Format = AHardwareBuffer_Format(56); +} #[repr(transparent)] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] pub struct AHardwareBuffer_Format(pub ::std::os::raw::c_uint); @@ -4062,6 +4234,7 @@ pub const AINPUT_EVENT_TYPE_MOTION: ::std::os::raw::c_uint = 2; pub const AINPUT_EVENT_TYPE_FOCUS: ::std::os::raw::c_uint = 3; pub const AINPUT_EVENT_TYPE_CAPTURE: ::std::os::raw::c_uint = 4; pub const AINPUT_EVENT_TYPE_DRAG: ::std::os::raw::c_uint = 5; +pub const AINPUT_EVENT_TYPE_TOUCH_MODE: ::std::os::raw::c_uint = 6; pub type _bindgen_ty_17 = ::std::os::raw::c_uint; pub const AKEY_EVENT_ACTION_DOWN: ::std::os::raw::c_uint = 0; pub const AKEY_EVENT_ACTION_UP: ::std::os::raw::c_uint = 1; @@ -4164,6 +4337,20 @@ pub const AMOTION_EVENT_TOOL_TYPE_MOUSE: ::std::os::raw::c_uint = 3; pub const AMOTION_EVENT_TOOL_TYPE_ERASER: ::std::os::raw::c_uint = 4; pub const AMOTION_EVENT_TOOL_TYPE_PALM: ::std::os::raw::c_uint = 5; pub type _bindgen_ty_25 = ::std::os::raw::c_uint; +impl AMotionClassification { + pub const AMOTION_EVENT_CLASSIFICATION_NONE: AMotionClassification = AMotionClassification(0); +} +impl AMotionClassification { + pub const AMOTION_EVENT_CLASSIFICATION_AMBIGUOUS_GESTURE: AMotionClassification = + AMotionClassification(1); +} +impl AMotionClassification { + pub const AMOTION_EVENT_CLASSIFICATION_DEEP_PRESS: AMotionClassification = + AMotionClassification(2); +} +#[repr(transparent)] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub struct AMotionClassification(pub u32); pub const AINPUT_SOURCE_CLASS_MASK: ::std::os::raw::c_uint = 255; pub const AINPUT_SOURCE_CLASS_NONE: ::std::os::raw::c_uint = 0; pub const AINPUT_SOURCE_CLASS_BUTTON: ::std::os::raw::c_uint = 1; @@ -4439,6 +4626,12 @@ extern "C" { history_index: size_t, ) -> f32; } +extern "C" { + pub fn AMotionEvent_getActionButton(motion_event: *const AInputEvent) -> i32; +} +extern "C" { + pub fn AMotionEvent_getClassification(motion_event: *const AInputEvent) -> i32; +} extern "C" { pub fn AMotionEvent_fromJava(env: *mut JNIEnv, motionEvent: jobject) -> *const AInputEvent; } @@ -4475,6 +4668,9 @@ extern "C" { handled: ::std::os::raw::c_int, ); } +extern "C" { + pub fn AInputQueue_fromJava(env: *mut JNIEnv, inputQueue: jobject) -> *mut AInputQueue; +} impl android_LogPriority { pub const ANDROID_LOG_UNKNOWN: android_LogPriority = android_LogPriority(0); } @@ -6599,6 +6795,133 @@ fn bindgen_test_layout_mallinfo() { extern "C" { pub fn mallinfo() -> mallinfo; } +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct mallinfo2 { + pub arena: size_t, + pub ordblks: size_t, + pub smblks: size_t, + pub hblks: size_t, + pub hblkhd: size_t, + pub usmblks: size_t, + pub fsmblks: size_t, + pub uordblks: size_t, + pub fordblks: size_t, + pub keepcost: size_t, +} +#[test] +fn bindgen_test_layout_mallinfo2() { + assert_eq!( + ::std::mem::size_of::(), + 80usize, + concat!("Size of: ", stringify!(mallinfo2)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(mallinfo2)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).arena as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(mallinfo2), + "::", + stringify!(arena) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).ordblks as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(mallinfo2), + "::", + stringify!(ordblks) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).smblks as *const _ as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(mallinfo2), + "::", + stringify!(smblks) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).hblks as *const _ as usize }, + 24usize, + concat!( + "Offset of field: ", + stringify!(mallinfo2), + "::", + stringify!(hblks) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).hblkhd as *const _ as usize }, + 32usize, + concat!( + "Offset of field: ", + stringify!(mallinfo2), + "::", + stringify!(hblkhd) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).usmblks as *const _ as usize }, + 40usize, + concat!( + "Offset of field: ", + stringify!(mallinfo2), + "::", + stringify!(usmblks) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).fsmblks as *const _ as usize }, + 48usize, + concat!( + "Offset of field: ", + stringify!(mallinfo2), + "::", + stringify!(fsmblks) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).uordblks as *const _ as usize }, + 56usize, + concat!( + "Offset of field: ", + stringify!(mallinfo2), + "::", + stringify!(uordblks) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).fordblks as *const _ as usize }, + 64usize, + concat!( + "Offset of field: ", + stringify!(mallinfo2), + "::", + stringify!(fordblks) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).keepcost as *const _ as usize }, + 72usize, + concat!( + "Offset of field: ", + stringify!(mallinfo2), + "::", + stringify!(keepcost) + ) + ); +} extern "C" { pub fn malloc_info( __must_be_zero: ::std::os::raw::c_int, @@ -7250,6 +7573,19 @@ extern "C" { extern "C" { pub fn android_res_cancel(nsend_fd: ::std::os::raw::c_int); } +extern "C" { + pub fn android_tag_socket_with_uid( + sockfd: ::std::os::raw::c_int, + tag: u32, + uid: uid_t, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn android_tag_socket(sockfd: ::std::os::raw::c_int, tag: u32) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn android_untag_socket(sockfd: ::std::os::raw::c_int) -> ::std::os::raw::c_int; +} impl ANativeWindow_LegacyFormat { pub const WINDOW_FORMAT_RGBA_8888: ANativeWindow_LegacyFormat = ANativeWindow_LegacyFormat(1); } @@ -8244,6 +8580,18 @@ impl OperationCode { impl OperationCode { pub const ANEURALNETWORKS_RANK: OperationCode = OperationCode(101); } +impl OperationCode { + pub const ANEURALNETWORKS_BATCH_MATMUL: OperationCode = OperationCode(102); +} +impl OperationCode { + pub const ANEURALNETWORKS_PACK: OperationCode = OperationCode(103); +} +impl OperationCode { + pub const ANEURALNETWORKS_MIRROR_PAD: OperationCode = OperationCode(104); +} +impl OperationCode { + pub const ANEURALNETWORKS_REVERSE: OperationCode = OperationCode(105); +} #[repr(transparent)] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] pub struct OperationCode(pub ::std::os::raw::c_uint); @@ -8316,6 +8664,15 @@ impl FeatureLevelCode { impl FeatureLevelCode { pub const ANEURALNETWORKS_FEATURE_LEVEL_5: FeatureLevelCode = FeatureLevelCode(31); } +impl FeatureLevelCode { + pub const ANEURALNETWORKS_FEATURE_LEVEL_6: FeatureLevelCode = FeatureLevelCode(1000006); +} +impl FeatureLevelCode { + pub const ANEURALNETWORKS_FEATURE_LEVEL_7: FeatureLevelCode = FeatureLevelCode(1000007); +} +impl FeatureLevelCode { + pub const ANEURALNETWORKS_FEATURE_LEVEL_8: FeatureLevelCode = FeatureLevelCode(1000008); +} #[repr(transparent)] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] pub struct FeatureLevelCode(pub ::std::os::raw::c_uint); @@ -9606,10 +9963,17 @@ pub const ASENSOR_TYPE_POSE_6DOF: ::std::os::raw::c_int = 28; pub const ASENSOR_TYPE_STATIONARY_DETECT: ::std::os::raw::c_int = 29; pub const ASENSOR_TYPE_MOTION_DETECT: ::std::os::raw::c_int = 30; pub const ASENSOR_TYPE_HEART_BEAT: ::std::os::raw::c_int = 31; +pub const ASENSOR_TYPE_DYNAMIC_SENSOR_META: ::std::os::raw::c_int = 32; pub const ASENSOR_TYPE_ADDITIONAL_INFO: ::std::os::raw::c_int = 33; pub const ASENSOR_TYPE_LOW_LATENCY_OFFBODY_DETECT: ::std::os::raw::c_int = 34; pub const ASENSOR_TYPE_ACCELEROMETER_UNCALIBRATED: ::std::os::raw::c_int = 35; pub const ASENSOR_TYPE_HINGE_ANGLE: ::std::os::raw::c_int = 36; +pub const ASENSOR_TYPE_HEAD_TRACKER: ::std::os::raw::c_int = 37; +pub const ASENSOR_TYPE_ACCELEROMETER_LIMITED_AXES: ::std::os::raw::c_int = 38; +pub const ASENSOR_TYPE_GYROSCOPE_LIMITED_AXES: ::std::os::raw::c_int = 39; +pub const ASENSOR_TYPE_ACCELEROMETER_LIMITED_AXES_UNCALIBRATED: ::std::os::raw::c_int = 40; +pub const ASENSOR_TYPE_GYROSCOPE_LIMITED_AXES_UNCALIBRATED: ::std::os::raw::c_int = 41; +pub const ASENSOR_TYPE_HEADING: ::std::os::raw::c_int = 42; pub type _bindgen_ty_38 = ::std::os::raw::c_int; pub const ASENSOR_STATUS_NO_CONTACT: ::std::os::raw::c_int = -1; pub const ASENSOR_STATUS_UNRELIABLE: ::std::os::raw::c_int = 0; @@ -10263,480 +10627,1228 @@ fn bindgen_test_layout_AAdditionalInfoEvent() { ); } #[repr(C)] -#[derive(Copy, Clone)] -pub struct ASensorEvent { - pub version: i32, - pub sensor: i32, - pub type_: i32, - pub reserved0: i32, - pub timestamp: i64, - pub __bindgen_anon_1: ASensorEvent__bindgen_ty_1, - pub flags: u32, - pub reserved1: [i32; 3usize], -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union ASensorEvent__bindgen_ty_1 { - pub __bindgen_anon_1: ASensorEvent__bindgen_ty_1__bindgen_ty_1, - pub u64_: ASensorEvent__bindgen_ty_1__bindgen_ty_2, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union ASensorEvent__bindgen_ty_1__bindgen_ty_1 { - pub data: [f32; 16usize], - pub vector: ASensorVector, - pub acceleration: ASensorVector, - pub gyro: ASensorVector, - pub magnetic: ASensorVector, - pub temperature: f32, - pub distance: f32, - pub light: f32, - pub pressure: f32, - pub relative_humidity: f32, - pub uncalibrated_acceleration: AUncalibratedEvent, - pub uncalibrated_gyro: AUncalibratedEvent, - pub uncalibrated_magnetic: AUncalibratedEvent, - pub meta_data: AMetaDataEvent, - pub heart_rate: AHeartRateEvent, - pub dynamic_sensor_meta: ADynamicSensorEvent, - pub additional_info: AAdditionalInfoEvent, +#[derive(Debug, Copy, Clone)] +pub struct AHeadTrackerEvent { + pub rx: f32, + pub ry: f32, + pub rz: f32, + pub vx: f32, + pub vy: f32, + pub vz: f32, + pub discontinuity_count: i32, } #[test] -fn bindgen_test_layout_ASensorEvent__bindgen_ty_1__bindgen_ty_1() { +fn bindgen_test_layout_AHeadTrackerEvent() { assert_eq!( - ::std::mem::size_of::(), - 64usize, - concat!( - "Size of: ", - stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_1) - ) + ::std::mem::size_of::(), + 28usize, + concat!("Size of: ", stringify!(AHeadTrackerEvent)) ); assert_eq!( - ::std::mem::align_of::(), + ::std::mem::align_of::(), 4usize, - concat!( - "Alignment of ", - stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_1) - ) + concat!("Alignment of ", stringify!(AHeadTrackerEvent)) ); assert_eq!( - unsafe { - &(*(::std::ptr::null::())).data as *const _ - as usize - }, + unsafe { &(*(::std::ptr::null::())).rx as *const _ as usize }, 0usize, concat!( "Offset of field: ", - stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_1), + stringify!(AHeadTrackerEvent), "::", - stringify!(data) + stringify!(rx) ) ); assert_eq!( - unsafe { - &(*(::std::ptr::null::())).vector as *const _ - as usize - }, - 0usize, + unsafe { &(*(::std::ptr::null::())).ry as *const _ as usize }, + 4usize, concat!( "Offset of field: ", - stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_1), + stringify!(AHeadTrackerEvent), "::", - stringify!(vector) + stringify!(ry) ) ); assert_eq!( - unsafe { - &(*(::std::ptr::null::())).acceleration - as *const _ as usize - }, - 0usize, + unsafe { &(*(::std::ptr::null::())).rz as *const _ as usize }, + 8usize, concat!( "Offset of field: ", - stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_1), + stringify!(AHeadTrackerEvent), "::", - stringify!(acceleration) + stringify!(rz) ) ); assert_eq!( - unsafe { - &(*(::std::ptr::null::())).gyro as *const _ - as usize - }, - 0usize, + unsafe { &(*(::std::ptr::null::())).vx as *const _ as usize }, + 12usize, concat!( "Offset of field: ", - stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_1), + stringify!(AHeadTrackerEvent), "::", - stringify!(gyro) + stringify!(vx) ) ); assert_eq!( - unsafe { - &(*(::std::ptr::null::())).magnetic - as *const _ as usize - }, - 0usize, + unsafe { &(*(::std::ptr::null::())).vy as *const _ as usize }, + 16usize, concat!( "Offset of field: ", - stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_1), + stringify!(AHeadTrackerEvent), "::", - stringify!(magnetic) + stringify!(vy) ) ); assert_eq!( - unsafe { - &(*(::std::ptr::null::())).temperature - as *const _ as usize - }, - 0usize, + unsafe { &(*(::std::ptr::null::())).vz as *const _ as usize }, + 20usize, concat!( "Offset of field: ", - stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_1), + stringify!(AHeadTrackerEvent), "::", - stringify!(temperature) + stringify!(vz) ) ); assert_eq!( unsafe { - &(*(::std::ptr::null::())).distance - as *const _ as usize + &(*(::std::ptr::null::())).discontinuity_count as *const _ as usize }, - 0usize, + 24usize, concat!( "Offset of field: ", - stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_1), + stringify!(AHeadTrackerEvent), "::", - stringify!(distance) + stringify!(discontinuity_count) ) ); +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct ALimitedAxesImuEvent { + pub __bindgen_anon_1: ALimitedAxesImuEvent__bindgen_ty_1, + pub __bindgen_anon_2: ALimitedAxesImuEvent__bindgen_ty_2, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union ALimitedAxesImuEvent__bindgen_ty_1 { + pub calib: [f32; 3usize], + pub __bindgen_anon_1: ALimitedAxesImuEvent__bindgen_ty_1__bindgen_ty_1, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ALimitedAxesImuEvent__bindgen_ty_1__bindgen_ty_1 { + pub x: f32, + pub y: f32, + pub z: f32, +} +#[test] +fn bindgen_test_layout_ALimitedAxesImuEvent__bindgen_ty_1__bindgen_ty_1() { assert_eq!( - unsafe { - &(*(::std::ptr::null::())).light as *const _ - as usize - }, - 0usize, + ::std::mem::size_of::(), + 12usize, concat!( - "Offset of field: ", - stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_1), - "::", - stringify!(light) + "Size of: ", + stringify!(ALimitedAxesImuEvent__bindgen_ty_1__bindgen_ty_1) ) ); assert_eq!( - unsafe { - &(*(::std::ptr::null::())).pressure - as *const _ as usize - }, - 0usize, + ::std::mem::align_of::(), + 4usize, concat!( - "Offset of field: ", - stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_1), - "::", - stringify!(pressure) + "Alignment of ", + stringify!(ALimitedAxesImuEvent__bindgen_ty_1__bindgen_ty_1) ) ); assert_eq!( unsafe { - &(*(::std::ptr::null::())).relative_humidity + &(*(::std::ptr::null::())).x as *const _ as usize }, 0usize, concat!( "Offset of field: ", - stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_1), + stringify!(ALimitedAxesImuEvent__bindgen_ty_1__bindgen_ty_1), "::", - stringify!(relative_humidity) + stringify!(x) ) ); assert_eq!( unsafe { - &(*(::std::ptr::null::())) - .uncalibrated_acceleration as *const _ as usize + &(*(::std::ptr::null::())).y + as *const _ as usize }, - 0usize, + 4usize, concat!( "Offset of field: ", - stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_1), + stringify!(ALimitedAxesImuEvent__bindgen_ty_1__bindgen_ty_1), "::", - stringify!(uncalibrated_acceleration) + stringify!(y) ) ); assert_eq!( unsafe { - &(*(::std::ptr::null::())).uncalibrated_gyro + &(*(::std::ptr::null::())).z as *const _ as usize }, - 0usize, + 8usize, concat!( "Offset of field: ", - stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_1), + stringify!(ALimitedAxesImuEvent__bindgen_ty_1__bindgen_ty_1), "::", - stringify!(uncalibrated_gyro) + stringify!(z) + ) + ); +} +#[test] +fn bindgen_test_layout_ALimitedAxesImuEvent__bindgen_ty_1() { + assert_eq!( + ::std::mem::size_of::(), + 12usize, + concat!("Size of: ", stringify!(ALimitedAxesImuEvent__bindgen_ty_1)) + ); + assert_eq!( + ::std::mem::align_of::(), + 4usize, + concat!( + "Alignment of ", + stringify!(ALimitedAxesImuEvent__bindgen_ty_1) ) ); assert_eq!( unsafe { - &(*(::std::ptr::null::())) - .uncalibrated_magnetic as *const _ as usize + &(*(::std::ptr::null::())).calib as *const _ + as usize }, 0usize, concat!( "Offset of field: ", - stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_1), + stringify!(ALimitedAxesImuEvent__bindgen_ty_1), "::", - stringify!(uncalibrated_magnetic) + stringify!(calib) + ) + ); +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union ALimitedAxesImuEvent__bindgen_ty_2 { + pub supported: [f32; 3usize], + pub __bindgen_anon_1: ALimitedAxesImuEvent__bindgen_ty_2__bindgen_ty_1, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ALimitedAxesImuEvent__bindgen_ty_2__bindgen_ty_1 { + pub x_supported: f32, + pub y_supported: f32, + pub z_supported: f32, +} +#[test] +fn bindgen_test_layout_ALimitedAxesImuEvent__bindgen_ty_2__bindgen_ty_1() { + assert_eq!( + ::std::mem::size_of::(), + 12usize, + concat!( + "Size of: ", + stringify!(ALimitedAxesImuEvent__bindgen_ty_2__bindgen_ty_1) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 4usize, + concat!( + "Alignment of ", + stringify!(ALimitedAxesImuEvent__bindgen_ty_2__bindgen_ty_1) ) ); assert_eq!( unsafe { - &(*(::std::ptr::null::())).meta_data + &(*(::std::ptr::null::())).x_supported as *const _ as usize }, 0usize, concat!( "Offset of field: ", - stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_1), + stringify!(ALimitedAxesImuEvent__bindgen_ty_2__bindgen_ty_1), "::", - stringify!(meta_data) + stringify!(x_supported) ) ); assert_eq!( unsafe { - &(*(::std::ptr::null::())).heart_rate + &(*(::std::ptr::null::())).y_supported as *const _ as usize }, - 0usize, + 4usize, concat!( "Offset of field: ", - stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_1), + stringify!(ALimitedAxesImuEvent__bindgen_ty_2__bindgen_ty_1), "::", - stringify!(heart_rate) + stringify!(y_supported) ) ); assert_eq!( unsafe { - &(*(::std::ptr::null::())).dynamic_sensor_meta + &(*(::std::ptr::null::())).z_supported as *const _ as usize }, - 0usize, + 8usize, concat!( "Offset of field: ", - stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_1), + stringify!(ALimitedAxesImuEvent__bindgen_ty_2__bindgen_ty_1), "::", - stringify!(dynamic_sensor_meta) + stringify!(z_supported) + ) + ); +} +#[test] +fn bindgen_test_layout_ALimitedAxesImuEvent__bindgen_ty_2() { + assert_eq!( + ::std::mem::size_of::(), + 12usize, + concat!("Size of: ", stringify!(ALimitedAxesImuEvent__bindgen_ty_2)) + ); + assert_eq!( + ::std::mem::align_of::(), + 4usize, + concat!( + "Alignment of ", + stringify!(ALimitedAxesImuEvent__bindgen_ty_2) ) ); assert_eq!( unsafe { - &(*(::std::ptr::null::())).additional_info - as *const _ as usize + &(*(::std::ptr::null::())).supported as *const _ + as usize }, 0usize, concat!( "Offset of field: ", - stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_1), + stringify!(ALimitedAxesImuEvent__bindgen_ty_2), "::", - stringify!(additional_info) + stringify!(supported) ) ); } +#[test] +fn bindgen_test_layout_ALimitedAxesImuEvent() { + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!("Size of: ", stringify!(ALimitedAxesImuEvent)) + ); + assert_eq!( + ::std::mem::align_of::(), + 4usize, + concat!("Alignment of ", stringify!(ALimitedAxesImuEvent)) + ); +} #[repr(C)] #[derive(Copy, Clone)] -pub union ASensorEvent__bindgen_ty_1__bindgen_ty_2 { - pub data: [u64; 8usize], - pub step_counter: u64, +pub struct ALimitedAxesImuUncalibratedEvent { + pub __bindgen_anon_1: ALimitedAxesImuUncalibratedEvent__bindgen_ty_1, + pub __bindgen_anon_2: ALimitedAxesImuUncalibratedEvent__bindgen_ty_2, + pub __bindgen_anon_3: ALimitedAxesImuUncalibratedEvent__bindgen_ty_3, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union ALimitedAxesImuUncalibratedEvent__bindgen_ty_1 { + pub uncalib: [f32; 3usize], + pub __bindgen_anon_1: ALimitedAxesImuUncalibratedEvent__bindgen_ty_1__bindgen_ty_1, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ALimitedAxesImuUncalibratedEvent__bindgen_ty_1__bindgen_ty_1 { + pub x_uncalib: f32, + pub y_uncalib: f32, + pub z_uncalib: f32, } #[test] -fn bindgen_test_layout_ASensorEvent__bindgen_ty_1__bindgen_ty_2() { +fn bindgen_test_layout_ALimitedAxesImuUncalibratedEvent__bindgen_ty_1__bindgen_ty_1() { assert_eq!( - ::std::mem::size_of::(), - 64usize, + ::std::mem::size_of::(), + 12usize, concat!( "Size of: ", - stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_2) + stringify!(ALimitedAxesImuUncalibratedEvent__bindgen_ty_1__bindgen_ty_1) ) ); assert_eq!( - ::std::mem::align_of::(), - 8usize, + ::std::mem::align_of::(), + 4usize, concat!( "Alignment of ", - stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_2) + stringify!(ALimitedAxesImuUncalibratedEvent__bindgen_ty_1__bindgen_ty_1) ) ); assert_eq!( unsafe { - &(*(::std::ptr::null::())).data as *const _ - as usize + &(*(::std::ptr::null::())) + .x_uncalib as *const _ as usize }, 0usize, concat!( "Offset of field: ", - stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_2), + stringify!(ALimitedAxesImuUncalibratedEvent__bindgen_ty_1__bindgen_ty_1), "::", - stringify!(data) + stringify!(x_uncalib) ) ); assert_eq!( unsafe { - &(*(::std::ptr::null::())).step_counter - as *const _ as usize + &(*(::std::ptr::null::())) + .y_uncalib as *const _ as usize }, - 0usize, + 4usize, concat!( "Offset of field: ", - stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_2), + stringify!(ALimitedAxesImuUncalibratedEvent__bindgen_ty_1__bindgen_ty_1), "::", - stringify!(step_counter) + stringify!(y_uncalib) ) ); -} -#[test] -fn bindgen_test_layout_ASensorEvent__bindgen_ty_1() { assert_eq!( - ::std::mem::size_of::(), - 64usize, - concat!("Size of: ", stringify!(ASensorEvent__bindgen_ty_1)) + unsafe { + &(*(::std::ptr::null::())) + .z_uncalib as *const _ as usize + }, + 8usize, + concat!( + "Offset of field: ", + stringify!(ALimitedAxesImuUncalibratedEvent__bindgen_ty_1__bindgen_ty_1), + "::", + stringify!(z_uncalib) + ) ); +} +#[test] +fn bindgen_test_layout_ALimitedAxesImuUncalibratedEvent__bindgen_ty_1() { assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(ASensorEvent__bindgen_ty_1)) + ::std::mem::size_of::(), + 12usize, + concat!( + "Size of: ", + stringify!(ALimitedAxesImuUncalibratedEvent__bindgen_ty_1) + ) ); assert_eq!( - unsafe { &(*(::std::ptr::null::())).u64_ as *const _ as usize }, + ::std::mem::align_of::(), + 4usize, + concat!( + "Alignment of ", + stringify!(ALimitedAxesImuUncalibratedEvent__bindgen_ty_1) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).uncalib + as *const _ as usize + }, 0usize, concat!( "Offset of field: ", - stringify!(ASensorEvent__bindgen_ty_1), + stringify!(ALimitedAxesImuUncalibratedEvent__bindgen_ty_1), "::", - stringify!(u64_) + stringify!(uncalib) ) ); } +#[repr(C)] +#[derive(Copy, Clone)] +pub union ALimitedAxesImuUncalibratedEvent__bindgen_ty_2 { + pub bias: [f32; 3usize], + pub __bindgen_anon_1: ALimitedAxesImuUncalibratedEvent__bindgen_ty_2__bindgen_ty_1, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ALimitedAxesImuUncalibratedEvent__bindgen_ty_2__bindgen_ty_1 { + pub x_bias: f32, + pub y_bias: f32, + pub z_bias: f32, +} #[test] -fn bindgen_test_layout_ASensorEvent() { +fn bindgen_test_layout_ALimitedAxesImuUncalibratedEvent__bindgen_ty_2__bindgen_ty_1() { assert_eq!( - ::std::mem::size_of::(), - 104usize, - concat!("Size of: ", stringify!(ASensorEvent)) + ::std::mem::size_of::(), + 12usize, + concat!( + "Size of: ", + stringify!(ALimitedAxesImuUncalibratedEvent__bindgen_ty_2__bindgen_ty_1) + ) ); assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(ASensorEvent)) + ::std::mem::align_of::(), + 4usize, + concat!( + "Alignment of ", + stringify!(ALimitedAxesImuUncalibratedEvent__bindgen_ty_2__bindgen_ty_1) + ) ); assert_eq!( - unsafe { &(*(::std::ptr::null::())).version as *const _ as usize }, + unsafe { + &(*(::std::ptr::null::())) + .x_bias as *const _ as usize + }, 0usize, concat!( "Offset of field: ", - stringify!(ASensorEvent), + stringify!(ALimitedAxesImuUncalibratedEvent__bindgen_ty_2__bindgen_ty_1), "::", - stringify!(version) + stringify!(x_bias) ) ); assert_eq!( - unsafe { &(*(::std::ptr::null::())).sensor as *const _ as usize }, + unsafe { + &(*(::std::ptr::null::())) + .y_bias as *const _ as usize + }, 4usize, concat!( "Offset of field: ", - stringify!(ASensorEvent), + stringify!(ALimitedAxesImuUncalibratedEvent__bindgen_ty_2__bindgen_ty_1), "::", - stringify!(sensor) + stringify!(y_bias) ) ); assert_eq!( - unsafe { &(*(::std::ptr::null::())).type_ as *const _ as usize }, + unsafe { + &(*(::std::ptr::null::())) + .z_bias as *const _ as usize + }, 8usize, concat!( "Offset of field: ", - stringify!(ASensorEvent), + stringify!(ALimitedAxesImuUncalibratedEvent__bindgen_ty_2__bindgen_ty_1), "::", - stringify!(type_) + stringify!(z_bias) ) ); +} +#[test] +fn bindgen_test_layout_ALimitedAxesImuUncalibratedEvent__bindgen_ty_2() { assert_eq!( - unsafe { &(*(::std::ptr::null::())).reserved0 as *const _ as usize }, + ::std::mem::size_of::(), 12usize, + concat!( + "Size of: ", + stringify!(ALimitedAxesImuUncalibratedEvent__bindgen_ty_2) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 4usize, + concat!( + "Alignment of ", + stringify!(ALimitedAxesImuUncalibratedEvent__bindgen_ty_2) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).bias + as *const _ as usize + }, + 0usize, concat!( "Offset of field: ", - stringify!(ASensorEvent), + stringify!(ALimitedAxesImuUncalibratedEvent__bindgen_ty_2), "::", - stringify!(reserved0) + stringify!(bias) + ) + ); +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union ALimitedAxesImuUncalibratedEvent__bindgen_ty_3 { + pub supported: [f32; 3usize], + pub __bindgen_anon_1: ALimitedAxesImuUncalibratedEvent__bindgen_ty_3__bindgen_ty_1, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ALimitedAxesImuUncalibratedEvent__bindgen_ty_3__bindgen_ty_1 { + pub x_supported: f32, + pub y_supported: f32, + pub z_supported: f32, +} +#[test] +fn bindgen_test_layout_ALimitedAxesImuUncalibratedEvent__bindgen_ty_3__bindgen_ty_1() { + assert_eq!( + ::std::mem::size_of::(), + 12usize, + concat!( + "Size of: ", + stringify!(ALimitedAxesImuUncalibratedEvent__bindgen_ty_3__bindgen_ty_1) ) ); assert_eq!( - unsafe { &(*(::std::ptr::null::())).timestamp as *const _ as usize }, - 16usize, + ::std::mem::align_of::(), + 4usize, + concat!( + "Alignment of ", + stringify!(ALimitedAxesImuUncalibratedEvent__bindgen_ty_3__bindgen_ty_1) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())) + .x_supported as *const _ as usize + }, + 0usize, concat!( "Offset of field: ", - stringify!(ASensorEvent), + stringify!(ALimitedAxesImuUncalibratedEvent__bindgen_ty_3__bindgen_ty_1), "::", - stringify!(timestamp) + stringify!(x_supported) ) ); assert_eq!( - unsafe { &(*(::std::ptr::null::())).flags as *const _ as usize }, - 88usize, + unsafe { + &(*(::std::ptr::null::())) + .y_supported as *const _ as usize + }, + 4usize, concat!( "Offset of field: ", - stringify!(ASensorEvent), + stringify!(ALimitedAxesImuUncalibratedEvent__bindgen_ty_3__bindgen_ty_1), "::", - stringify!(flags) + stringify!(y_supported) ) ); assert_eq!( - unsafe { &(*(::std::ptr::null::())).reserved1 as *const _ as usize }, - 92usize, + unsafe { + &(*(::std::ptr::null::())) + .z_supported as *const _ as usize + }, + 8usize, concat!( "Offset of field: ", - stringify!(ASensorEvent), + stringify!(ALimitedAxesImuUncalibratedEvent__bindgen_ty_3__bindgen_ty_1), "::", - stringify!(reserved1) + stringify!(z_supported) ) ); } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ASensorManager { - _unused: [u8; 0], +#[test] +fn bindgen_test_layout_ALimitedAxesImuUncalibratedEvent__bindgen_ty_3() { + assert_eq!( + ::std::mem::size_of::(), + 12usize, + concat!( + "Size of: ", + stringify!(ALimitedAxesImuUncalibratedEvent__bindgen_ty_3) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 4usize, + concat!( + "Alignment of ", + stringify!(ALimitedAxesImuUncalibratedEvent__bindgen_ty_3) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).supported + as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ALimitedAxesImuUncalibratedEvent__bindgen_ty_3), + "::", + stringify!(supported) + ) + ); } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ASensorEventQueue { - _unused: [u8; 0], +#[test] +fn bindgen_test_layout_ALimitedAxesImuUncalibratedEvent() { + assert_eq!( + ::std::mem::size_of::(), + 36usize, + concat!("Size of: ", stringify!(ALimitedAxesImuUncalibratedEvent)) + ); + assert_eq!( + ::std::mem::align_of::(), + 4usize, + concat!( + "Alignment of ", + stringify!(ALimitedAxesImuUncalibratedEvent) + ) + ); } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct ASensor { - _unused: [u8; 0], +pub struct AHeadingEvent { + pub heading: f32, + pub accuracy: f32, } -pub type ASensorRef = *const ASensor; -pub type ASensorList = *const ASensorRef; -extern "C" { - pub fn ASensorManager_getInstance() -> *mut ASensorManager; +#[test] +fn bindgen_test_layout_AHeadingEvent() { + assert_eq!( + ::std::mem::size_of::(), + 8usize, + concat!("Size of: ", stringify!(AHeadingEvent)) + ); + assert_eq!( + ::std::mem::align_of::(), + 4usize, + concat!("Alignment of ", stringify!(AHeadingEvent)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).heading as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(AHeadingEvent), + "::", + stringify!(heading) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).accuracy as *const _ as usize }, + 4usize, + concat!( + "Offset of field: ", + stringify!(AHeadingEvent), + "::", + stringify!(accuracy) + ) + ); } -extern "C" { - pub fn ASensorManager_getInstanceForPackage( - packageName: *const ::std::os::raw::c_char, - ) -> *mut ASensorManager; +#[repr(C)] +#[derive(Copy, Clone)] +pub struct ASensorEvent { + pub version: i32, + pub sensor: i32, + pub type_: i32, + pub reserved0: i32, + pub timestamp: i64, + pub __bindgen_anon_1: ASensorEvent__bindgen_ty_1, + pub flags: u32, + pub reserved1: [i32; 3usize], } -extern "C" { - pub fn ASensorManager_getSensorList( - manager: *mut ASensorManager, - list: *mut ASensorList, - ) -> ::std::os::raw::c_int; +#[repr(C)] +#[derive(Copy, Clone)] +pub union ASensorEvent__bindgen_ty_1 { + pub __bindgen_anon_1: ASensorEvent__bindgen_ty_1__bindgen_ty_1, + pub u64_: ASensorEvent__bindgen_ty_1__bindgen_ty_2, } -extern "C" { - pub fn ASensorManager_getDefaultSensor( - manager: *mut ASensorManager, - type_: ::std::os::raw::c_int, - ) -> *const ASensor; +#[repr(C)] +#[derive(Copy, Clone)] +pub union ASensorEvent__bindgen_ty_1__bindgen_ty_1 { + pub data: [f32; 16usize], + pub vector: ASensorVector, + pub acceleration: ASensorVector, + pub gyro: ASensorVector, + pub magnetic: ASensorVector, + pub temperature: f32, + pub distance: f32, + pub light: f32, + pub pressure: f32, + pub relative_humidity: f32, + pub uncalibrated_acceleration: AUncalibratedEvent, + pub uncalibrated_gyro: AUncalibratedEvent, + pub uncalibrated_magnetic: AUncalibratedEvent, + pub meta_data: AMetaDataEvent, + pub heart_rate: AHeartRateEvent, + pub dynamic_sensor_meta: ADynamicSensorEvent, + pub additional_info: AAdditionalInfoEvent, + pub head_tracker: AHeadTrackerEvent, + pub limited_axes_imu: ALimitedAxesImuEvent, + pub limited_axes_imu_uncalibrated: ALimitedAxesImuUncalibratedEvent, + pub heading: AHeadingEvent, } -extern "C" { - pub fn ASensorManager_getDefaultSensorEx( +#[test] +fn bindgen_test_layout_ASensorEvent__bindgen_ty_1__bindgen_ty_1() { + assert_eq!( + ::std::mem::size_of::(), + 64usize, + concat!( + "Size of: ", + stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_1) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 4usize, + concat!( + "Alignment of ", + stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_1) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).data as *const _ + as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_1), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).vector as *const _ + as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_1), + "::", + stringify!(vector) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).acceleration + as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_1), + "::", + stringify!(acceleration) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).gyro as *const _ + as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_1), + "::", + stringify!(gyro) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).magnetic + as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_1), + "::", + stringify!(magnetic) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).temperature + as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_1), + "::", + stringify!(temperature) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).distance + as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_1), + "::", + stringify!(distance) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).light as *const _ + as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_1), + "::", + stringify!(light) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).pressure + as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_1), + "::", + stringify!(pressure) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).relative_humidity + as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_1), + "::", + stringify!(relative_humidity) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())) + .uncalibrated_acceleration as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_1), + "::", + stringify!(uncalibrated_acceleration) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).uncalibrated_gyro + as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_1), + "::", + stringify!(uncalibrated_gyro) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())) + .uncalibrated_magnetic as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_1), + "::", + stringify!(uncalibrated_magnetic) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).meta_data + as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_1), + "::", + stringify!(meta_data) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).heart_rate + as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_1), + "::", + stringify!(heart_rate) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).dynamic_sensor_meta + as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_1), + "::", + stringify!(dynamic_sensor_meta) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).additional_info + as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_1), + "::", + stringify!(additional_info) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).head_tracker + as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_1), + "::", + stringify!(head_tracker) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).limited_axes_imu + as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_1), + "::", + stringify!(limited_axes_imu) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())) + .limited_axes_imu_uncalibrated as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_1), + "::", + stringify!(limited_axes_imu_uncalibrated) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).heading as *const _ + as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_1), + "::", + stringify!(heading) + ) + ); +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union ASensorEvent__bindgen_ty_1__bindgen_ty_2 { + pub data: [u64; 8usize], + pub step_counter: u64, +} +#[test] +fn bindgen_test_layout_ASensorEvent__bindgen_ty_1__bindgen_ty_2() { + assert_eq!( + ::std::mem::size_of::(), + 64usize, + concat!( + "Size of: ", + stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_2) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_2) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).data as *const _ + as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_2), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).step_counter + as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_2), + "::", + stringify!(step_counter) + ) + ); +} +#[test] +fn bindgen_test_layout_ASensorEvent__bindgen_ty_1() { + assert_eq!( + ::std::mem::size_of::(), + 64usize, + concat!("Size of: ", stringify!(ASensorEvent__bindgen_ty_1)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(ASensorEvent__bindgen_ty_1)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).u64_ as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ASensorEvent__bindgen_ty_1), + "::", + stringify!(u64_) + ) + ); +} +#[test] +fn bindgen_test_layout_ASensorEvent() { + assert_eq!( + ::std::mem::size_of::(), + 104usize, + concat!("Size of: ", stringify!(ASensorEvent)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(ASensorEvent)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).version as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ASensorEvent), + "::", + stringify!(version) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).sensor as *const _ as usize }, + 4usize, + concat!( + "Offset of field: ", + stringify!(ASensorEvent), + "::", + stringify!(sensor) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).type_ as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(ASensorEvent), + "::", + stringify!(type_) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).reserved0 as *const _ as usize }, + 12usize, + concat!( + "Offset of field: ", + stringify!(ASensorEvent), + "::", + stringify!(reserved0) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).timestamp as *const _ as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(ASensorEvent), + "::", + stringify!(timestamp) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).flags as *const _ as usize }, + 88usize, + concat!( + "Offset of field: ", + stringify!(ASensorEvent), + "::", + stringify!(flags) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).reserved1 as *const _ as usize }, + 92usize, + concat!( + "Offset of field: ", + stringify!(ASensorEvent), + "::", + stringify!(reserved1) + ) + ); +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ASensorManager { + _unused: [u8; 0], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ASensorEventQueue { + _unused: [u8; 0], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ASensor { + _unused: [u8; 0], +} +pub type ASensorRef = *const ASensor; +pub type ASensorList = *const ASensorRef; +extern "C" { + pub fn ASensorManager_getInstance() -> *mut ASensorManager; +} +extern "C" { + pub fn ASensorManager_getInstanceForPackage( + packageName: *const ::std::os::raw::c_char, + ) -> *mut ASensorManager; +} +extern "C" { + pub fn ASensorManager_getSensorList( + manager: *mut ASensorManager, + list: *mut ASensorList, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn ASensorManager_getDynamicSensorList( + manager: *mut ASensorManager, + list: *mut ASensorList, + ) -> ssize_t; +} +extern "C" { + pub fn ASensorManager_getDefaultSensor( + manager: *mut ASensorManager, + type_: ::std::os::raw::c_int, + ) -> *const ASensor; +} +extern "C" { + pub fn ASensorManager_getDefaultSensorEx( manager: *mut ASensorManager, type_: ::std::os::raw::c_int, wakeUp: bool, @@ -14251,23 +15363,81 @@ pub const AAUDIO_CONTENT_TYPE_MOVIE: ::std::os::raw::c_uint = 3; pub const AAUDIO_CONTENT_TYPE_SONIFICATION: ::std::os::raw::c_uint = 4; pub type _bindgen_ty_53 = ::std::os::raw::c_uint; pub type aaudio_content_type_t = i32; +pub const AAUDIO_SPATIALIZATION_BEHAVIOR_AUTO: ::std::os::raw::c_uint = 1; +pub const AAUDIO_SPATIALIZATION_BEHAVIOR_NEVER: ::std::os::raw::c_uint = 2; +pub type _bindgen_ty_54 = ::std::os::raw::c_uint; +pub type aaudio_spatialization_behavior_t = i32; pub const AAUDIO_INPUT_PRESET_GENERIC: ::std::os::raw::c_uint = 1; pub const AAUDIO_INPUT_PRESET_CAMCORDER: ::std::os::raw::c_uint = 5; pub const AAUDIO_INPUT_PRESET_VOICE_RECOGNITION: ::std::os::raw::c_uint = 6; pub const AAUDIO_INPUT_PRESET_VOICE_COMMUNICATION: ::std::os::raw::c_uint = 7; pub const AAUDIO_INPUT_PRESET_UNPROCESSED: ::std::os::raw::c_uint = 9; pub const AAUDIO_INPUT_PRESET_VOICE_PERFORMANCE: ::std::os::raw::c_uint = 10; -pub type _bindgen_ty_54 = ::std::os::raw::c_uint; +pub type _bindgen_ty_55 = ::std::os::raw::c_uint; pub type aaudio_input_preset_t = i32; pub const AAUDIO_ALLOW_CAPTURE_BY_ALL: ::std::os::raw::c_uint = 1; pub const AAUDIO_ALLOW_CAPTURE_BY_SYSTEM: ::std::os::raw::c_uint = 2; pub const AAUDIO_ALLOW_CAPTURE_BY_NONE: ::std::os::raw::c_uint = 3; -pub type _bindgen_ty_55 = ::std::os::raw::c_uint; +pub type _bindgen_ty_56 = ::std::os::raw::c_uint; pub type aaudio_allowed_capture_policy_t = i32; pub const AAUDIO_SESSION_ID_NONE: ::std::os::raw::c_int = -1; pub const AAUDIO_SESSION_ID_ALLOCATE: ::std::os::raw::c_int = 0; -pub type _bindgen_ty_56 = ::std::os::raw::c_int; +pub type _bindgen_ty_57 = ::std::os::raw::c_int; pub type aaudio_session_id_t = i32; +pub const AAUDIO_CHANNEL_INVALID: ::std::os::raw::c_int = -1; +pub const AAUDIO_CHANNEL_FRONT_LEFT: ::std::os::raw::c_int = 1; +pub const AAUDIO_CHANNEL_FRONT_RIGHT: ::std::os::raw::c_int = 2; +pub const AAUDIO_CHANNEL_FRONT_CENTER: ::std::os::raw::c_int = 4; +pub const AAUDIO_CHANNEL_LOW_FREQUENCY: ::std::os::raw::c_int = 8; +pub const AAUDIO_CHANNEL_BACK_LEFT: ::std::os::raw::c_int = 16; +pub const AAUDIO_CHANNEL_BACK_RIGHT: ::std::os::raw::c_int = 32; +pub const AAUDIO_CHANNEL_FRONT_LEFT_OF_CENTER: ::std::os::raw::c_int = 64; +pub const AAUDIO_CHANNEL_FRONT_RIGHT_OF_CENTER: ::std::os::raw::c_int = 128; +pub const AAUDIO_CHANNEL_BACK_CENTER: ::std::os::raw::c_int = 256; +pub const AAUDIO_CHANNEL_SIDE_LEFT: ::std::os::raw::c_int = 512; +pub const AAUDIO_CHANNEL_SIDE_RIGHT: ::std::os::raw::c_int = 1024; +pub const AAUDIO_CHANNEL_TOP_CENTER: ::std::os::raw::c_int = 2048; +pub const AAUDIO_CHANNEL_TOP_FRONT_LEFT: ::std::os::raw::c_int = 4096; +pub const AAUDIO_CHANNEL_TOP_FRONT_CENTER: ::std::os::raw::c_int = 8192; +pub const AAUDIO_CHANNEL_TOP_FRONT_RIGHT: ::std::os::raw::c_int = 16384; +pub const AAUDIO_CHANNEL_TOP_BACK_LEFT: ::std::os::raw::c_int = 32768; +pub const AAUDIO_CHANNEL_TOP_BACK_CENTER: ::std::os::raw::c_int = 65536; +pub const AAUDIO_CHANNEL_TOP_BACK_RIGHT: ::std::os::raw::c_int = 131072; +pub const AAUDIO_CHANNEL_TOP_SIDE_LEFT: ::std::os::raw::c_int = 262144; +pub const AAUDIO_CHANNEL_TOP_SIDE_RIGHT: ::std::os::raw::c_int = 524288; +pub const AAUDIO_CHANNEL_BOTTOM_FRONT_LEFT: ::std::os::raw::c_int = 1048576; +pub const AAUDIO_CHANNEL_BOTTOM_FRONT_CENTER: ::std::os::raw::c_int = 2097152; +pub const AAUDIO_CHANNEL_BOTTOM_FRONT_RIGHT: ::std::os::raw::c_int = 4194304; +pub const AAUDIO_CHANNEL_LOW_FREQUENCY_2: ::std::os::raw::c_int = 8388608; +pub const AAUDIO_CHANNEL_FRONT_WIDE_LEFT: ::std::os::raw::c_int = 16777216; +pub const AAUDIO_CHANNEL_FRONT_WIDE_RIGHT: ::std::os::raw::c_int = 33554432; +pub const AAUDIO_CHANNEL_MONO: ::std::os::raw::c_int = 1; +pub const AAUDIO_CHANNEL_STEREO: ::std::os::raw::c_int = 3; +pub const AAUDIO_CHANNEL_2POINT1: ::std::os::raw::c_int = 11; +pub const AAUDIO_CHANNEL_TRI: ::std::os::raw::c_int = 7; +pub const AAUDIO_CHANNEL_TRI_BACK: ::std::os::raw::c_int = 259; +pub const AAUDIO_CHANNEL_3POINT1: ::std::os::raw::c_int = 15; +pub const AAUDIO_CHANNEL_2POINT0POINT2: ::std::os::raw::c_int = 786435; +pub const AAUDIO_CHANNEL_2POINT1POINT2: ::std::os::raw::c_int = 786443; +pub const AAUDIO_CHANNEL_3POINT0POINT2: ::std::os::raw::c_int = 786439; +pub const AAUDIO_CHANNEL_3POINT1POINT2: ::std::os::raw::c_int = 786447; +pub const AAUDIO_CHANNEL_QUAD: ::std::os::raw::c_int = 51; +pub const AAUDIO_CHANNEL_QUAD_SIDE: ::std::os::raw::c_int = 1539; +pub const AAUDIO_CHANNEL_SURROUND: ::std::os::raw::c_int = 263; +pub const AAUDIO_CHANNEL_PENTA: ::std::os::raw::c_int = 55; +pub const AAUDIO_CHANNEL_5POINT1: ::std::os::raw::c_int = 63; +pub const AAUDIO_CHANNEL_5POINT1_SIDE: ::std::os::raw::c_int = 1551; +pub const AAUDIO_CHANNEL_6POINT1: ::std::os::raw::c_int = 319; +pub const AAUDIO_CHANNEL_7POINT1: ::std::os::raw::c_int = 1599; +pub const AAUDIO_CHANNEL_5POINT1POINT2: ::std::os::raw::c_int = 786495; +pub const AAUDIO_CHANNEL_5POINT1POINT4: ::std::os::raw::c_int = 184383; +pub const AAUDIO_CHANNEL_7POINT1POINT2: ::std::os::raw::c_int = 788031; +pub const AAUDIO_CHANNEL_7POINT1POINT4: ::std::os::raw::c_int = 185919; +pub const AAUDIO_CHANNEL_9POINT1POINT4: ::std::os::raw::c_int = 50517567; +pub const AAUDIO_CHANNEL_9POINT1POINT6: ::std::os::raw::c_int = 51303999; +pub const AAUDIO_CHANNEL_FRONT_BACK: ::std::os::raw::c_int = 260; +pub type _bindgen_ty_58 = ::std::os::raw::c_int; +pub type aaudio_channel_mask_t = u32; #[repr(C)] #[derive(Debug, Copy, Clone)] pub struct AAudioStreamStruct { @@ -14361,6 +15531,18 @@ extern "C" { contentType: aaudio_content_type_t, ); } +extern "C" { + pub fn AAudioStreamBuilder_setSpatializationBehavior( + builder: *mut AAudioStreamBuilder, + spatializationBehavior: aaudio_spatialization_behavior_t, + ); +} +extern "C" { + pub fn AAudioStreamBuilder_setIsContentSpatialized( + builder: *mut AAudioStreamBuilder, + isSpatialized: bool, + ); +} extern "C" { pub fn AAudioStreamBuilder_setInputPreset( builder: *mut AAudioStreamBuilder, @@ -14387,7 +15569,7 @@ extern "C" { } pub const AAUDIO_CALLBACK_RESULT_CONTINUE: ::std::os::raw::c_uint = 0; pub const AAUDIO_CALLBACK_RESULT_STOP: ::std::os::raw::c_uint = 1; -pub type _bindgen_ty_57 = ::std::os::raw::c_uint; +pub type _bindgen_ty_59 = ::std::os::raw::c_uint; pub type aaudio_data_callback_result_t = i32; pub type AAudioStream_dataCallback = ::std::option::Option< unsafe extern "C" fn( @@ -14433,6 +15615,12 @@ extern "C" { extern "C" { pub fn AAudioStreamBuilder_delete(builder: *mut AAudioStreamBuilder) -> aaudio_result_t; } +extern "C" { + pub fn AAudioStreamBuilder_setChannelMask( + builder: *mut AAudioStreamBuilder, + channelMask: aaudio_channel_mask_t, + ); +} extern "C" { pub fn AAudioStream_release(stream: *mut AAudioStream) -> aaudio_result_t; } @@ -14546,6 +15734,14 @@ extern "C" { extern "C" { pub fn AAudioStream_getContentType(stream: *mut AAudioStream) -> aaudio_content_type_t; } +extern "C" { + pub fn AAudioStream_getSpatializationBehavior( + stream: *mut AAudioStream, + ) -> aaudio_spatialization_behavior_t; +} +extern "C" { + pub fn AAudioStream_isContentSpatialized(stream: *mut AAudioStream) -> bool; +} extern "C" { pub fn AAudioStream_getInputPreset(stream: *mut AAudioStream) -> aaudio_input_preset_t; } @@ -14557,6 +15753,9 @@ extern "C" { extern "C" { pub fn AAudioStream_isPrivacySensitive(stream: *mut AAudioStream) -> bool; } +extern "C" { + pub fn AAudioStream_getChannelMask(stream: *mut AAudioStream) -> aaudio_channel_mask_t; +} impl media_status_t { pub const AMEDIA_OK: media_status_t = media_status_t(0); } @@ -14664,11 +15863,43 @@ pub struct AMidiOutputPort { } pub const AMIDI_OPCODE_DATA: ::std::os::raw::c_uint = 1; pub const AMIDI_OPCODE_FLUSH: ::std::os::raw::c_uint = 2; -pub type _bindgen_ty_58 = ::std::os::raw::c_uint; +pub type _bindgen_ty_60 = ::std::os::raw::c_uint; pub const AMIDI_DEVICE_TYPE_USB: ::std::os::raw::c_uint = 1; pub const AMIDI_DEVICE_TYPE_VIRTUAL: ::std::os::raw::c_uint = 2; pub const AMIDI_DEVICE_TYPE_BLUETOOTH: ::std::os::raw::c_uint = 3; -pub type _bindgen_ty_59 = ::std::os::raw::c_uint; +pub type _bindgen_ty_61 = ::std::os::raw::c_uint; +impl AMidiDevice_Protocol { + pub const AMIDI_DEVICE_PROTOCOL_UMP_USE_MIDI_CI: AMidiDevice_Protocol = AMidiDevice_Protocol(0); +} +impl AMidiDevice_Protocol { + pub const AMIDI_DEVICE_PROTOCOL_UMP_MIDI_1_0_UP_TO_64_BITS: AMidiDevice_Protocol = + AMidiDevice_Protocol(1); +} +impl AMidiDevice_Protocol { + pub const AMIDI_DEVICE_PROTOCOL_UMP_MIDI_1_0_UP_TO_64_BITS_AND_JRTS: AMidiDevice_Protocol = + AMidiDevice_Protocol(2); +} +impl AMidiDevice_Protocol { + pub const AMIDI_DEVICE_PROTOCOL_UMP_MIDI_1_0_UP_TO_128_BITS: AMidiDevice_Protocol = + AMidiDevice_Protocol(3); +} +impl AMidiDevice_Protocol { + pub const AMIDI_DEVICE_PROTOCOL_UMP_MIDI_1_0_UP_TO_128_BITS_AND_JRTS: AMidiDevice_Protocol = + AMidiDevice_Protocol(4); +} +impl AMidiDevice_Protocol { + pub const AMIDI_DEVICE_PROTOCOL_UMP_MIDI_2_0: AMidiDevice_Protocol = AMidiDevice_Protocol(17); +} +impl AMidiDevice_Protocol { + pub const AMIDI_DEVICE_PROTOCOL_UMP_MIDI_2_0_AND_JRTS: AMidiDevice_Protocol = + AMidiDevice_Protocol(18); +} +impl AMidiDevice_Protocol { + pub const AMIDI_DEVICE_PROTOCOL_UNKNOWN: AMidiDevice_Protocol = AMidiDevice_Protocol(-1); +} +#[repr(transparent)] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub struct AMidiDevice_Protocol(pub i32); extern "C" { pub fn AMidiDevice_fromJava( env: *mut JNIEnv, @@ -14688,6 +15919,9 @@ extern "C" { extern "C" { pub fn AMidiDevice_getNumOutputPorts(device: *const AMidiDevice) -> ssize_t; } +extern "C" { + pub fn AMidiDevice_getDefaultProtocol(device: *const AMidiDevice) -> AMidiDevice_Protocol; +} extern "C" { pub fn AMidiOutputPort_open( device: *const AMidiDevice, @@ -14882,7 +16116,13 @@ impl acamera_metadata_section { pub const ACAMERA_HEIC_INFO: acamera_metadata_section = acamera_metadata_section(29); } impl acamera_metadata_section { - pub const ACAMERA_SECTION_COUNT: acamera_metadata_section = acamera_metadata_section(30); + pub const ACAMERA_AUTOMOTIVE: acamera_metadata_section = acamera_metadata_section(30); +} +impl acamera_metadata_section { + pub const ACAMERA_AUTOMOTIVE_LENS: acamera_metadata_section = acamera_metadata_section(31); +} +impl acamera_metadata_section { + pub const ACAMERA_SECTION_COUNT: acamera_metadata_section = acamera_metadata_section(32); } impl acamera_metadata_section { pub const ACAMERA_VENDOR: acamera_metadata_section = acamera_metadata_section(32768); @@ -15011,6 +16251,14 @@ impl acamera_metadata_section_start { pub const ACAMERA_HEIC_INFO_START: acamera_metadata_section_start = acamera_metadata_section_start(1900544); } +impl acamera_metadata_section_start { + pub const ACAMERA_AUTOMOTIVE_START: acamera_metadata_section_start = + acamera_metadata_section_start(1966080); +} +impl acamera_metadata_section_start { + pub const ACAMERA_AUTOMOTIVE_LENS_START: acamera_metadata_section_start = + acamera_metadata_section_start(2031616); +} impl acamera_metadata_section_start { pub const ACAMERA_VENDOR_START: acamera_metadata_section_start = acamera_metadata_section_start(-2147483648); @@ -15217,7 +16465,15 @@ impl acamera_metadata_tag { pub const ACAMERA_FLASH_INFO_AVAILABLE: acamera_metadata_tag = acamera_metadata_tag(327680); } impl acamera_metadata_tag { - pub const ACAMERA_FLASH_INFO_END: acamera_metadata_tag = acamera_metadata_tag(327681); + pub const ACAMERA_FLASH_INFO_STRENGTH_MAXIMUM_LEVEL: acamera_metadata_tag = + acamera_metadata_tag(327682); +} +impl acamera_metadata_tag { + pub const ACAMERA_FLASH_INFO_STRENGTH_DEFAULT_LEVEL: acamera_metadata_tag = + acamera_metadata_tag(327683); +} +impl acamera_metadata_tag { + pub const ACAMERA_FLASH_INFO_END: acamera_metadata_tag = acamera_metadata_tag(327684); } impl acamera_metadata_tag { pub const ACAMERA_HOT_PIXEL_MODE: acamera_metadata_tag = acamera_metadata_tag(393216); @@ -15398,7 +16654,11 @@ impl acamera_metadata_tag { acamera_metadata_tag(786449); } impl acamera_metadata_tag { - pub const ACAMERA_REQUEST_END: acamera_metadata_tag = acamera_metadata_tag(786450); + pub const ACAMERA_REQUEST_AVAILABLE_DYNAMIC_RANGE_PROFILES_MAP: acamera_metadata_tag = + acamera_metadata_tag(786451); +} +impl acamera_metadata_tag { + pub const ACAMERA_REQUEST_END: acamera_metadata_tag = acamera_metadata_tag(786452); } impl acamera_metadata_tag { pub const ACAMERA_SCALER_CROP_REGION: acamera_metadata_tag = acamera_metadata_tag(851968); @@ -15462,7 +16722,11 @@ impl acamera_metadata_tag { acamera_metadata_tag(851992); } impl acamera_metadata_tag { - pub const ACAMERA_SCALER_END: acamera_metadata_tag = acamera_metadata_tag(851993); + pub const ACAMERA_SCALER_AVAILABLE_STREAM_USE_CASES: acamera_metadata_tag = + acamera_metadata_tag(851993); +} +impl acamera_metadata_tag { + pub const ACAMERA_SCALER_END: acamera_metadata_tag = acamera_metadata_tag(851994); } impl acamera_metadata_tag { pub const ACAMERA_SENSOR_EXPOSURE_TIME: acamera_metadata_tag = acamera_metadata_tag(917504); @@ -15747,7 +17011,11 @@ impl acamera_metadata_tag { pub const ACAMERA_INFO_VERSION: acamera_metadata_tag = acamera_metadata_tag(1376257); } impl acamera_metadata_tag { - pub const ACAMERA_INFO_END: acamera_metadata_tag = acamera_metadata_tag(1376258); + pub const ACAMERA_INFO_DEVICE_STATE_ORIENTATIONS: acamera_metadata_tag = + acamera_metadata_tag(1376259); +} +impl acamera_metadata_tag { + pub const ACAMERA_INFO_END: acamera_metadata_tag = acamera_metadata_tag(1376260); } impl acamera_metadata_tag { pub const ACAMERA_BLACK_LEVEL_LOCK: acamera_metadata_tag = acamera_metadata_tag(1441792); @@ -15878,6 +17146,18 @@ impl acamera_metadata_tag { impl acamera_metadata_tag { pub const ACAMERA_HEIC_END: acamera_metadata_tag = acamera_metadata_tag(1835014); } +impl acamera_metadata_tag { + pub const ACAMERA_AUTOMOTIVE_LOCATION: acamera_metadata_tag = acamera_metadata_tag(1966080); +} +impl acamera_metadata_tag { + pub const ACAMERA_AUTOMOTIVE_END: acamera_metadata_tag = acamera_metadata_tag(1966081); +} +impl acamera_metadata_tag { + pub const ACAMERA_AUTOMOTIVE_LENS_FACING: acamera_metadata_tag = acamera_metadata_tag(2031616); +} +impl acamera_metadata_tag { + pub const ACAMERA_AUTOMOTIVE_LENS_END: acamera_metadata_tag = acamera_metadata_tag(2031617); +} #[repr(transparent)] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] pub struct acamera_metadata_tag(pub ::std::os::raw::c_uint); @@ -16316,6 +17596,11 @@ impl acamera_metadata_enum_acamera_control_video_stabilization_mode { acamera_metadata_enum_acamera_control_video_stabilization_mode = acamera_metadata_enum_acamera_control_video_stabilization_mode(1); } +impl acamera_metadata_enum_acamera_control_video_stabilization_mode { + pub const ACAMERA_CONTROL_VIDEO_STABILIZATION_MODE_PREVIEW_STABILIZATION: + acamera_metadata_enum_acamera_control_video_stabilization_mode = + acamera_metadata_enum_acamera_control_video_stabilization_mode(2); +} #[repr(transparent)] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] pub struct acamera_metadata_enum_acamera_control_video_stabilization_mode( @@ -16630,6 +17915,11 @@ impl acamera_metadata_enum_acamera_lens_pose_reference { acamera_metadata_enum_acamera_lens_pose_reference = acamera_metadata_enum_acamera_lens_pose_reference(2); } +impl acamera_metadata_enum_acamera_lens_pose_reference { + pub const ACAMERA_LENS_POSE_REFERENCE_AUTOMOTIVE: + acamera_metadata_enum_acamera_lens_pose_reference = + acamera_metadata_enum_acamera_lens_pose_reference(3); +} #[repr(transparent)] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] pub struct acamera_metadata_enum_acamera_lens_pose_reference(pub ::std::os::raw::c_uint); @@ -16748,10 +18038,86 @@ impl acamera_metadata_enum_acamera_request_available_capabilities { acamera_metadata_enum_acamera_request_available_capabilities = acamera_metadata_enum_acamera_request_available_capabilities(16); } +impl acamera_metadata_enum_acamera_request_available_capabilities { + pub const ACAMERA_REQUEST_AVAILABLE_CAPABILITIES_STREAM_USE_CASE: + acamera_metadata_enum_acamera_request_available_capabilities = + acamera_metadata_enum_acamera_request_available_capabilities(19); +} #[repr(transparent)] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] pub struct acamera_metadata_enum_acamera_request_available_capabilities(pub ::std::os::raw::c_uint); pub use self::acamera_metadata_enum_acamera_request_available_capabilities as acamera_metadata_enum_android_request_available_capabilities_t; +impl acamera_metadata_enum_acamera_request_available_dynamic_range_profiles_map { + pub const ACAMERA_REQUEST_AVAILABLE_DYNAMIC_RANGE_PROFILES_MAP_STANDARD: + acamera_metadata_enum_acamera_request_available_dynamic_range_profiles_map = + acamera_metadata_enum_acamera_request_available_dynamic_range_profiles_map(1); +} +impl acamera_metadata_enum_acamera_request_available_dynamic_range_profiles_map { + pub const ACAMERA_REQUEST_AVAILABLE_DYNAMIC_RANGE_PROFILES_MAP_HLG10: + acamera_metadata_enum_acamera_request_available_dynamic_range_profiles_map = + acamera_metadata_enum_acamera_request_available_dynamic_range_profiles_map(2); +} +impl acamera_metadata_enum_acamera_request_available_dynamic_range_profiles_map { + pub const ACAMERA_REQUEST_AVAILABLE_DYNAMIC_RANGE_PROFILES_MAP_HDR10: + acamera_metadata_enum_acamera_request_available_dynamic_range_profiles_map = + acamera_metadata_enum_acamera_request_available_dynamic_range_profiles_map(4); +} +impl acamera_metadata_enum_acamera_request_available_dynamic_range_profiles_map { + pub const ACAMERA_REQUEST_AVAILABLE_DYNAMIC_RANGE_PROFILES_MAP_HDR10_PLUS: + acamera_metadata_enum_acamera_request_available_dynamic_range_profiles_map = + acamera_metadata_enum_acamera_request_available_dynamic_range_profiles_map(8); +} +impl acamera_metadata_enum_acamera_request_available_dynamic_range_profiles_map { + pub const ACAMERA_REQUEST_AVAILABLE_DYNAMIC_RANGE_PROFILES_MAP_DOLBY_VISION_10B_HDR_REF: + acamera_metadata_enum_acamera_request_available_dynamic_range_profiles_map = + acamera_metadata_enum_acamera_request_available_dynamic_range_profiles_map(16); +} +impl acamera_metadata_enum_acamera_request_available_dynamic_range_profiles_map { + pub const ACAMERA_REQUEST_AVAILABLE_DYNAMIC_RANGE_PROFILES_MAP_DOLBY_VISION_10B_HDR_REF_PO: + acamera_metadata_enum_acamera_request_available_dynamic_range_profiles_map = + acamera_metadata_enum_acamera_request_available_dynamic_range_profiles_map(32); +} +impl acamera_metadata_enum_acamera_request_available_dynamic_range_profiles_map { + pub const ACAMERA_REQUEST_AVAILABLE_DYNAMIC_RANGE_PROFILES_MAP_DOLBY_VISION_10B_HDR_OEM: + acamera_metadata_enum_acamera_request_available_dynamic_range_profiles_map = + acamera_metadata_enum_acamera_request_available_dynamic_range_profiles_map(64); +} +impl acamera_metadata_enum_acamera_request_available_dynamic_range_profiles_map { + pub const ACAMERA_REQUEST_AVAILABLE_DYNAMIC_RANGE_PROFILES_MAP_DOLBY_VISION_10B_HDR_OEM_PO: + acamera_metadata_enum_acamera_request_available_dynamic_range_profiles_map = + acamera_metadata_enum_acamera_request_available_dynamic_range_profiles_map(128); +} +impl acamera_metadata_enum_acamera_request_available_dynamic_range_profiles_map { + pub const ACAMERA_REQUEST_AVAILABLE_DYNAMIC_RANGE_PROFILES_MAP_DOLBY_VISION_8B_HDR_REF: + acamera_metadata_enum_acamera_request_available_dynamic_range_profiles_map = + acamera_metadata_enum_acamera_request_available_dynamic_range_profiles_map(256); +} +impl acamera_metadata_enum_acamera_request_available_dynamic_range_profiles_map { + pub const ACAMERA_REQUEST_AVAILABLE_DYNAMIC_RANGE_PROFILES_MAP_DOLBY_VISION_8B_HDR_REF_PO: + acamera_metadata_enum_acamera_request_available_dynamic_range_profiles_map = + acamera_metadata_enum_acamera_request_available_dynamic_range_profiles_map(512); +} +impl acamera_metadata_enum_acamera_request_available_dynamic_range_profiles_map { + pub const ACAMERA_REQUEST_AVAILABLE_DYNAMIC_RANGE_PROFILES_MAP_DOLBY_VISION_8B_HDR_OEM: + acamera_metadata_enum_acamera_request_available_dynamic_range_profiles_map = + acamera_metadata_enum_acamera_request_available_dynamic_range_profiles_map(1024); +} +impl acamera_metadata_enum_acamera_request_available_dynamic_range_profiles_map { + pub const ACAMERA_REQUEST_AVAILABLE_DYNAMIC_RANGE_PROFILES_MAP_DOLBY_VISION_8B_HDR_OEM_PO: + acamera_metadata_enum_acamera_request_available_dynamic_range_profiles_map = + acamera_metadata_enum_acamera_request_available_dynamic_range_profiles_map(2048); +} +impl acamera_metadata_enum_acamera_request_available_dynamic_range_profiles_map { + pub const ACAMERA_REQUEST_AVAILABLE_DYNAMIC_RANGE_PROFILES_MAP_MAX: + acamera_metadata_enum_acamera_request_available_dynamic_range_profiles_map = + acamera_metadata_enum_acamera_request_available_dynamic_range_profiles_map(4096); +} +#[repr(transparent)] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub struct acamera_metadata_enum_acamera_request_available_dynamic_range_profiles_map( + pub ::std::os::raw::c_uint, +); +pub use self::acamera_metadata_enum_acamera_request_available_dynamic_range_profiles_map as acamera_metadata_enum_android_request_available_dynamic_range_profiles_map_t; impl acamera_metadata_enum_acamera_scaler_available_stream_configurations { pub const ACAMERA_SCALER_AVAILABLE_STREAM_CONFIGURATIONS_OUTPUT: acamera_metadata_enum_acamera_scaler_available_stream_configurations = @@ -16822,6 +18188,16 @@ impl acamera_metadata_enum_acamera_scaler_available_recommended_stream_configura acamera_metadata_enum_acamera_scaler_available_recommended_stream_configurations = acamera_metadata_enum_acamera_scaler_available_recommended_stream_configurations(7); } +impl acamera_metadata_enum_acamera_scaler_available_recommended_stream_configurations { + pub const ACAMERA_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS_10BIT_OUTPUT: + acamera_metadata_enum_acamera_scaler_available_recommended_stream_configurations = + acamera_metadata_enum_acamera_scaler_available_recommended_stream_configurations(8); +} +impl acamera_metadata_enum_acamera_scaler_available_recommended_stream_configurations { + pub const ACAMERA_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS_PUBLIC_END_3_8: + acamera_metadata_enum_acamera_scaler_available_recommended_stream_configurations = + acamera_metadata_enum_acamera_scaler_available_recommended_stream_configurations(9); +} impl acamera_metadata_enum_acamera_scaler_available_recommended_stream_configurations { pub const ACAMERA_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS_VENDOR_START: acamera_metadata_enum_acamera_scaler_available_recommended_stream_configurations = @@ -16914,6 +18290,42 @@ pub struct acamera_metadata_enum_acamera_scaler_multi_resolution_stream_supporte pub ::std::os::raw::c_uint, ); pub use self::acamera_metadata_enum_acamera_scaler_multi_resolution_stream_supported as acamera_metadata_enum_android_scaler_multi_resolution_stream_supported_t; +impl acamera_metadata_enum_acamera_scaler_available_stream_use_cases { + pub const ACAMERA_SCALER_AVAILABLE_STREAM_USE_CASES_DEFAULT: + acamera_metadata_enum_acamera_scaler_available_stream_use_cases = + acamera_metadata_enum_acamera_scaler_available_stream_use_cases(0); +} +impl acamera_metadata_enum_acamera_scaler_available_stream_use_cases { + pub const ACAMERA_SCALER_AVAILABLE_STREAM_USE_CASES_PREVIEW: + acamera_metadata_enum_acamera_scaler_available_stream_use_cases = + acamera_metadata_enum_acamera_scaler_available_stream_use_cases(1); +} +impl acamera_metadata_enum_acamera_scaler_available_stream_use_cases { + pub const ACAMERA_SCALER_AVAILABLE_STREAM_USE_CASES_STILL_CAPTURE: + acamera_metadata_enum_acamera_scaler_available_stream_use_cases = + acamera_metadata_enum_acamera_scaler_available_stream_use_cases(2); +} +impl acamera_metadata_enum_acamera_scaler_available_stream_use_cases { + pub const ACAMERA_SCALER_AVAILABLE_STREAM_USE_CASES_VIDEO_RECORD: + acamera_metadata_enum_acamera_scaler_available_stream_use_cases = + acamera_metadata_enum_acamera_scaler_available_stream_use_cases(3); +} +impl acamera_metadata_enum_acamera_scaler_available_stream_use_cases { + pub const ACAMERA_SCALER_AVAILABLE_STREAM_USE_CASES_PREVIEW_VIDEO_STILL: + acamera_metadata_enum_acamera_scaler_available_stream_use_cases = + acamera_metadata_enum_acamera_scaler_available_stream_use_cases(4); +} +impl acamera_metadata_enum_acamera_scaler_available_stream_use_cases { + pub const ACAMERA_SCALER_AVAILABLE_STREAM_USE_CASES_VIDEO_CALL: + acamera_metadata_enum_acamera_scaler_available_stream_use_cases = + acamera_metadata_enum_acamera_scaler_available_stream_use_cases(5); +} +#[repr(transparent)] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub struct acamera_metadata_enum_acamera_scaler_available_stream_use_cases( + pub ::std::os::raw::c_uint, +); +pub use self::acamera_metadata_enum_acamera_scaler_available_stream_use_cases as acamera_metadata_enum_android_scaler_available_stream_use_cases_t; impl acamera_metadata_enum_acamera_sensor_reference_illuminant1 { pub const ACAMERA_SENSOR_REFERENCE_ILLUMINANT1_DAYLIGHT: acamera_metadata_enum_acamera_sensor_reference_illuminant1 = @@ -17480,832 +18892,1386 @@ impl acamera_metadata_enum_acamera_heic_available_heic_stream_configurations_max 0, ); } -impl acamera_metadata_enum_acamera_heic_available_heic_stream_configurations_maximum_resolution { - pub const ACAMERA_HEIC_AVAILABLE_HEIC_STREAM_CONFIGURATIONS_MAXIMUM_RESOLUTION_INPUT: - acamera_metadata_enum_acamera_heic_available_heic_stream_configurations_maximum_resolution = - acamera_metadata_enum_acamera_heic_available_heic_stream_configurations_maximum_resolution( - 1, - ); +impl acamera_metadata_enum_acamera_heic_available_heic_stream_configurations_maximum_resolution { + pub const ACAMERA_HEIC_AVAILABLE_HEIC_STREAM_CONFIGURATIONS_MAXIMUM_RESOLUTION_INPUT: + acamera_metadata_enum_acamera_heic_available_heic_stream_configurations_maximum_resolution = + acamera_metadata_enum_acamera_heic_available_heic_stream_configurations_maximum_resolution( + 1, + ); +} +#[repr(transparent)] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub struct acamera_metadata_enum_acamera_heic_available_heic_stream_configurations_maximum_resolution( + pub ::std::os::raw::c_uint, +); +pub use self::acamera_metadata_enum_acamera_heic_available_heic_stream_configurations_maximum_resolution as acamera_metadata_enum_android_heic_available_heic_stream_configurations_maximum_resolution_t; +impl acamera_metadata_enum_acamera_automotive_location { + pub const ACAMERA_AUTOMOTIVE_LOCATION_INTERIOR: + acamera_metadata_enum_acamera_automotive_location = + acamera_metadata_enum_acamera_automotive_location(0); +} +impl acamera_metadata_enum_acamera_automotive_location { + pub const ACAMERA_AUTOMOTIVE_LOCATION_EXTERIOR_OTHER: + acamera_metadata_enum_acamera_automotive_location = + acamera_metadata_enum_acamera_automotive_location(1); +} +impl acamera_metadata_enum_acamera_automotive_location { + pub const ACAMERA_AUTOMOTIVE_LOCATION_EXTERIOR_FRONT: + acamera_metadata_enum_acamera_automotive_location = + acamera_metadata_enum_acamera_automotive_location(2); +} +impl acamera_metadata_enum_acamera_automotive_location { + pub const ACAMERA_AUTOMOTIVE_LOCATION_EXTERIOR_REAR: + acamera_metadata_enum_acamera_automotive_location = + acamera_metadata_enum_acamera_automotive_location(3); +} +impl acamera_metadata_enum_acamera_automotive_location { + pub const ACAMERA_AUTOMOTIVE_LOCATION_EXTERIOR_LEFT: + acamera_metadata_enum_acamera_automotive_location = + acamera_metadata_enum_acamera_automotive_location(4); +} +impl acamera_metadata_enum_acamera_automotive_location { + pub const ACAMERA_AUTOMOTIVE_LOCATION_EXTERIOR_RIGHT: + acamera_metadata_enum_acamera_automotive_location = + acamera_metadata_enum_acamera_automotive_location(5); +} +impl acamera_metadata_enum_acamera_automotive_location { + pub const ACAMERA_AUTOMOTIVE_LOCATION_EXTRA_OTHER: + acamera_metadata_enum_acamera_automotive_location = + acamera_metadata_enum_acamera_automotive_location(6); +} +impl acamera_metadata_enum_acamera_automotive_location { + pub const ACAMERA_AUTOMOTIVE_LOCATION_EXTRA_FRONT: + acamera_metadata_enum_acamera_automotive_location = + acamera_metadata_enum_acamera_automotive_location(7); +} +impl acamera_metadata_enum_acamera_automotive_location { + pub const ACAMERA_AUTOMOTIVE_LOCATION_EXTRA_REAR: + acamera_metadata_enum_acamera_automotive_location = + acamera_metadata_enum_acamera_automotive_location(8); +} +impl acamera_metadata_enum_acamera_automotive_location { + pub const ACAMERA_AUTOMOTIVE_LOCATION_EXTRA_LEFT: + acamera_metadata_enum_acamera_automotive_location = + acamera_metadata_enum_acamera_automotive_location(9); +} +impl acamera_metadata_enum_acamera_automotive_location { + pub const ACAMERA_AUTOMOTIVE_LOCATION_EXTRA_RIGHT: + acamera_metadata_enum_acamera_automotive_location = + acamera_metadata_enum_acamera_automotive_location(10); +} +#[repr(transparent)] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub struct acamera_metadata_enum_acamera_automotive_location(pub ::std::os::raw::c_uint); +pub use self::acamera_metadata_enum_acamera_automotive_location as acamera_metadata_enum_android_automotive_location_t; +impl acamera_metadata_enum_acamera_automotive_lens_facing { + pub const ACAMERA_AUTOMOTIVE_LENS_FACING_EXTERIOR_OTHER: + acamera_metadata_enum_acamera_automotive_lens_facing = + acamera_metadata_enum_acamera_automotive_lens_facing(0); +} +impl acamera_metadata_enum_acamera_automotive_lens_facing { + pub const ACAMERA_AUTOMOTIVE_LENS_FACING_EXTERIOR_FRONT: + acamera_metadata_enum_acamera_automotive_lens_facing = + acamera_metadata_enum_acamera_automotive_lens_facing(1); +} +impl acamera_metadata_enum_acamera_automotive_lens_facing { + pub const ACAMERA_AUTOMOTIVE_LENS_FACING_EXTERIOR_REAR: + acamera_metadata_enum_acamera_automotive_lens_facing = + acamera_metadata_enum_acamera_automotive_lens_facing(2); +} +impl acamera_metadata_enum_acamera_automotive_lens_facing { + pub const ACAMERA_AUTOMOTIVE_LENS_FACING_EXTERIOR_LEFT: + acamera_metadata_enum_acamera_automotive_lens_facing = + acamera_metadata_enum_acamera_automotive_lens_facing(3); +} +impl acamera_metadata_enum_acamera_automotive_lens_facing { + pub const ACAMERA_AUTOMOTIVE_LENS_FACING_EXTERIOR_RIGHT: + acamera_metadata_enum_acamera_automotive_lens_facing = + acamera_metadata_enum_acamera_automotive_lens_facing(4); +} +impl acamera_metadata_enum_acamera_automotive_lens_facing { + pub const ACAMERA_AUTOMOTIVE_LENS_FACING_INTERIOR_OTHER: + acamera_metadata_enum_acamera_automotive_lens_facing = + acamera_metadata_enum_acamera_automotive_lens_facing(5); +} +impl acamera_metadata_enum_acamera_automotive_lens_facing { + pub const ACAMERA_AUTOMOTIVE_LENS_FACING_INTERIOR_SEAT_ROW_1_LEFT: + acamera_metadata_enum_acamera_automotive_lens_facing = + acamera_metadata_enum_acamera_automotive_lens_facing(6); +} +impl acamera_metadata_enum_acamera_automotive_lens_facing { + pub const ACAMERA_AUTOMOTIVE_LENS_FACING_INTERIOR_SEAT_ROW_1_CENTER: + acamera_metadata_enum_acamera_automotive_lens_facing = + acamera_metadata_enum_acamera_automotive_lens_facing(7); +} +impl acamera_metadata_enum_acamera_automotive_lens_facing { + pub const ACAMERA_AUTOMOTIVE_LENS_FACING_INTERIOR_SEAT_ROW_1_RIGHT: + acamera_metadata_enum_acamera_automotive_lens_facing = + acamera_metadata_enum_acamera_automotive_lens_facing(8); +} +impl acamera_metadata_enum_acamera_automotive_lens_facing { + pub const ACAMERA_AUTOMOTIVE_LENS_FACING_INTERIOR_SEAT_ROW_2_LEFT: + acamera_metadata_enum_acamera_automotive_lens_facing = + acamera_metadata_enum_acamera_automotive_lens_facing(9); +} +impl acamera_metadata_enum_acamera_automotive_lens_facing { + pub const ACAMERA_AUTOMOTIVE_LENS_FACING_INTERIOR_SEAT_ROW_2_CENTER: + acamera_metadata_enum_acamera_automotive_lens_facing = + acamera_metadata_enum_acamera_automotive_lens_facing(10); +} +impl acamera_metadata_enum_acamera_automotive_lens_facing { + pub const ACAMERA_AUTOMOTIVE_LENS_FACING_INTERIOR_SEAT_ROW_2_RIGHT: + acamera_metadata_enum_acamera_automotive_lens_facing = + acamera_metadata_enum_acamera_automotive_lens_facing(11); +} +impl acamera_metadata_enum_acamera_automotive_lens_facing { + pub const ACAMERA_AUTOMOTIVE_LENS_FACING_INTERIOR_SEAT_ROW_3_LEFT: + acamera_metadata_enum_acamera_automotive_lens_facing = + acamera_metadata_enum_acamera_automotive_lens_facing(12); +} +impl acamera_metadata_enum_acamera_automotive_lens_facing { + pub const ACAMERA_AUTOMOTIVE_LENS_FACING_INTERIOR_SEAT_ROW_3_CENTER: + acamera_metadata_enum_acamera_automotive_lens_facing = + acamera_metadata_enum_acamera_automotive_lens_facing(13); +} +impl acamera_metadata_enum_acamera_automotive_lens_facing { + pub const ACAMERA_AUTOMOTIVE_LENS_FACING_INTERIOR_SEAT_ROW_3_RIGHT: + acamera_metadata_enum_acamera_automotive_lens_facing = + acamera_metadata_enum_acamera_automotive_lens_facing(14); +} +#[repr(transparent)] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub struct acamera_metadata_enum_acamera_automotive_lens_facing(pub ::std::os::raw::c_uint); +pub use self::acamera_metadata_enum_acamera_automotive_lens_facing as acamera_metadata_enum_android_automotive_lens_facing_t; +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ACameraMetadata { + _unused: [u8; 0], +} +pub const ACAMERA_TYPE_BYTE: ::std::os::raw::c_uint = 0; +pub const ACAMERA_TYPE_INT32: ::std::os::raw::c_uint = 1; +pub const ACAMERA_TYPE_FLOAT: ::std::os::raw::c_uint = 2; +pub const ACAMERA_TYPE_INT64: ::std::os::raw::c_uint = 3; +pub const ACAMERA_TYPE_DOUBLE: ::std::os::raw::c_uint = 4; +pub const ACAMERA_TYPE_RATIONAL: ::std::os::raw::c_uint = 5; +pub const ACAMERA_NUM_TYPES: ::std::os::raw::c_uint = 6; +pub type _bindgen_ty_62 = ::std::os::raw::c_uint; +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ACameraMetadata_rational { + pub numerator: i32, + pub denominator: i32, +} +#[test] +fn bindgen_test_layout_ACameraMetadata_rational() { + assert_eq!( + ::std::mem::size_of::(), + 8usize, + concat!("Size of: ", stringify!(ACameraMetadata_rational)) + ); + assert_eq!( + ::std::mem::align_of::(), + 4usize, + concat!("Alignment of ", stringify!(ACameraMetadata_rational)) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).numerator as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ACameraMetadata_rational), + "::", + stringify!(numerator) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).denominator as *const _ as usize + }, + 4usize, + concat!( + "Offset of field: ", + stringify!(ACameraMetadata_rational), + "::", + stringify!(denominator) + ) + ); +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct ACameraMetadata_entry { + pub tag: u32, + pub type_: u8, + pub count: u32, + pub data: ACameraMetadata_entry__bindgen_ty_1, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union ACameraMetadata_entry__bindgen_ty_1 { + pub u8_: *mut u8, + pub i32_: *mut i32, + pub f: *mut f32, + pub i64_: *mut i64, + pub d: *mut f64, + pub r: *mut ACameraMetadata_rational, +} +#[test] +fn bindgen_test_layout_ACameraMetadata_entry__bindgen_ty_1() { + assert_eq!( + ::std::mem::size_of::(), + 8usize, + concat!("Size of: ", stringify!(ACameraMetadata_entry__bindgen_ty_1)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(ACameraMetadata_entry__bindgen_ty_1) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).u8_ as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ACameraMetadata_entry__bindgen_ty_1), + "::", + stringify!(u8_) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).i32_ as *const _ + as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ACameraMetadata_entry__bindgen_ty_1), + "::", + stringify!(i32_) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).f as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ACameraMetadata_entry__bindgen_ty_1), + "::", + stringify!(f) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).i64_ as *const _ + as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ACameraMetadata_entry__bindgen_ty_1), + "::", + stringify!(i64_) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).d as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ACameraMetadata_entry__bindgen_ty_1), + "::", + stringify!(d) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).r as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ACameraMetadata_entry__bindgen_ty_1), + "::", + stringify!(r) + ) + ); +} +#[test] +fn bindgen_test_layout_ACameraMetadata_entry() { + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!("Size of: ", stringify!(ACameraMetadata_entry)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(ACameraMetadata_entry)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).tag as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ACameraMetadata_entry), + "::", + stringify!(tag) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).type_ as *const _ as usize }, + 4usize, + concat!( + "Offset of field: ", + stringify!(ACameraMetadata_entry), + "::", + stringify!(type_) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).count as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(ACameraMetadata_entry), + "::", + stringify!(count) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).data as *const _ as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(ACameraMetadata_entry), + "::", + stringify!(data) + ) + ); } -#[repr(transparent)] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub struct acamera_metadata_enum_acamera_heic_available_heic_stream_configurations_maximum_resolution( - pub ::std::os::raw::c_uint, -); -pub use self::acamera_metadata_enum_acamera_heic_available_heic_stream_configurations_maximum_resolution as acamera_metadata_enum_android_heic_available_heic_stream_configurations_maximum_resolution_t; #[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ACameraMetadata { - _unused: [u8; 0], +#[derive(Copy, Clone)] +pub struct ACameraMetadata_const_entry { + pub tag: u32, + pub type_: u8, + pub count: u32, + pub data: ACameraMetadata_const_entry__bindgen_ty_1, } -pub const ACAMERA_TYPE_BYTE: ::std::os::raw::c_uint = 0; -pub const ACAMERA_TYPE_INT32: ::std::os::raw::c_uint = 1; -pub const ACAMERA_TYPE_FLOAT: ::std::os::raw::c_uint = 2; -pub const ACAMERA_TYPE_INT64: ::std::os::raw::c_uint = 3; -pub const ACAMERA_TYPE_DOUBLE: ::std::os::raw::c_uint = 4; -pub const ACAMERA_TYPE_RATIONAL: ::std::os::raw::c_uint = 5; -pub const ACAMERA_NUM_TYPES: ::std::os::raw::c_uint = 6; -pub type _bindgen_ty_60 = ::std::os::raw::c_uint; #[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ACameraMetadata_rational { - pub numerator: i32, - pub denominator: i32, +#[derive(Copy, Clone)] +pub union ACameraMetadata_const_entry__bindgen_ty_1 { + pub u8_: *const u8, + pub i32_: *const i32, + pub f: *const f32, + pub i64_: *const i64, + pub d: *const f64, + pub r: *const ACameraMetadata_rational, } #[test] -fn bindgen_test_layout_ACameraMetadata_rational() { +fn bindgen_test_layout_ACameraMetadata_const_entry__bindgen_ty_1() { assert_eq!( - ::std::mem::size_of::(), + ::std::mem::size_of::(), 8usize, - concat!("Size of: ", stringify!(ACameraMetadata_rational)) + concat!( + "Size of: ", + stringify!(ACameraMetadata_const_entry__bindgen_ty_1) + ) ); assert_eq!( - ::std::mem::align_of::(), + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(ACameraMetadata_const_entry__bindgen_ty_1) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).u8_ as *const _ + as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ACameraMetadata_const_entry__bindgen_ty_1), + "::", + stringify!(u8_) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).i32_ as *const _ + as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ACameraMetadata_const_entry__bindgen_ty_1), + "::", + stringify!(i32_) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).f as *const _ + as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ACameraMetadata_const_entry__bindgen_ty_1), + "::", + stringify!(f) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).i64_ as *const _ + as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ACameraMetadata_const_entry__bindgen_ty_1), + "::", + stringify!(i64_) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).d as *const _ + as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ACameraMetadata_const_entry__bindgen_ty_1), + "::", + stringify!(d) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).r as *const _ + as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ACameraMetadata_const_entry__bindgen_ty_1), + "::", + stringify!(r) + ) + ); +} +#[test] +fn bindgen_test_layout_ACameraMetadata_const_entry() { + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!("Size of: ", stringify!(ACameraMetadata_const_entry)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(ACameraMetadata_const_entry)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).tag as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ACameraMetadata_const_entry), + "::", + stringify!(tag) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).type_ as *const _ as usize + }, 4usize, - concat!("Alignment of ", stringify!(ACameraMetadata_rational)) + concat!( + "Offset of field: ", + stringify!(ACameraMetadata_const_entry), + "::", + stringify!(type_) + ) ); assert_eq!( unsafe { - &(*(::std::ptr::null::())).numerator as *const _ as usize + &(*(::std::ptr::null::())).count as *const _ as usize }, - 0usize, + 8usize, concat!( "Offset of field: ", - stringify!(ACameraMetadata_rational), + stringify!(ACameraMetadata_const_entry), "::", - stringify!(numerator) + stringify!(count) ) ); assert_eq!( unsafe { - &(*(::std::ptr::null::())).denominator as *const _ as usize + &(*(::std::ptr::null::())).data as *const _ as usize }, - 4usize, + 16usize, concat!( "Offset of field: ", - stringify!(ACameraMetadata_rational), + stringify!(ACameraMetadata_const_entry), "::", - stringify!(denominator) + stringify!(data) ) ); } +extern "C" { + pub fn ACameraMetadata_getConstEntry( + metadata: *const ACameraMetadata, + tag: u32, + entry: *mut ACameraMetadata_const_entry, + ) -> camera_status_t; +} +extern "C" { + pub fn ACameraMetadata_getAllTags( + metadata: *const ACameraMetadata, + numEntries: *mut i32, + tags: *mut *const u32, + ) -> camera_status_t; +} +extern "C" { + pub fn ACameraMetadata_copy(src: *const ACameraMetadata) -> *mut ACameraMetadata; +} +extern "C" { + pub fn ACameraMetadata_free(metadata: *mut ACameraMetadata); +} +extern "C" { + pub fn ACameraMetadata_isLogicalMultiCamera( + staticMetadata: *const ACameraMetadata, + numPhysicalCameras: *mut size_t, + physicalCameraIds: *mut *const *const ::std::os::raw::c_char, + ) -> bool; +} +extern "C" { + pub fn ACameraMetadata_fromCameraMetadata( + env: *mut JNIEnv, + cameraMetadata: jobject, + ) -> *mut ACameraMetadata; +} +pub type ACameraWindowType = ANativeWindow; #[repr(C)] -#[derive(Copy, Clone)] -pub struct ACameraMetadata_entry { - pub tag: u32, - pub type_: u8, - pub count: u32, - pub data: ACameraMetadata_entry__bindgen_ty_1, +#[derive(Debug, Copy, Clone)] +pub struct ACameraOutputTargets { + _unused: [u8; 0], } #[repr(C)] -#[derive(Copy, Clone)] -pub union ACameraMetadata_entry__bindgen_ty_1 { - pub u8_: *mut u8, - pub i32_: *mut i32, - pub f: *mut f32, - pub i64_: *mut i64, - pub d: *mut f64, - pub r: *mut ACameraMetadata_rational, +#[derive(Debug, Copy, Clone)] +pub struct ACameraOutputTarget { + _unused: [u8; 0], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ACaptureRequest { + _unused: [u8; 0], +} +extern "C" { + pub fn ACameraOutputTarget_create( + window: *mut ACameraWindowType, + output: *mut *mut ACameraOutputTarget, + ) -> camera_status_t; +} +extern "C" { + pub fn ACameraOutputTarget_free(output: *mut ACameraOutputTarget); +} +extern "C" { + pub fn ACaptureRequest_addTarget( + request: *mut ACaptureRequest, + output: *const ACameraOutputTarget, + ) -> camera_status_t; +} +extern "C" { + pub fn ACaptureRequest_removeTarget( + request: *mut ACaptureRequest, + output: *const ACameraOutputTarget, + ) -> camera_status_t; +} +extern "C" { + pub fn ACaptureRequest_getConstEntry( + request: *const ACaptureRequest, + tag: u32, + entry: *mut ACameraMetadata_const_entry, + ) -> camera_status_t; +} +extern "C" { + pub fn ACaptureRequest_getAllTags( + request: *const ACaptureRequest, + numTags: *mut i32, + tags: *mut *const u32, + ) -> camera_status_t; +} +extern "C" { + pub fn ACaptureRequest_setEntry_u8( + request: *mut ACaptureRequest, + tag: u32, + count: u32, + data: *const u8, + ) -> camera_status_t; +} +extern "C" { + pub fn ACaptureRequest_setEntry_i32( + request: *mut ACaptureRequest, + tag: u32, + count: u32, + data: *const i32, + ) -> camera_status_t; +} +extern "C" { + pub fn ACaptureRequest_setEntry_float( + request: *mut ACaptureRequest, + tag: u32, + count: u32, + data: *const f32, + ) -> camera_status_t; +} +extern "C" { + pub fn ACaptureRequest_setEntry_i64( + request: *mut ACaptureRequest, + tag: u32, + count: u32, + data: *const i64, + ) -> camera_status_t; +} +extern "C" { + pub fn ACaptureRequest_setEntry_double( + request: *mut ACaptureRequest, + tag: u32, + count: u32, + data: *const f64, + ) -> camera_status_t; +} +extern "C" { + pub fn ACaptureRequest_setEntry_rational( + request: *mut ACaptureRequest, + tag: u32, + count: u32, + data: *const ACameraMetadata_rational, + ) -> camera_status_t; +} +extern "C" { + pub fn ACaptureRequest_free(request: *mut ACaptureRequest); +} +extern "C" { + pub fn ACaptureRequest_setUserContext( + request: *mut ACaptureRequest, + context: *mut ::std::os::raw::c_void, + ) -> camera_status_t; +} +extern "C" { + pub fn ACaptureRequest_getUserContext( + request: *const ACaptureRequest, + context: *mut *mut ::std::os::raw::c_void, + ) -> camera_status_t; +} +extern "C" { + pub fn ACaptureRequest_copy(src: *const ACaptureRequest) -> *mut ACaptureRequest; +} +extern "C" { + pub fn ACaptureRequest_getConstEntry_physicalCamera( + request: *const ACaptureRequest, + physicalId: *const ::std::os::raw::c_char, + tag: u32, + entry: *mut ACameraMetadata_const_entry, + ) -> camera_status_t; +} +extern "C" { + pub fn ACaptureRequest_setEntry_physicalCamera_u8( + request: *mut ACaptureRequest, + physicalId: *const ::std::os::raw::c_char, + tag: u32, + count: u32, + data: *const u8, + ) -> camera_status_t; +} +extern "C" { + pub fn ACaptureRequest_setEntry_physicalCamera_i32( + request: *mut ACaptureRequest, + physicalId: *const ::std::os::raw::c_char, + tag: u32, + count: u32, + data: *const i32, + ) -> camera_status_t; +} +extern "C" { + pub fn ACaptureRequest_setEntry_physicalCamera_float( + request: *mut ACaptureRequest, + physicalId: *const ::std::os::raw::c_char, + tag: u32, + count: u32, + data: *const f32, + ) -> camera_status_t; +} +extern "C" { + pub fn ACaptureRequest_setEntry_physicalCamera_i64( + request: *mut ACaptureRequest, + physicalId: *const ::std::os::raw::c_char, + tag: u32, + count: u32, + data: *const i64, + ) -> camera_status_t; +} +extern "C" { + pub fn ACaptureRequest_setEntry_physicalCamera_double( + request: *mut ACaptureRequest, + physicalId: *const ::std::os::raw::c_char, + tag: u32, + count: u32, + data: *const f64, + ) -> camera_status_t; +} +extern "C" { + pub fn ACaptureRequest_setEntry_physicalCamera_rational( + request: *mut ACaptureRequest, + physicalId: *const ::std::os::raw::c_char, + tag: u32, + count: u32, + data: *const ACameraMetadata_rational, + ) -> camera_status_t; +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ACameraCaptureSession { + _unused: [u8; 0], +} +pub type ACameraCaptureSession_stateCallback = ::std::option::Option< + unsafe extern "C" fn(context: *mut ::std::os::raw::c_void, session: *mut ACameraCaptureSession), +>; +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ACameraCaptureSession_stateCallbacks { + pub context: *mut ::std::os::raw::c_void, + pub onClosed: ACameraCaptureSession_stateCallback, + pub onReady: ACameraCaptureSession_stateCallback, + pub onActive: ACameraCaptureSession_stateCallback, } #[test] -fn bindgen_test_layout_ACameraMetadata_entry__bindgen_ty_1() { - assert_eq!( - ::std::mem::size_of::(), - 8usize, - concat!("Size of: ", stringify!(ACameraMetadata_entry__bindgen_ty_1)) - ); +fn bindgen_test_layout_ACameraCaptureSession_stateCallbacks() { assert_eq!( - ::std::mem::align_of::(), - 8usize, + ::std::mem::size_of::(), + 32usize, concat!( - "Alignment of ", - stringify!(ACameraMetadata_entry__bindgen_ty_1) + "Size of: ", + stringify!(ACameraCaptureSession_stateCallbacks) ) ); assert_eq!( - unsafe { - &(*(::std::ptr::null::())).u8_ as *const _ as usize - }, - 0usize, + ::std::mem::align_of::(), + 8usize, concat!( - "Offset of field: ", - stringify!(ACameraMetadata_entry__bindgen_ty_1), - "::", - stringify!(u8_) + "Alignment of ", + stringify!(ACameraCaptureSession_stateCallbacks) ) ); assert_eq!( unsafe { - &(*(::std::ptr::null::())).i32_ as *const _ + &(*(::std::ptr::null::())).context as *const _ as usize }, 0usize, concat!( "Offset of field: ", - stringify!(ACameraMetadata_entry__bindgen_ty_1), - "::", - stringify!(i32_) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::())).f as *const _ as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(ACameraMetadata_entry__bindgen_ty_1), + stringify!(ACameraCaptureSession_stateCallbacks), "::", - stringify!(f) + stringify!(context) ) ); assert_eq!( unsafe { - &(*(::std::ptr::null::())).i64_ as *const _ + &(*(::std::ptr::null::())).onClosed as *const _ as usize }, - 0usize, + 8usize, concat!( "Offset of field: ", - stringify!(ACameraMetadata_entry__bindgen_ty_1), + stringify!(ACameraCaptureSession_stateCallbacks), "::", - stringify!(i64_) + stringify!(onClosed) ) ); assert_eq!( unsafe { - &(*(::std::ptr::null::())).d as *const _ as usize + &(*(::std::ptr::null::())).onReady as *const _ + as usize }, - 0usize, + 16usize, concat!( "Offset of field: ", - stringify!(ACameraMetadata_entry__bindgen_ty_1), + stringify!(ACameraCaptureSession_stateCallbacks), "::", - stringify!(d) + stringify!(onReady) ) ); assert_eq!( unsafe { - &(*(::std::ptr::null::())).r as *const _ as usize + &(*(::std::ptr::null::())).onActive as *const _ + as usize }, - 0usize, + 24usize, concat!( "Offset of field: ", - stringify!(ACameraMetadata_entry__bindgen_ty_1), + stringify!(ACameraCaptureSession_stateCallbacks), "::", - stringify!(r) + stringify!(onActive) ) ); } +pub const CAPTURE_FAILURE_REASON_FLUSHED: ::std::os::raw::c_uint = 0; +pub const CAPTURE_FAILURE_REASON_ERROR: ::std::os::raw::c_uint = 1; +pub type _bindgen_ty_63 = ::std::os::raw::c_uint; +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ACameraCaptureFailure { + pub frameNumber: i64, + pub reason: ::std::os::raw::c_int, + pub sequenceId: ::std::os::raw::c_int, + pub wasImageCaptured: bool, +} #[test] -fn bindgen_test_layout_ACameraMetadata_entry() { +fn bindgen_test_layout_ACameraCaptureFailure() { assert_eq!( - ::std::mem::size_of::(), + ::std::mem::size_of::(), 24usize, - concat!("Size of: ", stringify!(ACameraMetadata_entry)) + concat!("Size of: ", stringify!(ACameraCaptureFailure)) ); assert_eq!( - ::std::mem::align_of::(), + ::std::mem::align_of::(), 8usize, - concat!("Alignment of ", stringify!(ACameraMetadata_entry)) + concat!("Alignment of ", stringify!(ACameraCaptureFailure)) ); assert_eq!( - unsafe { &(*(::std::ptr::null::())).tag as *const _ as usize }, + unsafe { + &(*(::std::ptr::null::())).frameNumber as *const _ as usize + }, 0usize, concat!( "Offset of field: ", - stringify!(ACameraMetadata_entry), + stringify!(ACameraCaptureFailure), "::", - stringify!(tag) + stringify!(frameNumber) ) ); assert_eq!( - unsafe { &(*(::std::ptr::null::())).type_ as *const _ as usize }, - 4usize, + unsafe { &(*(::std::ptr::null::())).reason as *const _ as usize }, + 8usize, concat!( "Offset of field: ", - stringify!(ACameraMetadata_entry), + stringify!(ACameraCaptureFailure), "::", - stringify!(type_) + stringify!(reason) ) ); assert_eq!( - unsafe { &(*(::std::ptr::null::())).count as *const _ as usize }, - 8usize, + unsafe { + &(*(::std::ptr::null::())).sequenceId as *const _ as usize + }, + 12usize, concat!( "Offset of field: ", - stringify!(ACameraMetadata_entry), + stringify!(ACameraCaptureFailure), "::", - stringify!(count) + stringify!(sequenceId) ) ); assert_eq!( - unsafe { &(*(::std::ptr::null::())).data as *const _ as usize }, + unsafe { + &(*(::std::ptr::null::())).wasImageCaptured as *const _ as usize + }, 16usize, concat!( "Offset of field: ", - stringify!(ACameraMetadata_entry), + stringify!(ACameraCaptureFailure), "::", - stringify!(data) + stringify!(wasImageCaptured) ) ); } +pub type ACameraCaptureSession_captureCallback_start = ::std::option::Option< + unsafe extern "C" fn( + context: *mut ::std::os::raw::c_void, + session: *mut ACameraCaptureSession, + request: *const ACaptureRequest, + timestamp: i64, + ), +>; +pub type ACameraCaptureSession_captureCallback_result = ::std::option::Option< + unsafe extern "C" fn( + context: *mut ::std::os::raw::c_void, + session: *mut ACameraCaptureSession, + request: *mut ACaptureRequest, + result: *const ACameraMetadata, + ), +>; +pub type ACameraCaptureSession_captureCallback_failed = ::std::option::Option< + unsafe extern "C" fn( + context: *mut ::std::os::raw::c_void, + session: *mut ACameraCaptureSession, + request: *mut ACaptureRequest, + failure: *mut ACameraCaptureFailure, + ), +>; +pub type ACameraCaptureSession_captureCallback_sequenceEnd = ::std::option::Option< + unsafe extern "C" fn( + context: *mut ::std::os::raw::c_void, + session: *mut ACameraCaptureSession, + sequenceId: ::std::os::raw::c_int, + frameNumber: i64, + ), +>; +pub type ACameraCaptureSession_captureCallback_sequenceAbort = ::std::option::Option< + unsafe extern "C" fn( + context: *mut ::std::os::raw::c_void, + session: *mut ACameraCaptureSession, + sequenceId: ::std::os::raw::c_int, + ), +>; +pub type ACameraCaptureSession_captureCallback_bufferLost = ::std::option::Option< + unsafe extern "C" fn( + context: *mut ::std::os::raw::c_void, + session: *mut ACameraCaptureSession, + request: *mut ACaptureRequest, + window: *mut ACameraWindowType, + frameNumber: i64, + ), +>; #[repr(C)] -#[derive(Copy, Clone)] -pub struct ACameraMetadata_const_entry { - pub tag: u32, - pub type_: u8, - pub count: u32, - pub data: ACameraMetadata_const_entry__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union ACameraMetadata_const_entry__bindgen_ty_1 { - pub u8_: *const u8, - pub i32_: *const i32, - pub f: *const f32, - pub i64_: *const i64, - pub d: *const f64, - pub r: *const ACameraMetadata_rational, +#[derive(Debug, Copy, Clone)] +pub struct ACameraCaptureSession_captureCallbacks { + pub context: *mut ::std::os::raw::c_void, + pub onCaptureStarted: ACameraCaptureSession_captureCallback_start, + pub onCaptureProgressed: ACameraCaptureSession_captureCallback_result, + pub onCaptureCompleted: ACameraCaptureSession_captureCallback_result, + pub onCaptureFailed: ACameraCaptureSession_captureCallback_failed, + pub onCaptureSequenceCompleted: ACameraCaptureSession_captureCallback_sequenceEnd, + pub onCaptureSequenceAborted: ACameraCaptureSession_captureCallback_sequenceAbort, + pub onCaptureBufferLost: ACameraCaptureSession_captureCallback_bufferLost, } #[test] -fn bindgen_test_layout_ACameraMetadata_const_entry__bindgen_ty_1() { +fn bindgen_test_layout_ACameraCaptureSession_captureCallbacks() { assert_eq!( - ::std::mem::size_of::(), - 8usize, + ::std::mem::size_of::(), + 64usize, concat!( "Size of: ", - stringify!(ACameraMetadata_const_entry__bindgen_ty_1) + stringify!(ACameraCaptureSession_captureCallbacks) ) ); assert_eq!( - ::std::mem::align_of::(), + ::std::mem::align_of::(), 8usize, concat!( "Alignment of ", - stringify!(ACameraMetadata_const_entry__bindgen_ty_1) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::())).u8_ as *const _ - as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(ACameraMetadata_const_entry__bindgen_ty_1), - "::", - stringify!(u8_) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::())).i32_ as *const _ - as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(ACameraMetadata_const_entry__bindgen_ty_1), - "::", - stringify!(i32_) + stringify!(ACameraCaptureSession_captureCallbacks) ) ); assert_eq!( unsafe { - &(*(::std::ptr::null::())).f as *const _ + &(*(::std::ptr::null::())).context as *const _ as usize }, 0usize, concat!( "Offset of field: ", - stringify!(ACameraMetadata_const_entry__bindgen_ty_1), + stringify!(ACameraCaptureSession_captureCallbacks), "::", - stringify!(f) + stringify!(context) ) ); assert_eq!( unsafe { - &(*(::std::ptr::null::())).i64_ as *const _ - as usize + &(*(::std::ptr::null::())).onCaptureStarted + as *const _ as usize }, - 0usize, + 8usize, concat!( "Offset of field: ", - stringify!(ACameraMetadata_const_entry__bindgen_ty_1), + stringify!(ACameraCaptureSession_captureCallbacks), "::", - stringify!(i64_) + stringify!(onCaptureStarted) ) ); assert_eq!( unsafe { - &(*(::std::ptr::null::())).d as *const _ - as usize + &(*(::std::ptr::null::())).onCaptureProgressed + as *const _ as usize }, - 0usize, + 16usize, concat!( "Offset of field: ", - stringify!(ACameraMetadata_const_entry__bindgen_ty_1), + stringify!(ACameraCaptureSession_captureCallbacks), "::", - stringify!(d) + stringify!(onCaptureProgressed) ) ); assert_eq!( unsafe { - &(*(::std::ptr::null::())).r as *const _ - as usize + &(*(::std::ptr::null::())).onCaptureCompleted + as *const _ as usize }, - 0usize, + 24usize, concat!( "Offset of field: ", - stringify!(ACameraMetadata_const_entry__bindgen_ty_1), + stringify!(ACameraCaptureSession_captureCallbacks), "::", - stringify!(r) + stringify!(onCaptureCompleted) ) ); -} -#[test] -fn bindgen_test_layout_ACameraMetadata_const_entry() { - assert_eq!( - ::std::mem::size_of::(), - 24usize, - concat!("Size of: ", stringify!(ACameraMetadata_const_entry)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(ACameraMetadata_const_entry)) - ); assert_eq!( - unsafe { &(*(::std::ptr::null::())).tag as *const _ as usize }, - 0usize, + unsafe { + &(*(::std::ptr::null::())).onCaptureFailed + as *const _ as usize + }, + 32usize, concat!( "Offset of field: ", - stringify!(ACameraMetadata_const_entry), + stringify!(ACameraCaptureSession_captureCallbacks), "::", - stringify!(tag) + stringify!(onCaptureFailed) ) ); assert_eq!( unsafe { - &(*(::std::ptr::null::())).type_ as *const _ as usize + &(*(::std::ptr::null::())) + .onCaptureSequenceCompleted as *const _ as usize }, - 4usize, + 40usize, concat!( "Offset of field: ", - stringify!(ACameraMetadata_const_entry), + stringify!(ACameraCaptureSession_captureCallbacks), "::", - stringify!(type_) + stringify!(onCaptureSequenceCompleted) ) ); assert_eq!( unsafe { - &(*(::std::ptr::null::())).count as *const _ as usize + &(*(::std::ptr::null::())) + .onCaptureSequenceAborted as *const _ as usize }, - 8usize, + 48usize, concat!( "Offset of field: ", - stringify!(ACameraMetadata_const_entry), + stringify!(ACameraCaptureSession_captureCallbacks), "::", - stringify!(count) + stringify!(onCaptureSequenceAborted) ) ); assert_eq!( unsafe { - &(*(::std::ptr::null::())).data as *const _ as usize + &(*(::std::ptr::null::())).onCaptureBufferLost + as *const _ as usize }, - 16usize, + 56usize, concat!( "Offset of field: ", - stringify!(ACameraMetadata_const_entry), + stringify!(ACameraCaptureSession_captureCallbacks), "::", - stringify!(data) + stringify!(onCaptureBufferLost) ) ); } +pub const CAPTURE_SEQUENCE_ID_NONE: ::std::os::raw::c_int = -1; +pub type _bindgen_ty_64 = ::std::os::raw::c_int; extern "C" { - pub fn ACameraMetadata_getConstEntry( - metadata: *const ACameraMetadata, - tag: u32, - entry: *mut ACameraMetadata_const_entry, - ) -> camera_status_t; -} -extern "C" { - pub fn ACameraMetadata_getAllTags( - metadata: *const ACameraMetadata, - numEntries: *mut i32, - tags: *mut *const u32, - ) -> camera_status_t; -} -extern "C" { - pub fn ACameraMetadata_copy(src: *const ACameraMetadata) -> *mut ACameraMetadata; -} -extern "C" { - pub fn ACameraMetadata_free(metadata: *mut ACameraMetadata); -} -extern "C" { - pub fn ACameraMetadata_isLogicalMultiCamera( - staticMetadata: *const ACameraMetadata, - numPhysicalCameras: *mut size_t, - physicalCameraIds: *mut *const *const ::std::os::raw::c_char, - ) -> bool; -} -extern "C" { - pub fn ACameraMetadata_fromCameraMetadata( - env: *mut JNIEnv, - cameraMetadata: jobject, - ) -> *mut ACameraMetadata; -} -pub type ACameraWindowType = ANativeWindow; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ACameraOutputTargets { - _unused: [u8; 0], -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ACameraOutputTarget { - _unused: [u8; 0], + pub fn ACameraCaptureSession_close(session: *mut ACameraCaptureSession); } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct ACaptureRequest { +pub struct ACameraDevice { _unused: [u8; 0], } extern "C" { - pub fn ACameraOutputTarget_create( - window: *mut ACameraWindowType, - output: *mut *mut ACameraOutputTarget, - ) -> camera_status_t; -} -extern "C" { - pub fn ACameraOutputTarget_free(output: *mut ACameraOutputTarget); -} -extern "C" { - pub fn ACaptureRequest_addTarget( - request: *mut ACaptureRequest, - output: *const ACameraOutputTarget, - ) -> camera_status_t; -} -extern "C" { - pub fn ACaptureRequest_removeTarget( - request: *mut ACaptureRequest, - output: *const ACameraOutputTarget, - ) -> camera_status_t; -} -extern "C" { - pub fn ACaptureRequest_getConstEntry( - request: *const ACaptureRequest, - tag: u32, - entry: *mut ACameraMetadata_const_entry, - ) -> camera_status_t; -} -extern "C" { - pub fn ACaptureRequest_getAllTags( - request: *const ACaptureRequest, - numTags: *mut i32, - tags: *mut *const u32, - ) -> camera_status_t; -} -extern "C" { - pub fn ACaptureRequest_setEntry_u8( - request: *mut ACaptureRequest, - tag: u32, - count: u32, - data: *const u8, - ) -> camera_status_t; -} -extern "C" { - pub fn ACaptureRequest_setEntry_i32( - request: *mut ACaptureRequest, - tag: u32, - count: u32, - data: *const i32, - ) -> camera_status_t; -} -extern "C" { - pub fn ACaptureRequest_setEntry_float( - request: *mut ACaptureRequest, - tag: u32, - count: u32, - data: *const f32, - ) -> camera_status_t; -} -extern "C" { - pub fn ACaptureRequest_setEntry_i64( - request: *mut ACaptureRequest, - tag: u32, - count: u32, - data: *const i64, - ) -> camera_status_t; -} -extern "C" { - pub fn ACaptureRequest_setEntry_double( - request: *mut ACaptureRequest, - tag: u32, - count: u32, - data: *const f64, - ) -> camera_status_t; -} -extern "C" { - pub fn ACaptureRequest_setEntry_rational( - request: *mut ACaptureRequest, - tag: u32, - count: u32, - data: *const ACameraMetadata_rational, - ) -> camera_status_t; -} -extern "C" { - pub fn ACaptureRequest_free(request: *mut ACaptureRequest); -} -extern "C" { - pub fn ACaptureRequest_setUserContext( - request: *mut ACaptureRequest, - context: *mut ::std::os::raw::c_void, - ) -> camera_status_t; -} -extern "C" { - pub fn ACaptureRequest_getUserContext( - request: *const ACaptureRequest, - context: *mut *mut ::std::os::raw::c_void, - ) -> camera_status_t; -} -extern "C" { - pub fn ACaptureRequest_copy(src: *const ACaptureRequest) -> *mut ACaptureRequest; -} -extern "C" { - pub fn ACaptureRequest_getConstEntry_physicalCamera( - request: *const ACaptureRequest, - physicalId: *const ::std::os::raw::c_char, - tag: u32, - entry: *mut ACameraMetadata_const_entry, - ) -> camera_status_t; -} -extern "C" { - pub fn ACaptureRequest_setEntry_physicalCamera_u8( - request: *mut ACaptureRequest, - physicalId: *const ::std::os::raw::c_char, - tag: u32, - count: u32, - data: *const u8, - ) -> camera_status_t; -} -extern "C" { - pub fn ACaptureRequest_setEntry_physicalCamera_i32( - request: *mut ACaptureRequest, - physicalId: *const ::std::os::raw::c_char, - tag: u32, - count: u32, - data: *const i32, + pub fn ACameraCaptureSession_getDevice( + session: *mut ACameraCaptureSession, + device: *mut *mut ACameraDevice, ) -> camera_status_t; } extern "C" { - pub fn ACaptureRequest_setEntry_physicalCamera_float( - request: *mut ACaptureRequest, - physicalId: *const ::std::os::raw::c_char, - tag: u32, - count: u32, - data: *const f32, + pub fn ACameraCaptureSession_capture( + session: *mut ACameraCaptureSession, + callbacks: *mut ACameraCaptureSession_captureCallbacks, + numRequests: ::std::os::raw::c_int, + requests: *mut *mut ACaptureRequest, + captureSequenceId: *mut ::std::os::raw::c_int, ) -> camera_status_t; } extern "C" { - pub fn ACaptureRequest_setEntry_physicalCamera_i64( - request: *mut ACaptureRequest, - physicalId: *const ::std::os::raw::c_char, - tag: u32, - count: u32, - data: *const i64, + pub fn ACameraCaptureSession_setRepeatingRequest( + session: *mut ACameraCaptureSession, + callbacks: *mut ACameraCaptureSession_captureCallbacks, + numRequests: ::std::os::raw::c_int, + requests: *mut *mut ACaptureRequest, + captureSequenceId: *mut ::std::os::raw::c_int, ) -> camera_status_t; } extern "C" { - pub fn ACaptureRequest_setEntry_physicalCamera_double( - request: *mut ACaptureRequest, - physicalId: *const ::std::os::raw::c_char, - tag: u32, - count: u32, - data: *const f64, + pub fn ACameraCaptureSession_stopRepeating( + session: *mut ACameraCaptureSession, ) -> camera_status_t; } extern "C" { - pub fn ACaptureRequest_setEntry_physicalCamera_rational( - request: *mut ACaptureRequest, - physicalId: *const ::std::os::raw::c_char, - tag: u32, - count: u32, - data: *const ACameraMetadata_rational, + pub fn ACameraCaptureSession_abortCaptures( + session: *mut ACameraCaptureSession, ) -> camera_status_t; } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct ACameraCaptureSession { +pub struct ACaptureSessionOutput { _unused: [u8; 0], } -pub type ACameraCaptureSession_stateCallback = ::std::option::Option< - unsafe extern "C" fn(context: *mut ::std::os::raw::c_void, session: *mut ACameraCaptureSession), +extern "C" { + pub fn ACameraCaptureSession_updateSharedOutput( + session: *mut ACameraCaptureSession, + output: *mut ACaptureSessionOutput, + ) -> camera_status_t; +} +pub type ACameraCaptureSession_logicalCamera_captureCallback_result = ::std::option::Option< + unsafe extern "C" fn( + context: *mut ::std::os::raw::c_void, + session: *mut ACameraCaptureSession, + request: *mut ACaptureRequest, + result: *const ACameraMetadata, + physicalResultCount: size_t, + physicalCameraIds: *mut *const ::std::os::raw::c_char, + physicalResults: *mut *const ACameraMetadata, + ), >; #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct ACameraCaptureSession_stateCallbacks { - pub context: *mut ::std::os::raw::c_void, - pub onClosed: ACameraCaptureSession_stateCallback, - pub onReady: ACameraCaptureSession_stateCallback, - pub onActive: ACameraCaptureSession_stateCallback, +pub struct ALogicalCameraCaptureFailure { + pub captureFailure: ACameraCaptureFailure, + pub physicalCameraId: *const ::std::os::raw::c_char, } #[test] -fn bindgen_test_layout_ACameraCaptureSession_stateCallbacks() { +fn bindgen_test_layout_ALogicalCameraCaptureFailure() { assert_eq!( - ::std::mem::size_of::(), + ::std::mem::size_of::(), 32usize, + concat!("Size of: ", stringify!(ALogicalCameraCaptureFailure)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(ALogicalCameraCaptureFailure)) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).captureFailure as *const _ + as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ALogicalCameraCaptureFailure), + "::", + stringify!(captureFailure) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).physicalCameraId as *const _ + as usize + }, + 24usize, + concat!( + "Offset of field: ", + stringify!(ALogicalCameraCaptureFailure), + "::", + stringify!(physicalCameraId) + ) + ); +} +pub type ACameraCaptureSession_logicalCamera_captureCallback_failed = ::std::option::Option< + unsafe extern "C" fn( + context: *mut ::std::os::raw::c_void, + session: *mut ACameraCaptureSession, + request: *mut ACaptureRequest, + failure: *mut ALogicalCameraCaptureFailure, + ), +>; +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ACameraCaptureSession_logicalCamera_captureCallbacks { + pub context: *mut ::std::os::raw::c_void, + pub onCaptureStarted: ACameraCaptureSession_captureCallback_start, + pub onCaptureProgressed: ACameraCaptureSession_captureCallback_result, + pub onLogicalCameraCaptureCompleted: ACameraCaptureSession_logicalCamera_captureCallback_result, + pub onLogicalCameraCaptureFailed: ACameraCaptureSession_logicalCamera_captureCallback_failed, + pub onCaptureSequenceCompleted: ACameraCaptureSession_captureCallback_sequenceEnd, + pub onCaptureSequenceAborted: ACameraCaptureSession_captureCallback_sequenceAbort, + pub onCaptureBufferLost: ACameraCaptureSession_captureCallback_bufferLost, +} +#[test] +fn bindgen_test_layout_ACameraCaptureSession_logicalCamera_captureCallbacks() { + assert_eq!( + ::std::mem::size_of::(), + 64usize, concat!( "Size of: ", - stringify!(ACameraCaptureSession_stateCallbacks) + stringify!(ACameraCaptureSession_logicalCamera_captureCallbacks) ) ); assert_eq!( - ::std::mem::align_of::(), + ::std::mem::align_of::(), 8usize, concat!( "Alignment of ", - stringify!(ACameraCaptureSession_stateCallbacks) + stringify!(ACameraCaptureSession_logicalCamera_captureCallbacks) ) ); assert_eq!( unsafe { - &(*(::std::ptr::null::())).context as *const _ - as usize + &(*(::std::ptr::null::())).context + as *const _ as usize }, 0usize, concat!( "Offset of field: ", - stringify!(ACameraCaptureSession_stateCallbacks), + stringify!(ACameraCaptureSession_logicalCamera_captureCallbacks), "::", stringify!(context) ) ); assert_eq!( unsafe { - &(*(::std::ptr::null::())).onClosed as *const _ - as usize + &(*(::std::ptr::null::())) + .onCaptureStarted as *const _ as usize }, 8usize, concat!( "Offset of field: ", - stringify!(ACameraCaptureSession_stateCallbacks), + stringify!(ACameraCaptureSession_logicalCamera_captureCallbacks), "::", - stringify!(onClosed) + stringify!(onCaptureStarted) ) ); assert_eq!( unsafe { - &(*(::std::ptr::null::())).onReady as *const _ - as usize + &(*(::std::ptr::null::())) + .onCaptureProgressed as *const _ as usize }, 16usize, concat!( "Offset of field: ", - stringify!(ACameraCaptureSession_stateCallbacks), + stringify!(ACameraCaptureSession_logicalCamera_captureCallbacks), "::", - stringify!(onReady) + stringify!(onCaptureProgressed) ) ); assert_eq!( unsafe { - &(*(::std::ptr::null::())).onActive as *const _ - as usize + &(*(::std::ptr::null::())) + .onLogicalCameraCaptureCompleted as *const _ as usize }, 24usize, concat!( "Offset of field: ", - stringify!(ACameraCaptureSession_stateCallbacks), + stringify!(ACameraCaptureSession_logicalCamera_captureCallbacks), "::", - stringify!(onActive) + stringify!(onLogicalCameraCaptureCompleted) ) ); -} -pub const CAPTURE_FAILURE_REASON_FLUSHED: ::std::os::raw::c_uint = 0; -pub const CAPTURE_FAILURE_REASON_ERROR: ::std::os::raw::c_uint = 1; -pub type _bindgen_ty_61 = ::std::os::raw::c_uint; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ACameraCaptureFailure { - pub frameNumber: i64, - pub reason: ::std::os::raw::c_int, - pub sequenceId: ::std::os::raw::c_int, - pub wasImageCaptured: bool, -} -#[test] -fn bindgen_test_layout_ACameraCaptureFailure() { - assert_eq!( - ::std::mem::size_of::(), - 24usize, - concat!("Size of: ", stringify!(ACameraCaptureFailure)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(ACameraCaptureFailure)) - ); assert_eq!( unsafe { - &(*(::std::ptr::null::())).frameNumber as *const _ as usize + &(*(::std::ptr::null::())) + .onLogicalCameraCaptureFailed as *const _ as usize }, - 0usize, + 32usize, concat!( "Offset of field: ", - stringify!(ACameraCaptureFailure), + stringify!(ACameraCaptureSession_logicalCamera_captureCallbacks), "::", - stringify!(frameNumber) + stringify!(onLogicalCameraCaptureFailed) ) ); assert_eq!( - unsafe { &(*(::std::ptr::null::())).reason as *const _ as usize }, - 8usize, + unsafe { + &(*(::std::ptr::null::())) + .onCaptureSequenceCompleted as *const _ as usize + }, + 40usize, concat!( "Offset of field: ", - stringify!(ACameraCaptureFailure), + stringify!(ACameraCaptureSession_logicalCamera_captureCallbacks), "::", - stringify!(reason) + stringify!(onCaptureSequenceCompleted) ) ); assert_eq!( unsafe { - &(*(::std::ptr::null::())).sequenceId as *const _ as usize + &(*(::std::ptr::null::())) + .onCaptureSequenceAborted as *const _ as usize }, - 12usize, + 48usize, concat!( "Offset of field: ", - stringify!(ACameraCaptureFailure), + stringify!(ACameraCaptureSession_logicalCamera_captureCallbacks), "::", - stringify!(sequenceId) + stringify!(onCaptureSequenceAborted) ) ); assert_eq!( unsafe { - &(*(::std::ptr::null::())).wasImageCaptured as *const _ as usize + &(*(::std::ptr::null::())) + .onCaptureBufferLost as *const _ as usize }, - 16usize, + 56usize, concat!( "Offset of field: ", - stringify!(ACameraCaptureFailure), + stringify!(ACameraCaptureSession_logicalCamera_captureCallbacks), "::", - stringify!(wasImageCaptured) + stringify!(onCaptureBufferLost) ) - ); -} -pub type ACameraCaptureSession_captureCallback_start = ::std::option::Option< - unsafe extern "C" fn( - context: *mut ::std::os::raw::c_void, - session: *mut ACameraCaptureSession, - request: *const ACaptureRequest, - timestamp: i64, - ), ->; -pub type ACameraCaptureSession_captureCallback_result = ::std::option::Option< - unsafe extern "C" fn( - context: *mut ::std::os::raw::c_void, - session: *mut ACameraCaptureSession, - request: *mut ACaptureRequest, - result: *const ACameraMetadata, - ), ->; -pub type ACameraCaptureSession_captureCallback_failed = ::std::option::Option< - unsafe extern "C" fn( - context: *mut ::std::os::raw::c_void, - session: *mut ACameraCaptureSession, - request: *mut ACaptureRequest, - failure: *mut ACameraCaptureFailure, - ), ->; -pub type ACameraCaptureSession_captureCallback_sequenceEnd = ::std::option::Option< - unsafe extern "C" fn( - context: *mut ::std::os::raw::c_void, - session: *mut ACameraCaptureSession, - sequenceId: ::std::os::raw::c_int, - frameNumber: i64, - ), ->; -pub type ACameraCaptureSession_captureCallback_sequenceAbort = ::std::option::Option< - unsafe extern "C" fn( - context: *mut ::std::os::raw::c_void, + ); +} +extern "C" { + pub fn ACameraCaptureSession_logicalCamera_capture( session: *mut ACameraCaptureSession, - sequenceId: ::std::os::raw::c_int, - ), ->; -pub type ACameraCaptureSession_captureCallback_bufferLost = ::std::option::Option< + callbacks: *mut ACameraCaptureSession_logicalCamera_captureCallbacks, + numRequests: ::std::os::raw::c_int, + requests: *mut *mut ACaptureRequest, + captureSequenceId: *mut ::std::os::raw::c_int, + ) -> camera_status_t; +} +extern "C" { + pub fn ACameraCaptureSession_logicalCamera_setRepeatingRequest( + session: *mut ACameraCaptureSession, + callbacks: *mut ACameraCaptureSession_logicalCamera_captureCallbacks, + numRequests: ::std::os::raw::c_int, + requests: *mut *mut ACaptureRequest, + captureSequenceId: *mut ::std::os::raw::c_int, + ) -> camera_status_t; +} +pub type ACameraCaptureSession_captureCallback_startV2 = ::std::option::Option< unsafe extern "C" fn( context: *mut ::std::os::raw::c_void, session: *mut ACameraCaptureSession, - request: *mut ACaptureRequest, - window: *mut ACameraWindowType, + request: *const ACaptureRequest, + timestamp: i64, frameNumber: i64, ), >; #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct ACameraCaptureSession_captureCallbacks { +pub struct ACameraCaptureSession_captureCallbacksV2 { pub context: *mut ::std::os::raw::c_void, - pub onCaptureStarted: ACameraCaptureSession_captureCallback_start, + pub onCaptureStarted: ACameraCaptureSession_captureCallback_startV2, pub onCaptureProgressed: ACameraCaptureSession_captureCallback_result, pub onCaptureCompleted: ACameraCaptureSession_captureCallback_result, pub onCaptureFailed: ACameraCaptureSession_captureCallback_failed, @@ -18314,252 +20280,133 @@ pub struct ACameraCaptureSession_captureCallbacks { pub onCaptureBufferLost: ACameraCaptureSession_captureCallback_bufferLost, } #[test] -fn bindgen_test_layout_ACameraCaptureSession_captureCallbacks() { +fn bindgen_test_layout_ACameraCaptureSession_captureCallbacksV2() { assert_eq!( - ::std::mem::size_of::(), + ::std::mem::size_of::(), 64usize, concat!( "Size of: ", - stringify!(ACameraCaptureSession_captureCallbacks) + stringify!(ACameraCaptureSession_captureCallbacksV2) ) ); assert_eq!( - ::std::mem::align_of::(), + ::std::mem::align_of::(), 8usize, concat!( "Alignment of ", - stringify!(ACameraCaptureSession_captureCallbacks) + stringify!(ACameraCaptureSession_captureCallbacksV2) ) ); assert_eq!( unsafe { - &(*(::std::ptr::null::())).context as *const _ + &(*(::std::ptr::null::())).context as *const _ as usize }, 0usize, concat!( "Offset of field: ", - stringify!(ACameraCaptureSession_captureCallbacks), + stringify!(ACameraCaptureSession_captureCallbacksV2), "::", stringify!(context) ) ); assert_eq!( unsafe { - &(*(::std::ptr::null::())).onCaptureStarted + &(*(::std::ptr::null::())).onCaptureStarted as *const _ as usize }, 8usize, concat!( "Offset of field: ", - stringify!(ACameraCaptureSession_captureCallbacks), + stringify!(ACameraCaptureSession_captureCallbacksV2), "::", stringify!(onCaptureStarted) ) ); assert_eq!( unsafe { - &(*(::std::ptr::null::())).onCaptureProgressed + &(*(::std::ptr::null::())).onCaptureProgressed as *const _ as usize }, 16usize, concat!( "Offset of field: ", - stringify!(ACameraCaptureSession_captureCallbacks), + stringify!(ACameraCaptureSession_captureCallbacksV2), "::", stringify!(onCaptureProgressed) ) ); assert_eq!( unsafe { - &(*(::std::ptr::null::())).onCaptureCompleted + &(*(::std::ptr::null::())).onCaptureCompleted as *const _ as usize }, 24usize, concat!( "Offset of field: ", - stringify!(ACameraCaptureSession_captureCallbacks), + stringify!(ACameraCaptureSession_captureCallbacksV2), "::", stringify!(onCaptureCompleted) ) ); assert_eq!( unsafe { - &(*(::std::ptr::null::())).onCaptureFailed + &(*(::std::ptr::null::())).onCaptureFailed as *const _ as usize }, 32usize, concat!( "Offset of field: ", - stringify!(ACameraCaptureSession_captureCallbacks), + stringify!(ACameraCaptureSession_captureCallbacksV2), "::", stringify!(onCaptureFailed) ) ); assert_eq!( unsafe { - &(*(::std::ptr::null::())) + &(*(::std::ptr::null::())) .onCaptureSequenceCompleted as *const _ as usize }, 40usize, concat!( "Offset of field: ", - stringify!(ACameraCaptureSession_captureCallbacks), + stringify!(ACameraCaptureSession_captureCallbacksV2), "::", stringify!(onCaptureSequenceCompleted) ) ); assert_eq!( unsafe { - &(*(::std::ptr::null::())) + &(*(::std::ptr::null::())) .onCaptureSequenceAborted as *const _ as usize }, 48usize, concat!( "Offset of field: ", - stringify!(ACameraCaptureSession_captureCallbacks), + stringify!(ACameraCaptureSession_captureCallbacksV2), "::", stringify!(onCaptureSequenceAborted) ) ); assert_eq!( unsafe { - &(*(::std::ptr::null::())).onCaptureBufferLost + &(*(::std::ptr::null::())).onCaptureBufferLost as *const _ as usize }, 56usize, concat!( "Offset of field: ", - stringify!(ACameraCaptureSession_captureCallbacks), + stringify!(ACameraCaptureSession_captureCallbacksV2), "::", stringify!(onCaptureBufferLost) ) ); } -pub const CAPTURE_SEQUENCE_ID_NONE: ::std::os::raw::c_int = -1; -pub type _bindgen_ty_62 = ::std::os::raw::c_int; -extern "C" { - pub fn ACameraCaptureSession_close(session: *mut ACameraCaptureSession); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ACameraDevice { - _unused: [u8; 0], -} -extern "C" { - pub fn ACameraCaptureSession_getDevice( - session: *mut ACameraCaptureSession, - device: *mut *mut ACameraDevice, - ) -> camera_status_t; -} -extern "C" { - pub fn ACameraCaptureSession_capture( - session: *mut ACameraCaptureSession, - callbacks: *mut ACameraCaptureSession_captureCallbacks, - numRequests: ::std::os::raw::c_int, - requests: *mut *mut ACaptureRequest, - captureSequenceId: *mut ::std::os::raw::c_int, - ) -> camera_status_t; -} -extern "C" { - pub fn ACameraCaptureSession_setRepeatingRequest( - session: *mut ACameraCaptureSession, - callbacks: *mut ACameraCaptureSession_captureCallbacks, - numRequests: ::std::os::raw::c_int, - requests: *mut *mut ACaptureRequest, - captureSequenceId: *mut ::std::os::raw::c_int, - ) -> camera_status_t; -} -extern "C" { - pub fn ACameraCaptureSession_stopRepeating( - session: *mut ACameraCaptureSession, - ) -> camera_status_t; -} -extern "C" { - pub fn ACameraCaptureSession_abortCaptures( - session: *mut ACameraCaptureSession, - ) -> camera_status_t; -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ACaptureSessionOutput { - _unused: [u8; 0], -} -extern "C" { - pub fn ACameraCaptureSession_updateSharedOutput( - session: *mut ACameraCaptureSession, - output: *mut ACaptureSessionOutput, - ) -> camera_status_t; -} -pub type ACameraCaptureSession_logicalCamera_captureCallback_result = ::std::option::Option< - unsafe extern "C" fn( - context: *mut ::std::os::raw::c_void, - session: *mut ACameraCaptureSession, - request: *mut ACaptureRequest, - result: *const ACameraMetadata, - physicalResultCount: size_t, - physicalCameraIds: *mut *const ::std::os::raw::c_char, - physicalResults: *mut *const ACameraMetadata, - ), ->; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ALogicalCameraCaptureFailure { - pub captureFailure: ACameraCaptureFailure, - pub physicalCameraId: *const ::std::os::raw::c_char, -} -#[test] -fn bindgen_test_layout_ALogicalCameraCaptureFailure() { - assert_eq!( - ::std::mem::size_of::(), - 32usize, - concat!("Size of: ", stringify!(ALogicalCameraCaptureFailure)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(ALogicalCameraCaptureFailure)) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::())).captureFailure as *const _ - as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(ALogicalCameraCaptureFailure), - "::", - stringify!(captureFailure) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::())).physicalCameraId as *const _ - as usize - }, - 24usize, - concat!( - "Offset of field: ", - stringify!(ALogicalCameraCaptureFailure), - "::", - stringify!(physicalCameraId) - ) - ); -} -pub type ACameraCaptureSession_logicalCamera_captureCallback_failed = ::std::option::Option< - unsafe extern "C" fn( - context: *mut ::std::os::raw::c_void, - session: *mut ACameraCaptureSession, - request: *mut ACaptureRequest, - failure: *mut ALogicalCameraCaptureFailure, - ), ->; #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct ACameraCaptureSession_logicalCamera_captureCallbacks { +pub struct ACameraCaptureSession_logicalCamera_captureCallbacksV2 { pub context: *mut ::std::os::raw::c_void, - pub onCaptureStarted: ACameraCaptureSession_captureCallback_start, + pub onCaptureStarted: ACameraCaptureSession_captureCallback_startV2, pub onCaptureProgressed: ACameraCaptureSession_captureCallback_result, pub onLogicalCameraCaptureCompleted: ACameraCaptureSession_logicalCamera_captureCallback_result, pub onLogicalCameraCaptureFailed: ACameraCaptureSession_logicalCamera_captureCallback_failed, @@ -18568,141 +20415,159 @@ pub struct ACameraCaptureSession_logicalCamera_captureCallbacks { pub onCaptureBufferLost: ACameraCaptureSession_captureCallback_bufferLost, } #[test] -fn bindgen_test_layout_ACameraCaptureSession_logicalCamera_captureCallbacks() { +fn bindgen_test_layout_ACameraCaptureSession_logicalCamera_captureCallbacksV2() { assert_eq!( - ::std::mem::size_of::(), + ::std::mem::size_of::(), 64usize, concat!( "Size of: ", - stringify!(ACameraCaptureSession_logicalCamera_captureCallbacks) + stringify!(ACameraCaptureSession_logicalCamera_captureCallbacksV2) ) ); assert_eq!( - ::std::mem::align_of::(), + ::std::mem::align_of::(), 8usize, concat!( "Alignment of ", - stringify!(ACameraCaptureSession_logicalCamera_captureCallbacks) + stringify!(ACameraCaptureSession_logicalCamera_captureCallbacksV2) ) ); assert_eq!( unsafe { - &(*(::std::ptr::null::())).context - as *const _ as usize + &(*(::std::ptr::null::())) + .context as *const _ as usize }, 0usize, concat!( "Offset of field: ", - stringify!(ACameraCaptureSession_logicalCamera_captureCallbacks), + stringify!(ACameraCaptureSession_logicalCamera_captureCallbacksV2), "::", stringify!(context) ) ); assert_eq!( unsafe { - &(*(::std::ptr::null::())) + &(*(::std::ptr::null::())) .onCaptureStarted as *const _ as usize }, 8usize, concat!( "Offset of field: ", - stringify!(ACameraCaptureSession_logicalCamera_captureCallbacks), + stringify!(ACameraCaptureSession_logicalCamera_captureCallbacksV2), "::", stringify!(onCaptureStarted) ) ); assert_eq!( unsafe { - &(*(::std::ptr::null::())) + &(*(::std::ptr::null::())) .onCaptureProgressed as *const _ as usize }, 16usize, concat!( "Offset of field: ", - stringify!(ACameraCaptureSession_logicalCamera_captureCallbacks), + stringify!(ACameraCaptureSession_logicalCamera_captureCallbacksV2), "::", stringify!(onCaptureProgressed) ) ); assert_eq!( unsafe { - &(*(::std::ptr::null::())) + &(*(::std::ptr::null::())) .onLogicalCameraCaptureCompleted as *const _ as usize }, 24usize, concat!( "Offset of field: ", - stringify!(ACameraCaptureSession_logicalCamera_captureCallbacks), + stringify!(ACameraCaptureSession_logicalCamera_captureCallbacksV2), "::", stringify!(onLogicalCameraCaptureCompleted) ) ); assert_eq!( unsafe { - &(*(::std::ptr::null::())) + &(*(::std::ptr::null::())) .onLogicalCameraCaptureFailed as *const _ as usize }, 32usize, concat!( "Offset of field: ", - stringify!(ACameraCaptureSession_logicalCamera_captureCallbacks), + stringify!(ACameraCaptureSession_logicalCamera_captureCallbacksV2), "::", stringify!(onLogicalCameraCaptureFailed) ) ); assert_eq!( unsafe { - &(*(::std::ptr::null::())) + &(*(::std::ptr::null::())) .onCaptureSequenceCompleted as *const _ as usize }, 40usize, concat!( "Offset of field: ", - stringify!(ACameraCaptureSession_logicalCamera_captureCallbacks), + stringify!(ACameraCaptureSession_logicalCamera_captureCallbacksV2), "::", stringify!(onCaptureSequenceCompleted) ) ); assert_eq!( unsafe { - &(*(::std::ptr::null::())) + &(*(::std::ptr::null::())) .onCaptureSequenceAborted as *const _ as usize }, 48usize, concat!( "Offset of field: ", - stringify!(ACameraCaptureSession_logicalCamera_captureCallbacks), + stringify!(ACameraCaptureSession_logicalCamera_captureCallbacksV2), "::", stringify!(onCaptureSequenceAborted) ) ); assert_eq!( unsafe { - &(*(::std::ptr::null::())) + &(*(::std::ptr::null::())) .onCaptureBufferLost as *const _ as usize }, 56usize, concat!( "Offset of field: ", - stringify!(ACameraCaptureSession_logicalCamera_captureCallbacks), + stringify!(ACameraCaptureSession_logicalCamera_captureCallbacksV2), "::", stringify!(onCaptureBufferLost) ) ); } extern "C" { - pub fn ACameraCaptureSession_logicalCamera_capture( + pub fn ACameraCaptureSession_captureV2( session: *mut ACameraCaptureSession, - callbacks: *mut ACameraCaptureSession_logicalCamera_captureCallbacks, + callbacks: *mut ACameraCaptureSession_captureCallbacksV2, numRequests: ::std::os::raw::c_int, requests: *mut *mut ACaptureRequest, captureSequenceId: *mut ::std::os::raw::c_int, ) -> camera_status_t; } extern "C" { - pub fn ACameraCaptureSession_logicalCamera_setRepeatingRequest( + pub fn ACameraCaptureSession_setRepeatingRequestV2( session: *mut ACameraCaptureSession, - callbacks: *mut ACameraCaptureSession_logicalCamera_captureCallbacks, + callbacks: *mut ACameraCaptureSession_captureCallbacksV2, + numRequests: ::std::os::raw::c_int, + requests: *mut *mut ACaptureRequest, + captureSequenceId: *mut ::std::os::raw::c_int, + ) -> camera_status_t; +} +extern "C" { + pub fn ACameraCaptureSession_logicalCamera_captureV2( + session: *mut ACameraCaptureSession, + callbacks: *mut ACameraCaptureSession_logicalCamera_captureCallbacksV2, + numRequests: ::std::os::raw::c_int, + requests: *mut *mut ACaptureRequest, + captureSequenceId: *mut ::std::os::raw::c_int, + ) -> camera_status_t; +} +extern "C" { + pub fn ACameraCaptureSession_logicalCamera_setRepeatingRequestV2( + session: *mut ACameraCaptureSession, + callbacks: *mut ACameraCaptureSession_logicalCamera_captureCallbacksV2, numRequests: ::std::os::raw::c_int, requests: *mut *mut ACaptureRequest, captureSequenceId: *mut ::std::os::raw::c_int, @@ -18752,7 +20617,7 @@ pub const ERROR_MAX_CAMERAS_IN_USE: ::std::os::raw::c_uint = 2; pub const ERROR_CAMERA_DISABLED: ::std::os::raw::c_uint = 3; pub const ERROR_CAMERA_DEVICE: ::std::os::raw::c_uint = 4; pub const ERROR_CAMERA_SERVICE: ::std::os::raw::c_uint = 5; -pub type _bindgen_ty_63 = ::std::os::raw::c_uint; +pub type _bindgen_ty_65 = ::std::os::raw::c_uint; pub type ACameraDevice_StateCallback = ::std::option::Option< unsafe extern "C" fn(context: *mut ::std::os::raw::c_void, device: *mut ACameraDevice), >; @@ -20102,6 +21967,15 @@ extern "C" { extern "C" { pub static mut AMEDIAFORMAT_KEY_SAMPLE_TIME_BEFORE_APPEND: *const ::std::os::raw::c_char; } +extern "C" { + pub static mut AMEDIAFORMAT_KEY_PICTURE_TYPE: *const ::std::os::raw::c_char; +} +extern "C" { + pub static mut AMEDIAFORMAT_KEY_VIDEO_ENCODING_STATISTICS_LEVEL: *const ::std::os::raw::c_char; +} +extern "C" { + pub static mut AMEDIAFORMAT_KEY_VIDEO_QP_AVERAGE: *const ::std::os::raw::c_char; +} extern "C" { pub static mut AMEDIAFORMAT_VIDEO_QP_B_MAX: *const ::std::os::raw::c_char; } @@ -20126,6 +22000,15 @@ extern "C" { extern "C" { pub static mut AMEDIAFORMAT_VIDEO_QP_P_MIN: *const ::std::os::raw::c_char; } +extern "C" { + pub static mut AMEDIAFORMAT_KEY_MPEGH_COMPATIBLE_SETS: *const ::std::os::raw::c_char; +} +extern "C" { + pub static mut AMEDIAFORMAT_KEY_MPEGH_PROFILE_LEVEL_INDICATION: *const ::std::os::raw::c_char; +} +extern "C" { + pub static mut AMEDIAFORMAT_KEY_MPEGH_REFERENCE_CHANNEL_LAYOUT: *const ::std::os::raw::c_char; +} #[repr(C)] #[derive(Debug, Copy, Clone)] pub struct AMediaCodec { @@ -20207,7 +22090,7 @@ pub const AMEDIACODEC_CONFIGURE_FLAG_ENCODE: ::std::os::raw::c_int = 1; pub const AMEDIACODEC_INFO_OUTPUT_BUFFERS_CHANGED: ::std::os::raw::c_int = -3; pub const AMEDIACODEC_INFO_OUTPUT_FORMAT_CHANGED: ::std::os::raw::c_int = -2; pub const AMEDIACODEC_INFO_TRY_AGAIN_LATER: ::std::os::raw::c_int = -1; -pub type _bindgen_ty_64 = ::std::os::raw::c_int; +pub type _bindgen_ty_66 = ::std::os::raw::c_int; pub type AMediaCodecOnAsyncInputAvailable = ::std::option::Option< unsafe extern "C" fn( codec: *mut AMediaCodec, @@ -20315,6 +22198,14 @@ fn bindgen_test_layout_AMediaCodecOnAsyncNotifyCallback() { ) ); } +pub type AMediaCodecOnFrameRendered = ::std::option::Option< + unsafe extern "C" fn( + codec: *mut AMediaCodec, + userdata: *mut ::std::os::raw::c_void, + mediaTimeUs: i64, + systemNano: i64, + ), +>; extern "C" { pub fn AMediaCodec_createCodecByName(name: *const ::std::os::raw::c_char) -> *mut AMediaCodec; } @@ -20476,6 +22367,13 @@ extern "C" { userdata: *mut ::std::os::raw::c_void, ) -> media_status_t; } +extern "C" { + pub fn AMediaCodec_setOnFrameRenderedCallback( + arg1: *mut AMediaCodec, + callback: AMediaCodecOnFrameRendered, + userdata: *mut ::std::os::raw::c_void, + ) -> media_status_t; +} extern "C" { pub fn AMediaCodec_releaseCrypto(arg1: *mut AMediaCodec) -> media_status_t; } @@ -20750,6 +22648,24 @@ impl AMediaDrmKeyType { #[repr(transparent)] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] pub struct AMediaDrmKeyType(pub ::std::os::raw::c_uint); +impl AMediaDrmKeyRequestType { + pub const KEY_REQUEST_TYPE_INITIAL: AMediaDrmKeyRequestType = AMediaDrmKeyRequestType(0); +} +impl AMediaDrmKeyRequestType { + pub const KEY_REQUEST_TYPE_RENEWAL: AMediaDrmKeyRequestType = AMediaDrmKeyRequestType(1); +} +impl AMediaDrmKeyRequestType { + pub const KEY_REQUEST_TYPE_RELEASE: AMediaDrmKeyRequestType = AMediaDrmKeyRequestType(2); +} +impl AMediaDrmKeyRequestType { + pub const KEY_REQUEST_TYPE_NONE: AMediaDrmKeyRequestType = AMediaDrmKeyRequestType(3); +} +impl AMediaDrmKeyRequestType { + pub const KEY_REQUEST_TYPE_UPDATE: AMediaDrmKeyRequestType = AMediaDrmKeyRequestType(4); +} +#[repr(transparent)] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub struct AMediaDrmKeyRequestType(pub i32); #[repr(C)] #[derive(Debug, Copy, Clone)] pub struct AMediaDrmKeyValuePair { @@ -20930,6 +22846,22 @@ extern "C" { keyRequestSize: *mut size_t, ) -> media_status_t; } +extern "C" { + pub fn AMediaDrm_getKeyRequestWithDefaultUrlAndType( + arg1: *mut AMediaDrm, + scope: *const AMediaDrmScope, + init: *const u8, + initSize: size_t, + mimeType: *const ::std::os::raw::c_char, + keyType: AMediaDrmKeyType, + optionalParameters: *const AMediaDrmKeyValue, + numOptionalParameters: size_t, + keyRequest: *mut *const u8, + keyRequestSize: *mut size_t, + defaultUrl: *mut *const ::std::os::raw::c_char, + keyRequestType: *mut AMediaDrmKeyRequestType, + ) -> media_status_t; +} extern "C" { pub fn AMediaDrm_provideKeyResponse( arg1: *mut AMediaDrm, @@ -21250,7 +23182,7 @@ extern "C" { } pub const AMEDIAEXTRACTOR_SAMPLE_FLAG_SYNC: ::std::os::raw::c_uint = 1; pub const AMEDIAEXTRACTOR_SAMPLE_FLAG_ENCRYPTED: ::std::os::raw::c_uint = 2; -pub type _bindgen_ty_65 = ::std::os::raw::c_uint; +pub type _bindgen_ty_67 = ::std::os::raw::c_uint; extern "C" { pub fn AMediaExtractor_getFileFormat(arg1: *mut AMediaExtractor) -> *mut AMediaFormat; } diff --git a/ndk-sys/src/ffi_arm.rs b/ndk-sys/src/ffi_arm.rs index 2806bf6b..deaa04c2 100644 --- a/ndk-sys/src/ffi_arm.rs +++ b/ndk-sys/src/ffi_arm.rs @@ -114,10 +114,10 @@ pub const __BIONIC__: u32 = 1; pub const __WORDSIZE: u32 = 32; pub const __bos_level: u32 = 0; pub const __ANDROID_NDK__: u32 = 1; -pub const __NDK_MAJOR__: u32 = 23; -pub const __NDK_MINOR__: u32 = 1; +pub const __NDK_MAJOR__: u32 = 25; +pub const __NDK_MINOR__: u32 = 0; pub const __NDK_BETA__: u32 = 0; -pub const __NDK_BUILD__: u32 = 7779620; +pub const __NDK_BUILD__: u32 = 8775105; pub const __NDK_CANARY__: u32 = 0; pub const __ANDROID_API_FUTURE__: u32 = 10000; pub const __ANDROID_API__: u32 = 10000; @@ -450,6 +450,8 @@ pub const SO_DETACH_REUSEPORT_BPF: u32 = 68; pub const SO_PREFER_BUSY_POLL: u32 = 69; pub const SO_BUSY_POLL_BUDGET: u32 = 70; pub const SO_NETNS_COOKIE: u32 = 71; +pub const SO_BUF_LOCK: u32 = 72; +pub const SO_RESERVE_MEM: u32 = 73; pub const SOCK_IOC_TYPE: u32 = 137; pub const SIOCADDRT: u32 = 35083; pub const SIOCDELRT: u32 = 35084; @@ -1915,6 +1917,9 @@ impl AndroidBitmapFormat { impl AndroidBitmapFormat { pub const ANDROID_BITMAP_FORMAT_RGBA_F16: AndroidBitmapFormat = AndroidBitmapFormat(9); } +impl AndroidBitmapFormat { + pub const ANDROID_BITMAP_FORMAT_RGBA_1010102: AndroidBitmapFormat = AndroidBitmapFormat(10); +} #[repr(transparent)] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] pub struct AndroidBitmapFormat(pub ::std::os::raw::c_uint); @@ -2072,12 +2077,24 @@ extern "C" { pub struct AChoreographer { _unused: [u8; 0], } +pub type AVsyncId = i64; +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct AChoreographerFrameCallbackData { + _unused: [u8; 0], +} pub type AChoreographer_frameCallback = ::std::option::Option< unsafe extern "C" fn(frameTimeNanos: ::std::os::raw::c_long, data: *mut ::std::os::raw::c_void), >; pub type AChoreographer_frameCallback64 = ::std::option::Option< unsafe extern "C" fn(frameTimeNanos: i64, data: *mut ::std::os::raw::c_void), >; +pub type AChoreographer_vsyncCallback = ::std::option::Option< + unsafe extern "C" fn( + callbackData: *const AChoreographerFrameCallbackData, + data: *mut ::std::os::raw::c_void, + ), +>; pub type AChoreographer_refreshRateCallback = ::std::option::Option< unsafe extern "C" fn(vsyncPeriodNanos: i64, data: *mut ::std::os::raw::c_void), >; @@ -2114,6 +2131,13 @@ extern "C" { delayMillis: u32, ); } +extern "C" { + pub fn AChoreographer_postVsyncCallback( + choreographer: *mut AChoreographer, + callback: AChoreographer_vsyncCallback, + data: *mut ::std::os::raw::c_void, + ); +} extern "C" { pub fn AChoreographer_registerRefreshRateCallback( choreographer: *mut AChoreographer, @@ -2128,6 +2152,39 @@ extern "C" { data: *mut ::std::os::raw::c_void, ); } +extern "C" { + pub fn AChoreographerFrameCallbackData_getFrameTimeNanos( + data: *const AChoreographerFrameCallbackData, + ) -> i64; +} +extern "C" { + pub fn AChoreographerFrameCallbackData_getFrameTimelinesLength( + data: *const AChoreographerFrameCallbackData, + ) -> size_t; +} +extern "C" { + pub fn AChoreographerFrameCallbackData_getPreferredFrameTimelineIndex( + data: *const AChoreographerFrameCallbackData, + ) -> size_t; +} +extern "C" { + pub fn AChoreographerFrameCallbackData_getFrameTimelineVsyncId( + data: *const AChoreographerFrameCallbackData, + index: size_t, + ) -> AVsyncId; +} +extern "C" { + pub fn AChoreographerFrameCallbackData_getFrameTimelineExpectedPresentationTimeNanos( + data: *const AChoreographerFrameCallbackData, + index: size_t, + ) -> i64; +} +extern "C" { + pub fn AChoreographerFrameCallbackData_getFrameTimelineDeadlineNanos( + data: *const AChoreographerFrameCallbackData, + index: size_t, + ) -> i64; +} #[repr(C)] #[derive(Debug, Copy, Clone)] pub struct AConfiguration { @@ -2459,6 +2516,90 @@ extern "C" { impl ADataSpace { pub const ADATASPACE_UNKNOWN: ADataSpace = ADataSpace(0); } +impl ADataSpace { + pub const STANDARD_MASK: ADataSpace = ADataSpace(4128768); +} +impl ADataSpace { + pub const STANDARD_UNSPECIFIED: ADataSpace = ADataSpace(0); +} +impl ADataSpace { + pub const STANDARD_BT709: ADataSpace = ADataSpace(65536); +} +impl ADataSpace { + pub const STANDARD_BT601_625: ADataSpace = ADataSpace(131072); +} +impl ADataSpace { + pub const STANDARD_BT601_625_UNADJUSTED: ADataSpace = ADataSpace(196608); +} +impl ADataSpace { + pub const STANDARD_BT601_525: ADataSpace = ADataSpace(262144); +} +impl ADataSpace { + pub const STANDARD_BT601_525_UNADJUSTED: ADataSpace = ADataSpace(327680); +} +impl ADataSpace { + pub const STANDARD_BT2020: ADataSpace = ADataSpace(393216); +} +impl ADataSpace { + pub const STANDARD_BT2020_CONSTANT_LUMINANCE: ADataSpace = ADataSpace(458752); +} +impl ADataSpace { + pub const STANDARD_BT470M: ADataSpace = ADataSpace(524288); +} +impl ADataSpace { + pub const STANDARD_FILM: ADataSpace = ADataSpace(589824); +} +impl ADataSpace { + pub const STANDARD_DCI_P3: ADataSpace = ADataSpace(655360); +} +impl ADataSpace { + pub const STANDARD_ADOBE_RGB: ADataSpace = ADataSpace(720896); +} +impl ADataSpace { + pub const TRANSFER_MASK: ADataSpace = ADataSpace(130023424); +} +impl ADataSpace { + pub const TRANSFER_UNSPECIFIED: ADataSpace = ADataSpace(0); +} +impl ADataSpace { + pub const TRANSFER_LINEAR: ADataSpace = ADataSpace(4194304); +} +impl ADataSpace { + pub const TRANSFER_SRGB: ADataSpace = ADataSpace(8388608); +} +impl ADataSpace { + pub const TRANSFER_SMPTE_170M: ADataSpace = ADataSpace(12582912); +} +impl ADataSpace { + pub const TRANSFER_GAMMA2_2: ADataSpace = ADataSpace(16777216); +} +impl ADataSpace { + pub const TRANSFER_GAMMA2_6: ADataSpace = ADataSpace(20971520); +} +impl ADataSpace { + pub const TRANSFER_GAMMA2_8: ADataSpace = ADataSpace(25165824); +} +impl ADataSpace { + pub const TRANSFER_ST2084: ADataSpace = ADataSpace(29360128); +} +impl ADataSpace { + pub const TRANSFER_HLG: ADataSpace = ADataSpace(33554432); +} +impl ADataSpace { + pub const RANGE_MASK: ADataSpace = ADataSpace(939524096); +} +impl ADataSpace { + pub const RANGE_UNSPECIFIED: ADataSpace = ADataSpace(0); +} +impl ADataSpace { + pub const RANGE_FULL: ADataSpace = ADataSpace(134217728); +} +impl ADataSpace { + pub const RANGE_LIMITED: ADataSpace = ADataSpace(268435456); +} +impl ADataSpace { + pub const RANGE_EXTENDED: ADataSpace = ADataSpace(402653184); +} impl ADataSpace { pub const ADATASPACE_SCRGB_LINEAR: ADataSpace = ADataSpace(406913024); } @@ -2474,9 +2615,21 @@ impl ADataSpace { impl ADataSpace { pub const ADATASPACE_BT2020_PQ: ADataSpace = ADataSpace(163971072); } +impl ADataSpace { + pub const ADATASPACE_BT2020_ITU_PQ: ADataSpace = ADataSpace(298188800); +} impl ADataSpace { pub const ADATASPACE_ADOBE_RGB: ADataSpace = ADataSpace(151715840); } +impl ADataSpace { + pub const ADATASPACE_JFIF: ADataSpace = ADataSpace(146931712); +} +impl ADataSpace { + pub const ADATASPACE_BT601_625: ADataSpace = ADataSpace(281149440); +} +impl ADataSpace { + pub const ADATASPACE_BT601_525: ADataSpace = ADataSpace(281280512); +} impl ADataSpace { pub const ADATASPACE_BT2020: ADataSpace = ADataSpace(147193856); } @@ -2489,6 +2642,18 @@ impl ADataSpace { impl ADataSpace { pub const ADATASPACE_SRGB_LINEAR: ADataSpace = ADataSpace(138477568); } +impl ADataSpace { + pub const ADATASPACE_BT2020_HLG: ADataSpace = ADataSpace(168165376); +} +impl ADataSpace { + pub const ADATASPACE_BT2020_ITU_HLG: ADataSpace = ADataSpace(302383104); +} +impl ADataSpace { + pub const DEPTH: ADataSpace = ADataSpace(4096); +} +impl ADataSpace { + pub const DYNAMIC_DEPTH: ADataSpace = ADataSpace(4098); +} #[repr(transparent)] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] pub struct ADataSpace(pub ::std::os::raw::c_uint); @@ -2855,6 +3020,13 @@ impl AHardwareBuffer_Format { pub const AHARDWAREBUFFER_FORMAT_Y8Cb8Cr8_420: AHardwareBuffer_Format = AHardwareBuffer_Format(35); } +impl AHardwareBuffer_Format { + pub const AHARDWAREBUFFER_FORMAT_YCbCr_P010: AHardwareBuffer_Format = + AHardwareBuffer_Format(54); +} +impl AHardwareBuffer_Format { + pub const AHARDWAREBUFFER_FORMAT_R8_UNORM: AHardwareBuffer_Format = AHardwareBuffer_Format(56); +} #[repr(transparent)] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] pub struct AHardwareBuffer_Format(pub ::std::os::raw::c_uint); @@ -4074,6 +4246,7 @@ pub const AINPUT_EVENT_TYPE_MOTION: ::std::os::raw::c_uint = 2; pub const AINPUT_EVENT_TYPE_FOCUS: ::std::os::raw::c_uint = 3; pub const AINPUT_EVENT_TYPE_CAPTURE: ::std::os::raw::c_uint = 4; pub const AINPUT_EVENT_TYPE_DRAG: ::std::os::raw::c_uint = 5; +pub const AINPUT_EVENT_TYPE_TOUCH_MODE: ::std::os::raw::c_uint = 6; pub type _bindgen_ty_17 = ::std::os::raw::c_uint; pub const AKEY_EVENT_ACTION_DOWN: ::std::os::raw::c_uint = 0; pub const AKEY_EVENT_ACTION_UP: ::std::os::raw::c_uint = 1; @@ -4176,6 +4349,20 @@ pub const AMOTION_EVENT_TOOL_TYPE_MOUSE: ::std::os::raw::c_uint = 3; pub const AMOTION_EVENT_TOOL_TYPE_ERASER: ::std::os::raw::c_uint = 4; pub const AMOTION_EVENT_TOOL_TYPE_PALM: ::std::os::raw::c_uint = 5; pub type _bindgen_ty_25 = ::std::os::raw::c_uint; +impl AMotionClassification { + pub const AMOTION_EVENT_CLASSIFICATION_NONE: AMotionClassification = AMotionClassification(0); +} +impl AMotionClassification { + pub const AMOTION_EVENT_CLASSIFICATION_AMBIGUOUS_GESTURE: AMotionClassification = + AMotionClassification(1); +} +impl AMotionClassification { + pub const AMOTION_EVENT_CLASSIFICATION_DEEP_PRESS: AMotionClassification = + AMotionClassification(2); +} +#[repr(transparent)] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub struct AMotionClassification(pub u32); pub const AINPUT_SOURCE_CLASS_MASK: ::std::os::raw::c_uint = 255; pub const AINPUT_SOURCE_CLASS_NONE: ::std::os::raw::c_uint = 0; pub const AINPUT_SOURCE_CLASS_BUTTON: ::std::os::raw::c_uint = 1; @@ -4451,6 +4638,12 @@ extern "C" { history_index: size_t, ) -> f32; } +extern "C" { + pub fn AMotionEvent_getActionButton(motion_event: *const AInputEvent) -> i32; +} +extern "C" { + pub fn AMotionEvent_getClassification(motion_event: *const AInputEvent) -> i32; +} extern "C" { pub fn AMotionEvent_fromJava(env: *mut JNIEnv, motionEvent: jobject) -> *const AInputEvent; } @@ -4487,6 +4680,9 @@ extern "C" { handled: ::std::os::raw::c_int, ); } +extern "C" { + pub fn AInputQueue_fromJava(env: *mut JNIEnv, inputQueue: jobject) -> *mut AInputQueue; +} impl android_LogPriority { pub const ANDROID_LOG_UNKNOWN: android_LogPriority = android_LogPriority(0); } @@ -6605,6 +6801,133 @@ fn bindgen_test_layout_mallinfo() { extern "C" { pub fn mallinfo() -> mallinfo; } +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct mallinfo2 { + pub arena: size_t, + pub ordblks: size_t, + pub smblks: size_t, + pub hblks: size_t, + pub hblkhd: size_t, + pub usmblks: size_t, + pub fsmblks: size_t, + pub uordblks: size_t, + pub fordblks: size_t, + pub keepcost: size_t, +} +#[test] +fn bindgen_test_layout_mallinfo2() { + assert_eq!( + ::std::mem::size_of::(), + 40usize, + concat!("Size of: ", stringify!(mallinfo2)) + ); + assert_eq!( + ::std::mem::align_of::(), + 4usize, + concat!("Alignment of ", stringify!(mallinfo2)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).arena as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(mallinfo2), + "::", + stringify!(arena) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).ordblks as *const _ as usize }, + 4usize, + concat!( + "Offset of field: ", + stringify!(mallinfo2), + "::", + stringify!(ordblks) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).smblks as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(mallinfo2), + "::", + stringify!(smblks) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).hblks as *const _ as usize }, + 12usize, + concat!( + "Offset of field: ", + stringify!(mallinfo2), + "::", + stringify!(hblks) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).hblkhd as *const _ as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(mallinfo2), + "::", + stringify!(hblkhd) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).usmblks as *const _ as usize }, + 20usize, + concat!( + "Offset of field: ", + stringify!(mallinfo2), + "::", + stringify!(usmblks) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).fsmblks as *const _ as usize }, + 24usize, + concat!( + "Offset of field: ", + stringify!(mallinfo2), + "::", + stringify!(fsmblks) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).uordblks as *const _ as usize }, + 28usize, + concat!( + "Offset of field: ", + stringify!(mallinfo2), + "::", + stringify!(uordblks) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).fordblks as *const _ as usize }, + 32usize, + concat!( + "Offset of field: ", + stringify!(mallinfo2), + "::", + stringify!(fordblks) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).keepcost as *const _ as usize }, + 36usize, + concat!( + "Offset of field: ", + stringify!(mallinfo2), + "::", + stringify!(keepcost) + ) + ); +} extern "C" { pub fn malloc_info( __must_be_zero: ::std::os::raw::c_int, @@ -7250,6 +7573,19 @@ extern "C" { extern "C" { pub fn android_res_cancel(nsend_fd: ::std::os::raw::c_int); } +extern "C" { + pub fn android_tag_socket_with_uid( + sockfd: ::std::os::raw::c_int, + tag: u32, + uid: uid_t, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn android_tag_socket(sockfd: ::std::os::raw::c_int, tag: u32) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn android_untag_socket(sockfd: ::std::os::raw::c_int) -> ::std::os::raw::c_int; +} impl ANativeWindow_LegacyFormat { pub const WINDOW_FORMAT_RGBA_8888: ANativeWindow_LegacyFormat = ANativeWindow_LegacyFormat(1); } @@ -8244,6 +8580,18 @@ impl OperationCode { impl OperationCode { pub const ANEURALNETWORKS_RANK: OperationCode = OperationCode(101); } +impl OperationCode { + pub const ANEURALNETWORKS_BATCH_MATMUL: OperationCode = OperationCode(102); +} +impl OperationCode { + pub const ANEURALNETWORKS_PACK: OperationCode = OperationCode(103); +} +impl OperationCode { + pub const ANEURALNETWORKS_MIRROR_PAD: OperationCode = OperationCode(104); +} +impl OperationCode { + pub const ANEURALNETWORKS_REVERSE: OperationCode = OperationCode(105); +} #[repr(transparent)] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] pub struct OperationCode(pub ::std::os::raw::c_uint); @@ -8316,6 +8664,15 @@ impl FeatureLevelCode { impl FeatureLevelCode { pub const ANEURALNETWORKS_FEATURE_LEVEL_5: FeatureLevelCode = FeatureLevelCode(31); } +impl FeatureLevelCode { + pub const ANEURALNETWORKS_FEATURE_LEVEL_6: FeatureLevelCode = FeatureLevelCode(1000006); +} +impl FeatureLevelCode { + pub const ANEURALNETWORKS_FEATURE_LEVEL_7: FeatureLevelCode = FeatureLevelCode(1000007); +} +impl FeatureLevelCode { + pub const ANEURALNETWORKS_FEATURE_LEVEL_8: FeatureLevelCode = FeatureLevelCode(1000008); +} #[repr(transparent)] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] pub struct FeatureLevelCode(pub ::std::os::raw::c_uint); @@ -9441,10 +9798,17 @@ pub const ASENSOR_TYPE_POSE_6DOF: ::std::os::raw::c_int = 28; pub const ASENSOR_TYPE_STATIONARY_DETECT: ::std::os::raw::c_int = 29; pub const ASENSOR_TYPE_MOTION_DETECT: ::std::os::raw::c_int = 30; pub const ASENSOR_TYPE_HEART_BEAT: ::std::os::raw::c_int = 31; +pub const ASENSOR_TYPE_DYNAMIC_SENSOR_META: ::std::os::raw::c_int = 32; pub const ASENSOR_TYPE_ADDITIONAL_INFO: ::std::os::raw::c_int = 33; pub const ASENSOR_TYPE_LOW_LATENCY_OFFBODY_DETECT: ::std::os::raw::c_int = 34; pub const ASENSOR_TYPE_ACCELEROMETER_UNCALIBRATED: ::std::os::raw::c_int = 35; pub const ASENSOR_TYPE_HINGE_ANGLE: ::std::os::raw::c_int = 36; +pub const ASENSOR_TYPE_HEAD_TRACKER: ::std::os::raw::c_int = 37; +pub const ASENSOR_TYPE_ACCELEROMETER_LIMITED_AXES: ::std::os::raw::c_int = 38; +pub const ASENSOR_TYPE_GYROSCOPE_LIMITED_AXES: ::std::os::raw::c_int = 39; +pub const ASENSOR_TYPE_ACCELEROMETER_LIMITED_AXES_UNCALIBRATED: ::std::os::raw::c_int = 40; +pub const ASENSOR_TYPE_GYROSCOPE_LIMITED_AXES_UNCALIBRATED: ::std::os::raw::c_int = 41; +pub const ASENSOR_TYPE_HEADING: ::std::os::raw::c_int = 42; pub type _bindgen_ty_38 = ::std::os::raw::c_int; pub const ASENSOR_STATUS_NO_CONTACT: ::std::os::raw::c_int = -1; pub const ASENSOR_STATUS_UNRELIABLE: ::std::os::raw::c_int = 0; @@ -10098,480 +10462,1228 @@ fn bindgen_test_layout_AAdditionalInfoEvent() { ); } #[repr(C)] -#[derive(Copy, Clone)] -pub struct ASensorEvent { - pub version: i32, - pub sensor: i32, - pub type_: i32, - pub reserved0: i32, - pub timestamp: i64, - pub __bindgen_anon_1: ASensorEvent__bindgen_ty_1, - pub flags: u32, - pub reserved1: [i32; 3usize], -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union ASensorEvent__bindgen_ty_1 { - pub __bindgen_anon_1: ASensorEvent__bindgen_ty_1__bindgen_ty_1, - pub u64_: ASensorEvent__bindgen_ty_1__bindgen_ty_2, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union ASensorEvent__bindgen_ty_1__bindgen_ty_1 { - pub data: [f32; 16usize], - pub vector: ASensorVector, - pub acceleration: ASensorVector, - pub gyro: ASensorVector, - pub magnetic: ASensorVector, - pub temperature: f32, - pub distance: f32, - pub light: f32, - pub pressure: f32, - pub relative_humidity: f32, - pub uncalibrated_acceleration: AUncalibratedEvent, - pub uncalibrated_gyro: AUncalibratedEvent, - pub uncalibrated_magnetic: AUncalibratedEvent, - pub meta_data: AMetaDataEvent, - pub heart_rate: AHeartRateEvent, - pub dynamic_sensor_meta: ADynamicSensorEvent, - pub additional_info: AAdditionalInfoEvent, +#[derive(Debug, Copy, Clone)] +pub struct AHeadTrackerEvent { + pub rx: f32, + pub ry: f32, + pub rz: f32, + pub vx: f32, + pub vy: f32, + pub vz: f32, + pub discontinuity_count: i32, } #[test] -fn bindgen_test_layout_ASensorEvent__bindgen_ty_1__bindgen_ty_1() { +fn bindgen_test_layout_AHeadTrackerEvent() { assert_eq!( - ::std::mem::size_of::(), - 64usize, - concat!( - "Size of: ", - stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_1) - ) + ::std::mem::size_of::(), + 28usize, + concat!("Size of: ", stringify!(AHeadTrackerEvent)) ); assert_eq!( - ::std::mem::align_of::(), + ::std::mem::align_of::(), 4usize, - concat!( - "Alignment of ", - stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_1) - ) + concat!("Alignment of ", stringify!(AHeadTrackerEvent)) ); assert_eq!( - unsafe { - &(*(::std::ptr::null::())).data as *const _ - as usize - }, + unsafe { &(*(::std::ptr::null::())).rx as *const _ as usize }, 0usize, concat!( "Offset of field: ", - stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_1), + stringify!(AHeadTrackerEvent), "::", - stringify!(data) + stringify!(rx) ) ); assert_eq!( - unsafe { - &(*(::std::ptr::null::())).vector as *const _ - as usize - }, - 0usize, + unsafe { &(*(::std::ptr::null::())).ry as *const _ as usize }, + 4usize, concat!( "Offset of field: ", - stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_1), + stringify!(AHeadTrackerEvent), "::", - stringify!(vector) + stringify!(ry) ) ); assert_eq!( - unsafe { - &(*(::std::ptr::null::())).acceleration - as *const _ as usize - }, - 0usize, + unsafe { &(*(::std::ptr::null::())).rz as *const _ as usize }, + 8usize, concat!( "Offset of field: ", - stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_1), + stringify!(AHeadTrackerEvent), "::", - stringify!(acceleration) + stringify!(rz) ) ); assert_eq!( - unsafe { - &(*(::std::ptr::null::())).gyro as *const _ - as usize - }, - 0usize, + unsafe { &(*(::std::ptr::null::())).vx as *const _ as usize }, + 12usize, concat!( "Offset of field: ", - stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_1), + stringify!(AHeadTrackerEvent), "::", - stringify!(gyro) + stringify!(vx) ) ); assert_eq!( - unsafe { - &(*(::std::ptr::null::())).magnetic - as *const _ as usize - }, - 0usize, + unsafe { &(*(::std::ptr::null::())).vy as *const _ as usize }, + 16usize, concat!( "Offset of field: ", - stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_1), + stringify!(AHeadTrackerEvent), "::", - stringify!(magnetic) + stringify!(vy) ) ); assert_eq!( - unsafe { - &(*(::std::ptr::null::())).temperature - as *const _ as usize - }, - 0usize, + unsafe { &(*(::std::ptr::null::())).vz as *const _ as usize }, + 20usize, concat!( "Offset of field: ", - stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_1), + stringify!(AHeadTrackerEvent), "::", - stringify!(temperature) + stringify!(vz) ) ); assert_eq!( unsafe { - &(*(::std::ptr::null::())).distance - as *const _ as usize + &(*(::std::ptr::null::())).discontinuity_count as *const _ as usize }, - 0usize, + 24usize, concat!( "Offset of field: ", - stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_1), + stringify!(AHeadTrackerEvent), "::", - stringify!(distance) + stringify!(discontinuity_count) ) ); +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct ALimitedAxesImuEvent { + pub __bindgen_anon_1: ALimitedAxesImuEvent__bindgen_ty_1, + pub __bindgen_anon_2: ALimitedAxesImuEvent__bindgen_ty_2, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union ALimitedAxesImuEvent__bindgen_ty_1 { + pub calib: [f32; 3usize], + pub __bindgen_anon_1: ALimitedAxesImuEvent__bindgen_ty_1__bindgen_ty_1, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ALimitedAxesImuEvent__bindgen_ty_1__bindgen_ty_1 { + pub x: f32, + pub y: f32, + pub z: f32, +} +#[test] +fn bindgen_test_layout_ALimitedAxesImuEvent__bindgen_ty_1__bindgen_ty_1() { assert_eq!( - unsafe { - &(*(::std::ptr::null::())).light as *const _ - as usize - }, - 0usize, + ::std::mem::size_of::(), + 12usize, concat!( - "Offset of field: ", - stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_1), - "::", - stringify!(light) + "Size of: ", + stringify!(ALimitedAxesImuEvent__bindgen_ty_1__bindgen_ty_1) ) ); assert_eq!( - unsafe { - &(*(::std::ptr::null::())).pressure - as *const _ as usize - }, - 0usize, + ::std::mem::align_of::(), + 4usize, concat!( - "Offset of field: ", - stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_1), - "::", - stringify!(pressure) + "Alignment of ", + stringify!(ALimitedAxesImuEvent__bindgen_ty_1__bindgen_ty_1) ) ); assert_eq!( unsafe { - &(*(::std::ptr::null::())).relative_humidity + &(*(::std::ptr::null::())).x as *const _ as usize }, 0usize, concat!( "Offset of field: ", - stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_1), + stringify!(ALimitedAxesImuEvent__bindgen_ty_1__bindgen_ty_1), "::", - stringify!(relative_humidity) + stringify!(x) ) ); assert_eq!( unsafe { - &(*(::std::ptr::null::())) - .uncalibrated_acceleration as *const _ as usize + &(*(::std::ptr::null::())).y + as *const _ as usize }, - 0usize, + 4usize, concat!( "Offset of field: ", - stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_1), + stringify!(ALimitedAxesImuEvent__bindgen_ty_1__bindgen_ty_1), "::", - stringify!(uncalibrated_acceleration) + stringify!(y) ) ); assert_eq!( unsafe { - &(*(::std::ptr::null::())).uncalibrated_gyro + &(*(::std::ptr::null::())).z as *const _ as usize }, - 0usize, + 8usize, concat!( "Offset of field: ", - stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_1), + stringify!(ALimitedAxesImuEvent__bindgen_ty_1__bindgen_ty_1), "::", - stringify!(uncalibrated_gyro) + stringify!(z) + ) + ); +} +#[test] +fn bindgen_test_layout_ALimitedAxesImuEvent__bindgen_ty_1() { + assert_eq!( + ::std::mem::size_of::(), + 12usize, + concat!("Size of: ", stringify!(ALimitedAxesImuEvent__bindgen_ty_1)) + ); + assert_eq!( + ::std::mem::align_of::(), + 4usize, + concat!( + "Alignment of ", + stringify!(ALimitedAxesImuEvent__bindgen_ty_1) ) ); assert_eq!( unsafe { - &(*(::std::ptr::null::())) - .uncalibrated_magnetic as *const _ as usize + &(*(::std::ptr::null::())).calib as *const _ + as usize }, 0usize, concat!( "Offset of field: ", - stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_1), + stringify!(ALimitedAxesImuEvent__bindgen_ty_1), "::", - stringify!(uncalibrated_magnetic) + stringify!(calib) + ) + ); +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union ALimitedAxesImuEvent__bindgen_ty_2 { + pub supported: [f32; 3usize], + pub __bindgen_anon_1: ALimitedAxesImuEvent__bindgen_ty_2__bindgen_ty_1, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ALimitedAxesImuEvent__bindgen_ty_2__bindgen_ty_1 { + pub x_supported: f32, + pub y_supported: f32, + pub z_supported: f32, +} +#[test] +fn bindgen_test_layout_ALimitedAxesImuEvent__bindgen_ty_2__bindgen_ty_1() { + assert_eq!( + ::std::mem::size_of::(), + 12usize, + concat!( + "Size of: ", + stringify!(ALimitedAxesImuEvent__bindgen_ty_2__bindgen_ty_1) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 4usize, + concat!( + "Alignment of ", + stringify!(ALimitedAxesImuEvent__bindgen_ty_2__bindgen_ty_1) ) ); assert_eq!( unsafe { - &(*(::std::ptr::null::())).meta_data + &(*(::std::ptr::null::())).x_supported as *const _ as usize }, 0usize, concat!( "Offset of field: ", - stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_1), + stringify!(ALimitedAxesImuEvent__bindgen_ty_2__bindgen_ty_1), "::", - stringify!(meta_data) + stringify!(x_supported) ) ); assert_eq!( unsafe { - &(*(::std::ptr::null::())).heart_rate + &(*(::std::ptr::null::())).y_supported as *const _ as usize }, - 0usize, + 4usize, concat!( "Offset of field: ", - stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_1), + stringify!(ALimitedAxesImuEvent__bindgen_ty_2__bindgen_ty_1), "::", - stringify!(heart_rate) + stringify!(y_supported) ) ); assert_eq!( unsafe { - &(*(::std::ptr::null::())).dynamic_sensor_meta + &(*(::std::ptr::null::())).z_supported as *const _ as usize }, - 0usize, + 8usize, concat!( "Offset of field: ", - stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_1), + stringify!(ALimitedAxesImuEvent__bindgen_ty_2__bindgen_ty_1), "::", - stringify!(dynamic_sensor_meta) + stringify!(z_supported) + ) + ); +} +#[test] +fn bindgen_test_layout_ALimitedAxesImuEvent__bindgen_ty_2() { + assert_eq!( + ::std::mem::size_of::(), + 12usize, + concat!("Size of: ", stringify!(ALimitedAxesImuEvent__bindgen_ty_2)) + ); + assert_eq!( + ::std::mem::align_of::(), + 4usize, + concat!( + "Alignment of ", + stringify!(ALimitedAxesImuEvent__bindgen_ty_2) ) ); assert_eq!( unsafe { - &(*(::std::ptr::null::())).additional_info - as *const _ as usize + &(*(::std::ptr::null::())).supported as *const _ + as usize }, 0usize, concat!( "Offset of field: ", - stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_1), + stringify!(ALimitedAxesImuEvent__bindgen_ty_2), "::", - stringify!(additional_info) + stringify!(supported) ) ); } +#[test] +fn bindgen_test_layout_ALimitedAxesImuEvent() { + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!("Size of: ", stringify!(ALimitedAxesImuEvent)) + ); + assert_eq!( + ::std::mem::align_of::(), + 4usize, + concat!("Alignment of ", stringify!(ALimitedAxesImuEvent)) + ); +} #[repr(C)] #[derive(Copy, Clone)] -pub union ASensorEvent__bindgen_ty_1__bindgen_ty_2 { - pub data: [u64; 8usize], - pub step_counter: u64, +pub struct ALimitedAxesImuUncalibratedEvent { + pub __bindgen_anon_1: ALimitedAxesImuUncalibratedEvent__bindgen_ty_1, + pub __bindgen_anon_2: ALimitedAxesImuUncalibratedEvent__bindgen_ty_2, + pub __bindgen_anon_3: ALimitedAxesImuUncalibratedEvent__bindgen_ty_3, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union ALimitedAxesImuUncalibratedEvent__bindgen_ty_1 { + pub uncalib: [f32; 3usize], + pub __bindgen_anon_1: ALimitedAxesImuUncalibratedEvent__bindgen_ty_1__bindgen_ty_1, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ALimitedAxesImuUncalibratedEvent__bindgen_ty_1__bindgen_ty_1 { + pub x_uncalib: f32, + pub y_uncalib: f32, + pub z_uncalib: f32, } #[test] -fn bindgen_test_layout_ASensorEvent__bindgen_ty_1__bindgen_ty_2() { +fn bindgen_test_layout_ALimitedAxesImuUncalibratedEvent__bindgen_ty_1__bindgen_ty_1() { assert_eq!( - ::std::mem::size_of::(), - 64usize, + ::std::mem::size_of::(), + 12usize, concat!( "Size of: ", - stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_2) + stringify!(ALimitedAxesImuUncalibratedEvent__bindgen_ty_1__bindgen_ty_1) ) ); assert_eq!( - ::std::mem::align_of::(), - 8usize, + ::std::mem::align_of::(), + 4usize, concat!( "Alignment of ", - stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_2) + stringify!(ALimitedAxesImuUncalibratedEvent__bindgen_ty_1__bindgen_ty_1) ) ); assert_eq!( unsafe { - &(*(::std::ptr::null::())).data as *const _ - as usize + &(*(::std::ptr::null::())) + .x_uncalib as *const _ as usize }, 0usize, concat!( "Offset of field: ", - stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_2), + stringify!(ALimitedAxesImuUncalibratedEvent__bindgen_ty_1__bindgen_ty_1), "::", - stringify!(data) + stringify!(x_uncalib) ) ); assert_eq!( unsafe { - &(*(::std::ptr::null::())).step_counter - as *const _ as usize + &(*(::std::ptr::null::())) + .y_uncalib as *const _ as usize }, - 0usize, + 4usize, concat!( "Offset of field: ", - stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_2), + stringify!(ALimitedAxesImuUncalibratedEvent__bindgen_ty_1__bindgen_ty_1), "::", - stringify!(step_counter) + stringify!(y_uncalib) ) ); -} -#[test] -fn bindgen_test_layout_ASensorEvent__bindgen_ty_1() { assert_eq!( - ::std::mem::size_of::(), - 64usize, - concat!("Size of: ", stringify!(ASensorEvent__bindgen_ty_1)) + unsafe { + &(*(::std::ptr::null::())) + .z_uncalib as *const _ as usize + }, + 8usize, + concat!( + "Offset of field: ", + stringify!(ALimitedAxesImuUncalibratedEvent__bindgen_ty_1__bindgen_ty_1), + "::", + stringify!(z_uncalib) + ) ); +} +#[test] +fn bindgen_test_layout_ALimitedAxesImuUncalibratedEvent__bindgen_ty_1() { assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(ASensorEvent__bindgen_ty_1)) + ::std::mem::size_of::(), + 12usize, + concat!( + "Size of: ", + stringify!(ALimitedAxesImuUncalibratedEvent__bindgen_ty_1) + ) ); assert_eq!( - unsafe { &(*(::std::ptr::null::())).u64_ as *const _ as usize }, + ::std::mem::align_of::(), + 4usize, + concat!( + "Alignment of ", + stringify!(ALimitedAxesImuUncalibratedEvent__bindgen_ty_1) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).uncalib + as *const _ as usize + }, 0usize, concat!( "Offset of field: ", - stringify!(ASensorEvent__bindgen_ty_1), + stringify!(ALimitedAxesImuUncalibratedEvent__bindgen_ty_1), "::", - stringify!(u64_) + stringify!(uncalib) ) ); } +#[repr(C)] +#[derive(Copy, Clone)] +pub union ALimitedAxesImuUncalibratedEvent__bindgen_ty_2 { + pub bias: [f32; 3usize], + pub __bindgen_anon_1: ALimitedAxesImuUncalibratedEvent__bindgen_ty_2__bindgen_ty_1, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ALimitedAxesImuUncalibratedEvent__bindgen_ty_2__bindgen_ty_1 { + pub x_bias: f32, + pub y_bias: f32, + pub z_bias: f32, +} #[test] -fn bindgen_test_layout_ASensorEvent() { +fn bindgen_test_layout_ALimitedAxesImuUncalibratedEvent__bindgen_ty_2__bindgen_ty_1() { assert_eq!( - ::std::mem::size_of::(), - 104usize, - concat!("Size of: ", stringify!(ASensorEvent)) + ::std::mem::size_of::(), + 12usize, + concat!( + "Size of: ", + stringify!(ALimitedAxesImuUncalibratedEvent__bindgen_ty_2__bindgen_ty_1) + ) ); assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(ASensorEvent)) + ::std::mem::align_of::(), + 4usize, + concat!( + "Alignment of ", + stringify!(ALimitedAxesImuUncalibratedEvent__bindgen_ty_2__bindgen_ty_1) + ) ); assert_eq!( - unsafe { &(*(::std::ptr::null::())).version as *const _ as usize }, + unsafe { + &(*(::std::ptr::null::())) + .x_bias as *const _ as usize + }, 0usize, concat!( "Offset of field: ", - stringify!(ASensorEvent), + stringify!(ALimitedAxesImuUncalibratedEvent__bindgen_ty_2__bindgen_ty_1), "::", - stringify!(version) + stringify!(x_bias) ) ); assert_eq!( - unsafe { &(*(::std::ptr::null::())).sensor as *const _ as usize }, + unsafe { + &(*(::std::ptr::null::())) + .y_bias as *const _ as usize + }, 4usize, concat!( "Offset of field: ", - stringify!(ASensorEvent), + stringify!(ALimitedAxesImuUncalibratedEvent__bindgen_ty_2__bindgen_ty_1), "::", - stringify!(sensor) + stringify!(y_bias) ) ); assert_eq!( - unsafe { &(*(::std::ptr::null::())).type_ as *const _ as usize }, + unsafe { + &(*(::std::ptr::null::())) + .z_bias as *const _ as usize + }, 8usize, concat!( "Offset of field: ", - stringify!(ASensorEvent), + stringify!(ALimitedAxesImuUncalibratedEvent__bindgen_ty_2__bindgen_ty_1), "::", - stringify!(type_) + stringify!(z_bias) ) ); +} +#[test] +fn bindgen_test_layout_ALimitedAxesImuUncalibratedEvent__bindgen_ty_2() { assert_eq!( - unsafe { &(*(::std::ptr::null::())).reserved0 as *const _ as usize }, + ::std::mem::size_of::(), 12usize, + concat!( + "Size of: ", + stringify!(ALimitedAxesImuUncalibratedEvent__bindgen_ty_2) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 4usize, + concat!( + "Alignment of ", + stringify!(ALimitedAxesImuUncalibratedEvent__bindgen_ty_2) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).bias + as *const _ as usize + }, + 0usize, concat!( "Offset of field: ", - stringify!(ASensorEvent), + stringify!(ALimitedAxesImuUncalibratedEvent__bindgen_ty_2), "::", - stringify!(reserved0) + stringify!(bias) + ) + ); +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union ALimitedAxesImuUncalibratedEvent__bindgen_ty_3 { + pub supported: [f32; 3usize], + pub __bindgen_anon_1: ALimitedAxesImuUncalibratedEvent__bindgen_ty_3__bindgen_ty_1, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ALimitedAxesImuUncalibratedEvent__bindgen_ty_3__bindgen_ty_1 { + pub x_supported: f32, + pub y_supported: f32, + pub z_supported: f32, +} +#[test] +fn bindgen_test_layout_ALimitedAxesImuUncalibratedEvent__bindgen_ty_3__bindgen_ty_1() { + assert_eq!( + ::std::mem::size_of::(), + 12usize, + concat!( + "Size of: ", + stringify!(ALimitedAxesImuUncalibratedEvent__bindgen_ty_3__bindgen_ty_1) ) ); assert_eq!( - unsafe { &(*(::std::ptr::null::())).timestamp as *const _ as usize }, - 16usize, + ::std::mem::align_of::(), + 4usize, + concat!( + "Alignment of ", + stringify!(ALimitedAxesImuUncalibratedEvent__bindgen_ty_3__bindgen_ty_1) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())) + .x_supported as *const _ as usize + }, + 0usize, concat!( "Offset of field: ", - stringify!(ASensorEvent), + stringify!(ALimitedAxesImuUncalibratedEvent__bindgen_ty_3__bindgen_ty_1), "::", - stringify!(timestamp) + stringify!(x_supported) ) ); assert_eq!( - unsafe { &(*(::std::ptr::null::())).flags as *const _ as usize }, - 88usize, + unsafe { + &(*(::std::ptr::null::())) + .y_supported as *const _ as usize + }, + 4usize, concat!( "Offset of field: ", - stringify!(ASensorEvent), + stringify!(ALimitedAxesImuUncalibratedEvent__bindgen_ty_3__bindgen_ty_1), "::", - stringify!(flags) + stringify!(y_supported) ) ); assert_eq!( - unsafe { &(*(::std::ptr::null::())).reserved1 as *const _ as usize }, - 92usize, + unsafe { + &(*(::std::ptr::null::())) + .z_supported as *const _ as usize + }, + 8usize, concat!( "Offset of field: ", - stringify!(ASensorEvent), + stringify!(ALimitedAxesImuUncalibratedEvent__bindgen_ty_3__bindgen_ty_1), "::", - stringify!(reserved1) + stringify!(z_supported) ) ); } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ASensorManager { - _unused: [u8; 0], +#[test] +fn bindgen_test_layout_ALimitedAxesImuUncalibratedEvent__bindgen_ty_3() { + assert_eq!( + ::std::mem::size_of::(), + 12usize, + concat!( + "Size of: ", + stringify!(ALimitedAxesImuUncalibratedEvent__bindgen_ty_3) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 4usize, + concat!( + "Alignment of ", + stringify!(ALimitedAxesImuUncalibratedEvent__bindgen_ty_3) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).supported + as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ALimitedAxesImuUncalibratedEvent__bindgen_ty_3), + "::", + stringify!(supported) + ) + ); } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ASensorEventQueue { - _unused: [u8; 0], +#[test] +fn bindgen_test_layout_ALimitedAxesImuUncalibratedEvent() { + assert_eq!( + ::std::mem::size_of::(), + 36usize, + concat!("Size of: ", stringify!(ALimitedAxesImuUncalibratedEvent)) + ); + assert_eq!( + ::std::mem::align_of::(), + 4usize, + concat!( + "Alignment of ", + stringify!(ALimitedAxesImuUncalibratedEvent) + ) + ); } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct ASensor { - _unused: [u8; 0], +pub struct AHeadingEvent { + pub heading: f32, + pub accuracy: f32, } -pub type ASensorRef = *const ASensor; -pub type ASensorList = *const ASensorRef; -extern "C" { - pub fn ASensorManager_getInstance() -> *mut ASensorManager; +#[test] +fn bindgen_test_layout_AHeadingEvent() { + assert_eq!( + ::std::mem::size_of::(), + 8usize, + concat!("Size of: ", stringify!(AHeadingEvent)) + ); + assert_eq!( + ::std::mem::align_of::(), + 4usize, + concat!("Alignment of ", stringify!(AHeadingEvent)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).heading as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(AHeadingEvent), + "::", + stringify!(heading) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).accuracy as *const _ as usize }, + 4usize, + concat!( + "Offset of field: ", + stringify!(AHeadingEvent), + "::", + stringify!(accuracy) + ) + ); } -extern "C" { - pub fn ASensorManager_getInstanceForPackage( - packageName: *const ::std::os::raw::c_char, - ) -> *mut ASensorManager; +#[repr(C)] +#[derive(Copy, Clone)] +pub struct ASensorEvent { + pub version: i32, + pub sensor: i32, + pub type_: i32, + pub reserved0: i32, + pub timestamp: i64, + pub __bindgen_anon_1: ASensorEvent__bindgen_ty_1, + pub flags: u32, + pub reserved1: [i32; 3usize], } -extern "C" { - pub fn ASensorManager_getSensorList( - manager: *mut ASensorManager, - list: *mut ASensorList, - ) -> ::std::os::raw::c_int; +#[repr(C)] +#[derive(Copy, Clone)] +pub union ASensorEvent__bindgen_ty_1 { + pub __bindgen_anon_1: ASensorEvent__bindgen_ty_1__bindgen_ty_1, + pub u64_: ASensorEvent__bindgen_ty_1__bindgen_ty_2, } -extern "C" { - pub fn ASensorManager_getDefaultSensor( - manager: *mut ASensorManager, - type_: ::std::os::raw::c_int, - ) -> *const ASensor; +#[repr(C)] +#[derive(Copy, Clone)] +pub union ASensorEvent__bindgen_ty_1__bindgen_ty_1 { + pub data: [f32; 16usize], + pub vector: ASensorVector, + pub acceleration: ASensorVector, + pub gyro: ASensorVector, + pub magnetic: ASensorVector, + pub temperature: f32, + pub distance: f32, + pub light: f32, + pub pressure: f32, + pub relative_humidity: f32, + pub uncalibrated_acceleration: AUncalibratedEvent, + pub uncalibrated_gyro: AUncalibratedEvent, + pub uncalibrated_magnetic: AUncalibratedEvent, + pub meta_data: AMetaDataEvent, + pub heart_rate: AHeartRateEvent, + pub dynamic_sensor_meta: ADynamicSensorEvent, + pub additional_info: AAdditionalInfoEvent, + pub head_tracker: AHeadTrackerEvent, + pub limited_axes_imu: ALimitedAxesImuEvent, + pub limited_axes_imu_uncalibrated: ALimitedAxesImuUncalibratedEvent, + pub heading: AHeadingEvent, } -extern "C" { - pub fn ASensorManager_getDefaultSensorEx( +#[test] +fn bindgen_test_layout_ASensorEvent__bindgen_ty_1__bindgen_ty_1() { + assert_eq!( + ::std::mem::size_of::(), + 64usize, + concat!( + "Size of: ", + stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_1) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 4usize, + concat!( + "Alignment of ", + stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_1) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).data as *const _ + as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_1), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).vector as *const _ + as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_1), + "::", + stringify!(vector) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).acceleration + as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_1), + "::", + stringify!(acceleration) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).gyro as *const _ + as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_1), + "::", + stringify!(gyro) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).magnetic + as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_1), + "::", + stringify!(magnetic) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).temperature + as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_1), + "::", + stringify!(temperature) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).distance + as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_1), + "::", + stringify!(distance) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).light as *const _ + as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_1), + "::", + stringify!(light) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).pressure + as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_1), + "::", + stringify!(pressure) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).relative_humidity + as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_1), + "::", + stringify!(relative_humidity) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())) + .uncalibrated_acceleration as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_1), + "::", + stringify!(uncalibrated_acceleration) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).uncalibrated_gyro + as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_1), + "::", + stringify!(uncalibrated_gyro) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())) + .uncalibrated_magnetic as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_1), + "::", + stringify!(uncalibrated_magnetic) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).meta_data + as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_1), + "::", + stringify!(meta_data) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).heart_rate + as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_1), + "::", + stringify!(heart_rate) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).dynamic_sensor_meta + as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_1), + "::", + stringify!(dynamic_sensor_meta) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).additional_info + as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_1), + "::", + stringify!(additional_info) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).head_tracker + as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_1), + "::", + stringify!(head_tracker) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).limited_axes_imu + as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_1), + "::", + stringify!(limited_axes_imu) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())) + .limited_axes_imu_uncalibrated as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_1), + "::", + stringify!(limited_axes_imu_uncalibrated) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).heading as *const _ + as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_1), + "::", + stringify!(heading) + ) + ); +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union ASensorEvent__bindgen_ty_1__bindgen_ty_2 { + pub data: [u64; 8usize], + pub step_counter: u64, +} +#[test] +fn bindgen_test_layout_ASensorEvent__bindgen_ty_1__bindgen_ty_2() { + assert_eq!( + ::std::mem::size_of::(), + 64usize, + concat!( + "Size of: ", + stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_2) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_2) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).data as *const _ + as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_2), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).step_counter + as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_2), + "::", + stringify!(step_counter) + ) + ); +} +#[test] +fn bindgen_test_layout_ASensorEvent__bindgen_ty_1() { + assert_eq!( + ::std::mem::size_of::(), + 64usize, + concat!("Size of: ", stringify!(ASensorEvent__bindgen_ty_1)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(ASensorEvent__bindgen_ty_1)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).u64_ as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ASensorEvent__bindgen_ty_1), + "::", + stringify!(u64_) + ) + ); +} +#[test] +fn bindgen_test_layout_ASensorEvent() { + assert_eq!( + ::std::mem::size_of::(), + 104usize, + concat!("Size of: ", stringify!(ASensorEvent)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(ASensorEvent)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).version as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ASensorEvent), + "::", + stringify!(version) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).sensor as *const _ as usize }, + 4usize, + concat!( + "Offset of field: ", + stringify!(ASensorEvent), + "::", + stringify!(sensor) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).type_ as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(ASensorEvent), + "::", + stringify!(type_) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).reserved0 as *const _ as usize }, + 12usize, + concat!( + "Offset of field: ", + stringify!(ASensorEvent), + "::", + stringify!(reserved0) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).timestamp as *const _ as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(ASensorEvent), + "::", + stringify!(timestamp) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).flags as *const _ as usize }, + 88usize, + concat!( + "Offset of field: ", + stringify!(ASensorEvent), + "::", + stringify!(flags) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).reserved1 as *const _ as usize }, + 92usize, + concat!( + "Offset of field: ", + stringify!(ASensorEvent), + "::", + stringify!(reserved1) + ) + ); +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ASensorManager { + _unused: [u8; 0], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ASensorEventQueue { + _unused: [u8; 0], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ASensor { + _unused: [u8; 0], +} +pub type ASensorRef = *const ASensor; +pub type ASensorList = *const ASensorRef; +extern "C" { + pub fn ASensorManager_getInstance() -> *mut ASensorManager; +} +extern "C" { + pub fn ASensorManager_getInstanceForPackage( + packageName: *const ::std::os::raw::c_char, + ) -> *mut ASensorManager; +} +extern "C" { + pub fn ASensorManager_getSensorList( + manager: *mut ASensorManager, + list: *mut ASensorList, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn ASensorManager_getDynamicSensorList( + manager: *mut ASensorManager, + list: *mut ASensorList, + ) -> ssize_t; +} +extern "C" { + pub fn ASensorManager_getDefaultSensor( + manager: *mut ASensorManager, + type_: ::std::os::raw::c_int, + ) -> *const ASensor; +} +extern "C" { + pub fn ASensorManager_getDefaultSensorEx( manager: *mut ASensorManager, type_: ::std::os::raw::c_int, wakeUp: bool, @@ -14536,23 +15648,81 @@ pub const AAUDIO_CONTENT_TYPE_MOVIE: ::std::os::raw::c_uint = 3; pub const AAUDIO_CONTENT_TYPE_SONIFICATION: ::std::os::raw::c_uint = 4; pub type _bindgen_ty_54 = ::std::os::raw::c_uint; pub type aaudio_content_type_t = i32; +pub const AAUDIO_SPATIALIZATION_BEHAVIOR_AUTO: ::std::os::raw::c_uint = 1; +pub const AAUDIO_SPATIALIZATION_BEHAVIOR_NEVER: ::std::os::raw::c_uint = 2; +pub type _bindgen_ty_55 = ::std::os::raw::c_uint; +pub type aaudio_spatialization_behavior_t = i32; pub const AAUDIO_INPUT_PRESET_GENERIC: ::std::os::raw::c_uint = 1; pub const AAUDIO_INPUT_PRESET_CAMCORDER: ::std::os::raw::c_uint = 5; pub const AAUDIO_INPUT_PRESET_VOICE_RECOGNITION: ::std::os::raw::c_uint = 6; pub const AAUDIO_INPUT_PRESET_VOICE_COMMUNICATION: ::std::os::raw::c_uint = 7; pub const AAUDIO_INPUT_PRESET_UNPROCESSED: ::std::os::raw::c_uint = 9; pub const AAUDIO_INPUT_PRESET_VOICE_PERFORMANCE: ::std::os::raw::c_uint = 10; -pub type _bindgen_ty_55 = ::std::os::raw::c_uint; +pub type _bindgen_ty_56 = ::std::os::raw::c_uint; pub type aaudio_input_preset_t = i32; pub const AAUDIO_ALLOW_CAPTURE_BY_ALL: ::std::os::raw::c_uint = 1; pub const AAUDIO_ALLOW_CAPTURE_BY_SYSTEM: ::std::os::raw::c_uint = 2; pub const AAUDIO_ALLOW_CAPTURE_BY_NONE: ::std::os::raw::c_uint = 3; -pub type _bindgen_ty_56 = ::std::os::raw::c_uint; +pub type _bindgen_ty_57 = ::std::os::raw::c_uint; pub type aaudio_allowed_capture_policy_t = i32; pub const AAUDIO_SESSION_ID_NONE: ::std::os::raw::c_int = -1; pub const AAUDIO_SESSION_ID_ALLOCATE: ::std::os::raw::c_int = 0; -pub type _bindgen_ty_57 = ::std::os::raw::c_int; +pub type _bindgen_ty_58 = ::std::os::raw::c_int; pub type aaudio_session_id_t = i32; +pub const AAUDIO_CHANNEL_INVALID: ::std::os::raw::c_int = -1; +pub const AAUDIO_CHANNEL_FRONT_LEFT: ::std::os::raw::c_int = 1; +pub const AAUDIO_CHANNEL_FRONT_RIGHT: ::std::os::raw::c_int = 2; +pub const AAUDIO_CHANNEL_FRONT_CENTER: ::std::os::raw::c_int = 4; +pub const AAUDIO_CHANNEL_LOW_FREQUENCY: ::std::os::raw::c_int = 8; +pub const AAUDIO_CHANNEL_BACK_LEFT: ::std::os::raw::c_int = 16; +pub const AAUDIO_CHANNEL_BACK_RIGHT: ::std::os::raw::c_int = 32; +pub const AAUDIO_CHANNEL_FRONT_LEFT_OF_CENTER: ::std::os::raw::c_int = 64; +pub const AAUDIO_CHANNEL_FRONT_RIGHT_OF_CENTER: ::std::os::raw::c_int = 128; +pub const AAUDIO_CHANNEL_BACK_CENTER: ::std::os::raw::c_int = 256; +pub const AAUDIO_CHANNEL_SIDE_LEFT: ::std::os::raw::c_int = 512; +pub const AAUDIO_CHANNEL_SIDE_RIGHT: ::std::os::raw::c_int = 1024; +pub const AAUDIO_CHANNEL_TOP_CENTER: ::std::os::raw::c_int = 2048; +pub const AAUDIO_CHANNEL_TOP_FRONT_LEFT: ::std::os::raw::c_int = 4096; +pub const AAUDIO_CHANNEL_TOP_FRONT_CENTER: ::std::os::raw::c_int = 8192; +pub const AAUDIO_CHANNEL_TOP_FRONT_RIGHT: ::std::os::raw::c_int = 16384; +pub const AAUDIO_CHANNEL_TOP_BACK_LEFT: ::std::os::raw::c_int = 32768; +pub const AAUDIO_CHANNEL_TOP_BACK_CENTER: ::std::os::raw::c_int = 65536; +pub const AAUDIO_CHANNEL_TOP_BACK_RIGHT: ::std::os::raw::c_int = 131072; +pub const AAUDIO_CHANNEL_TOP_SIDE_LEFT: ::std::os::raw::c_int = 262144; +pub const AAUDIO_CHANNEL_TOP_SIDE_RIGHT: ::std::os::raw::c_int = 524288; +pub const AAUDIO_CHANNEL_BOTTOM_FRONT_LEFT: ::std::os::raw::c_int = 1048576; +pub const AAUDIO_CHANNEL_BOTTOM_FRONT_CENTER: ::std::os::raw::c_int = 2097152; +pub const AAUDIO_CHANNEL_BOTTOM_FRONT_RIGHT: ::std::os::raw::c_int = 4194304; +pub const AAUDIO_CHANNEL_LOW_FREQUENCY_2: ::std::os::raw::c_int = 8388608; +pub const AAUDIO_CHANNEL_FRONT_WIDE_LEFT: ::std::os::raw::c_int = 16777216; +pub const AAUDIO_CHANNEL_FRONT_WIDE_RIGHT: ::std::os::raw::c_int = 33554432; +pub const AAUDIO_CHANNEL_MONO: ::std::os::raw::c_int = 1; +pub const AAUDIO_CHANNEL_STEREO: ::std::os::raw::c_int = 3; +pub const AAUDIO_CHANNEL_2POINT1: ::std::os::raw::c_int = 11; +pub const AAUDIO_CHANNEL_TRI: ::std::os::raw::c_int = 7; +pub const AAUDIO_CHANNEL_TRI_BACK: ::std::os::raw::c_int = 259; +pub const AAUDIO_CHANNEL_3POINT1: ::std::os::raw::c_int = 15; +pub const AAUDIO_CHANNEL_2POINT0POINT2: ::std::os::raw::c_int = 786435; +pub const AAUDIO_CHANNEL_2POINT1POINT2: ::std::os::raw::c_int = 786443; +pub const AAUDIO_CHANNEL_3POINT0POINT2: ::std::os::raw::c_int = 786439; +pub const AAUDIO_CHANNEL_3POINT1POINT2: ::std::os::raw::c_int = 786447; +pub const AAUDIO_CHANNEL_QUAD: ::std::os::raw::c_int = 51; +pub const AAUDIO_CHANNEL_QUAD_SIDE: ::std::os::raw::c_int = 1539; +pub const AAUDIO_CHANNEL_SURROUND: ::std::os::raw::c_int = 263; +pub const AAUDIO_CHANNEL_PENTA: ::std::os::raw::c_int = 55; +pub const AAUDIO_CHANNEL_5POINT1: ::std::os::raw::c_int = 63; +pub const AAUDIO_CHANNEL_5POINT1_SIDE: ::std::os::raw::c_int = 1551; +pub const AAUDIO_CHANNEL_6POINT1: ::std::os::raw::c_int = 319; +pub const AAUDIO_CHANNEL_7POINT1: ::std::os::raw::c_int = 1599; +pub const AAUDIO_CHANNEL_5POINT1POINT2: ::std::os::raw::c_int = 786495; +pub const AAUDIO_CHANNEL_5POINT1POINT4: ::std::os::raw::c_int = 184383; +pub const AAUDIO_CHANNEL_7POINT1POINT2: ::std::os::raw::c_int = 788031; +pub const AAUDIO_CHANNEL_7POINT1POINT4: ::std::os::raw::c_int = 185919; +pub const AAUDIO_CHANNEL_9POINT1POINT4: ::std::os::raw::c_int = 50517567; +pub const AAUDIO_CHANNEL_9POINT1POINT6: ::std::os::raw::c_int = 51303999; +pub const AAUDIO_CHANNEL_FRONT_BACK: ::std::os::raw::c_int = 260; +pub type _bindgen_ty_59 = ::std::os::raw::c_int; +pub type aaudio_channel_mask_t = u32; #[repr(C)] #[derive(Debug, Copy, Clone)] pub struct AAudioStreamStruct { @@ -14646,6 +15816,18 @@ extern "C" { contentType: aaudio_content_type_t, ); } +extern "C" { + pub fn AAudioStreamBuilder_setSpatializationBehavior( + builder: *mut AAudioStreamBuilder, + spatializationBehavior: aaudio_spatialization_behavior_t, + ); +} +extern "C" { + pub fn AAudioStreamBuilder_setIsContentSpatialized( + builder: *mut AAudioStreamBuilder, + isSpatialized: bool, + ); +} extern "C" { pub fn AAudioStreamBuilder_setInputPreset( builder: *mut AAudioStreamBuilder, @@ -14672,7 +15854,7 @@ extern "C" { } pub const AAUDIO_CALLBACK_RESULT_CONTINUE: ::std::os::raw::c_uint = 0; pub const AAUDIO_CALLBACK_RESULT_STOP: ::std::os::raw::c_uint = 1; -pub type _bindgen_ty_58 = ::std::os::raw::c_uint; +pub type _bindgen_ty_60 = ::std::os::raw::c_uint; pub type aaudio_data_callback_result_t = i32; pub type AAudioStream_dataCallback = ::std::option::Option< unsafe extern "C" fn( @@ -14718,6 +15900,12 @@ extern "C" { extern "C" { pub fn AAudioStreamBuilder_delete(builder: *mut AAudioStreamBuilder) -> aaudio_result_t; } +extern "C" { + pub fn AAudioStreamBuilder_setChannelMask( + builder: *mut AAudioStreamBuilder, + channelMask: aaudio_channel_mask_t, + ); +} extern "C" { pub fn AAudioStream_release(stream: *mut AAudioStream) -> aaudio_result_t; } @@ -14831,6 +16019,14 @@ extern "C" { extern "C" { pub fn AAudioStream_getContentType(stream: *mut AAudioStream) -> aaudio_content_type_t; } +extern "C" { + pub fn AAudioStream_getSpatializationBehavior( + stream: *mut AAudioStream, + ) -> aaudio_spatialization_behavior_t; +} +extern "C" { + pub fn AAudioStream_isContentSpatialized(stream: *mut AAudioStream) -> bool; +} extern "C" { pub fn AAudioStream_getInputPreset(stream: *mut AAudioStream) -> aaudio_input_preset_t; } @@ -14842,6 +16038,9 @@ extern "C" { extern "C" { pub fn AAudioStream_isPrivacySensitive(stream: *mut AAudioStream) -> bool; } +extern "C" { + pub fn AAudioStream_getChannelMask(stream: *mut AAudioStream) -> aaudio_channel_mask_t; +} impl media_status_t { pub const AMEDIA_OK: media_status_t = media_status_t(0); } @@ -14949,11 +16148,43 @@ pub struct AMidiOutputPort { } pub const AMIDI_OPCODE_DATA: ::std::os::raw::c_uint = 1; pub const AMIDI_OPCODE_FLUSH: ::std::os::raw::c_uint = 2; -pub type _bindgen_ty_59 = ::std::os::raw::c_uint; +pub type _bindgen_ty_61 = ::std::os::raw::c_uint; pub const AMIDI_DEVICE_TYPE_USB: ::std::os::raw::c_uint = 1; pub const AMIDI_DEVICE_TYPE_VIRTUAL: ::std::os::raw::c_uint = 2; pub const AMIDI_DEVICE_TYPE_BLUETOOTH: ::std::os::raw::c_uint = 3; -pub type _bindgen_ty_60 = ::std::os::raw::c_uint; +pub type _bindgen_ty_62 = ::std::os::raw::c_uint; +impl AMidiDevice_Protocol { + pub const AMIDI_DEVICE_PROTOCOL_UMP_USE_MIDI_CI: AMidiDevice_Protocol = AMidiDevice_Protocol(0); +} +impl AMidiDevice_Protocol { + pub const AMIDI_DEVICE_PROTOCOL_UMP_MIDI_1_0_UP_TO_64_BITS: AMidiDevice_Protocol = + AMidiDevice_Protocol(1); +} +impl AMidiDevice_Protocol { + pub const AMIDI_DEVICE_PROTOCOL_UMP_MIDI_1_0_UP_TO_64_BITS_AND_JRTS: AMidiDevice_Protocol = + AMidiDevice_Protocol(2); +} +impl AMidiDevice_Protocol { + pub const AMIDI_DEVICE_PROTOCOL_UMP_MIDI_1_0_UP_TO_128_BITS: AMidiDevice_Protocol = + AMidiDevice_Protocol(3); +} +impl AMidiDevice_Protocol { + pub const AMIDI_DEVICE_PROTOCOL_UMP_MIDI_1_0_UP_TO_128_BITS_AND_JRTS: AMidiDevice_Protocol = + AMidiDevice_Protocol(4); +} +impl AMidiDevice_Protocol { + pub const AMIDI_DEVICE_PROTOCOL_UMP_MIDI_2_0: AMidiDevice_Protocol = AMidiDevice_Protocol(17); +} +impl AMidiDevice_Protocol { + pub const AMIDI_DEVICE_PROTOCOL_UMP_MIDI_2_0_AND_JRTS: AMidiDevice_Protocol = + AMidiDevice_Protocol(18); +} +impl AMidiDevice_Protocol { + pub const AMIDI_DEVICE_PROTOCOL_UNKNOWN: AMidiDevice_Protocol = AMidiDevice_Protocol(-1); +} +#[repr(transparent)] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub struct AMidiDevice_Protocol(pub i32); extern "C" { pub fn AMidiDevice_fromJava( env: *mut JNIEnv, @@ -14973,6 +16204,9 @@ extern "C" { extern "C" { pub fn AMidiDevice_getNumOutputPorts(device: *const AMidiDevice) -> ssize_t; } +extern "C" { + pub fn AMidiDevice_getDefaultProtocol(device: *const AMidiDevice) -> AMidiDevice_Protocol; +} extern "C" { pub fn AMidiOutputPort_open( device: *const AMidiDevice, @@ -15167,7 +16401,13 @@ impl acamera_metadata_section { pub const ACAMERA_HEIC_INFO: acamera_metadata_section = acamera_metadata_section(29); } impl acamera_metadata_section { - pub const ACAMERA_SECTION_COUNT: acamera_metadata_section = acamera_metadata_section(30); + pub const ACAMERA_AUTOMOTIVE: acamera_metadata_section = acamera_metadata_section(30); +} +impl acamera_metadata_section { + pub const ACAMERA_AUTOMOTIVE_LENS: acamera_metadata_section = acamera_metadata_section(31); +} +impl acamera_metadata_section { + pub const ACAMERA_SECTION_COUNT: acamera_metadata_section = acamera_metadata_section(32); } impl acamera_metadata_section { pub const ACAMERA_VENDOR: acamera_metadata_section = acamera_metadata_section(32768); @@ -15296,6 +16536,14 @@ impl acamera_metadata_section_start { pub const ACAMERA_HEIC_INFO_START: acamera_metadata_section_start = acamera_metadata_section_start(1900544); } +impl acamera_metadata_section_start { + pub const ACAMERA_AUTOMOTIVE_START: acamera_metadata_section_start = + acamera_metadata_section_start(1966080); +} +impl acamera_metadata_section_start { + pub const ACAMERA_AUTOMOTIVE_LENS_START: acamera_metadata_section_start = + acamera_metadata_section_start(2031616); +} impl acamera_metadata_section_start { pub const ACAMERA_VENDOR_START: acamera_metadata_section_start = acamera_metadata_section_start(-2147483648); @@ -15502,7 +16750,15 @@ impl acamera_metadata_tag { pub const ACAMERA_FLASH_INFO_AVAILABLE: acamera_metadata_tag = acamera_metadata_tag(327680); } impl acamera_metadata_tag { - pub const ACAMERA_FLASH_INFO_END: acamera_metadata_tag = acamera_metadata_tag(327681); + pub const ACAMERA_FLASH_INFO_STRENGTH_MAXIMUM_LEVEL: acamera_metadata_tag = + acamera_metadata_tag(327682); +} +impl acamera_metadata_tag { + pub const ACAMERA_FLASH_INFO_STRENGTH_DEFAULT_LEVEL: acamera_metadata_tag = + acamera_metadata_tag(327683); +} +impl acamera_metadata_tag { + pub const ACAMERA_FLASH_INFO_END: acamera_metadata_tag = acamera_metadata_tag(327684); } impl acamera_metadata_tag { pub const ACAMERA_HOT_PIXEL_MODE: acamera_metadata_tag = acamera_metadata_tag(393216); @@ -15683,7 +16939,11 @@ impl acamera_metadata_tag { acamera_metadata_tag(786449); } impl acamera_metadata_tag { - pub const ACAMERA_REQUEST_END: acamera_metadata_tag = acamera_metadata_tag(786450); + pub const ACAMERA_REQUEST_AVAILABLE_DYNAMIC_RANGE_PROFILES_MAP: acamera_metadata_tag = + acamera_metadata_tag(786451); +} +impl acamera_metadata_tag { + pub const ACAMERA_REQUEST_END: acamera_metadata_tag = acamera_metadata_tag(786452); } impl acamera_metadata_tag { pub const ACAMERA_SCALER_CROP_REGION: acamera_metadata_tag = acamera_metadata_tag(851968); @@ -15747,7 +17007,11 @@ impl acamera_metadata_tag { acamera_metadata_tag(851992); } impl acamera_metadata_tag { - pub const ACAMERA_SCALER_END: acamera_metadata_tag = acamera_metadata_tag(851993); + pub const ACAMERA_SCALER_AVAILABLE_STREAM_USE_CASES: acamera_metadata_tag = + acamera_metadata_tag(851993); +} +impl acamera_metadata_tag { + pub const ACAMERA_SCALER_END: acamera_metadata_tag = acamera_metadata_tag(851994); } impl acamera_metadata_tag { pub const ACAMERA_SENSOR_EXPOSURE_TIME: acamera_metadata_tag = acamera_metadata_tag(917504); @@ -16032,7 +17296,11 @@ impl acamera_metadata_tag { pub const ACAMERA_INFO_VERSION: acamera_metadata_tag = acamera_metadata_tag(1376257); } impl acamera_metadata_tag { - pub const ACAMERA_INFO_END: acamera_metadata_tag = acamera_metadata_tag(1376258); + pub const ACAMERA_INFO_DEVICE_STATE_ORIENTATIONS: acamera_metadata_tag = + acamera_metadata_tag(1376259); +} +impl acamera_metadata_tag { + pub const ACAMERA_INFO_END: acamera_metadata_tag = acamera_metadata_tag(1376260); } impl acamera_metadata_tag { pub const ACAMERA_BLACK_LEVEL_LOCK: acamera_metadata_tag = acamera_metadata_tag(1441792); @@ -16163,6 +17431,18 @@ impl acamera_metadata_tag { impl acamera_metadata_tag { pub const ACAMERA_HEIC_END: acamera_metadata_tag = acamera_metadata_tag(1835014); } +impl acamera_metadata_tag { + pub const ACAMERA_AUTOMOTIVE_LOCATION: acamera_metadata_tag = acamera_metadata_tag(1966080); +} +impl acamera_metadata_tag { + pub const ACAMERA_AUTOMOTIVE_END: acamera_metadata_tag = acamera_metadata_tag(1966081); +} +impl acamera_metadata_tag { + pub const ACAMERA_AUTOMOTIVE_LENS_FACING: acamera_metadata_tag = acamera_metadata_tag(2031616); +} +impl acamera_metadata_tag { + pub const ACAMERA_AUTOMOTIVE_LENS_END: acamera_metadata_tag = acamera_metadata_tag(2031617); +} #[repr(transparent)] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] pub struct acamera_metadata_tag(pub ::std::os::raw::c_uint); @@ -16601,6 +17881,11 @@ impl acamera_metadata_enum_acamera_control_video_stabilization_mode { acamera_metadata_enum_acamera_control_video_stabilization_mode = acamera_metadata_enum_acamera_control_video_stabilization_mode(1); } +impl acamera_metadata_enum_acamera_control_video_stabilization_mode { + pub const ACAMERA_CONTROL_VIDEO_STABILIZATION_MODE_PREVIEW_STABILIZATION: + acamera_metadata_enum_acamera_control_video_stabilization_mode = + acamera_metadata_enum_acamera_control_video_stabilization_mode(2); +} #[repr(transparent)] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] pub struct acamera_metadata_enum_acamera_control_video_stabilization_mode( @@ -16915,6 +18200,11 @@ impl acamera_metadata_enum_acamera_lens_pose_reference { acamera_metadata_enum_acamera_lens_pose_reference = acamera_metadata_enum_acamera_lens_pose_reference(2); } +impl acamera_metadata_enum_acamera_lens_pose_reference { + pub const ACAMERA_LENS_POSE_REFERENCE_AUTOMOTIVE: + acamera_metadata_enum_acamera_lens_pose_reference = + acamera_metadata_enum_acamera_lens_pose_reference(3); +} #[repr(transparent)] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] pub struct acamera_metadata_enum_acamera_lens_pose_reference(pub ::std::os::raw::c_uint); @@ -17033,10 +18323,86 @@ impl acamera_metadata_enum_acamera_request_available_capabilities { acamera_metadata_enum_acamera_request_available_capabilities = acamera_metadata_enum_acamera_request_available_capabilities(16); } +impl acamera_metadata_enum_acamera_request_available_capabilities { + pub const ACAMERA_REQUEST_AVAILABLE_CAPABILITIES_STREAM_USE_CASE: + acamera_metadata_enum_acamera_request_available_capabilities = + acamera_metadata_enum_acamera_request_available_capabilities(19); +} #[repr(transparent)] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] pub struct acamera_metadata_enum_acamera_request_available_capabilities(pub ::std::os::raw::c_uint); pub use self::acamera_metadata_enum_acamera_request_available_capabilities as acamera_metadata_enum_android_request_available_capabilities_t; +impl acamera_metadata_enum_acamera_request_available_dynamic_range_profiles_map { + pub const ACAMERA_REQUEST_AVAILABLE_DYNAMIC_RANGE_PROFILES_MAP_STANDARD: + acamera_metadata_enum_acamera_request_available_dynamic_range_profiles_map = + acamera_metadata_enum_acamera_request_available_dynamic_range_profiles_map(1); +} +impl acamera_metadata_enum_acamera_request_available_dynamic_range_profiles_map { + pub const ACAMERA_REQUEST_AVAILABLE_DYNAMIC_RANGE_PROFILES_MAP_HLG10: + acamera_metadata_enum_acamera_request_available_dynamic_range_profiles_map = + acamera_metadata_enum_acamera_request_available_dynamic_range_profiles_map(2); +} +impl acamera_metadata_enum_acamera_request_available_dynamic_range_profiles_map { + pub const ACAMERA_REQUEST_AVAILABLE_DYNAMIC_RANGE_PROFILES_MAP_HDR10: + acamera_metadata_enum_acamera_request_available_dynamic_range_profiles_map = + acamera_metadata_enum_acamera_request_available_dynamic_range_profiles_map(4); +} +impl acamera_metadata_enum_acamera_request_available_dynamic_range_profiles_map { + pub const ACAMERA_REQUEST_AVAILABLE_DYNAMIC_RANGE_PROFILES_MAP_HDR10_PLUS: + acamera_metadata_enum_acamera_request_available_dynamic_range_profiles_map = + acamera_metadata_enum_acamera_request_available_dynamic_range_profiles_map(8); +} +impl acamera_metadata_enum_acamera_request_available_dynamic_range_profiles_map { + pub const ACAMERA_REQUEST_AVAILABLE_DYNAMIC_RANGE_PROFILES_MAP_DOLBY_VISION_10B_HDR_REF: + acamera_metadata_enum_acamera_request_available_dynamic_range_profiles_map = + acamera_metadata_enum_acamera_request_available_dynamic_range_profiles_map(16); +} +impl acamera_metadata_enum_acamera_request_available_dynamic_range_profiles_map { + pub const ACAMERA_REQUEST_AVAILABLE_DYNAMIC_RANGE_PROFILES_MAP_DOLBY_VISION_10B_HDR_REF_PO: + acamera_metadata_enum_acamera_request_available_dynamic_range_profiles_map = + acamera_metadata_enum_acamera_request_available_dynamic_range_profiles_map(32); +} +impl acamera_metadata_enum_acamera_request_available_dynamic_range_profiles_map { + pub const ACAMERA_REQUEST_AVAILABLE_DYNAMIC_RANGE_PROFILES_MAP_DOLBY_VISION_10B_HDR_OEM: + acamera_metadata_enum_acamera_request_available_dynamic_range_profiles_map = + acamera_metadata_enum_acamera_request_available_dynamic_range_profiles_map(64); +} +impl acamera_metadata_enum_acamera_request_available_dynamic_range_profiles_map { + pub const ACAMERA_REQUEST_AVAILABLE_DYNAMIC_RANGE_PROFILES_MAP_DOLBY_VISION_10B_HDR_OEM_PO: + acamera_metadata_enum_acamera_request_available_dynamic_range_profiles_map = + acamera_metadata_enum_acamera_request_available_dynamic_range_profiles_map(128); +} +impl acamera_metadata_enum_acamera_request_available_dynamic_range_profiles_map { + pub const ACAMERA_REQUEST_AVAILABLE_DYNAMIC_RANGE_PROFILES_MAP_DOLBY_VISION_8B_HDR_REF: + acamera_metadata_enum_acamera_request_available_dynamic_range_profiles_map = + acamera_metadata_enum_acamera_request_available_dynamic_range_profiles_map(256); +} +impl acamera_metadata_enum_acamera_request_available_dynamic_range_profiles_map { + pub const ACAMERA_REQUEST_AVAILABLE_DYNAMIC_RANGE_PROFILES_MAP_DOLBY_VISION_8B_HDR_REF_PO: + acamera_metadata_enum_acamera_request_available_dynamic_range_profiles_map = + acamera_metadata_enum_acamera_request_available_dynamic_range_profiles_map(512); +} +impl acamera_metadata_enum_acamera_request_available_dynamic_range_profiles_map { + pub const ACAMERA_REQUEST_AVAILABLE_DYNAMIC_RANGE_PROFILES_MAP_DOLBY_VISION_8B_HDR_OEM: + acamera_metadata_enum_acamera_request_available_dynamic_range_profiles_map = + acamera_metadata_enum_acamera_request_available_dynamic_range_profiles_map(1024); +} +impl acamera_metadata_enum_acamera_request_available_dynamic_range_profiles_map { + pub const ACAMERA_REQUEST_AVAILABLE_DYNAMIC_RANGE_PROFILES_MAP_DOLBY_VISION_8B_HDR_OEM_PO: + acamera_metadata_enum_acamera_request_available_dynamic_range_profiles_map = + acamera_metadata_enum_acamera_request_available_dynamic_range_profiles_map(2048); +} +impl acamera_metadata_enum_acamera_request_available_dynamic_range_profiles_map { + pub const ACAMERA_REQUEST_AVAILABLE_DYNAMIC_RANGE_PROFILES_MAP_MAX: + acamera_metadata_enum_acamera_request_available_dynamic_range_profiles_map = + acamera_metadata_enum_acamera_request_available_dynamic_range_profiles_map(4096); +} +#[repr(transparent)] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub struct acamera_metadata_enum_acamera_request_available_dynamic_range_profiles_map( + pub ::std::os::raw::c_uint, +); +pub use self::acamera_metadata_enum_acamera_request_available_dynamic_range_profiles_map as acamera_metadata_enum_android_request_available_dynamic_range_profiles_map_t; impl acamera_metadata_enum_acamera_scaler_available_stream_configurations { pub const ACAMERA_SCALER_AVAILABLE_STREAM_CONFIGURATIONS_OUTPUT: acamera_metadata_enum_acamera_scaler_available_stream_configurations = @@ -17107,6 +18473,16 @@ impl acamera_metadata_enum_acamera_scaler_available_recommended_stream_configura acamera_metadata_enum_acamera_scaler_available_recommended_stream_configurations = acamera_metadata_enum_acamera_scaler_available_recommended_stream_configurations(7); } +impl acamera_metadata_enum_acamera_scaler_available_recommended_stream_configurations { + pub const ACAMERA_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS_10BIT_OUTPUT: + acamera_metadata_enum_acamera_scaler_available_recommended_stream_configurations = + acamera_metadata_enum_acamera_scaler_available_recommended_stream_configurations(8); +} +impl acamera_metadata_enum_acamera_scaler_available_recommended_stream_configurations { + pub const ACAMERA_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS_PUBLIC_END_3_8: + acamera_metadata_enum_acamera_scaler_available_recommended_stream_configurations = + acamera_metadata_enum_acamera_scaler_available_recommended_stream_configurations(9); +} impl acamera_metadata_enum_acamera_scaler_available_recommended_stream_configurations { pub const ACAMERA_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS_VENDOR_START: acamera_metadata_enum_acamera_scaler_available_recommended_stream_configurations = @@ -17199,6 +18575,42 @@ pub struct acamera_metadata_enum_acamera_scaler_multi_resolution_stream_supporte pub ::std::os::raw::c_uint, ); pub use self::acamera_metadata_enum_acamera_scaler_multi_resolution_stream_supported as acamera_metadata_enum_android_scaler_multi_resolution_stream_supported_t; +impl acamera_metadata_enum_acamera_scaler_available_stream_use_cases { + pub const ACAMERA_SCALER_AVAILABLE_STREAM_USE_CASES_DEFAULT: + acamera_metadata_enum_acamera_scaler_available_stream_use_cases = + acamera_metadata_enum_acamera_scaler_available_stream_use_cases(0); +} +impl acamera_metadata_enum_acamera_scaler_available_stream_use_cases { + pub const ACAMERA_SCALER_AVAILABLE_STREAM_USE_CASES_PREVIEW: + acamera_metadata_enum_acamera_scaler_available_stream_use_cases = + acamera_metadata_enum_acamera_scaler_available_stream_use_cases(1); +} +impl acamera_metadata_enum_acamera_scaler_available_stream_use_cases { + pub const ACAMERA_SCALER_AVAILABLE_STREAM_USE_CASES_STILL_CAPTURE: + acamera_metadata_enum_acamera_scaler_available_stream_use_cases = + acamera_metadata_enum_acamera_scaler_available_stream_use_cases(2); +} +impl acamera_metadata_enum_acamera_scaler_available_stream_use_cases { + pub const ACAMERA_SCALER_AVAILABLE_STREAM_USE_CASES_VIDEO_RECORD: + acamera_metadata_enum_acamera_scaler_available_stream_use_cases = + acamera_metadata_enum_acamera_scaler_available_stream_use_cases(3); +} +impl acamera_metadata_enum_acamera_scaler_available_stream_use_cases { + pub const ACAMERA_SCALER_AVAILABLE_STREAM_USE_CASES_PREVIEW_VIDEO_STILL: + acamera_metadata_enum_acamera_scaler_available_stream_use_cases = + acamera_metadata_enum_acamera_scaler_available_stream_use_cases(4); +} +impl acamera_metadata_enum_acamera_scaler_available_stream_use_cases { + pub const ACAMERA_SCALER_AVAILABLE_STREAM_USE_CASES_VIDEO_CALL: + acamera_metadata_enum_acamera_scaler_available_stream_use_cases = + acamera_metadata_enum_acamera_scaler_available_stream_use_cases(5); +} +#[repr(transparent)] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub struct acamera_metadata_enum_acamera_scaler_available_stream_use_cases( + pub ::std::os::raw::c_uint, +); +pub use self::acamera_metadata_enum_acamera_scaler_available_stream_use_cases as acamera_metadata_enum_android_scaler_available_stream_use_cases_t; impl acamera_metadata_enum_acamera_sensor_reference_illuminant1 { pub const ACAMERA_SENSOR_REFERENCE_ILLUMINANT1_DAYLIGHT: acamera_metadata_enum_acamera_sensor_reference_illuminant1 = @@ -17765,832 +19177,1386 @@ impl acamera_metadata_enum_acamera_heic_available_heic_stream_configurations_max 0, ); } -impl acamera_metadata_enum_acamera_heic_available_heic_stream_configurations_maximum_resolution { - pub const ACAMERA_HEIC_AVAILABLE_HEIC_STREAM_CONFIGURATIONS_MAXIMUM_RESOLUTION_INPUT: - acamera_metadata_enum_acamera_heic_available_heic_stream_configurations_maximum_resolution = - acamera_metadata_enum_acamera_heic_available_heic_stream_configurations_maximum_resolution( - 1, - ); +impl acamera_metadata_enum_acamera_heic_available_heic_stream_configurations_maximum_resolution { + pub const ACAMERA_HEIC_AVAILABLE_HEIC_STREAM_CONFIGURATIONS_MAXIMUM_RESOLUTION_INPUT: + acamera_metadata_enum_acamera_heic_available_heic_stream_configurations_maximum_resolution = + acamera_metadata_enum_acamera_heic_available_heic_stream_configurations_maximum_resolution( + 1, + ); +} +#[repr(transparent)] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub struct acamera_metadata_enum_acamera_heic_available_heic_stream_configurations_maximum_resolution( + pub ::std::os::raw::c_uint, +); +pub use self::acamera_metadata_enum_acamera_heic_available_heic_stream_configurations_maximum_resolution as acamera_metadata_enum_android_heic_available_heic_stream_configurations_maximum_resolution_t; +impl acamera_metadata_enum_acamera_automotive_location { + pub const ACAMERA_AUTOMOTIVE_LOCATION_INTERIOR: + acamera_metadata_enum_acamera_automotive_location = + acamera_metadata_enum_acamera_automotive_location(0); +} +impl acamera_metadata_enum_acamera_automotive_location { + pub const ACAMERA_AUTOMOTIVE_LOCATION_EXTERIOR_OTHER: + acamera_metadata_enum_acamera_automotive_location = + acamera_metadata_enum_acamera_automotive_location(1); +} +impl acamera_metadata_enum_acamera_automotive_location { + pub const ACAMERA_AUTOMOTIVE_LOCATION_EXTERIOR_FRONT: + acamera_metadata_enum_acamera_automotive_location = + acamera_metadata_enum_acamera_automotive_location(2); +} +impl acamera_metadata_enum_acamera_automotive_location { + pub const ACAMERA_AUTOMOTIVE_LOCATION_EXTERIOR_REAR: + acamera_metadata_enum_acamera_automotive_location = + acamera_metadata_enum_acamera_automotive_location(3); +} +impl acamera_metadata_enum_acamera_automotive_location { + pub const ACAMERA_AUTOMOTIVE_LOCATION_EXTERIOR_LEFT: + acamera_metadata_enum_acamera_automotive_location = + acamera_metadata_enum_acamera_automotive_location(4); +} +impl acamera_metadata_enum_acamera_automotive_location { + pub const ACAMERA_AUTOMOTIVE_LOCATION_EXTERIOR_RIGHT: + acamera_metadata_enum_acamera_automotive_location = + acamera_metadata_enum_acamera_automotive_location(5); +} +impl acamera_metadata_enum_acamera_automotive_location { + pub const ACAMERA_AUTOMOTIVE_LOCATION_EXTRA_OTHER: + acamera_metadata_enum_acamera_automotive_location = + acamera_metadata_enum_acamera_automotive_location(6); +} +impl acamera_metadata_enum_acamera_automotive_location { + pub const ACAMERA_AUTOMOTIVE_LOCATION_EXTRA_FRONT: + acamera_metadata_enum_acamera_automotive_location = + acamera_metadata_enum_acamera_automotive_location(7); +} +impl acamera_metadata_enum_acamera_automotive_location { + pub const ACAMERA_AUTOMOTIVE_LOCATION_EXTRA_REAR: + acamera_metadata_enum_acamera_automotive_location = + acamera_metadata_enum_acamera_automotive_location(8); +} +impl acamera_metadata_enum_acamera_automotive_location { + pub const ACAMERA_AUTOMOTIVE_LOCATION_EXTRA_LEFT: + acamera_metadata_enum_acamera_automotive_location = + acamera_metadata_enum_acamera_automotive_location(9); +} +impl acamera_metadata_enum_acamera_automotive_location { + pub const ACAMERA_AUTOMOTIVE_LOCATION_EXTRA_RIGHT: + acamera_metadata_enum_acamera_automotive_location = + acamera_metadata_enum_acamera_automotive_location(10); +} +#[repr(transparent)] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub struct acamera_metadata_enum_acamera_automotive_location(pub ::std::os::raw::c_uint); +pub use self::acamera_metadata_enum_acamera_automotive_location as acamera_metadata_enum_android_automotive_location_t; +impl acamera_metadata_enum_acamera_automotive_lens_facing { + pub const ACAMERA_AUTOMOTIVE_LENS_FACING_EXTERIOR_OTHER: + acamera_metadata_enum_acamera_automotive_lens_facing = + acamera_metadata_enum_acamera_automotive_lens_facing(0); +} +impl acamera_metadata_enum_acamera_automotive_lens_facing { + pub const ACAMERA_AUTOMOTIVE_LENS_FACING_EXTERIOR_FRONT: + acamera_metadata_enum_acamera_automotive_lens_facing = + acamera_metadata_enum_acamera_automotive_lens_facing(1); +} +impl acamera_metadata_enum_acamera_automotive_lens_facing { + pub const ACAMERA_AUTOMOTIVE_LENS_FACING_EXTERIOR_REAR: + acamera_metadata_enum_acamera_automotive_lens_facing = + acamera_metadata_enum_acamera_automotive_lens_facing(2); +} +impl acamera_metadata_enum_acamera_automotive_lens_facing { + pub const ACAMERA_AUTOMOTIVE_LENS_FACING_EXTERIOR_LEFT: + acamera_metadata_enum_acamera_automotive_lens_facing = + acamera_metadata_enum_acamera_automotive_lens_facing(3); +} +impl acamera_metadata_enum_acamera_automotive_lens_facing { + pub const ACAMERA_AUTOMOTIVE_LENS_FACING_EXTERIOR_RIGHT: + acamera_metadata_enum_acamera_automotive_lens_facing = + acamera_metadata_enum_acamera_automotive_lens_facing(4); +} +impl acamera_metadata_enum_acamera_automotive_lens_facing { + pub const ACAMERA_AUTOMOTIVE_LENS_FACING_INTERIOR_OTHER: + acamera_metadata_enum_acamera_automotive_lens_facing = + acamera_metadata_enum_acamera_automotive_lens_facing(5); +} +impl acamera_metadata_enum_acamera_automotive_lens_facing { + pub const ACAMERA_AUTOMOTIVE_LENS_FACING_INTERIOR_SEAT_ROW_1_LEFT: + acamera_metadata_enum_acamera_automotive_lens_facing = + acamera_metadata_enum_acamera_automotive_lens_facing(6); +} +impl acamera_metadata_enum_acamera_automotive_lens_facing { + pub const ACAMERA_AUTOMOTIVE_LENS_FACING_INTERIOR_SEAT_ROW_1_CENTER: + acamera_metadata_enum_acamera_automotive_lens_facing = + acamera_metadata_enum_acamera_automotive_lens_facing(7); +} +impl acamera_metadata_enum_acamera_automotive_lens_facing { + pub const ACAMERA_AUTOMOTIVE_LENS_FACING_INTERIOR_SEAT_ROW_1_RIGHT: + acamera_metadata_enum_acamera_automotive_lens_facing = + acamera_metadata_enum_acamera_automotive_lens_facing(8); +} +impl acamera_metadata_enum_acamera_automotive_lens_facing { + pub const ACAMERA_AUTOMOTIVE_LENS_FACING_INTERIOR_SEAT_ROW_2_LEFT: + acamera_metadata_enum_acamera_automotive_lens_facing = + acamera_metadata_enum_acamera_automotive_lens_facing(9); +} +impl acamera_metadata_enum_acamera_automotive_lens_facing { + pub const ACAMERA_AUTOMOTIVE_LENS_FACING_INTERIOR_SEAT_ROW_2_CENTER: + acamera_metadata_enum_acamera_automotive_lens_facing = + acamera_metadata_enum_acamera_automotive_lens_facing(10); +} +impl acamera_metadata_enum_acamera_automotive_lens_facing { + pub const ACAMERA_AUTOMOTIVE_LENS_FACING_INTERIOR_SEAT_ROW_2_RIGHT: + acamera_metadata_enum_acamera_automotive_lens_facing = + acamera_metadata_enum_acamera_automotive_lens_facing(11); +} +impl acamera_metadata_enum_acamera_automotive_lens_facing { + pub const ACAMERA_AUTOMOTIVE_LENS_FACING_INTERIOR_SEAT_ROW_3_LEFT: + acamera_metadata_enum_acamera_automotive_lens_facing = + acamera_metadata_enum_acamera_automotive_lens_facing(12); +} +impl acamera_metadata_enum_acamera_automotive_lens_facing { + pub const ACAMERA_AUTOMOTIVE_LENS_FACING_INTERIOR_SEAT_ROW_3_CENTER: + acamera_metadata_enum_acamera_automotive_lens_facing = + acamera_metadata_enum_acamera_automotive_lens_facing(13); +} +impl acamera_metadata_enum_acamera_automotive_lens_facing { + pub const ACAMERA_AUTOMOTIVE_LENS_FACING_INTERIOR_SEAT_ROW_3_RIGHT: + acamera_metadata_enum_acamera_automotive_lens_facing = + acamera_metadata_enum_acamera_automotive_lens_facing(14); +} +#[repr(transparent)] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub struct acamera_metadata_enum_acamera_automotive_lens_facing(pub ::std::os::raw::c_uint); +pub use self::acamera_metadata_enum_acamera_automotive_lens_facing as acamera_metadata_enum_android_automotive_lens_facing_t; +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ACameraMetadata { + _unused: [u8; 0], +} +pub const ACAMERA_TYPE_BYTE: ::std::os::raw::c_uint = 0; +pub const ACAMERA_TYPE_INT32: ::std::os::raw::c_uint = 1; +pub const ACAMERA_TYPE_FLOAT: ::std::os::raw::c_uint = 2; +pub const ACAMERA_TYPE_INT64: ::std::os::raw::c_uint = 3; +pub const ACAMERA_TYPE_DOUBLE: ::std::os::raw::c_uint = 4; +pub const ACAMERA_TYPE_RATIONAL: ::std::os::raw::c_uint = 5; +pub const ACAMERA_NUM_TYPES: ::std::os::raw::c_uint = 6; +pub type _bindgen_ty_63 = ::std::os::raw::c_uint; +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ACameraMetadata_rational { + pub numerator: i32, + pub denominator: i32, +} +#[test] +fn bindgen_test_layout_ACameraMetadata_rational() { + assert_eq!( + ::std::mem::size_of::(), + 8usize, + concat!("Size of: ", stringify!(ACameraMetadata_rational)) + ); + assert_eq!( + ::std::mem::align_of::(), + 4usize, + concat!("Alignment of ", stringify!(ACameraMetadata_rational)) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).numerator as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ACameraMetadata_rational), + "::", + stringify!(numerator) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).denominator as *const _ as usize + }, + 4usize, + concat!( + "Offset of field: ", + stringify!(ACameraMetadata_rational), + "::", + stringify!(denominator) + ) + ); +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct ACameraMetadata_entry { + pub tag: u32, + pub type_: u8, + pub count: u32, + pub data: ACameraMetadata_entry__bindgen_ty_1, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union ACameraMetadata_entry__bindgen_ty_1 { + pub u8_: *mut u8, + pub i32_: *mut i32, + pub f: *mut f32, + pub i64_: *mut i64, + pub d: *mut f64, + pub r: *mut ACameraMetadata_rational, +} +#[test] +fn bindgen_test_layout_ACameraMetadata_entry__bindgen_ty_1() { + assert_eq!( + ::std::mem::size_of::(), + 4usize, + concat!("Size of: ", stringify!(ACameraMetadata_entry__bindgen_ty_1)) + ); + assert_eq!( + ::std::mem::align_of::(), + 4usize, + concat!( + "Alignment of ", + stringify!(ACameraMetadata_entry__bindgen_ty_1) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).u8_ as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ACameraMetadata_entry__bindgen_ty_1), + "::", + stringify!(u8_) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).i32_ as *const _ + as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ACameraMetadata_entry__bindgen_ty_1), + "::", + stringify!(i32_) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).f as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ACameraMetadata_entry__bindgen_ty_1), + "::", + stringify!(f) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).i64_ as *const _ + as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ACameraMetadata_entry__bindgen_ty_1), + "::", + stringify!(i64_) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).d as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ACameraMetadata_entry__bindgen_ty_1), + "::", + stringify!(d) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).r as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ACameraMetadata_entry__bindgen_ty_1), + "::", + stringify!(r) + ) + ); +} +#[test] +fn bindgen_test_layout_ACameraMetadata_entry() { + assert_eq!( + ::std::mem::size_of::(), + 16usize, + concat!("Size of: ", stringify!(ACameraMetadata_entry)) + ); + assert_eq!( + ::std::mem::align_of::(), + 4usize, + concat!("Alignment of ", stringify!(ACameraMetadata_entry)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).tag as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ACameraMetadata_entry), + "::", + stringify!(tag) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).type_ as *const _ as usize }, + 4usize, + concat!( + "Offset of field: ", + stringify!(ACameraMetadata_entry), + "::", + stringify!(type_) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).count as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(ACameraMetadata_entry), + "::", + stringify!(count) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).data as *const _ as usize }, + 12usize, + concat!( + "Offset of field: ", + stringify!(ACameraMetadata_entry), + "::", + stringify!(data) + ) + ); } -#[repr(transparent)] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub struct acamera_metadata_enum_acamera_heic_available_heic_stream_configurations_maximum_resolution( - pub ::std::os::raw::c_uint, -); -pub use self::acamera_metadata_enum_acamera_heic_available_heic_stream_configurations_maximum_resolution as acamera_metadata_enum_android_heic_available_heic_stream_configurations_maximum_resolution_t; #[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ACameraMetadata { - _unused: [u8; 0], +#[derive(Copy, Clone)] +pub struct ACameraMetadata_const_entry { + pub tag: u32, + pub type_: u8, + pub count: u32, + pub data: ACameraMetadata_const_entry__bindgen_ty_1, } -pub const ACAMERA_TYPE_BYTE: ::std::os::raw::c_uint = 0; -pub const ACAMERA_TYPE_INT32: ::std::os::raw::c_uint = 1; -pub const ACAMERA_TYPE_FLOAT: ::std::os::raw::c_uint = 2; -pub const ACAMERA_TYPE_INT64: ::std::os::raw::c_uint = 3; -pub const ACAMERA_TYPE_DOUBLE: ::std::os::raw::c_uint = 4; -pub const ACAMERA_TYPE_RATIONAL: ::std::os::raw::c_uint = 5; -pub const ACAMERA_NUM_TYPES: ::std::os::raw::c_uint = 6; -pub type _bindgen_ty_61 = ::std::os::raw::c_uint; #[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ACameraMetadata_rational { - pub numerator: i32, - pub denominator: i32, +#[derive(Copy, Clone)] +pub union ACameraMetadata_const_entry__bindgen_ty_1 { + pub u8_: *const u8, + pub i32_: *const i32, + pub f: *const f32, + pub i64_: *const i64, + pub d: *const f64, + pub r: *const ACameraMetadata_rational, } #[test] -fn bindgen_test_layout_ACameraMetadata_rational() { +fn bindgen_test_layout_ACameraMetadata_const_entry__bindgen_ty_1() { assert_eq!( - ::std::mem::size_of::(), - 8usize, - concat!("Size of: ", stringify!(ACameraMetadata_rational)) + ::std::mem::size_of::(), + 4usize, + concat!( + "Size of: ", + stringify!(ACameraMetadata_const_entry__bindgen_ty_1) + ) ); assert_eq!( - ::std::mem::align_of::(), + ::std::mem::align_of::(), 4usize, - concat!("Alignment of ", stringify!(ACameraMetadata_rational)) + concat!( + "Alignment of ", + stringify!(ACameraMetadata_const_entry__bindgen_ty_1) + ) ); assert_eq!( unsafe { - &(*(::std::ptr::null::())).numerator as *const _ as usize + &(*(::std::ptr::null::())).u8_ as *const _ + as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ACameraMetadata_const_entry__bindgen_ty_1), + "::", + stringify!(u8_) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).i32_ as *const _ + as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ACameraMetadata_const_entry__bindgen_ty_1), + "::", + stringify!(i32_) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).f as *const _ + as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ACameraMetadata_const_entry__bindgen_ty_1), + "::", + stringify!(f) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).i64_ as *const _ + as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ACameraMetadata_const_entry__bindgen_ty_1), + "::", + stringify!(i64_) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).d as *const _ + as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ACameraMetadata_const_entry__bindgen_ty_1), + "::", + stringify!(d) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).r as *const _ + as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ACameraMetadata_const_entry__bindgen_ty_1), + "::", + stringify!(r) + ) + ); +} +#[test] +fn bindgen_test_layout_ACameraMetadata_const_entry() { + assert_eq!( + ::std::mem::size_of::(), + 16usize, + concat!("Size of: ", stringify!(ACameraMetadata_const_entry)) + ); + assert_eq!( + ::std::mem::align_of::(), + 4usize, + concat!("Alignment of ", stringify!(ACameraMetadata_const_entry)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).tag as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ACameraMetadata_const_entry), + "::", + stringify!(tag) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).type_ as *const _ as usize + }, + 4usize, + concat!( + "Offset of field: ", + stringify!(ACameraMetadata_const_entry), + "::", + stringify!(type_) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).count as *const _ as usize }, - 0usize, + 8usize, concat!( "Offset of field: ", - stringify!(ACameraMetadata_rational), + stringify!(ACameraMetadata_const_entry), "::", - stringify!(numerator) + stringify!(count) ) ); assert_eq!( unsafe { - &(*(::std::ptr::null::())).denominator as *const _ as usize + &(*(::std::ptr::null::())).data as *const _ as usize }, - 4usize, + 12usize, concat!( "Offset of field: ", - stringify!(ACameraMetadata_rational), + stringify!(ACameraMetadata_const_entry), "::", - stringify!(denominator) + stringify!(data) ) ); } +extern "C" { + pub fn ACameraMetadata_getConstEntry( + metadata: *const ACameraMetadata, + tag: u32, + entry: *mut ACameraMetadata_const_entry, + ) -> camera_status_t; +} +extern "C" { + pub fn ACameraMetadata_getAllTags( + metadata: *const ACameraMetadata, + numEntries: *mut i32, + tags: *mut *const u32, + ) -> camera_status_t; +} +extern "C" { + pub fn ACameraMetadata_copy(src: *const ACameraMetadata) -> *mut ACameraMetadata; +} +extern "C" { + pub fn ACameraMetadata_free(metadata: *mut ACameraMetadata); +} +extern "C" { + pub fn ACameraMetadata_isLogicalMultiCamera( + staticMetadata: *const ACameraMetadata, + numPhysicalCameras: *mut size_t, + physicalCameraIds: *mut *const *const ::std::os::raw::c_char, + ) -> bool; +} +extern "C" { + pub fn ACameraMetadata_fromCameraMetadata( + env: *mut JNIEnv, + cameraMetadata: jobject, + ) -> *mut ACameraMetadata; +} +pub type ACameraWindowType = ANativeWindow; #[repr(C)] -#[derive(Copy, Clone)] -pub struct ACameraMetadata_entry { - pub tag: u32, - pub type_: u8, - pub count: u32, - pub data: ACameraMetadata_entry__bindgen_ty_1, +#[derive(Debug, Copy, Clone)] +pub struct ACameraOutputTargets { + _unused: [u8; 0], } #[repr(C)] -#[derive(Copy, Clone)] -pub union ACameraMetadata_entry__bindgen_ty_1 { - pub u8_: *mut u8, - pub i32_: *mut i32, - pub f: *mut f32, - pub i64_: *mut i64, - pub d: *mut f64, - pub r: *mut ACameraMetadata_rational, +#[derive(Debug, Copy, Clone)] +pub struct ACameraOutputTarget { + _unused: [u8; 0], } -#[test] -fn bindgen_test_layout_ACameraMetadata_entry__bindgen_ty_1() { - assert_eq!( - ::std::mem::size_of::(), - 4usize, - concat!("Size of: ", stringify!(ACameraMetadata_entry__bindgen_ty_1)) - ); +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ACaptureRequest { + _unused: [u8; 0], +} +extern "C" { + pub fn ACameraOutputTarget_create( + window: *mut ACameraWindowType, + output: *mut *mut ACameraOutputTarget, + ) -> camera_status_t; +} +extern "C" { + pub fn ACameraOutputTarget_free(output: *mut ACameraOutputTarget); +} +extern "C" { + pub fn ACaptureRequest_addTarget( + request: *mut ACaptureRequest, + output: *const ACameraOutputTarget, + ) -> camera_status_t; +} +extern "C" { + pub fn ACaptureRequest_removeTarget( + request: *mut ACaptureRequest, + output: *const ACameraOutputTarget, + ) -> camera_status_t; +} +extern "C" { + pub fn ACaptureRequest_getConstEntry( + request: *const ACaptureRequest, + tag: u32, + entry: *mut ACameraMetadata_const_entry, + ) -> camera_status_t; +} +extern "C" { + pub fn ACaptureRequest_getAllTags( + request: *const ACaptureRequest, + numTags: *mut i32, + tags: *mut *const u32, + ) -> camera_status_t; +} +extern "C" { + pub fn ACaptureRequest_setEntry_u8( + request: *mut ACaptureRequest, + tag: u32, + count: u32, + data: *const u8, + ) -> camera_status_t; +} +extern "C" { + pub fn ACaptureRequest_setEntry_i32( + request: *mut ACaptureRequest, + tag: u32, + count: u32, + data: *const i32, + ) -> camera_status_t; +} +extern "C" { + pub fn ACaptureRequest_setEntry_float( + request: *mut ACaptureRequest, + tag: u32, + count: u32, + data: *const f32, + ) -> camera_status_t; +} +extern "C" { + pub fn ACaptureRequest_setEntry_i64( + request: *mut ACaptureRequest, + tag: u32, + count: u32, + data: *const i64, + ) -> camera_status_t; +} +extern "C" { + pub fn ACaptureRequest_setEntry_double( + request: *mut ACaptureRequest, + tag: u32, + count: u32, + data: *const f64, + ) -> camera_status_t; +} +extern "C" { + pub fn ACaptureRequest_setEntry_rational( + request: *mut ACaptureRequest, + tag: u32, + count: u32, + data: *const ACameraMetadata_rational, + ) -> camera_status_t; +} +extern "C" { + pub fn ACaptureRequest_free(request: *mut ACaptureRequest); +} +extern "C" { + pub fn ACaptureRequest_setUserContext( + request: *mut ACaptureRequest, + context: *mut ::std::os::raw::c_void, + ) -> camera_status_t; +} +extern "C" { + pub fn ACaptureRequest_getUserContext( + request: *const ACaptureRequest, + context: *mut *mut ::std::os::raw::c_void, + ) -> camera_status_t; +} +extern "C" { + pub fn ACaptureRequest_copy(src: *const ACaptureRequest) -> *mut ACaptureRequest; +} +extern "C" { + pub fn ACaptureRequest_getConstEntry_physicalCamera( + request: *const ACaptureRequest, + physicalId: *const ::std::os::raw::c_char, + tag: u32, + entry: *mut ACameraMetadata_const_entry, + ) -> camera_status_t; +} +extern "C" { + pub fn ACaptureRequest_setEntry_physicalCamera_u8( + request: *mut ACaptureRequest, + physicalId: *const ::std::os::raw::c_char, + tag: u32, + count: u32, + data: *const u8, + ) -> camera_status_t; +} +extern "C" { + pub fn ACaptureRequest_setEntry_physicalCamera_i32( + request: *mut ACaptureRequest, + physicalId: *const ::std::os::raw::c_char, + tag: u32, + count: u32, + data: *const i32, + ) -> camera_status_t; +} +extern "C" { + pub fn ACaptureRequest_setEntry_physicalCamera_float( + request: *mut ACaptureRequest, + physicalId: *const ::std::os::raw::c_char, + tag: u32, + count: u32, + data: *const f32, + ) -> camera_status_t; +} +extern "C" { + pub fn ACaptureRequest_setEntry_physicalCamera_i64( + request: *mut ACaptureRequest, + physicalId: *const ::std::os::raw::c_char, + tag: u32, + count: u32, + data: *const i64, + ) -> camera_status_t; +} +extern "C" { + pub fn ACaptureRequest_setEntry_physicalCamera_double( + request: *mut ACaptureRequest, + physicalId: *const ::std::os::raw::c_char, + tag: u32, + count: u32, + data: *const f64, + ) -> camera_status_t; +} +extern "C" { + pub fn ACaptureRequest_setEntry_physicalCamera_rational( + request: *mut ACaptureRequest, + physicalId: *const ::std::os::raw::c_char, + tag: u32, + count: u32, + data: *const ACameraMetadata_rational, + ) -> camera_status_t; +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ACameraCaptureSession { + _unused: [u8; 0], +} +pub type ACameraCaptureSession_stateCallback = ::std::option::Option< + unsafe extern "C" fn(context: *mut ::std::os::raw::c_void, session: *mut ACameraCaptureSession), +>; +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ACameraCaptureSession_stateCallbacks { + pub context: *mut ::std::os::raw::c_void, + pub onClosed: ACameraCaptureSession_stateCallback, + pub onReady: ACameraCaptureSession_stateCallback, + pub onActive: ACameraCaptureSession_stateCallback, +} +#[test] +fn bindgen_test_layout_ACameraCaptureSession_stateCallbacks() { assert_eq!( - ::std::mem::align_of::(), - 4usize, + ::std::mem::size_of::(), + 16usize, concat!( - "Alignment of ", - stringify!(ACameraMetadata_entry__bindgen_ty_1) + "Size of: ", + stringify!(ACameraCaptureSession_stateCallbacks) ) ); assert_eq!( - unsafe { - &(*(::std::ptr::null::())).u8_ as *const _ as usize - }, - 0usize, + ::std::mem::align_of::(), + 4usize, concat!( - "Offset of field: ", - stringify!(ACameraMetadata_entry__bindgen_ty_1), - "::", - stringify!(u8_) + "Alignment of ", + stringify!(ACameraCaptureSession_stateCallbacks) ) ); assert_eq!( unsafe { - &(*(::std::ptr::null::())).i32_ as *const _ + &(*(::std::ptr::null::())).context as *const _ as usize }, 0usize, concat!( "Offset of field: ", - stringify!(ACameraMetadata_entry__bindgen_ty_1), - "::", - stringify!(i32_) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::())).f as *const _ as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(ACameraMetadata_entry__bindgen_ty_1), + stringify!(ACameraCaptureSession_stateCallbacks), "::", - stringify!(f) + stringify!(context) ) ); assert_eq!( unsafe { - &(*(::std::ptr::null::())).i64_ as *const _ + &(*(::std::ptr::null::())).onClosed as *const _ as usize }, - 0usize, + 4usize, concat!( "Offset of field: ", - stringify!(ACameraMetadata_entry__bindgen_ty_1), + stringify!(ACameraCaptureSession_stateCallbacks), "::", - stringify!(i64_) + stringify!(onClosed) ) ); assert_eq!( unsafe { - &(*(::std::ptr::null::())).d as *const _ as usize + &(*(::std::ptr::null::())).onReady as *const _ + as usize }, - 0usize, + 8usize, concat!( "Offset of field: ", - stringify!(ACameraMetadata_entry__bindgen_ty_1), + stringify!(ACameraCaptureSession_stateCallbacks), "::", - stringify!(d) + stringify!(onReady) ) ); assert_eq!( unsafe { - &(*(::std::ptr::null::())).r as *const _ as usize + &(*(::std::ptr::null::())).onActive as *const _ + as usize }, - 0usize, + 12usize, concat!( "Offset of field: ", - stringify!(ACameraMetadata_entry__bindgen_ty_1), + stringify!(ACameraCaptureSession_stateCallbacks), "::", - stringify!(r) + stringify!(onActive) ) ); } +pub const CAPTURE_FAILURE_REASON_FLUSHED: ::std::os::raw::c_uint = 0; +pub const CAPTURE_FAILURE_REASON_ERROR: ::std::os::raw::c_uint = 1; +pub type _bindgen_ty_64 = ::std::os::raw::c_uint; +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ACameraCaptureFailure { + pub frameNumber: i64, + pub reason: ::std::os::raw::c_int, + pub sequenceId: ::std::os::raw::c_int, + pub wasImageCaptured: bool, +} #[test] -fn bindgen_test_layout_ACameraMetadata_entry() { +fn bindgen_test_layout_ACameraCaptureFailure() { assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(ACameraMetadata_entry)) + ::std::mem::size_of::(), + 24usize, + concat!("Size of: ", stringify!(ACameraCaptureFailure)) ); assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(ACameraMetadata_entry)) + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(ACameraCaptureFailure)) ); assert_eq!( - unsafe { &(*(::std::ptr::null::())).tag as *const _ as usize }, + unsafe { + &(*(::std::ptr::null::())).frameNumber as *const _ as usize + }, 0usize, concat!( "Offset of field: ", - stringify!(ACameraMetadata_entry), + stringify!(ACameraCaptureFailure), "::", - stringify!(tag) + stringify!(frameNumber) ) ); assert_eq!( - unsafe { &(*(::std::ptr::null::())).type_ as *const _ as usize }, - 4usize, + unsafe { &(*(::std::ptr::null::())).reason as *const _ as usize }, + 8usize, concat!( "Offset of field: ", - stringify!(ACameraMetadata_entry), + stringify!(ACameraCaptureFailure), "::", - stringify!(type_) + stringify!(reason) ) ); assert_eq!( - unsafe { &(*(::std::ptr::null::())).count as *const _ as usize }, - 8usize, + unsafe { + &(*(::std::ptr::null::())).sequenceId as *const _ as usize + }, + 12usize, concat!( "Offset of field: ", - stringify!(ACameraMetadata_entry), + stringify!(ACameraCaptureFailure), "::", - stringify!(count) + stringify!(sequenceId) ) ); assert_eq!( - unsafe { &(*(::std::ptr::null::())).data as *const _ as usize }, - 12usize, + unsafe { + &(*(::std::ptr::null::())).wasImageCaptured as *const _ as usize + }, + 16usize, concat!( "Offset of field: ", - stringify!(ACameraMetadata_entry), + stringify!(ACameraCaptureFailure), "::", - stringify!(data) + stringify!(wasImageCaptured) ) ); } +pub type ACameraCaptureSession_captureCallback_start = ::std::option::Option< + unsafe extern "C" fn( + context: *mut ::std::os::raw::c_void, + session: *mut ACameraCaptureSession, + request: *const ACaptureRequest, + timestamp: i64, + ), +>; +pub type ACameraCaptureSession_captureCallback_result = ::std::option::Option< + unsafe extern "C" fn( + context: *mut ::std::os::raw::c_void, + session: *mut ACameraCaptureSession, + request: *mut ACaptureRequest, + result: *const ACameraMetadata, + ), +>; +pub type ACameraCaptureSession_captureCallback_failed = ::std::option::Option< + unsafe extern "C" fn( + context: *mut ::std::os::raw::c_void, + session: *mut ACameraCaptureSession, + request: *mut ACaptureRequest, + failure: *mut ACameraCaptureFailure, + ), +>; +pub type ACameraCaptureSession_captureCallback_sequenceEnd = ::std::option::Option< + unsafe extern "C" fn( + context: *mut ::std::os::raw::c_void, + session: *mut ACameraCaptureSession, + sequenceId: ::std::os::raw::c_int, + frameNumber: i64, + ), +>; +pub type ACameraCaptureSession_captureCallback_sequenceAbort = ::std::option::Option< + unsafe extern "C" fn( + context: *mut ::std::os::raw::c_void, + session: *mut ACameraCaptureSession, + sequenceId: ::std::os::raw::c_int, + ), +>; +pub type ACameraCaptureSession_captureCallback_bufferLost = ::std::option::Option< + unsafe extern "C" fn( + context: *mut ::std::os::raw::c_void, + session: *mut ACameraCaptureSession, + request: *mut ACaptureRequest, + window: *mut ACameraWindowType, + frameNumber: i64, + ), +>; #[repr(C)] -#[derive(Copy, Clone)] -pub struct ACameraMetadata_const_entry { - pub tag: u32, - pub type_: u8, - pub count: u32, - pub data: ACameraMetadata_const_entry__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union ACameraMetadata_const_entry__bindgen_ty_1 { - pub u8_: *const u8, - pub i32_: *const i32, - pub f: *const f32, - pub i64_: *const i64, - pub d: *const f64, - pub r: *const ACameraMetadata_rational, +#[derive(Debug, Copy, Clone)] +pub struct ACameraCaptureSession_captureCallbacks { + pub context: *mut ::std::os::raw::c_void, + pub onCaptureStarted: ACameraCaptureSession_captureCallback_start, + pub onCaptureProgressed: ACameraCaptureSession_captureCallback_result, + pub onCaptureCompleted: ACameraCaptureSession_captureCallback_result, + pub onCaptureFailed: ACameraCaptureSession_captureCallback_failed, + pub onCaptureSequenceCompleted: ACameraCaptureSession_captureCallback_sequenceEnd, + pub onCaptureSequenceAborted: ACameraCaptureSession_captureCallback_sequenceAbort, + pub onCaptureBufferLost: ACameraCaptureSession_captureCallback_bufferLost, } #[test] -fn bindgen_test_layout_ACameraMetadata_const_entry__bindgen_ty_1() { +fn bindgen_test_layout_ACameraCaptureSession_captureCallbacks() { assert_eq!( - ::std::mem::size_of::(), - 4usize, + ::std::mem::size_of::(), + 32usize, concat!( "Size of: ", - stringify!(ACameraMetadata_const_entry__bindgen_ty_1) + stringify!(ACameraCaptureSession_captureCallbacks) ) ); assert_eq!( - ::std::mem::align_of::(), + ::std::mem::align_of::(), 4usize, concat!( "Alignment of ", - stringify!(ACameraMetadata_const_entry__bindgen_ty_1) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::())).u8_ as *const _ - as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(ACameraMetadata_const_entry__bindgen_ty_1), - "::", - stringify!(u8_) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::())).i32_ as *const _ - as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(ACameraMetadata_const_entry__bindgen_ty_1), - "::", - stringify!(i32_) + stringify!(ACameraCaptureSession_captureCallbacks) ) ); assert_eq!( unsafe { - &(*(::std::ptr::null::())).f as *const _ + &(*(::std::ptr::null::())).context as *const _ as usize }, 0usize, concat!( "Offset of field: ", - stringify!(ACameraMetadata_const_entry__bindgen_ty_1), + stringify!(ACameraCaptureSession_captureCallbacks), "::", - stringify!(f) + stringify!(context) ) ); assert_eq!( unsafe { - &(*(::std::ptr::null::())).i64_ as *const _ - as usize + &(*(::std::ptr::null::())).onCaptureStarted + as *const _ as usize }, - 0usize, + 4usize, concat!( "Offset of field: ", - stringify!(ACameraMetadata_const_entry__bindgen_ty_1), + stringify!(ACameraCaptureSession_captureCallbacks), "::", - stringify!(i64_) + stringify!(onCaptureStarted) ) ); assert_eq!( unsafe { - &(*(::std::ptr::null::())).d as *const _ - as usize + &(*(::std::ptr::null::())).onCaptureProgressed + as *const _ as usize }, - 0usize, + 8usize, concat!( "Offset of field: ", - stringify!(ACameraMetadata_const_entry__bindgen_ty_1), + stringify!(ACameraCaptureSession_captureCallbacks), "::", - stringify!(d) + stringify!(onCaptureProgressed) ) ); assert_eq!( unsafe { - &(*(::std::ptr::null::())).r as *const _ - as usize + &(*(::std::ptr::null::())).onCaptureCompleted + as *const _ as usize }, - 0usize, + 12usize, concat!( "Offset of field: ", - stringify!(ACameraMetadata_const_entry__bindgen_ty_1), + stringify!(ACameraCaptureSession_captureCallbacks), "::", - stringify!(r) + stringify!(onCaptureCompleted) ) ); -} -#[test] -fn bindgen_test_layout_ACameraMetadata_const_entry() { assert_eq!( - ::std::mem::size_of::(), + unsafe { + &(*(::std::ptr::null::())).onCaptureFailed + as *const _ as usize + }, 16usize, - concat!("Size of: ", stringify!(ACameraMetadata_const_entry)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(ACameraMetadata_const_entry)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).tag as *const _ as usize }, - 0usize, concat!( "Offset of field: ", - stringify!(ACameraMetadata_const_entry), + stringify!(ACameraCaptureSession_captureCallbacks), "::", - stringify!(tag) + stringify!(onCaptureFailed) ) ); assert_eq!( unsafe { - &(*(::std::ptr::null::())).type_ as *const _ as usize + &(*(::std::ptr::null::())) + .onCaptureSequenceCompleted as *const _ as usize }, - 4usize, + 20usize, concat!( "Offset of field: ", - stringify!(ACameraMetadata_const_entry), + stringify!(ACameraCaptureSession_captureCallbacks), "::", - stringify!(type_) + stringify!(onCaptureSequenceCompleted) ) ); assert_eq!( unsafe { - &(*(::std::ptr::null::())).count as *const _ as usize + &(*(::std::ptr::null::())) + .onCaptureSequenceAborted as *const _ as usize }, - 8usize, + 24usize, concat!( "Offset of field: ", - stringify!(ACameraMetadata_const_entry), + stringify!(ACameraCaptureSession_captureCallbacks), "::", - stringify!(count) + stringify!(onCaptureSequenceAborted) ) ); assert_eq!( unsafe { - &(*(::std::ptr::null::())).data as *const _ as usize + &(*(::std::ptr::null::())).onCaptureBufferLost + as *const _ as usize }, - 12usize, + 28usize, concat!( "Offset of field: ", - stringify!(ACameraMetadata_const_entry), + stringify!(ACameraCaptureSession_captureCallbacks), "::", - stringify!(data) + stringify!(onCaptureBufferLost) ) ); } +pub const CAPTURE_SEQUENCE_ID_NONE: ::std::os::raw::c_int = -1; +pub type _bindgen_ty_65 = ::std::os::raw::c_int; extern "C" { - pub fn ACameraMetadata_getConstEntry( - metadata: *const ACameraMetadata, - tag: u32, - entry: *mut ACameraMetadata_const_entry, - ) -> camera_status_t; -} -extern "C" { - pub fn ACameraMetadata_getAllTags( - metadata: *const ACameraMetadata, - numEntries: *mut i32, - tags: *mut *const u32, - ) -> camera_status_t; -} -extern "C" { - pub fn ACameraMetadata_copy(src: *const ACameraMetadata) -> *mut ACameraMetadata; -} -extern "C" { - pub fn ACameraMetadata_free(metadata: *mut ACameraMetadata); -} -extern "C" { - pub fn ACameraMetadata_isLogicalMultiCamera( - staticMetadata: *const ACameraMetadata, - numPhysicalCameras: *mut size_t, - physicalCameraIds: *mut *const *const ::std::os::raw::c_char, - ) -> bool; -} -extern "C" { - pub fn ACameraMetadata_fromCameraMetadata( - env: *mut JNIEnv, - cameraMetadata: jobject, - ) -> *mut ACameraMetadata; -} -pub type ACameraWindowType = ANativeWindow; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ACameraOutputTargets { - _unused: [u8; 0], -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ACameraOutputTarget { - _unused: [u8; 0], + pub fn ACameraCaptureSession_close(session: *mut ACameraCaptureSession); } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct ACaptureRequest { +pub struct ACameraDevice { _unused: [u8; 0], } extern "C" { - pub fn ACameraOutputTarget_create( - window: *mut ACameraWindowType, - output: *mut *mut ACameraOutputTarget, - ) -> camera_status_t; -} -extern "C" { - pub fn ACameraOutputTarget_free(output: *mut ACameraOutputTarget); -} -extern "C" { - pub fn ACaptureRequest_addTarget( - request: *mut ACaptureRequest, - output: *const ACameraOutputTarget, - ) -> camera_status_t; -} -extern "C" { - pub fn ACaptureRequest_removeTarget( - request: *mut ACaptureRequest, - output: *const ACameraOutputTarget, - ) -> camera_status_t; -} -extern "C" { - pub fn ACaptureRequest_getConstEntry( - request: *const ACaptureRequest, - tag: u32, - entry: *mut ACameraMetadata_const_entry, - ) -> camera_status_t; -} -extern "C" { - pub fn ACaptureRequest_getAllTags( - request: *const ACaptureRequest, - numTags: *mut i32, - tags: *mut *const u32, - ) -> camera_status_t; -} -extern "C" { - pub fn ACaptureRequest_setEntry_u8( - request: *mut ACaptureRequest, - tag: u32, - count: u32, - data: *const u8, - ) -> camera_status_t; -} -extern "C" { - pub fn ACaptureRequest_setEntry_i32( - request: *mut ACaptureRequest, - tag: u32, - count: u32, - data: *const i32, - ) -> camera_status_t; -} -extern "C" { - pub fn ACaptureRequest_setEntry_float( - request: *mut ACaptureRequest, - tag: u32, - count: u32, - data: *const f32, - ) -> camera_status_t; -} -extern "C" { - pub fn ACaptureRequest_setEntry_i64( - request: *mut ACaptureRequest, - tag: u32, - count: u32, - data: *const i64, - ) -> camera_status_t; -} -extern "C" { - pub fn ACaptureRequest_setEntry_double( - request: *mut ACaptureRequest, - tag: u32, - count: u32, - data: *const f64, - ) -> camera_status_t; -} -extern "C" { - pub fn ACaptureRequest_setEntry_rational( - request: *mut ACaptureRequest, - tag: u32, - count: u32, - data: *const ACameraMetadata_rational, - ) -> camera_status_t; -} -extern "C" { - pub fn ACaptureRequest_free(request: *mut ACaptureRequest); -} -extern "C" { - pub fn ACaptureRequest_setUserContext( - request: *mut ACaptureRequest, - context: *mut ::std::os::raw::c_void, - ) -> camera_status_t; -} -extern "C" { - pub fn ACaptureRequest_getUserContext( - request: *const ACaptureRequest, - context: *mut *mut ::std::os::raw::c_void, - ) -> camera_status_t; -} -extern "C" { - pub fn ACaptureRequest_copy(src: *const ACaptureRequest) -> *mut ACaptureRequest; -} -extern "C" { - pub fn ACaptureRequest_getConstEntry_physicalCamera( - request: *const ACaptureRequest, - physicalId: *const ::std::os::raw::c_char, - tag: u32, - entry: *mut ACameraMetadata_const_entry, - ) -> camera_status_t; -} -extern "C" { - pub fn ACaptureRequest_setEntry_physicalCamera_u8( - request: *mut ACaptureRequest, - physicalId: *const ::std::os::raw::c_char, - tag: u32, - count: u32, - data: *const u8, - ) -> camera_status_t; -} -extern "C" { - pub fn ACaptureRequest_setEntry_physicalCamera_i32( - request: *mut ACaptureRequest, - physicalId: *const ::std::os::raw::c_char, - tag: u32, - count: u32, - data: *const i32, + pub fn ACameraCaptureSession_getDevice( + session: *mut ACameraCaptureSession, + device: *mut *mut ACameraDevice, ) -> camera_status_t; } extern "C" { - pub fn ACaptureRequest_setEntry_physicalCamera_float( - request: *mut ACaptureRequest, - physicalId: *const ::std::os::raw::c_char, - tag: u32, - count: u32, - data: *const f32, + pub fn ACameraCaptureSession_capture( + session: *mut ACameraCaptureSession, + callbacks: *mut ACameraCaptureSession_captureCallbacks, + numRequests: ::std::os::raw::c_int, + requests: *mut *mut ACaptureRequest, + captureSequenceId: *mut ::std::os::raw::c_int, ) -> camera_status_t; } extern "C" { - pub fn ACaptureRequest_setEntry_physicalCamera_i64( - request: *mut ACaptureRequest, - physicalId: *const ::std::os::raw::c_char, - tag: u32, - count: u32, - data: *const i64, + pub fn ACameraCaptureSession_setRepeatingRequest( + session: *mut ACameraCaptureSession, + callbacks: *mut ACameraCaptureSession_captureCallbacks, + numRequests: ::std::os::raw::c_int, + requests: *mut *mut ACaptureRequest, + captureSequenceId: *mut ::std::os::raw::c_int, ) -> camera_status_t; } extern "C" { - pub fn ACaptureRequest_setEntry_physicalCamera_double( - request: *mut ACaptureRequest, - physicalId: *const ::std::os::raw::c_char, - tag: u32, - count: u32, - data: *const f64, + pub fn ACameraCaptureSession_stopRepeating( + session: *mut ACameraCaptureSession, ) -> camera_status_t; } extern "C" { - pub fn ACaptureRequest_setEntry_physicalCamera_rational( - request: *mut ACaptureRequest, - physicalId: *const ::std::os::raw::c_char, - tag: u32, - count: u32, - data: *const ACameraMetadata_rational, + pub fn ACameraCaptureSession_abortCaptures( + session: *mut ACameraCaptureSession, ) -> camera_status_t; } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct ACameraCaptureSession { +pub struct ACaptureSessionOutput { _unused: [u8; 0], } -pub type ACameraCaptureSession_stateCallback = ::std::option::Option< - unsafe extern "C" fn(context: *mut ::std::os::raw::c_void, session: *mut ACameraCaptureSession), +extern "C" { + pub fn ACameraCaptureSession_updateSharedOutput( + session: *mut ACameraCaptureSession, + output: *mut ACaptureSessionOutput, + ) -> camera_status_t; +} +pub type ACameraCaptureSession_logicalCamera_captureCallback_result = ::std::option::Option< + unsafe extern "C" fn( + context: *mut ::std::os::raw::c_void, + session: *mut ACameraCaptureSession, + request: *mut ACaptureRequest, + result: *const ACameraMetadata, + physicalResultCount: size_t, + physicalCameraIds: *mut *const ::std::os::raw::c_char, + physicalResults: *mut *const ACameraMetadata, + ), >; #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct ACameraCaptureSession_stateCallbacks { +pub struct ALogicalCameraCaptureFailure { + pub captureFailure: ACameraCaptureFailure, + pub physicalCameraId: *const ::std::os::raw::c_char, +} +#[test] +fn bindgen_test_layout_ALogicalCameraCaptureFailure() { + assert_eq!( + ::std::mem::size_of::(), + 32usize, + concat!("Size of: ", stringify!(ALogicalCameraCaptureFailure)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(ALogicalCameraCaptureFailure)) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).captureFailure as *const _ + as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ALogicalCameraCaptureFailure), + "::", + stringify!(captureFailure) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).physicalCameraId as *const _ + as usize + }, + 24usize, + concat!( + "Offset of field: ", + stringify!(ALogicalCameraCaptureFailure), + "::", + stringify!(physicalCameraId) + ) + ); +} +pub type ACameraCaptureSession_logicalCamera_captureCallback_failed = ::std::option::Option< + unsafe extern "C" fn( + context: *mut ::std::os::raw::c_void, + session: *mut ACameraCaptureSession, + request: *mut ACaptureRequest, + failure: *mut ALogicalCameraCaptureFailure, + ), +>; +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ACameraCaptureSession_logicalCamera_captureCallbacks { pub context: *mut ::std::os::raw::c_void, - pub onClosed: ACameraCaptureSession_stateCallback, - pub onReady: ACameraCaptureSession_stateCallback, - pub onActive: ACameraCaptureSession_stateCallback, + pub onCaptureStarted: ACameraCaptureSession_captureCallback_start, + pub onCaptureProgressed: ACameraCaptureSession_captureCallback_result, + pub onLogicalCameraCaptureCompleted: ACameraCaptureSession_logicalCamera_captureCallback_result, + pub onLogicalCameraCaptureFailed: ACameraCaptureSession_logicalCamera_captureCallback_failed, + pub onCaptureSequenceCompleted: ACameraCaptureSession_captureCallback_sequenceEnd, + pub onCaptureSequenceAborted: ACameraCaptureSession_captureCallback_sequenceAbort, + pub onCaptureBufferLost: ACameraCaptureSession_captureCallback_bufferLost, } #[test] -fn bindgen_test_layout_ACameraCaptureSession_stateCallbacks() { +fn bindgen_test_layout_ACameraCaptureSession_logicalCamera_captureCallbacks() { assert_eq!( - ::std::mem::size_of::(), - 16usize, + ::std::mem::size_of::(), + 32usize, concat!( "Size of: ", - stringify!(ACameraCaptureSession_stateCallbacks) + stringify!(ACameraCaptureSession_logicalCamera_captureCallbacks) ) ); assert_eq!( - ::std::mem::align_of::(), + ::std::mem::align_of::(), 4usize, concat!( "Alignment of ", - stringify!(ACameraCaptureSession_stateCallbacks) + stringify!(ACameraCaptureSession_logicalCamera_captureCallbacks) ) ); assert_eq!( unsafe { - &(*(::std::ptr::null::())).context as *const _ - as usize + &(*(::std::ptr::null::())).context + as *const _ as usize }, 0usize, concat!( "Offset of field: ", - stringify!(ACameraCaptureSession_stateCallbacks), + stringify!(ACameraCaptureSession_logicalCamera_captureCallbacks), "::", stringify!(context) ) ); assert_eq!( unsafe { - &(*(::std::ptr::null::())).onClosed as *const _ - as usize + &(*(::std::ptr::null::())) + .onCaptureStarted as *const _ as usize }, 4usize, concat!( "Offset of field: ", - stringify!(ACameraCaptureSession_stateCallbacks), + stringify!(ACameraCaptureSession_logicalCamera_captureCallbacks), "::", - stringify!(onClosed) + stringify!(onCaptureStarted) ) ); assert_eq!( unsafe { - &(*(::std::ptr::null::())).onReady as *const _ - as usize + &(*(::std::ptr::null::())) + .onCaptureProgressed as *const _ as usize }, 8usize, concat!( "Offset of field: ", - stringify!(ACameraCaptureSession_stateCallbacks), + stringify!(ACameraCaptureSession_logicalCamera_captureCallbacks), "::", - stringify!(onReady) + stringify!(onCaptureProgressed) ) ); assert_eq!( unsafe { - &(*(::std::ptr::null::())).onActive as *const _ - as usize + &(*(::std::ptr::null::())) + .onLogicalCameraCaptureCompleted as *const _ as usize }, 12usize, concat!( "Offset of field: ", - stringify!(ACameraCaptureSession_stateCallbacks), + stringify!(ACameraCaptureSession_logicalCamera_captureCallbacks), "::", - stringify!(onActive) + stringify!(onLogicalCameraCaptureCompleted) ) ); -} -pub const CAPTURE_FAILURE_REASON_FLUSHED: ::std::os::raw::c_uint = 0; -pub const CAPTURE_FAILURE_REASON_ERROR: ::std::os::raw::c_uint = 1; -pub type _bindgen_ty_62 = ::std::os::raw::c_uint; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ACameraCaptureFailure { - pub frameNumber: i64, - pub reason: ::std::os::raw::c_int, - pub sequenceId: ::std::os::raw::c_int, - pub wasImageCaptured: bool, -} -#[test] -fn bindgen_test_layout_ACameraCaptureFailure() { - assert_eq!( - ::std::mem::size_of::(), - 24usize, - concat!("Size of: ", stringify!(ACameraCaptureFailure)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(ACameraCaptureFailure)) - ); assert_eq!( unsafe { - &(*(::std::ptr::null::())).frameNumber as *const _ as usize + &(*(::std::ptr::null::())) + .onLogicalCameraCaptureFailed as *const _ as usize }, - 0usize, + 16usize, concat!( "Offset of field: ", - stringify!(ACameraCaptureFailure), + stringify!(ACameraCaptureSession_logicalCamera_captureCallbacks), "::", - stringify!(frameNumber) + stringify!(onLogicalCameraCaptureFailed) ) ); assert_eq!( - unsafe { &(*(::std::ptr::null::())).reason as *const _ as usize }, - 8usize, + unsafe { + &(*(::std::ptr::null::())) + .onCaptureSequenceCompleted as *const _ as usize + }, + 20usize, concat!( "Offset of field: ", - stringify!(ACameraCaptureFailure), + stringify!(ACameraCaptureSession_logicalCamera_captureCallbacks), "::", - stringify!(reason) + stringify!(onCaptureSequenceCompleted) ) ); assert_eq!( unsafe { - &(*(::std::ptr::null::())).sequenceId as *const _ as usize + &(*(::std::ptr::null::())) + .onCaptureSequenceAborted as *const _ as usize }, - 12usize, + 24usize, concat!( "Offset of field: ", - stringify!(ACameraCaptureFailure), + stringify!(ACameraCaptureSession_logicalCamera_captureCallbacks), "::", - stringify!(sequenceId) + stringify!(onCaptureSequenceAborted) ) ); assert_eq!( unsafe { - &(*(::std::ptr::null::())).wasImageCaptured as *const _ as usize + &(*(::std::ptr::null::())) + .onCaptureBufferLost as *const _ as usize }, - 16usize, + 28usize, concat!( "Offset of field: ", - stringify!(ACameraCaptureFailure), + stringify!(ACameraCaptureSession_logicalCamera_captureCallbacks), "::", - stringify!(wasImageCaptured) + stringify!(onCaptureBufferLost) ) - ); -} -pub type ACameraCaptureSession_captureCallback_start = ::std::option::Option< - unsafe extern "C" fn( - context: *mut ::std::os::raw::c_void, - session: *mut ACameraCaptureSession, - request: *const ACaptureRequest, - timestamp: i64, - ), ->; -pub type ACameraCaptureSession_captureCallback_result = ::std::option::Option< - unsafe extern "C" fn( - context: *mut ::std::os::raw::c_void, - session: *mut ACameraCaptureSession, - request: *mut ACaptureRequest, - result: *const ACameraMetadata, - ), ->; -pub type ACameraCaptureSession_captureCallback_failed = ::std::option::Option< - unsafe extern "C" fn( - context: *mut ::std::os::raw::c_void, - session: *mut ACameraCaptureSession, - request: *mut ACaptureRequest, - failure: *mut ACameraCaptureFailure, - ), ->; -pub type ACameraCaptureSession_captureCallback_sequenceEnd = ::std::option::Option< - unsafe extern "C" fn( - context: *mut ::std::os::raw::c_void, - session: *mut ACameraCaptureSession, - sequenceId: ::std::os::raw::c_int, - frameNumber: i64, - ), ->; -pub type ACameraCaptureSession_captureCallback_sequenceAbort = ::std::option::Option< - unsafe extern "C" fn( - context: *mut ::std::os::raw::c_void, + ); +} +extern "C" { + pub fn ACameraCaptureSession_logicalCamera_capture( session: *mut ACameraCaptureSession, - sequenceId: ::std::os::raw::c_int, - ), ->; -pub type ACameraCaptureSession_captureCallback_bufferLost = ::std::option::Option< + callbacks: *mut ACameraCaptureSession_logicalCamera_captureCallbacks, + numRequests: ::std::os::raw::c_int, + requests: *mut *mut ACaptureRequest, + captureSequenceId: *mut ::std::os::raw::c_int, + ) -> camera_status_t; +} +extern "C" { + pub fn ACameraCaptureSession_logicalCamera_setRepeatingRequest( + session: *mut ACameraCaptureSession, + callbacks: *mut ACameraCaptureSession_logicalCamera_captureCallbacks, + numRequests: ::std::os::raw::c_int, + requests: *mut *mut ACaptureRequest, + captureSequenceId: *mut ::std::os::raw::c_int, + ) -> camera_status_t; +} +pub type ACameraCaptureSession_captureCallback_startV2 = ::std::option::Option< unsafe extern "C" fn( context: *mut ::std::os::raw::c_void, session: *mut ACameraCaptureSession, - request: *mut ACaptureRequest, - window: *mut ACameraWindowType, + request: *const ACaptureRequest, + timestamp: i64, frameNumber: i64, ), >; #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct ACameraCaptureSession_captureCallbacks { +pub struct ACameraCaptureSession_captureCallbacksV2 { pub context: *mut ::std::os::raw::c_void, - pub onCaptureStarted: ACameraCaptureSession_captureCallback_start, + pub onCaptureStarted: ACameraCaptureSession_captureCallback_startV2, pub onCaptureProgressed: ACameraCaptureSession_captureCallback_result, pub onCaptureCompleted: ACameraCaptureSession_captureCallback_result, pub onCaptureFailed: ACameraCaptureSession_captureCallback_failed, @@ -18599,252 +20565,133 @@ pub struct ACameraCaptureSession_captureCallbacks { pub onCaptureBufferLost: ACameraCaptureSession_captureCallback_bufferLost, } #[test] -fn bindgen_test_layout_ACameraCaptureSession_captureCallbacks() { +fn bindgen_test_layout_ACameraCaptureSession_captureCallbacksV2() { assert_eq!( - ::std::mem::size_of::(), + ::std::mem::size_of::(), 32usize, concat!( "Size of: ", - stringify!(ACameraCaptureSession_captureCallbacks) + stringify!(ACameraCaptureSession_captureCallbacksV2) ) ); assert_eq!( - ::std::mem::align_of::(), + ::std::mem::align_of::(), 4usize, concat!( "Alignment of ", - stringify!(ACameraCaptureSession_captureCallbacks) + stringify!(ACameraCaptureSession_captureCallbacksV2) ) ); assert_eq!( unsafe { - &(*(::std::ptr::null::())).context as *const _ + &(*(::std::ptr::null::())).context as *const _ as usize }, 0usize, concat!( "Offset of field: ", - stringify!(ACameraCaptureSession_captureCallbacks), + stringify!(ACameraCaptureSession_captureCallbacksV2), "::", stringify!(context) ) ); assert_eq!( unsafe { - &(*(::std::ptr::null::())).onCaptureStarted + &(*(::std::ptr::null::())).onCaptureStarted as *const _ as usize }, 4usize, concat!( "Offset of field: ", - stringify!(ACameraCaptureSession_captureCallbacks), + stringify!(ACameraCaptureSession_captureCallbacksV2), "::", stringify!(onCaptureStarted) ) ); assert_eq!( unsafe { - &(*(::std::ptr::null::())).onCaptureProgressed + &(*(::std::ptr::null::())).onCaptureProgressed as *const _ as usize }, 8usize, concat!( "Offset of field: ", - stringify!(ACameraCaptureSession_captureCallbacks), + stringify!(ACameraCaptureSession_captureCallbacksV2), "::", stringify!(onCaptureProgressed) ) ); assert_eq!( unsafe { - &(*(::std::ptr::null::())).onCaptureCompleted + &(*(::std::ptr::null::())).onCaptureCompleted as *const _ as usize }, 12usize, concat!( "Offset of field: ", - stringify!(ACameraCaptureSession_captureCallbacks), + stringify!(ACameraCaptureSession_captureCallbacksV2), "::", stringify!(onCaptureCompleted) ) ); assert_eq!( unsafe { - &(*(::std::ptr::null::())).onCaptureFailed + &(*(::std::ptr::null::())).onCaptureFailed as *const _ as usize }, 16usize, concat!( "Offset of field: ", - stringify!(ACameraCaptureSession_captureCallbacks), + stringify!(ACameraCaptureSession_captureCallbacksV2), "::", stringify!(onCaptureFailed) ) ); assert_eq!( unsafe { - &(*(::std::ptr::null::())) + &(*(::std::ptr::null::())) .onCaptureSequenceCompleted as *const _ as usize }, 20usize, concat!( "Offset of field: ", - stringify!(ACameraCaptureSession_captureCallbacks), + stringify!(ACameraCaptureSession_captureCallbacksV2), "::", stringify!(onCaptureSequenceCompleted) ) ); assert_eq!( unsafe { - &(*(::std::ptr::null::())) + &(*(::std::ptr::null::())) .onCaptureSequenceAborted as *const _ as usize }, 24usize, concat!( "Offset of field: ", - stringify!(ACameraCaptureSession_captureCallbacks), + stringify!(ACameraCaptureSession_captureCallbacksV2), "::", stringify!(onCaptureSequenceAborted) ) ); assert_eq!( unsafe { - &(*(::std::ptr::null::())).onCaptureBufferLost + &(*(::std::ptr::null::())).onCaptureBufferLost as *const _ as usize }, 28usize, concat!( "Offset of field: ", - stringify!(ACameraCaptureSession_captureCallbacks), + stringify!(ACameraCaptureSession_captureCallbacksV2), "::", stringify!(onCaptureBufferLost) ) ); } -pub const CAPTURE_SEQUENCE_ID_NONE: ::std::os::raw::c_int = -1; -pub type _bindgen_ty_63 = ::std::os::raw::c_int; -extern "C" { - pub fn ACameraCaptureSession_close(session: *mut ACameraCaptureSession); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ACameraDevice { - _unused: [u8; 0], -} -extern "C" { - pub fn ACameraCaptureSession_getDevice( - session: *mut ACameraCaptureSession, - device: *mut *mut ACameraDevice, - ) -> camera_status_t; -} -extern "C" { - pub fn ACameraCaptureSession_capture( - session: *mut ACameraCaptureSession, - callbacks: *mut ACameraCaptureSession_captureCallbacks, - numRequests: ::std::os::raw::c_int, - requests: *mut *mut ACaptureRequest, - captureSequenceId: *mut ::std::os::raw::c_int, - ) -> camera_status_t; -} -extern "C" { - pub fn ACameraCaptureSession_setRepeatingRequest( - session: *mut ACameraCaptureSession, - callbacks: *mut ACameraCaptureSession_captureCallbacks, - numRequests: ::std::os::raw::c_int, - requests: *mut *mut ACaptureRequest, - captureSequenceId: *mut ::std::os::raw::c_int, - ) -> camera_status_t; -} -extern "C" { - pub fn ACameraCaptureSession_stopRepeating( - session: *mut ACameraCaptureSession, - ) -> camera_status_t; -} -extern "C" { - pub fn ACameraCaptureSession_abortCaptures( - session: *mut ACameraCaptureSession, - ) -> camera_status_t; -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ACaptureSessionOutput { - _unused: [u8; 0], -} -extern "C" { - pub fn ACameraCaptureSession_updateSharedOutput( - session: *mut ACameraCaptureSession, - output: *mut ACaptureSessionOutput, - ) -> camera_status_t; -} -pub type ACameraCaptureSession_logicalCamera_captureCallback_result = ::std::option::Option< - unsafe extern "C" fn( - context: *mut ::std::os::raw::c_void, - session: *mut ACameraCaptureSession, - request: *mut ACaptureRequest, - result: *const ACameraMetadata, - physicalResultCount: size_t, - physicalCameraIds: *mut *const ::std::os::raw::c_char, - physicalResults: *mut *const ACameraMetadata, - ), ->; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ALogicalCameraCaptureFailure { - pub captureFailure: ACameraCaptureFailure, - pub physicalCameraId: *const ::std::os::raw::c_char, -} -#[test] -fn bindgen_test_layout_ALogicalCameraCaptureFailure() { - assert_eq!( - ::std::mem::size_of::(), - 32usize, - concat!("Size of: ", stringify!(ALogicalCameraCaptureFailure)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(ALogicalCameraCaptureFailure)) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::())).captureFailure as *const _ - as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(ALogicalCameraCaptureFailure), - "::", - stringify!(captureFailure) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::())).physicalCameraId as *const _ - as usize - }, - 24usize, - concat!( - "Offset of field: ", - stringify!(ALogicalCameraCaptureFailure), - "::", - stringify!(physicalCameraId) - ) - ); -} -pub type ACameraCaptureSession_logicalCamera_captureCallback_failed = ::std::option::Option< - unsafe extern "C" fn( - context: *mut ::std::os::raw::c_void, - session: *mut ACameraCaptureSession, - request: *mut ACaptureRequest, - failure: *mut ALogicalCameraCaptureFailure, - ), ->; #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct ACameraCaptureSession_logicalCamera_captureCallbacks { +pub struct ACameraCaptureSession_logicalCamera_captureCallbacksV2 { pub context: *mut ::std::os::raw::c_void, - pub onCaptureStarted: ACameraCaptureSession_captureCallback_start, + pub onCaptureStarted: ACameraCaptureSession_captureCallback_startV2, pub onCaptureProgressed: ACameraCaptureSession_captureCallback_result, pub onLogicalCameraCaptureCompleted: ACameraCaptureSession_logicalCamera_captureCallback_result, pub onLogicalCameraCaptureFailed: ACameraCaptureSession_logicalCamera_captureCallback_failed, @@ -18853,141 +20700,159 @@ pub struct ACameraCaptureSession_logicalCamera_captureCallbacks { pub onCaptureBufferLost: ACameraCaptureSession_captureCallback_bufferLost, } #[test] -fn bindgen_test_layout_ACameraCaptureSession_logicalCamera_captureCallbacks() { +fn bindgen_test_layout_ACameraCaptureSession_logicalCamera_captureCallbacksV2() { assert_eq!( - ::std::mem::size_of::(), + ::std::mem::size_of::(), 32usize, concat!( "Size of: ", - stringify!(ACameraCaptureSession_logicalCamera_captureCallbacks) + stringify!(ACameraCaptureSession_logicalCamera_captureCallbacksV2) ) ); assert_eq!( - ::std::mem::align_of::(), + ::std::mem::align_of::(), 4usize, concat!( "Alignment of ", - stringify!(ACameraCaptureSession_logicalCamera_captureCallbacks) + stringify!(ACameraCaptureSession_logicalCamera_captureCallbacksV2) ) ); assert_eq!( unsafe { - &(*(::std::ptr::null::())).context - as *const _ as usize + &(*(::std::ptr::null::())) + .context as *const _ as usize }, 0usize, concat!( "Offset of field: ", - stringify!(ACameraCaptureSession_logicalCamera_captureCallbacks), + stringify!(ACameraCaptureSession_logicalCamera_captureCallbacksV2), "::", stringify!(context) ) ); assert_eq!( unsafe { - &(*(::std::ptr::null::())) + &(*(::std::ptr::null::())) .onCaptureStarted as *const _ as usize }, 4usize, concat!( "Offset of field: ", - stringify!(ACameraCaptureSession_logicalCamera_captureCallbacks), + stringify!(ACameraCaptureSession_logicalCamera_captureCallbacksV2), "::", stringify!(onCaptureStarted) ) ); assert_eq!( unsafe { - &(*(::std::ptr::null::())) + &(*(::std::ptr::null::())) .onCaptureProgressed as *const _ as usize }, 8usize, concat!( "Offset of field: ", - stringify!(ACameraCaptureSession_logicalCamera_captureCallbacks), + stringify!(ACameraCaptureSession_logicalCamera_captureCallbacksV2), "::", stringify!(onCaptureProgressed) ) ); assert_eq!( unsafe { - &(*(::std::ptr::null::())) + &(*(::std::ptr::null::())) .onLogicalCameraCaptureCompleted as *const _ as usize }, 12usize, concat!( "Offset of field: ", - stringify!(ACameraCaptureSession_logicalCamera_captureCallbacks), + stringify!(ACameraCaptureSession_logicalCamera_captureCallbacksV2), "::", stringify!(onLogicalCameraCaptureCompleted) ) ); assert_eq!( unsafe { - &(*(::std::ptr::null::())) + &(*(::std::ptr::null::())) .onLogicalCameraCaptureFailed as *const _ as usize }, 16usize, concat!( "Offset of field: ", - stringify!(ACameraCaptureSession_logicalCamera_captureCallbacks), + stringify!(ACameraCaptureSession_logicalCamera_captureCallbacksV2), "::", stringify!(onLogicalCameraCaptureFailed) ) ); assert_eq!( unsafe { - &(*(::std::ptr::null::())) + &(*(::std::ptr::null::())) .onCaptureSequenceCompleted as *const _ as usize }, 20usize, concat!( "Offset of field: ", - stringify!(ACameraCaptureSession_logicalCamera_captureCallbacks), + stringify!(ACameraCaptureSession_logicalCamera_captureCallbacksV2), "::", stringify!(onCaptureSequenceCompleted) ) ); assert_eq!( unsafe { - &(*(::std::ptr::null::())) + &(*(::std::ptr::null::())) .onCaptureSequenceAborted as *const _ as usize }, 24usize, concat!( "Offset of field: ", - stringify!(ACameraCaptureSession_logicalCamera_captureCallbacks), + stringify!(ACameraCaptureSession_logicalCamera_captureCallbacksV2), "::", stringify!(onCaptureSequenceAborted) ) ); assert_eq!( unsafe { - &(*(::std::ptr::null::())) + &(*(::std::ptr::null::())) .onCaptureBufferLost as *const _ as usize }, 28usize, concat!( "Offset of field: ", - stringify!(ACameraCaptureSession_logicalCamera_captureCallbacks), + stringify!(ACameraCaptureSession_logicalCamera_captureCallbacksV2), "::", stringify!(onCaptureBufferLost) ) ); } extern "C" { - pub fn ACameraCaptureSession_logicalCamera_capture( + pub fn ACameraCaptureSession_captureV2( session: *mut ACameraCaptureSession, - callbacks: *mut ACameraCaptureSession_logicalCamera_captureCallbacks, + callbacks: *mut ACameraCaptureSession_captureCallbacksV2, numRequests: ::std::os::raw::c_int, requests: *mut *mut ACaptureRequest, captureSequenceId: *mut ::std::os::raw::c_int, ) -> camera_status_t; } extern "C" { - pub fn ACameraCaptureSession_logicalCamera_setRepeatingRequest( + pub fn ACameraCaptureSession_setRepeatingRequestV2( session: *mut ACameraCaptureSession, - callbacks: *mut ACameraCaptureSession_logicalCamera_captureCallbacks, + callbacks: *mut ACameraCaptureSession_captureCallbacksV2, + numRequests: ::std::os::raw::c_int, + requests: *mut *mut ACaptureRequest, + captureSequenceId: *mut ::std::os::raw::c_int, + ) -> camera_status_t; +} +extern "C" { + pub fn ACameraCaptureSession_logicalCamera_captureV2( + session: *mut ACameraCaptureSession, + callbacks: *mut ACameraCaptureSession_logicalCamera_captureCallbacksV2, + numRequests: ::std::os::raw::c_int, + requests: *mut *mut ACaptureRequest, + captureSequenceId: *mut ::std::os::raw::c_int, + ) -> camera_status_t; +} +extern "C" { + pub fn ACameraCaptureSession_logicalCamera_setRepeatingRequestV2( + session: *mut ACameraCaptureSession, + callbacks: *mut ACameraCaptureSession_logicalCamera_captureCallbacksV2, numRequests: ::std::os::raw::c_int, requests: *mut *mut ACaptureRequest, captureSequenceId: *mut ::std::os::raw::c_int, @@ -19037,7 +20902,7 @@ pub const ERROR_MAX_CAMERAS_IN_USE: ::std::os::raw::c_uint = 2; pub const ERROR_CAMERA_DISABLED: ::std::os::raw::c_uint = 3; pub const ERROR_CAMERA_DEVICE: ::std::os::raw::c_uint = 4; pub const ERROR_CAMERA_SERVICE: ::std::os::raw::c_uint = 5; -pub type _bindgen_ty_64 = ::std::os::raw::c_uint; +pub type _bindgen_ty_66 = ::std::os::raw::c_uint; pub type ACameraDevice_StateCallback = ::std::option::Option< unsafe extern "C" fn(context: *mut ::std::os::raw::c_void, device: *mut ACameraDevice), >; @@ -20387,6 +22252,15 @@ extern "C" { extern "C" { pub static mut AMEDIAFORMAT_KEY_SAMPLE_TIME_BEFORE_APPEND: *const ::std::os::raw::c_char; } +extern "C" { + pub static mut AMEDIAFORMAT_KEY_PICTURE_TYPE: *const ::std::os::raw::c_char; +} +extern "C" { + pub static mut AMEDIAFORMAT_KEY_VIDEO_ENCODING_STATISTICS_LEVEL: *const ::std::os::raw::c_char; +} +extern "C" { + pub static mut AMEDIAFORMAT_KEY_VIDEO_QP_AVERAGE: *const ::std::os::raw::c_char; +} extern "C" { pub static mut AMEDIAFORMAT_VIDEO_QP_B_MAX: *const ::std::os::raw::c_char; } @@ -20411,6 +22285,15 @@ extern "C" { extern "C" { pub static mut AMEDIAFORMAT_VIDEO_QP_P_MIN: *const ::std::os::raw::c_char; } +extern "C" { + pub static mut AMEDIAFORMAT_KEY_MPEGH_COMPATIBLE_SETS: *const ::std::os::raw::c_char; +} +extern "C" { + pub static mut AMEDIAFORMAT_KEY_MPEGH_PROFILE_LEVEL_INDICATION: *const ::std::os::raw::c_char; +} +extern "C" { + pub static mut AMEDIAFORMAT_KEY_MPEGH_REFERENCE_CHANNEL_LAYOUT: *const ::std::os::raw::c_char; +} #[repr(C)] #[derive(Debug, Copy, Clone)] pub struct AMediaCodec { @@ -20492,7 +22375,7 @@ pub const AMEDIACODEC_CONFIGURE_FLAG_ENCODE: ::std::os::raw::c_int = 1; pub const AMEDIACODEC_INFO_OUTPUT_BUFFERS_CHANGED: ::std::os::raw::c_int = -3; pub const AMEDIACODEC_INFO_OUTPUT_FORMAT_CHANGED: ::std::os::raw::c_int = -2; pub const AMEDIACODEC_INFO_TRY_AGAIN_LATER: ::std::os::raw::c_int = -1; -pub type _bindgen_ty_65 = ::std::os::raw::c_int; +pub type _bindgen_ty_67 = ::std::os::raw::c_int; pub type AMediaCodecOnAsyncInputAvailable = ::std::option::Option< unsafe extern "C" fn( codec: *mut AMediaCodec, @@ -20600,6 +22483,14 @@ fn bindgen_test_layout_AMediaCodecOnAsyncNotifyCallback() { ) ); } +pub type AMediaCodecOnFrameRendered = ::std::option::Option< + unsafe extern "C" fn( + codec: *mut AMediaCodec, + userdata: *mut ::std::os::raw::c_void, + mediaTimeUs: i64, + systemNano: i64, + ), +>; extern "C" { pub fn AMediaCodec_createCodecByName(name: *const ::std::os::raw::c_char) -> *mut AMediaCodec; } @@ -20761,6 +22652,13 @@ extern "C" { userdata: *mut ::std::os::raw::c_void, ) -> media_status_t; } +extern "C" { + pub fn AMediaCodec_setOnFrameRenderedCallback( + arg1: *mut AMediaCodec, + callback: AMediaCodecOnFrameRendered, + userdata: *mut ::std::os::raw::c_void, + ) -> media_status_t; +} extern "C" { pub fn AMediaCodec_releaseCrypto(arg1: *mut AMediaCodec) -> media_status_t; } @@ -21035,6 +22933,24 @@ impl AMediaDrmKeyType { #[repr(transparent)] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] pub struct AMediaDrmKeyType(pub ::std::os::raw::c_uint); +impl AMediaDrmKeyRequestType { + pub const KEY_REQUEST_TYPE_INITIAL: AMediaDrmKeyRequestType = AMediaDrmKeyRequestType(0); +} +impl AMediaDrmKeyRequestType { + pub const KEY_REQUEST_TYPE_RENEWAL: AMediaDrmKeyRequestType = AMediaDrmKeyRequestType(1); +} +impl AMediaDrmKeyRequestType { + pub const KEY_REQUEST_TYPE_RELEASE: AMediaDrmKeyRequestType = AMediaDrmKeyRequestType(2); +} +impl AMediaDrmKeyRequestType { + pub const KEY_REQUEST_TYPE_NONE: AMediaDrmKeyRequestType = AMediaDrmKeyRequestType(3); +} +impl AMediaDrmKeyRequestType { + pub const KEY_REQUEST_TYPE_UPDATE: AMediaDrmKeyRequestType = AMediaDrmKeyRequestType(4); +} +#[repr(transparent)] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub struct AMediaDrmKeyRequestType(pub i32); #[repr(C)] #[derive(Debug, Copy, Clone)] pub struct AMediaDrmKeyValuePair { @@ -21215,6 +23131,22 @@ extern "C" { keyRequestSize: *mut size_t, ) -> media_status_t; } +extern "C" { + pub fn AMediaDrm_getKeyRequestWithDefaultUrlAndType( + arg1: *mut AMediaDrm, + scope: *const AMediaDrmScope, + init: *const u8, + initSize: size_t, + mimeType: *const ::std::os::raw::c_char, + keyType: AMediaDrmKeyType, + optionalParameters: *const AMediaDrmKeyValue, + numOptionalParameters: size_t, + keyRequest: *mut *const u8, + keyRequestSize: *mut size_t, + defaultUrl: *mut *const ::std::os::raw::c_char, + keyRequestType: *mut AMediaDrmKeyRequestType, + ) -> media_status_t; +} extern "C" { pub fn AMediaDrm_provideKeyResponse( arg1: *mut AMediaDrm, @@ -21535,7 +23467,7 @@ extern "C" { } pub const AMEDIAEXTRACTOR_SAMPLE_FLAG_SYNC: ::std::os::raw::c_uint = 1; pub const AMEDIAEXTRACTOR_SAMPLE_FLAG_ENCRYPTED: ::std::os::raw::c_uint = 2; -pub type _bindgen_ty_66 = ::std::os::raw::c_uint; +pub type _bindgen_ty_68 = ::std::os::raw::c_uint; extern "C" { pub fn AMediaExtractor_getFileFormat(arg1: *mut AMediaExtractor) -> *mut AMediaFormat; } diff --git a/ndk-sys/src/ffi_i686.rs b/ndk-sys/src/ffi_i686.rs index 3d6ae114..076412a4 100644 --- a/ndk-sys/src/ffi_i686.rs +++ b/ndk-sys/src/ffi_i686.rs @@ -34,10 +34,10 @@ pub const __BIONIC__: u32 = 1; pub const __WORDSIZE: u32 = 32; pub const __bos_level: u32 = 0; pub const __ANDROID_NDK__: u32 = 1; -pub const __NDK_MAJOR__: u32 = 23; -pub const __NDK_MINOR__: u32 = 1; +pub const __NDK_MAJOR__: u32 = 25; +pub const __NDK_MINOR__: u32 = 0; pub const __NDK_BETA__: u32 = 0; -pub const __NDK_BUILD__: u32 = 7779620; +pub const __NDK_BUILD__: u32 = 8775105; pub const __NDK_CANARY__: u32 = 0; pub const __ANDROID_API_FUTURE__: u32 = 10000; pub const __ANDROID_API__: u32 = 10000; @@ -369,6 +369,8 @@ pub const SO_DETACH_REUSEPORT_BPF: u32 = 68; pub const SO_PREFER_BUSY_POLL: u32 = 69; pub const SO_BUSY_POLL_BUDGET: u32 = 70; pub const SO_NETNS_COOKIE: u32 = 71; +pub const SO_BUF_LOCK: u32 = 72; +pub const SO_RESERVE_MEM: u32 = 73; pub const SOCK_IOC_TYPE: u32 = 137; pub const SIOCADDRT: u32 = 35083; pub const SIOCDELRT: u32 = 35084; @@ -1836,6 +1838,9 @@ impl AndroidBitmapFormat { impl AndroidBitmapFormat { pub const ANDROID_BITMAP_FORMAT_RGBA_F16: AndroidBitmapFormat = AndroidBitmapFormat(9); } +impl AndroidBitmapFormat { + pub const ANDROID_BITMAP_FORMAT_RGBA_1010102: AndroidBitmapFormat = AndroidBitmapFormat(10); +} #[repr(transparent)] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] pub struct AndroidBitmapFormat(pub ::std::os::raw::c_uint); @@ -1993,12 +1998,24 @@ extern "C" { pub struct AChoreographer { _unused: [u8; 0], } +pub type AVsyncId = i64; +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct AChoreographerFrameCallbackData { + _unused: [u8; 0], +} pub type AChoreographer_frameCallback = ::std::option::Option< unsafe extern "C" fn(frameTimeNanos: ::std::os::raw::c_long, data: *mut ::std::os::raw::c_void), >; pub type AChoreographer_frameCallback64 = ::std::option::Option< unsafe extern "C" fn(frameTimeNanos: i64, data: *mut ::std::os::raw::c_void), >; +pub type AChoreographer_vsyncCallback = ::std::option::Option< + unsafe extern "C" fn( + callbackData: *const AChoreographerFrameCallbackData, + data: *mut ::std::os::raw::c_void, + ), +>; pub type AChoreographer_refreshRateCallback = ::std::option::Option< unsafe extern "C" fn(vsyncPeriodNanos: i64, data: *mut ::std::os::raw::c_void), >; @@ -2035,6 +2052,13 @@ extern "C" { delayMillis: u32, ); } +extern "C" { + pub fn AChoreographer_postVsyncCallback( + choreographer: *mut AChoreographer, + callback: AChoreographer_vsyncCallback, + data: *mut ::std::os::raw::c_void, + ); +} extern "C" { pub fn AChoreographer_registerRefreshRateCallback( choreographer: *mut AChoreographer, @@ -2049,6 +2073,39 @@ extern "C" { data: *mut ::std::os::raw::c_void, ); } +extern "C" { + pub fn AChoreographerFrameCallbackData_getFrameTimeNanos( + data: *const AChoreographerFrameCallbackData, + ) -> i64; +} +extern "C" { + pub fn AChoreographerFrameCallbackData_getFrameTimelinesLength( + data: *const AChoreographerFrameCallbackData, + ) -> size_t; +} +extern "C" { + pub fn AChoreographerFrameCallbackData_getPreferredFrameTimelineIndex( + data: *const AChoreographerFrameCallbackData, + ) -> size_t; +} +extern "C" { + pub fn AChoreographerFrameCallbackData_getFrameTimelineVsyncId( + data: *const AChoreographerFrameCallbackData, + index: size_t, + ) -> AVsyncId; +} +extern "C" { + pub fn AChoreographerFrameCallbackData_getFrameTimelineExpectedPresentationTimeNanos( + data: *const AChoreographerFrameCallbackData, + index: size_t, + ) -> i64; +} +extern "C" { + pub fn AChoreographerFrameCallbackData_getFrameTimelineDeadlineNanos( + data: *const AChoreographerFrameCallbackData, + index: size_t, + ) -> i64; +} #[repr(C)] #[derive(Debug, Copy, Clone)] pub struct AConfiguration { @@ -2380,6 +2437,90 @@ extern "C" { impl ADataSpace { pub const ADATASPACE_UNKNOWN: ADataSpace = ADataSpace(0); } +impl ADataSpace { + pub const STANDARD_MASK: ADataSpace = ADataSpace(4128768); +} +impl ADataSpace { + pub const STANDARD_UNSPECIFIED: ADataSpace = ADataSpace(0); +} +impl ADataSpace { + pub const STANDARD_BT709: ADataSpace = ADataSpace(65536); +} +impl ADataSpace { + pub const STANDARD_BT601_625: ADataSpace = ADataSpace(131072); +} +impl ADataSpace { + pub const STANDARD_BT601_625_UNADJUSTED: ADataSpace = ADataSpace(196608); +} +impl ADataSpace { + pub const STANDARD_BT601_525: ADataSpace = ADataSpace(262144); +} +impl ADataSpace { + pub const STANDARD_BT601_525_UNADJUSTED: ADataSpace = ADataSpace(327680); +} +impl ADataSpace { + pub const STANDARD_BT2020: ADataSpace = ADataSpace(393216); +} +impl ADataSpace { + pub const STANDARD_BT2020_CONSTANT_LUMINANCE: ADataSpace = ADataSpace(458752); +} +impl ADataSpace { + pub const STANDARD_BT470M: ADataSpace = ADataSpace(524288); +} +impl ADataSpace { + pub const STANDARD_FILM: ADataSpace = ADataSpace(589824); +} +impl ADataSpace { + pub const STANDARD_DCI_P3: ADataSpace = ADataSpace(655360); +} +impl ADataSpace { + pub const STANDARD_ADOBE_RGB: ADataSpace = ADataSpace(720896); +} +impl ADataSpace { + pub const TRANSFER_MASK: ADataSpace = ADataSpace(130023424); +} +impl ADataSpace { + pub const TRANSFER_UNSPECIFIED: ADataSpace = ADataSpace(0); +} +impl ADataSpace { + pub const TRANSFER_LINEAR: ADataSpace = ADataSpace(4194304); +} +impl ADataSpace { + pub const TRANSFER_SRGB: ADataSpace = ADataSpace(8388608); +} +impl ADataSpace { + pub const TRANSFER_SMPTE_170M: ADataSpace = ADataSpace(12582912); +} +impl ADataSpace { + pub const TRANSFER_GAMMA2_2: ADataSpace = ADataSpace(16777216); +} +impl ADataSpace { + pub const TRANSFER_GAMMA2_6: ADataSpace = ADataSpace(20971520); +} +impl ADataSpace { + pub const TRANSFER_GAMMA2_8: ADataSpace = ADataSpace(25165824); +} +impl ADataSpace { + pub const TRANSFER_ST2084: ADataSpace = ADataSpace(29360128); +} +impl ADataSpace { + pub const TRANSFER_HLG: ADataSpace = ADataSpace(33554432); +} +impl ADataSpace { + pub const RANGE_MASK: ADataSpace = ADataSpace(939524096); +} +impl ADataSpace { + pub const RANGE_UNSPECIFIED: ADataSpace = ADataSpace(0); +} +impl ADataSpace { + pub const RANGE_FULL: ADataSpace = ADataSpace(134217728); +} +impl ADataSpace { + pub const RANGE_LIMITED: ADataSpace = ADataSpace(268435456); +} +impl ADataSpace { + pub const RANGE_EXTENDED: ADataSpace = ADataSpace(402653184); +} impl ADataSpace { pub const ADATASPACE_SCRGB_LINEAR: ADataSpace = ADataSpace(406913024); } @@ -2395,9 +2536,21 @@ impl ADataSpace { impl ADataSpace { pub const ADATASPACE_BT2020_PQ: ADataSpace = ADataSpace(163971072); } +impl ADataSpace { + pub const ADATASPACE_BT2020_ITU_PQ: ADataSpace = ADataSpace(298188800); +} impl ADataSpace { pub const ADATASPACE_ADOBE_RGB: ADataSpace = ADataSpace(151715840); } +impl ADataSpace { + pub const ADATASPACE_JFIF: ADataSpace = ADataSpace(146931712); +} +impl ADataSpace { + pub const ADATASPACE_BT601_625: ADataSpace = ADataSpace(281149440); +} +impl ADataSpace { + pub const ADATASPACE_BT601_525: ADataSpace = ADataSpace(281280512); +} impl ADataSpace { pub const ADATASPACE_BT2020: ADataSpace = ADataSpace(147193856); } @@ -2410,6 +2563,18 @@ impl ADataSpace { impl ADataSpace { pub const ADATASPACE_SRGB_LINEAR: ADataSpace = ADataSpace(138477568); } +impl ADataSpace { + pub const ADATASPACE_BT2020_HLG: ADataSpace = ADataSpace(168165376); +} +impl ADataSpace { + pub const ADATASPACE_BT2020_ITU_HLG: ADataSpace = ADataSpace(302383104); +} +impl ADataSpace { + pub const DEPTH: ADataSpace = ADataSpace(4096); +} +impl ADataSpace { + pub const DYNAMIC_DEPTH: ADataSpace = ADataSpace(4098); +} #[repr(transparent)] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] pub struct ADataSpace(pub ::std::os::raw::c_uint); @@ -2776,6 +2941,13 @@ impl AHardwareBuffer_Format { pub const AHARDWAREBUFFER_FORMAT_Y8Cb8Cr8_420: AHardwareBuffer_Format = AHardwareBuffer_Format(35); } +impl AHardwareBuffer_Format { + pub const AHARDWAREBUFFER_FORMAT_YCbCr_P010: AHardwareBuffer_Format = + AHardwareBuffer_Format(54); +} +impl AHardwareBuffer_Format { + pub const AHARDWAREBUFFER_FORMAT_R8_UNORM: AHardwareBuffer_Format = AHardwareBuffer_Format(56); +} #[repr(transparent)] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] pub struct AHardwareBuffer_Format(pub ::std::os::raw::c_uint); @@ -3995,6 +4167,7 @@ pub const AINPUT_EVENT_TYPE_MOTION: ::std::os::raw::c_uint = 2; pub const AINPUT_EVENT_TYPE_FOCUS: ::std::os::raw::c_uint = 3; pub const AINPUT_EVENT_TYPE_CAPTURE: ::std::os::raw::c_uint = 4; pub const AINPUT_EVENT_TYPE_DRAG: ::std::os::raw::c_uint = 5; +pub const AINPUT_EVENT_TYPE_TOUCH_MODE: ::std::os::raw::c_uint = 6; pub type _bindgen_ty_17 = ::std::os::raw::c_uint; pub const AKEY_EVENT_ACTION_DOWN: ::std::os::raw::c_uint = 0; pub const AKEY_EVENT_ACTION_UP: ::std::os::raw::c_uint = 1; @@ -4097,6 +4270,20 @@ pub const AMOTION_EVENT_TOOL_TYPE_MOUSE: ::std::os::raw::c_uint = 3; pub const AMOTION_EVENT_TOOL_TYPE_ERASER: ::std::os::raw::c_uint = 4; pub const AMOTION_EVENT_TOOL_TYPE_PALM: ::std::os::raw::c_uint = 5; pub type _bindgen_ty_25 = ::std::os::raw::c_uint; +impl AMotionClassification { + pub const AMOTION_EVENT_CLASSIFICATION_NONE: AMotionClassification = AMotionClassification(0); +} +impl AMotionClassification { + pub const AMOTION_EVENT_CLASSIFICATION_AMBIGUOUS_GESTURE: AMotionClassification = + AMotionClassification(1); +} +impl AMotionClassification { + pub const AMOTION_EVENT_CLASSIFICATION_DEEP_PRESS: AMotionClassification = + AMotionClassification(2); +} +#[repr(transparent)] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub struct AMotionClassification(pub u32); pub const AINPUT_SOURCE_CLASS_MASK: ::std::os::raw::c_uint = 255; pub const AINPUT_SOURCE_CLASS_NONE: ::std::os::raw::c_uint = 0; pub const AINPUT_SOURCE_CLASS_BUTTON: ::std::os::raw::c_uint = 1; @@ -4372,6 +4559,12 @@ extern "C" { history_index: size_t, ) -> f32; } +extern "C" { + pub fn AMotionEvent_getActionButton(motion_event: *const AInputEvent) -> i32; +} +extern "C" { + pub fn AMotionEvent_getClassification(motion_event: *const AInputEvent) -> i32; +} extern "C" { pub fn AMotionEvent_fromJava(env: *mut JNIEnv, motionEvent: jobject) -> *const AInputEvent; } @@ -4408,6 +4601,9 @@ extern "C" { handled: ::std::os::raw::c_int, ); } +extern "C" { + pub fn AInputQueue_fromJava(env: *mut JNIEnv, inputQueue: jobject) -> *mut AInputQueue; +} impl android_LogPriority { pub const ANDROID_LOG_UNKNOWN: android_LogPriority = android_LogPriority(0); } @@ -6532,6 +6728,133 @@ fn bindgen_test_layout_mallinfo() { extern "C" { pub fn mallinfo() -> mallinfo; } +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct mallinfo2 { + pub arena: size_t, + pub ordblks: size_t, + pub smblks: size_t, + pub hblks: size_t, + pub hblkhd: size_t, + pub usmblks: size_t, + pub fsmblks: size_t, + pub uordblks: size_t, + pub fordblks: size_t, + pub keepcost: size_t, +} +#[test] +fn bindgen_test_layout_mallinfo2() { + assert_eq!( + ::std::mem::size_of::(), + 40usize, + concat!("Size of: ", stringify!(mallinfo2)) + ); + assert_eq!( + ::std::mem::align_of::(), + 4usize, + concat!("Alignment of ", stringify!(mallinfo2)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).arena as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(mallinfo2), + "::", + stringify!(arena) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).ordblks as *const _ as usize }, + 4usize, + concat!( + "Offset of field: ", + stringify!(mallinfo2), + "::", + stringify!(ordblks) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).smblks as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(mallinfo2), + "::", + stringify!(smblks) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).hblks as *const _ as usize }, + 12usize, + concat!( + "Offset of field: ", + stringify!(mallinfo2), + "::", + stringify!(hblks) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).hblkhd as *const _ as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(mallinfo2), + "::", + stringify!(hblkhd) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).usmblks as *const _ as usize }, + 20usize, + concat!( + "Offset of field: ", + stringify!(mallinfo2), + "::", + stringify!(usmblks) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).fsmblks as *const _ as usize }, + 24usize, + concat!( + "Offset of field: ", + stringify!(mallinfo2), + "::", + stringify!(fsmblks) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).uordblks as *const _ as usize }, + 28usize, + concat!( + "Offset of field: ", + stringify!(mallinfo2), + "::", + stringify!(uordblks) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).fordblks as *const _ as usize }, + 32usize, + concat!( + "Offset of field: ", + stringify!(mallinfo2), + "::", + stringify!(fordblks) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).keepcost as *const _ as usize }, + 36usize, + concat!( + "Offset of field: ", + stringify!(mallinfo2), + "::", + stringify!(keepcost) + ) + ); +} extern "C" { pub fn malloc_info( __must_be_zero: ::std::os::raw::c_int, @@ -7177,6 +7500,19 @@ extern "C" { extern "C" { pub fn android_res_cancel(nsend_fd: ::std::os::raw::c_int); } +extern "C" { + pub fn android_tag_socket_with_uid( + sockfd: ::std::os::raw::c_int, + tag: u32, + uid: uid_t, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn android_tag_socket(sockfd: ::std::os::raw::c_int, tag: u32) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn android_untag_socket(sockfd: ::std::os::raw::c_int) -> ::std::os::raw::c_int; +} impl ANativeWindow_LegacyFormat { pub const WINDOW_FORMAT_RGBA_8888: ANativeWindow_LegacyFormat = ANativeWindow_LegacyFormat(1); } @@ -8171,6 +8507,18 @@ impl OperationCode { impl OperationCode { pub const ANEURALNETWORKS_RANK: OperationCode = OperationCode(101); } +impl OperationCode { + pub const ANEURALNETWORKS_BATCH_MATMUL: OperationCode = OperationCode(102); +} +impl OperationCode { + pub const ANEURALNETWORKS_PACK: OperationCode = OperationCode(103); +} +impl OperationCode { + pub const ANEURALNETWORKS_MIRROR_PAD: OperationCode = OperationCode(104); +} +impl OperationCode { + pub const ANEURALNETWORKS_REVERSE: OperationCode = OperationCode(105); +} #[repr(transparent)] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] pub struct OperationCode(pub ::std::os::raw::c_uint); @@ -8243,6 +8591,15 @@ impl FeatureLevelCode { impl FeatureLevelCode { pub const ANEURALNETWORKS_FEATURE_LEVEL_5: FeatureLevelCode = FeatureLevelCode(31); } +impl FeatureLevelCode { + pub const ANEURALNETWORKS_FEATURE_LEVEL_6: FeatureLevelCode = FeatureLevelCode(1000006); +} +impl FeatureLevelCode { + pub const ANEURALNETWORKS_FEATURE_LEVEL_7: FeatureLevelCode = FeatureLevelCode(1000007); +} +impl FeatureLevelCode { + pub const ANEURALNETWORKS_FEATURE_LEVEL_8: FeatureLevelCode = FeatureLevelCode(1000008); +} #[repr(transparent)] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] pub struct FeatureLevelCode(pub ::std::os::raw::c_uint); @@ -9368,10 +9725,17 @@ pub const ASENSOR_TYPE_POSE_6DOF: ::std::os::raw::c_int = 28; pub const ASENSOR_TYPE_STATIONARY_DETECT: ::std::os::raw::c_int = 29; pub const ASENSOR_TYPE_MOTION_DETECT: ::std::os::raw::c_int = 30; pub const ASENSOR_TYPE_HEART_BEAT: ::std::os::raw::c_int = 31; +pub const ASENSOR_TYPE_DYNAMIC_SENSOR_META: ::std::os::raw::c_int = 32; pub const ASENSOR_TYPE_ADDITIONAL_INFO: ::std::os::raw::c_int = 33; pub const ASENSOR_TYPE_LOW_LATENCY_OFFBODY_DETECT: ::std::os::raw::c_int = 34; pub const ASENSOR_TYPE_ACCELEROMETER_UNCALIBRATED: ::std::os::raw::c_int = 35; pub const ASENSOR_TYPE_HINGE_ANGLE: ::std::os::raw::c_int = 36; +pub const ASENSOR_TYPE_HEAD_TRACKER: ::std::os::raw::c_int = 37; +pub const ASENSOR_TYPE_ACCELEROMETER_LIMITED_AXES: ::std::os::raw::c_int = 38; +pub const ASENSOR_TYPE_GYROSCOPE_LIMITED_AXES: ::std::os::raw::c_int = 39; +pub const ASENSOR_TYPE_ACCELEROMETER_LIMITED_AXES_UNCALIBRATED: ::std::os::raw::c_int = 40; +pub const ASENSOR_TYPE_GYROSCOPE_LIMITED_AXES_UNCALIBRATED: ::std::os::raw::c_int = 41; +pub const ASENSOR_TYPE_HEADING: ::std::os::raw::c_int = 42; pub type _bindgen_ty_38 = ::std::os::raw::c_int; pub const ASENSOR_STATUS_NO_CONTACT: ::std::os::raw::c_int = -1; pub const ASENSOR_STATUS_UNRELIABLE: ::std::os::raw::c_int = 0; @@ -10025,484 +10389,1232 @@ fn bindgen_test_layout_AAdditionalInfoEvent() { ); } #[repr(C)] -#[derive(Copy, Clone)] -pub struct ASensorEvent { - pub version: i32, - pub sensor: i32, - pub type_: i32, - pub reserved0: i32, - pub timestamp: i64, - pub __bindgen_anon_1: ASensorEvent__bindgen_ty_1, - pub flags: u32, - pub reserved1: [i32; 3usize], -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union ASensorEvent__bindgen_ty_1 { - pub __bindgen_anon_1: ASensorEvent__bindgen_ty_1__bindgen_ty_1, - pub u64_: ASensorEvent__bindgen_ty_1__bindgen_ty_2, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union ASensorEvent__bindgen_ty_1__bindgen_ty_1 { - pub data: [f32; 16usize], - pub vector: ASensorVector, - pub acceleration: ASensorVector, - pub gyro: ASensorVector, - pub magnetic: ASensorVector, - pub temperature: f32, - pub distance: f32, - pub light: f32, - pub pressure: f32, - pub relative_humidity: f32, - pub uncalibrated_acceleration: AUncalibratedEvent, - pub uncalibrated_gyro: AUncalibratedEvent, - pub uncalibrated_magnetic: AUncalibratedEvent, - pub meta_data: AMetaDataEvent, - pub heart_rate: AHeartRateEvent, - pub dynamic_sensor_meta: ADynamicSensorEvent, - pub additional_info: AAdditionalInfoEvent, +#[derive(Debug, Copy, Clone)] +pub struct AHeadTrackerEvent { + pub rx: f32, + pub ry: f32, + pub rz: f32, + pub vx: f32, + pub vy: f32, + pub vz: f32, + pub discontinuity_count: i32, } #[test] -fn bindgen_test_layout_ASensorEvent__bindgen_ty_1__bindgen_ty_1() { +fn bindgen_test_layout_AHeadTrackerEvent() { assert_eq!( - ::std::mem::size_of::(), - 64usize, - concat!( - "Size of: ", - stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_1) - ) + ::std::mem::size_of::(), + 28usize, + concat!("Size of: ", stringify!(AHeadTrackerEvent)) ); assert_eq!( - ::std::mem::align_of::(), + ::std::mem::align_of::(), 4usize, - concat!( - "Alignment of ", - stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_1) - ) + concat!("Alignment of ", stringify!(AHeadTrackerEvent)) ); assert_eq!( - unsafe { - &(*(::std::ptr::null::())).data as *const _ - as usize - }, + unsafe { &(*(::std::ptr::null::())).rx as *const _ as usize }, 0usize, concat!( "Offset of field: ", - stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_1), + stringify!(AHeadTrackerEvent), "::", - stringify!(data) + stringify!(rx) ) ); assert_eq!( - unsafe { - &(*(::std::ptr::null::())).vector as *const _ - as usize - }, - 0usize, + unsafe { &(*(::std::ptr::null::())).ry as *const _ as usize }, + 4usize, concat!( "Offset of field: ", - stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_1), + stringify!(AHeadTrackerEvent), "::", - stringify!(vector) + stringify!(ry) ) ); assert_eq!( - unsafe { - &(*(::std::ptr::null::())).acceleration - as *const _ as usize - }, - 0usize, + unsafe { &(*(::std::ptr::null::())).rz as *const _ as usize }, + 8usize, concat!( "Offset of field: ", - stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_1), + stringify!(AHeadTrackerEvent), "::", - stringify!(acceleration) + stringify!(rz) ) ); assert_eq!( - unsafe { - &(*(::std::ptr::null::())).gyro as *const _ - as usize - }, - 0usize, + unsafe { &(*(::std::ptr::null::())).vx as *const _ as usize }, + 12usize, concat!( "Offset of field: ", - stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_1), + stringify!(AHeadTrackerEvent), "::", - stringify!(gyro) + stringify!(vx) ) ); assert_eq!( - unsafe { - &(*(::std::ptr::null::())).magnetic - as *const _ as usize - }, - 0usize, + unsafe { &(*(::std::ptr::null::())).vy as *const _ as usize }, + 16usize, concat!( "Offset of field: ", - stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_1), + stringify!(AHeadTrackerEvent), "::", - stringify!(magnetic) + stringify!(vy) ) ); assert_eq!( - unsafe { - &(*(::std::ptr::null::())).temperature - as *const _ as usize - }, - 0usize, + unsafe { &(*(::std::ptr::null::())).vz as *const _ as usize }, + 20usize, concat!( "Offset of field: ", - stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_1), + stringify!(AHeadTrackerEvent), "::", - stringify!(temperature) + stringify!(vz) ) ); assert_eq!( unsafe { - &(*(::std::ptr::null::())).distance - as *const _ as usize + &(*(::std::ptr::null::())).discontinuity_count as *const _ as usize }, - 0usize, + 24usize, concat!( "Offset of field: ", - stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_1), + stringify!(AHeadTrackerEvent), "::", - stringify!(distance) + stringify!(discontinuity_count) ) ); +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct ALimitedAxesImuEvent { + pub __bindgen_anon_1: ALimitedAxesImuEvent__bindgen_ty_1, + pub __bindgen_anon_2: ALimitedAxesImuEvent__bindgen_ty_2, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union ALimitedAxesImuEvent__bindgen_ty_1 { + pub calib: [f32; 3usize], + pub __bindgen_anon_1: ALimitedAxesImuEvent__bindgen_ty_1__bindgen_ty_1, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ALimitedAxesImuEvent__bindgen_ty_1__bindgen_ty_1 { + pub x: f32, + pub y: f32, + pub z: f32, +} +#[test] +fn bindgen_test_layout_ALimitedAxesImuEvent__bindgen_ty_1__bindgen_ty_1() { assert_eq!( - unsafe { - &(*(::std::ptr::null::())).light as *const _ - as usize - }, - 0usize, + ::std::mem::size_of::(), + 12usize, concat!( - "Offset of field: ", - stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_1), - "::", - stringify!(light) + "Size of: ", + stringify!(ALimitedAxesImuEvent__bindgen_ty_1__bindgen_ty_1) ) ); assert_eq!( - unsafe { - &(*(::std::ptr::null::())).pressure - as *const _ as usize - }, - 0usize, + ::std::mem::align_of::(), + 4usize, concat!( - "Offset of field: ", - stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_1), - "::", - stringify!(pressure) + "Alignment of ", + stringify!(ALimitedAxesImuEvent__bindgen_ty_1__bindgen_ty_1) ) ); assert_eq!( unsafe { - &(*(::std::ptr::null::())).relative_humidity + &(*(::std::ptr::null::())).x as *const _ as usize }, 0usize, concat!( "Offset of field: ", - stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_1), + stringify!(ALimitedAxesImuEvent__bindgen_ty_1__bindgen_ty_1), "::", - stringify!(relative_humidity) + stringify!(x) ) ); assert_eq!( unsafe { - &(*(::std::ptr::null::())) - .uncalibrated_acceleration as *const _ as usize + &(*(::std::ptr::null::())).y + as *const _ as usize }, - 0usize, + 4usize, concat!( "Offset of field: ", - stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_1), + stringify!(ALimitedAxesImuEvent__bindgen_ty_1__bindgen_ty_1), "::", - stringify!(uncalibrated_acceleration) + stringify!(y) ) ); assert_eq!( unsafe { - &(*(::std::ptr::null::())).uncalibrated_gyro + &(*(::std::ptr::null::())).z as *const _ as usize }, - 0usize, + 8usize, concat!( "Offset of field: ", - stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_1), + stringify!(ALimitedAxesImuEvent__bindgen_ty_1__bindgen_ty_1), "::", - stringify!(uncalibrated_gyro) + stringify!(z) + ) + ); +} +#[test] +fn bindgen_test_layout_ALimitedAxesImuEvent__bindgen_ty_1() { + assert_eq!( + ::std::mem::size_of::(), + 12usize, + concat!("Size of: ", stringify!(ALimitedAxesImuEvent__bindgen_ty_1)) + ); + assert_eq!( + ::std::mem::align_of::(), + 4usize, + concat!( + "Alignment of ", + stringify!(ALimitedAxesImuEvent__bindgen_ty_1) ) ); assert_eq!( unsafe { - &(*(::std::ptr::null::())) - .uncalibrated_magnetic as *const _ as usize + &(*(::std::ptr::null::())).calib as *const _ + as usize }, 0usize, concat!( "Offset of field: ", - stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_1), + stringify!(ALimitedAxesImuEvent__bindgen_ty_1), "::", - stringify!(uncalibrated_magnetic) + stringify!(calib) + ) + ); +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union ALimitedAxesImuEvent__bindgen_ty_2 { + pub supported: [f32; 3usize], + pub __bindgen_anon_1: ALimitedAxesImuEvent__bindgen_ty_2__bindgen_ty_1, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ALimitedAxesImuEvent__bindgen_ty_2__bindgen_ty_1 { + pub x_supported: f32, + pub y_supported: f32, + pub z_supported: f32, +} +#[test] +fn bindgen_test_layout_ALimitedAxesImuEvent__bindgen_ty_2__bindgen_ty_1() { + assert_eq!( + ::std::mem::size_of::(), + 12usize, + concat!( + "Size of: ", + stringify!(ALimitedAxesImuEvent__bindgen_ty_2__bindgen_ty_1) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 4usize, + concat!( + "Alignment of ", + stringify!(ALimitedAxesImuEvent__bindgen_ty_2__bindgen_ty_1) ) ); assert_eq!( unsafe { - &(*(::std::ptr::null::())).meta_data + &(*(::std::ptr::null::())).x_supported as *const _ as usize }, 0usize, concat!( "Offset of field: ", - stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_1), + stringify!(ALimitedAxesImuEvent__bindgen_ty_2__bindgen_ty_1), "::", - stringify!(meta_data) + stringify!(x_supported) ) ); assert_eq!( unsafe { - &(*(::std::ptr::null::())).heart_rate + &(*(::std::ptr::null::())).y_supported as *const _ as usize }, - 0usize, + 4usize, concat!( "Offset of field: ", - stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_1), + stringify!(ALimitedAxesImuEvent__bindgen_ty_2__bindgen_ty_1), "::", - stringify!(heart_rate) + stringify!(y_supported) ) ); assert_eq!( unsafe { - &(*(::std::ptr::null::())).dynamic_sensor_meta + &(*(::std::ptr::null::())).z_supported as *const _ as usize }, - 0usize, + 8usize, concat!( "Offset of field: ", - stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_1), + stringify!(ALimitedAxesImuEvent__bindgen_ty_2__bindgen_ty_1), "::", - stringify!(dynamic_sensor_meta) + stringify!(z_supported) + ) + ); +} +#[test] +fn bindgen_test_layout_ALimitedAxesImuEvent__bindgen_ty_2() { + assert_eq!( + ::std::mem::size_of::(), + 12usize, + concat!("Size of: ", stringify!(ALimitedAxesImuEvent__bindgen_ty_2)) + ); + assert_eq!( + ::std::mem::align_of::(), + 4usize, + concat!( + "Alignment of ", + stringify!(ALimitedAxesImuEvent__bindgen_ty_2) ) ); assert_eq!( unsafe { - &(*(::std::ptr::null::())).additional_info - as *const _ as usize + &(*(::std::ptr::null::())).supported as *const _ + as usize }, 0usize, concat!( "Offset of field: ", - stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_1), + stringify!(ALimitedAxesImuEvent__bindgen_ty_2), "::", - stringify!(additional_info) + stringify!(supported) ) ); } +#[test] +fn bindgen_test_layout_ALimitedAxesImuEvent() { + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!("Size of: ", stringify!(ALimitedAxesImuEvent)) + ); + assert_eq!( + ::std::mem::align_of::(), + 4usize, + concat!("Alignment of ", stringify!(ALimitedAxesImuEvent)) + ); +} #[repr(C)] #[derive(Copy, Clone)] -pub union ASensorEvent__bindgen_ty_1__bindgen_ty_2 { - pub data: [u64; 8usize], - pub step_counter: u64, +pub struct ALimitedAxesImuUncalibratedEvent { + pub __bindgen_anon_1: ALimitedAxesImuUncalibratedEvent__bindgen_ty_1, + pub __bindgen_anon_2: ALimitedAxesImuUncalibratedEvent__bindgen_ty_2, + pub __bindgen_anon_3: ALimitedAxesImuUncalibratedEvent__bindgen_ty_3, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union ALimitedAxesImuUncalibratedEvent__bindgen_ty_1 { + pub uncalib: [f32; 3usize], + pub __bindgen_anon_1: ALimitedAxesImuUncalibratedEvent__bindgen_ty_1__bindgen_ty_1, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ALimitedAxesImuUncalibratedEvent__bindgen_ty_1__bindgen_ty_1 { + pub x_uncalib: f32, + pub y_uncalib: f32, + pub z_uncalib: f32, } #[test] -fn bindgen_test_layout_ASensorEvent__bindgen_ty_1__bindgen_ty_2() { +fn bindgen_test_layout_ALimitedAxesImuUncalibratedEvent__bindgen_ty_1__bindgen_ty_1() { assert_eq!( - ::std::mem::size_of::(), - 64usize, + ::std::mem::size_of::(), + 12usize, concat!( "Size of: ", - stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_2) + stringify!(ALimitedAxesImuUncalibratedEvent__bindgen_ty_1__bindgen_ty_1) ) ); assert_eq!( - ::std::mem::align_of::(), + ::std::mem::align_of::(), 4usize, concat!( "Alignment of ", - stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_2) + stringify!(ALimitedAxesImuUncalibratedEvent__bindgen_ty_1__bindgen_ty_1) ) ); assert_eq!( unsafe { - &(*(::std::ptr::null::())).data as *const _ - as usize + &(*(::std::ptr::null::())) + .x_uncalib as *const _ as usize }, 0usize, concat!( "Offset of field: ", - stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_2), + stringify!(ALimitedAxesImuUncalibratedEvent__bindgen_ty_1__bindgen_ty_1), "::", - stringify!(data) + stringify!(x_uncalib) ) ); assert_eq!( unsafe { - &(*(::std::ptr::null::())).step_counter - as *const _ as usize + &(*(::std::ptr::null::())) + .y_uncalib as *const _ as usize }, - 0usize, + 4usize, concat!( "Offset of field: ", - stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_2), + stringify!(ALimitedAxesImuUncalibratedEvent__bindgen_ty_1__bindgen_ty_1), "::", - stringify!(step_counter) + stringify!(y_uncalib) ) ); -} -#[test] -fn bindgen_test_layout_ASensorEvent__bindgen_ty_1() { assert_eq!( - ::std::mem::size_of::(), - 64usize, - concat!("Size of: ", stringify!(ASensorEvent__bindgen_ty_1)) - ); + unsafe { + &(*(::std::ptr::null::())) + .z_uncalib as *const _ as usize + }, + 8usize, + concat!( + "Offset of field: ", + stringify!(ALimitedAxesImuUncalibratedEvent__bindgen_ty_1__bindgen_ty_1), + "::", + stringify!(z_uncalib) + ) + ); +} +#[test] +fn bindgen_test_layout_ALimitedAxesImuUncalibratedEvent__bindgen_ty_1() { assert_eq!( - ::std::mem::align_of::(), + ::std::mem::size_of::(), + 12usize, + concat!( + "Size of: ", + stringify!(ALimitedAxesImuUncalibratedEvent__bindgen_ty_1) + ) + ); + assert_eq!( + ::std::mem::align_of::(), 4usize, - concat!("Alignment of ", stringify!(ASensorEvent__bindgen_ty_1)) + concat!( + "Alignment of ", + stringify!(ALimitedAxesImuUncalibratedEvent__bindgen_ty_1) + ) ); assert_eq!( - unsafe { &(*(::std::ptr::null::())).u64_ as *const _ as usize }, + unsafe { + &(*(::std::ptr::null::())).uncalib + as *const _ as usize + }, 0usize, concat!( "Offset of field: ", - stringify!(ASensorEvent__bindgen_ty_1), + stringify!(ALimitedAxesImuUncalibratedEvent__bindgen_ty_1), "::", - stringify!(u64_) + stringify!(uncalib) ) ); } +#[repr(C)] +#[derive(Copy, Clone)] +pub union ALimitedAxesImuUncalibratedEvent__bindgen_ty_2 { + pub bias: [f32; 3usize], + pub __bindgen_anon_1: ALimitedAxesImuUncalibratedEvent__bindgen_ty_2__bindgen_ty_1, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ALimitedAxesImuUncalibratedEvent__bindgen_ty_2__bindgen_ty_1 { + pub x_bias: f32, + pub y_bias: f32, + pub z_bias: f32, +} #[test] -fn bindgen_test_layout_ASensorEvent() { +fn bindgen_test_layout_ALimitedAxesImuUncalibratedEvent__bindgen_ty_2__bindgen_ty_1() { assert_eq!( - ::std::mem::size_of::(), - 104usize, - concat!("Size of: ", stringify!(ASensorEvent)) + ::std::mem::size_of::(), + 12usize, + concat!( + "Size of: ", + stringify!(ALimitedAxesImuUncalibratedEvent__bindgen_ty_2__bindgen_ty_1) + ) ); assert_eq!( - ::std::mem::align_of::(), + ::std::mem::align_of::(), 4usize, - concat!("Alignment of ", stringify!(ASensorEvent)) + concat!( + "Alignment of ", + stringify!(ALimitedAxesImuUncalibratedEvent__bindgen_ty_2__bindgen_ty_1) + ) ); assert_eq!( - unsafe { &(*(::std::ptr::null::())).version as *const _ as usize }, + unsafe { + &(*(::std::ptr::null::())) + .x_bias as *const _ as usize + }, 0usize, concat!( "Offset of field: ", - stringify!(ASensorEvent), + stringify!(ALimitedAxesImuUncalibratedEvent__bindgen_ty_2__bindgen_ty_1), "::", - stringify!(version) + stringify!(x_bias) ) ); assert_eq!( - unsafe { &(*(::std::ptr::null::())).sensor as *const _ as usize }, + unsafe { + &(*(::std::ptr::null::())) + .y_bias as *const _ as usize + }, 4usize, concat!( "Offset of field: ", - stringify!(ASensorEvent), + stringify!(ALimitedAxesImuUncalibratedEvent__bindgen_ty_2__bindgen_ty_1), "::", - stringify!(sensor) + stringify!(y_bias) ) ); assert_eq!( - unsafe { &(*(::std::ptr::null::())).type_ as *const _ as usize }, + unsafe { + &(*(::std::ptr::null::())) + .z_bias as *const _ as usize + }, 8usize, concat!( "Offset of field: ", - stringify!(ASensorEvent), + stringify!(ALimitedAxesImuUncalibratedEvent__bindgen_ty_2__bindgen_ty_1), "::", - stringify!(type_) + stringify!(z_bias) ) ); +} +#[test] +fn bindgen_test_layout_ALimitedAxesImuUncalibratedEvent__bindgen_ty_2() { assert_eq!( - unsafe { &(*(::std::ptr::null::())).reserved0 as *const _ as usize }, + ::std::mem::size_of::(), 12usize, + concat!( + "Size of: ", + stringify!(ALimitedAxesImuUncalibratedEvent__bindgen_ty_2) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 4usize, + concat!( + "Alignment of ", + stringify!(ALimitedAxesImuUncalibratedEvent__bindgen_ty_2) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).bias + as *const _ as usize + }, + 0usize, concat!( "Offset of field: ", - stringify!(ASensorEvent), + stringify!(ALimitedAxesImuUncalibratedEvent__bindgen_ty_2), "::", - stringify!(reserved0) + stringify!(bias) + ) + ); +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union ALimitedAxesImuUncalibratedEvent__bindgen_ty_3 { + pub supported: [f32; 3usize], + pub __bindgen_anon_1: ALimitedAxesImuUncalibratedEvent__bindgen_ty_3__bindgen_ty_1, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ALimitedAxesImuUncalibratedEvent__bindgen_ty_3__bindgen_ty_1 { + pub x_supported: f32, + pub y_supported: f32, + pub z_supported: f32, +} +#[test] +fn bindgen_test_layout_ALimitedAxesImuUncalibratedEvent__bindgen_ty_3__bindgen_ty_1() { + assert_eq!( + ::std::mem::size_of::(), + 12usize, + concat!( + "Size of: ", + stringify!(ALimitedAxesImuUncalibratedEvent__bindgen_ty_3__bindgen_ty_1) ) ); assert_eq!( - unsafe { &(*(::std::ptr::null::())).timestamp as *const _ as usize }, - 16usize, + ::std::mem::align_of::(), + 4usize, + concat!( + "Alignment of ", + stringify!(ALimitedAxesImuUncalibratedEvent__bindgen_ty_3__bindgen_ty_1) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())) + .x_supported as *const _ as usize + }, + 0usize, concat!( "Offset of field: ", - stringify!(ASensorEvent), + stringify!(ALimitedAxesImuUncalibratedEvent__bindgen_ty_3__bindgen_ty_1), "::", - stringify!(timestamp) + stringify!(x_supported) ) ); assert_eq!( - unsafe { &(*(::std::ptr::null::())).flags as *const _ as usize }, - 88usize, + unsafe { + &(*(::std::ptr::null::())) + .y_supported as *const _ as usize + }, + 4usize, concat!( "Offset of field: ", - stringify!(ASensorEvent), + stringify!(ALimitedAxesImuUncalibratedEvent__bindgen_ty_3__bindgen_ty_1), "::", - stringify!(flags) + stringify!(y_supported) ) ); assert_eq!( - unsafe { &(*(::std::ptr::null::())).reserved1 as *const _ as usize }, - 92usize, + unsafe { + &(*(::std::ptr::null::())) + .z_supported as *const _ as usize + }, + 8usize, concat!( "Offset of field: ", - stringify!(ASensorEvent), + stringify!(ALimitedAxesImuUncalibratedEvent__bindgen_ty_3__bindgen_ty_1), "::", - stringify!(reserved1) + stringify!(z_supported) ) ); } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ASensorManager { - _unused: [u8; 0], +#[test] +fn bindgen_test_layout_ALimitedAxesImuUncalibratedEvent__bindgen_ty_3() { + assert_eq!( + ::std::mem::size_of::(), + 12usize, + concat!( + "Size of: ", + stringify!(ALimitedAxesImuUncalibratedEvent__bindgen_ty_3) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 4usize, + concat!( + "Alignment of ", + stringify!(ALimitedAxesImuUncalibratedEvent__bindgen_ty_3) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).supported + as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ALimitedAxesImuUncalibratedEvent__bindgen_ty_3), + "::", + stringify!(supported) + ) + ); } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ASensorEventQueue { - _unused: [u8; 0], +#[test] +fn bindgen_test_layout_ALimitedAxesImuUncalibratedEvent() { + assert_eq!( + ::std::mem::size_of::(), + 36usize, + concat!("Size of: ", stringify!(ALimitedAxesImuUncalibratedEvent)) + ); + assert_eq!( + ::std::mem::align_of::(), + 4usize, + concat!( + "Alignment of ", + stringify!(ALimitedAxesImuUncalibratedEvent) + ) + ); } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct ASensor { - _unused: [u8; 0], +pub struct AHeadingEvent { + pub heading: f32, + pub accuracy: f32, } -pub type ASensorRef = *const ASensor; -pub type ASensorList = *const ASensorRef; -extern "C" { - pub fn ASensorManager_getInstance() -> *mut ASensorManager; +#[test] +fn bindgen_test_layout_AHeadingEvent() { + assert_eq!( + ::std::mem::size_of::(), + 8usize, + concat!("Size of: ", stringify!(AHeadingEvent)) + ); + assert_eq!( + ::std::mem::align_of::(), + 4usize, + concat!("Alignment of ", stringify!(AHeadingEvent)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).heading as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(AHeadingEvent), + "::", + stringify!(heading) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).accuracy as *const _ as usize }, + 4usize, + concat!( + "Offset of field: ", + stringify!(AHeadingEvent), + "::", + stringify!(accuracy) + ) + ); } -extern "C" { - pub fn ASensorManager_getInstanceForPackage( - packageName: *const ::std::os::raw::c_char, - ) -> *mut ASensorManager; +#[repr(C)] +#[derive(Copy, Clone)] +pub struct ASensorEvent { + pub version: i32, + pub sensor: i32, + pub type_: i32, + pub reserved0: i32, + pub timestamp: i64, + pub __bindgen_anon_1: ASensorEvent__bindgen_ty_1, + pub flags: u32, + pub reserved1: [i32; 3usize], } -extern "C" { - pub fn ASensorManager_getSensorList( - manager: *mut ASensorManager, - list: *mut ASensorList, - ) -> ::std::os::raw::c_int; +#[repr(C)] +#[derive(Copy, Clone)] +pub union ASensorEvent__bindgen_ty_1 { + pub __bindgen_anon_1: ASensorEvent__bindgen_ty_1__bindgen_ty_1, + pub u64_: ASensorEvent__bindgen_ty_1__bindgen_ty_2, } -extern "C" { - pub fn ASensorManager_getDefaultSensor( - manager: *mut ASensorManager, - type_: ::std::os::raw::c_int, - ) -> *const ASensor; +#[repr(C)] +#[derive(Copy, Clone)] +pub union ASensorEvent__bindgen_ty_1__bindgen_ty_1 { + pub data: [f32; 16usize], + pub vector: ASensorVector, + pub acceleration: ASensorVector, + pub gyro: ASensorVector, + pub magnetic: ASensorVector, + pub temperature: f32, + pub distance: f32, + pub light: f32, + pub pressure: f32, + pub relative_humidity: f32, + pub uncalibrated_acceleration: AUncalibratedEvent, + pub uncalibrated_gyro: AUncalibratedEvent, + pub uncalibrated_magnetic: AUncalibratedEvent, + pub meta_data: AMetaDataEvent, + pub heart_rate: AHeartRateEvent, + pub dynamic_sensor_meta: ADynamicSensorEvent, + pub additional_info: AAdditionalInfoEvent, + pub head_tracker: AHeadTrackerEvent, + pub limited_axes_imu: ALimitedAxesImuEvent, + pub limited_axes_imu_uncalibrated: ALimitedAxesImuUncalibratedEvent, + pub heading: AHeadingEvent, } -extern "C" { - pub fn ASensorManager_getDefaultSensorEx( - manager: *mut ASensorManager, - type_: ::std::os::raw::c_int, - wakeUp: bool, - ) -> *const ASensor; +#[test] +fn bindgen_test_layout_ASensorEvent__bindgen_ty_1__bindgen_ty_1() { + assert_eq!( + ::std::mem::size_of::(), + 64usize, + concat!( + "Size of: ", + stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_1) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 4usize, + concat!( + "Alignment of ", + stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_1) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).data as *const _ + as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_1), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).vector as *const _ + as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_1), + "::", + stringify!(vector) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).acceleration + as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_1), + "::", + stringify!(acceleration) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).gyro as *const _ + as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_1), + "::", + stringify!(gyro) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).magnetic + as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_1), + "::", + stringify!(magnetic) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).temperature + as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_1), + "::", + stringify!(temperature) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).distance + as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_1), + "::", + stringify!(distance) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).light as *const _ + as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_1), + "::", + stringify!(light) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).pressure + as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_1), + "::", + stringify!(pressure) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).relative_humidity + as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_1), + "::", + stringify!(relative_humidity) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())) + .uncalibrated_acceleration as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_1), + "::", + stringify!(uncalibrated_acceleration) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).uncalibrated_gyro + as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_1), + "::", + stringify!(uncalibrated_gyro) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())) + .uncalibrated_magnetic as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_1), + "::", + stringify!(uncalibrated_magnetic) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).meta_data + as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_1), + "::", + stringify!(meta_data) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).heart_rate + as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_1), + "::", + stringify!(heart_rate) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).dynamic_sensor_meta + as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_1), + "::", + stringify!(dynamic_sensor_meta) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).additional_info + as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_1), + "::", + stringify!(additional_info) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).head_tracker + as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_1), + "::", + stringify!(head_tracker) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).limited_axes_imu + as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_1), + "::", + stringify!(limited_axes_imu) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())) + .limited_axes_imu_uncalibrated as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_1), + "::", + stringify!(limited_axes_imu_uncalibrated) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).heading as *const _ + as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_1), + "::", + stringify!(heading) + ) + ); +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union ASensorEvent__bindgen_ty_1__bindgen_ty_2 { + pub data: [u64; 8usize], + pub step_counter: u64, +} +#[test] +fn bindgen_test_layout_ASensorEvent__bindgen_ty_1__bindgen_ty_2() { + assert_eq!( + ::std::mem::size_of::(), + 64usize, + concat!( + "Size of: ", + stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_2) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 4usize, + concat!( + "Alignment of ", + stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_2) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).data as *const _ + as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_2), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).step_counter + as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_2), + "::", + stringify!(step_counter) + ) + ); +} +#[test] +fn bindgen_test_layout_ASensorEvent__bindgen_ty_1() { + assert_eq!( + ::std::mem::size_of::(), + 64usize, + concat!("Size of: ", stringify!(ASensorEvent__bindgen_ty_1)) + ); + assert_eq!( + ::std::mem::align_of::(), + 4usize, + concat!("Alignment of ", stringify!(ASensorEvent__bindgen_ty_1)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).u64_ as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ASensorEvent__bindgen_ty_1), + "::", + stringify!(u64_) + ) + ); +} +#[test] +fn bindgen_test_layout_ASensorEvent() { + assert_eq!( + ::std::mem::size_of::(), + 104usize, + concat!("Size of: ", stringify!(ASensorEvent)) + ); + assert_eq!( + ::std::mem::align_of::(), + 4usize, + concat!("Alignment of ", stringify!(ASensorEvent)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).version as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ASensorEvent), + "::", + stringify!(version) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).sensor as *const _ as usize }, + 4usize, + concat!( + "Offset of field: ", + stringify!(ASensorEvent), + "::", + stringify!(sensor) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).type_ as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(ASensorEvent), + "::", + stringify!(type_) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).reserved0 as *const _ as usize }, + 12usize, + concat!( + "Offset of field: ", + stringify!(ASensorEvent), + "::", + stringify!(reserved0) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).timestamp as *const _ as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(ASensorEvent), + "::", + stringify!(timestamp) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).flags as *const _ as usize }, + 88usize, + concat!( + "Offset of field: ", + stringify!(ASensorEvent), + "::", + stringify!(flags) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).reserved1 as *const _ as usize }, + 92usize, + concat!( + "Offset of field: ", + stringify!(ASensorEvent), + "::", + stringify!(reserved1) + ) + ); +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ASensorManager { + _unused: [u8; 0], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ASensorEventQueue { + _unused: [u8; 0], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ASensor { + _unused: [u8; 0], +} +pub type ASensorRef = *const ASensor; +pub type ASensorList = *const ASensorRef; +extern "C" { + pub fn ASensorManager_getInstance() -> *mut ASensorManager; +} +extern "C" { + pub fn ASensorManager_getInstanceForPackage( + packageName: *const ::std::os::raw::c_char, + ) -> *mut ASensorManager; +} +extern "C" { + pub fn ASensorManager_getSensorList( + manager: *mut ASensorManager, + list: *mut ASensorList, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn ASensorManager_getDynamicSensorList( + manager: *mut ASensorManager, + list: *mut ASensorList, + ) -> ssize_t; +} +extern "C" { + pub fn ASensorManager_getDefaultSensor( + manager: *mut ASensorManager, + type_: ::std::os::raw::c_int, + ) -> *const ASensor; +} +extern "C" { + pub fn ASensorManager_getDefaultSensorEx( + manager: *mut ASensorManager, + type_: ::std::os::raw::c_int, + wakeUp: bool, + ) -> *const ASensor; } extern "C" { pub fn ASensorManager_createEventQueue( @@ -16286,23 +17398,81 @@ pub const AAUDIO_CONTENT_TYPE_MOVIE: ::std::os::raw::c_uint = 3; pub const AAUDIO_CONTENT_TYPE_SONIFICATION: ::std::os::raw::c_uint = 4; pub type _bindgen_ty_54 = ::std::os::raw::c_uint; pub type aaudio_content_type_t = i32; +pub const AAUDIO_SPATIALIZATION_BEHAVIOR_AUTO: ::std::os::raw::c_uint = 1; +pub const AAUDIO_SPATIALIZATION_BEHAVIOR_NEVER: ::std::os::raw::c_uint = 2; +pub type _bindgen_ty_55 = ::std::os::raw::c_uint; +pub type aaudio_spatialization_behavior_t = i32; pub const AAUDIO_INPUT_PRESET_GENERIC: ::std::os::raw::c_uint = 1; pub const AAUDIO_INPUT_PRESET_CAMCORDER: ::std::os::raw::c_uint = 5; pub const AAUDIO_INPUT_PRESET_VOICE_RECOGNITION: ::std::os::raw::c_uint = 6; pub const AAUDIO_INPUT_PRESET_VOICE_COMMUNICATION: ::std::os::raw::c_uint = 7; pub const AAUDIO_INPUT_PRESET_UNPROCESSED: ::std::os::raw::c_uint = 9; pub const AAUDIO_INPUT_PRESET_VOICE_PERFORMANCE: ::std::os::raw::c_uint = 10; -pub type _bindgen_ty_55 = ::std::os::raw::c_uint; +pub type _bindgen_ty_56 = ::std::os::raw::c_uint; pub type aaudio_input_preset_t = i32; pub const AAUDIO_ALLOW_CAPTURE_BY_ALL: ::std::os::raw::c_uint = 1; pub const AAUDIO_ALLOW_CAPTURE_BY_SYSTEM: ::std::os::raw::c_uint = 2; pub const AAUDIO_ALLOW_CAPTURE_BY_NONE: ::std::os::raw::c_uint = 3; -pub type _bindgen_ty_56 = ::std::os::raw::c_uint; +pub type _bindgen_ty_57 = ::std::os::raw::c_uint; pub type aaudio_allowed_capture_policy_t = i32; pub const AAUDIO_SESSION_ID_NONE: ::std::os::raw::c_int = -1; pub const AAUDIO_SESSION_ID_ALLOCATE: ::std::os::raw::c_int = 0; -pub type _bindgen_ty_57 = ::std::os::raw::c_int; +pub type _bindgen_ty_58 = ::std::os::raw::c_int; pub type aaudio_session_id_t = i32; +pub const AAUDIO_CHANNEL_INVALID: ::std::os::raw::c_int = -1; +pub const AAUDIO_CHANNEL_FRONT_LEFT: ::std::os::raw::c_int = 1; +pub const AAUDIO_CHANNEL_FRONT_RIGHT: ::std::os::raw::c_int = 2; +pub const AAUDIO_CHANNEL_FRONT_CENTER: ::std::os::raw::c_int = 4; +pub const AAUDIO_CHANNEL_LOW_FREQUENCY: ::std::os::raw::c_int = 8; +pub const AAUDIO_CHANNEL_BACK_LEFT: ::std::os::raw::c_int = 16; +pub const AAUDIO_CHANNEL_BACK_RIGHT: ::std::os::raw::c_int = 32; +pub const AAUDIO_CHANNEL_FRONT_LEFT_OF_CENTER: ::std::os::raw::c_int = 64; +pub const AAUDIO_CHANNEL_FRONT_RIGHT_OF_CENTER: ::std::os::raw::c_int = 128; +pub const AAUDIO_CHANNEL_BACK_CENTER: ::std::os::raw::c_int = 256; +pub const AAUDIO_CHANNEL_SIDE_LEFT: ::std::os::raw::c_int = 512; +pub const AAUDIO_CHANNEL_SIDE_RIGHT: ::std::os::raw::c_int = 1024; +pub const AAUDIO_CHANNEL_TOP_CENTER: ::std::os::raw::c_int = 2048; +pub const AAUDIO_CHANNEL_TOP_FRONT_LEFT: ::std::os::raw::c_int = 4096; +pub const AAUDIO_CHANNEL_TOP_FRONT_CENTER: ::std::os::raw::c_int = 8192; +pub const AAUDIO_CHANNEL_TOP_FRONT_RIGHT: ::std::os::raw::c_int = 16384; +pub const AAUDIO_CHANNEL_TOP_BACK_LEFT: ::std::os::raw::c_int = 32768; +pub const AAUDIO_CHANNEL_TOP_BACK_CENTER: ::std::os::raw::c_int = 65536; +pub const AAUDIO_CHANNEL_TOP_BACK_RIGHT: ::std::os::raw::c_int = 131072; +pub const AAUDIO_CHANNEL_TOP_SIDE_LEFT: ::std::os::raw::c_int = 262144; +pub const AAUDIO_CHANNEL_TOP_SIDE_RIGHT: ::std::os::raw::c_int = 524288; +pub const AAUDIO_CHANNEL_BOTTOM_FRONT_LEFT: ::std::os::raw::c_int = 1048576; +pub const AAUDIO_CHANNEL_BOTTOM_FRONT_CENTER: ::std::os::raw::c_int = 2097152; +pub const AAUDIO_CHANNEL_BOTTOM_FRONT_RIGHT: ::std::os::raw::c_int = 4194304; +pub const AAUDIO_CHANNEL_LOW_FREQUENCY_2: ::std::os::raw::c_int = 8388608; +pub const AAUDIO_CHANNEL_FRONT_WIDE_LEFT: ::std::os::raw::c_int = 16777216; +pub const AAUDIO_CHANNEL_FRONT_WIDE_RIGHT: ::std::os::raw::c_int = 33554432; +pub const AAUDIO_CHANNEL_MONO: ::std::os::raw::c_int = 1; +pub const AAUDIO_CHANNEL_STEREO: ::std::os::raw::c_int = 3; +pub const AAUDIO_CHANNEL_2POINT1: ::std::os::raw::c_int = 11; +pub const AAUDIO_CHANNEL_TRI: ::std::os::raw::c_int = 7; +pub const AAUDIO_CHANNEL_TRI_BACK: ::std::os::raw::c_int = 259; +pub const AAUDIO_CHANNEL_3POINT1: ::std::os::raw::c_int = 15; +pub const AAUDIO_CHANNEL_2POINT0POINT2: ::std::os::raw::c_int = 786435; +pub const AAUDIO_CHANNEL_2POINT1POINT2: ::std::os::raw::c_int = 786443; +pub const AAUDIO_CHANNEL_3POINT0POINT2: ::std::os::raw::c_int = 786439; +pub const AAUDIO_CHANNEL_3POINT1POINT2: ::std::os::raw::c_int = 786447; +pub const AAUDIO_CHANNEL_QUAD: ::std::os::raw::c_int = 51; +pub const AAUDIO_CHANNEL_QUAD_SIDE: ::std::os::raw::c_int = 1539; +pub const AAUDIO_CHANNEL_SURROUND: ::std::os::raw::c_int = 263; +pub const AAUDIO_CHANNEL_PENTA: ::std::os::raw::c_int = 55; +pub const AAUDIO_CHANNEL_5POINT1: ::std::os::raw::c_int = 63; +pub const AAUDIO_CHANNEL_5POINT1_SIDE: ::std::os::raw::c_int = 1551; +pub const AAUDIO_CHANNEL_6POINT1: ::std::os::raw::c_int = 319; +pub const AAUDIO_CHANNEL_7POINT1: ::std::os::raw::c_int = 1599; +pub const AAUDIO_CHANNEL_5POINT1POINT2: ::std::os::raw::c_int = 786495; +pub const AAUDIO_CHANNEL_5POINT1POINT4: ::std::os::raw::c_int = 184383; +pub const AAUDIO_CHANNEL_7POINT1POINT2: ::std::os::raw::c_int = 788031; +pub const AAUDIO_CHANNEL_7POINT1POINT4: ::std::os::raw::c_int = 185919; +pub const AAUDIO_CHANNEL_9POINT1POINT4: ::std::os::raw::c_int = 50517567; +pub const AAUDIO_CHANNEL_9POINT1POINT6: ::std::os::raw::c_int = 51303999; +pub const AAUDIO_CHANNEL_FRONT_BACK: ::std::os::raw::c_int = 260; +pub type _bindgen_ty_59 = ::std::os::raw::c_int; +pub type aaudio_channel_mask_t = u32; #[repr(C)] #[derive(Debug, Copy, Clone)] pub struct AAudioStreamStruct { @@ -16396,6 +17566,18 @@ extern "C" { contentType: aaudio_content_type_t, ); } +extern "C" { + pub fn AAudioStreamBuilder_setSpatializationBehavior( + builder: *mut AAudioStreamBuilder, + spatializationBehavior: aaudio_spatialization_behavior_t, + ); +} +extern "C" { + pub fn AAudioStreamBuilder_setIsContentSpatialized( + builder: *mut AAudioStreamBuilder, + isSpatialized: bool, + ); +} extern "C" { pub fn AAudioStreamBuilder_setInputPreset( builder: *mut AAudioStreamBuilder, @@ -16422,7 +17604,7 @@ extern "C" { } pub const AAUDIO_CALLBACK_RESULT_CONTINUE: ::std::os::raw::c_uint = 0; pub const AAUDIO_CALLBACK_RESULT_STOP: ::std::os::raw::c_uint = 1; -pub type _bindgen_ty_58 = ::std::os::raw::c_uint; +pub type _bindgen_ty_60 = ::std::os::raw::c_uint; pub type aaudio_data_callback_result_t = i32; pub type AAudioStream_dataCallback = ::std::option::Option< unsafe extern "C" fn( @@ -16468,6 +17650,12 @@ extern "C" { extern "C" { pub fn AAudioStreamBuilder_delete(builder: *mut AAudioStreamBuilder) -> aaudio_result_t; } +extern "C" { + pub fn AAudioStreamBuilder_setChannelMask( + builder: *mut AAudioStreamBuilder, + channelMask: aaudio_channel_mask_t, + ); +} extern "C" { pub fn AAudioStream_release(stream: *mut AAudioStream) -> aaudio_result_t; } @@ -16581,6 +17769,14 @@ extern "C" { extern "C" { pub fn AAudioStream_getContentType(stream: *mut AAudioStream) -> aaudio_content_type_t; } +extern "C" { + pub fn AAudioStream_getSpatializationBehavior( + stream: *mut AAudioStream, + ) -> aaudio_spatialization_behavior_t; +} +extern "C" { + pub fn AAudioStream_isContentSpatialized(stream: *mut AAudioStream) -> bool; +} extern "C" { pub fn AAudioStream_getInputPreset(stream: *mut AAudioStream) -> aaudio_input_preset_t; } @@ -16592,6 +17788,9 @@ extern "C" { extern "C" { pub fn AAudioStream_isPrivacySensitive(stream: *mut AAudioStream) -> bool; } +extern "C" { + pub fn AAudioStream_getChannelMask(stream: *mut AAudioStream) -> aaudio_channel_mask_t; +} impl media_status_t { pub const AMEDIA_OK: media_status_t = media_status_t(0); } @@ -16699,11 +17898,43 @@ pub struct AMidiOutputPort { } pub const AMIDI_OPCODE_DATA: ::std::os::raw::c_uint = 1; pub const AMIDI_OPCODE_FLUSH: ::std::os::raw::c_uint = 2; -pub type _bindgen_ty_59 = ::std::os::raw::c_uint; +pub type _bindgen_ty_61 = ::std::os::raw::c_uint; pub const AMIDI_DEVICE_TYPE_USB: ::std::os::raw::c_uint = 1; pub const AMIDI_DEVICE_TYPE_VIRTUAL: ::std::os::raw::c_uint = 2; pub const AMIDI_DEVICE_TYPE_BLUETOOTH: ::std::os::raw::c_uint = 3; -pub type _bindgen_ty_60 = ::std::os::raw::c_uint; +pub type _bindgen_ty_62 = ::std::os::raw::c_uint; +impl AMidiDevice_Protocol { + pub const AMIDI_DEVICE_PROTOCOL_UMP_USE_MIDI_CI: AMidiDevice_Protocol = AMidiDevice_Protocol(0); +} +impl AMidiDevice_Protocol { + pub const AMIDI_DEVICE_PROTOCOL_UMP_MIDI_1_0_UP_TO_64_BITS: AMidiDevice_Protocol = + AMidiDevice_Protocol(1); +} +impl AMidiDevice_Protocol { + pub const AMIDI_DEVICE_PROTOCOL_UMP_MIDI_1_0_UP_TO_64_BITS_AND_JRTS: AMidiDevice_Protocol = + AMidiDevice_Protocol(2); +} +impl AMidiDevice_Protocol { + pub const AMIDI_DEVICE_PROTOCOL_UMP_MIDI_1_0_UP_TO_128_BITS: AMidiDevice_Protocol = + AMidiDevice_Protocol(3); +} +impl AMidiDevice_Protocol { + pub const AMIDI_DEVICE_PROTOCOL_UMP_MIDI_1_0_UP_TO_128_BITS_AND_JRTS: AMidiDevice_Protocol = + AMidiDevice_Protocol(4); +} +impl AMidiDevice_Protocol { + pub const AMIDI_DEVICE_PROTOCOL_UMP_MIDI_2_0: AMidiDevice_Protocol = AMidiDevice_Protocol(17); +} +impl AMidiDevice_Protocol { + pub const AMIDI_DEVICE_PROTOCOL_UMP_MIDI_2_0_AND_JRTS: AMidiDevice_Protocol = + AMidiDevice_Protocol(18); +} +impl AMidiDevice_Protocol { + pub const AMIDI_DEVICE_PROTOCOL_UNKNOWN: AMidiDevice_Protocol = AMidiDevice_Protocol(-1); +} +#[repr(transparent)] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub struct AMidiDevice_Protocol(pub i32); extern "C" { pub fn AMidiDevice_fromJava( env: *mut JNIEnv, @@ -16723,6 +17954,9 @@ extern "C" { extern "C" { pub fn AMidiDevice_getNumOutputPorts(device: *const AMidiDevice) -> ssize_t; } +extern "C" { + pub fn AMidiDevice_getDefaultProtocol(device: *const AMidiDevice) -> AMidiDevice_Protocol; +} extern "C" { pub fn AMidiOutputPort_open( device: *const AMidiDevice, @@ -16917,7 +18151,13 @@ impl acamera_metadata_section { pub const ACAMERA_HEIC_INFO: acamera_metadata_section = acamera_metadata_section(29); } impl acamera_metadata_section { - pub const ACAMERA_SECTION_COUNT: acamera_metadata_section = acamera_metadata_section(30); + pub const ACAMERA_AUTOMOTIVE: acamera_metadata_section = acamera_metadata_section(30); +} +impl acamera_metadata_section { + pub const ACAMERA_AUTOMOTIVE_LENS: acamera_metadata_section = acamera_metadata_section(31); +} +impl acamera_metadata_section { + pub const ACAMERA_SECTION_COUNT: acamera_metadata_section = acamera_metadata_section(32); } impl acamera_metadata_section { pub const ACAMERA_VENDOR: acamera_metadata_section = acamera_metadata_section(32768); @@ -17046,6 +18286,14 @@ impl acamera_metadata_section_start { pub const ACAMERA_HEIC_INFO_START: acamera_metadata_section_start = acamera_metadata_section_start(1900544); } +impl acamera_metadata_section_start { + pub const ACAMERA_AUTOMOTIVE_START: acamera_metadata_section_start = + acamera_metadata_section_start(1966080); +} +impl acamera_metadata_section_start { + pub const ACAMERA_AUTOMOTIVE_LENS_START: acamera_metadata_section_start = + acamera_metadata_section_start(2031616); +} impl acamera_metadata_section_start { pub const ACAMERA_VENDOR_START: acamera_metadata_section_start = acamera_metadata_section_start(-2147483648); @@ -17252,7 +18500,15 @@ impl acamera_metadata_tag { pub const ACAMERA_FLASH_INFO_AVAILABLE: acamera_metadata_tag = acamera_metadata_tag(327680); } impl acamera_metadata_tag { - pub const ACAMERA_FLASH_INFO_END: acamera_metadata_tag = acamera_metadata_tag(327681); + pub const ACAMERA_FLASH_INFO_STRENGTH_MAXIMUM_LEVEL: acamera_metadata_tag = + acamera_metadata_tag(327682); +} +impl acamera_metadata_tag { + pub const ACAMERA_FLASH_INFO_STRENGTH_DEFAULT_LEVEL: acamera_metadata_tag = + acamera_metadata_tag(327683); +} +impl acamera_metadata_tag { + pub const ACAMERA_FLASH_INFO_END: acamera_metadata_tag = acamera_metadata_tag(327684); } impl acamera_metadata_tag { pub const ACAMERA_HOT_PIXEL_MODE: acamera_metadata_tag = acamera_metadata_tag(393216); @@ -17433,7 +18689,11 @@ impl acamera_metadata_tag { acamera_metadata_tag(786449); } impl acamera_metadata_tag { - pub const ACAMERA_REQUEST_END: acamera_metadata_tag = acamera_metadata_tag(786450); + pub const ACAMERA_REQUEST_AVAILABLE_DYNAMIC_RANGE_PROFILES_MAP: acamera_metadata_tag = + acamera_metadata_tag(786451); +} +impl acamera_metadata_tag { + pub const ACAMERA_REQUEST_END: acamera_metadata_tag = acamera_metadata_tag(786452); } impl acamera_metadata_tag { pub const ACAMERA_SCALER_CROP_REGION: acamera_metadata_tag = acamera_metadata_tag(851968); @@ -17497,7 +18757,11 @@ impl acamera_metadata_tag { acamera_metadata_tag(851992); } impl acamera_metadata_tag { - pub const ACAMERA_SCALER_END: acamera_metadata_tag = acamera_metadata_tag(851993); + pub const ACAMERA_SCALER_AVAILABLE_STREAM_USE_CASES: acamera_metadata_tag = + acamera_metadata_tag(851993); +} +impl acamera_metadata_tag { + pub const ACAMERA_SCALER_END: acamera_metadata_tag = acamera_metadata_tag(851994); } impl acamera_metadata_tag { pub const ACAMERA_SENSOR_EXPOSURE_TIME: acamera_metadata_tag = acamera_metadata_tag(917504); @@ -17782,7 +19046,11 @@ impl acamera_metadata_tag { pub const ACAMERA_INFO_VERSION: acamera_metadata_tag = acamera_metadata_tag(1376257); } impl acamera_metadata_tag { - pub const ACAMERA_INFO_END: acamera_metadata_tag = acamera_metadata_tag(1376258); + pub const ACAMERA_INFO_DEVICE_STATE_ORIENTATIONS: acamera_metadata_tag = + acamera_metadata_tag(1376259); +} +impl acamera_metadata_tag { + pub const ACAMERA_INFO_END: acamera_metadata_tag = acamera_metadata_tag(1376260); } impl acamera_metadata_tag { pub const ACAMERA_BLACK_LEVEL_LOCK: acamera_metadata_tag = acamera_metadata_tag(1441792); @@ -17913,6 +19181,18 @@ impl acamera_metadata_tag { impl acamera_metadata_tag { pub const ACAMERA_HEIC_END: acamera_metadata_tag = acamera_metadata_tag(1835014); } +impl acamera_metadata_tag { + pub const ACAMERA_AUTOMOTIVE_LOCATION: acamera_metadata_tag = acamera_metadata_tag(1966080); +} +impl acamera_metadata_tag { + pub const ACAMERA_AUTOMOTIVE_END: acamera_metadata_tag = acamera_metadata_tag(1966081); +} +impl acamera_metadata_tag { + pub const ACAMERA_AUTOMOTIVE_LENS_FACING: acamera_metadata_tag = acamera_metadata_tag(2031616); +} +impl acamera_metadata_tag { + pub const ACAMERA_AUTOMOTIVE_LENS_END: acamera_metadata_tag = acamera_metadata_tag(2031617); +} #[repr(transparent)] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] pub struct acamera_metadata_tag(pub ::std::os::raw::c_uint); @@ -18351,6 +19631,11 @@ impl acamera_metadata_enum_acamera_control_video_stabilization_mode { acamera_metadata_enum_acamera_control_video_stabilization_mode = acamera_metadata_enum_acamera_control_video_stabilization_mode(1); } +impl acamera_metadata_enum_acamera_control_video_stabilization_mode { + pub const ACAMERA_CONTROL_VIDEO_STABILIZATION_MODE_PREVIEW_STABILIZATION: + acamera_metadata_enum_acamera_control_video_stabilization_mode = + acamera_metadata_enum_acamera_control_video_stabilization_mode(2); +} #[repr(transparent)] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] pub struct acamera_metadata_enum_acamera_control_video_stabilization_mode( @@ -18665,6 +19950,11 @@ impl acamera_metadata_enum_acamera_lens_pose_reference { acamera_metadata_enum_acamera_lens_pose_reference = acamera_metadata_enum_acamera_lens_pose_reference(2); } +impl acamera_metadata_enum_acamera_lens_pose_reference { + pub const ACAMERA_LENS_POSE_REFERENCE_AUTOMOTIVE: + acamera_metadata_enum_acamera_lens_pose_reference = + acamera_metadata_enum_acamera_lens_pose_reference(3); +} #[repr(transparent)] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] pub struct acamera_metadata_enum_acamera_lens_pose_reference(pub ::std::os::raw::c_uint); @@ -18783,10 +20073,86 @@ impl acamera_metadata_enum_acamera_request_available_capabilities { acamera_metadata_enum_acamera_request_available_capabilities = acamera_metadata_enum_acamera_request_available_capabilities(16); } +impl acamera_metadata_enum_acamera_request_available_capabilities { + pub const ACAMERA_REQUEST_AVAILABLE_CAPABILITIES_STREAM_USE_CASE: + acamera_metadata_enum_acamera_request_available_capabilities = + acamera_metadata_enum_acamera_request_available_capabilities(19); +} #[repr(transparent)] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] pub struct acamera_metadata_enum_acamera_request_available_capabilities(pub ::std::os::raw::c_uint); pub use self::acamera_metadata_enum_acamera_request_available_capabilities as acamera_metadata_enum_android_request_available_capabilities_t; +impl acamera_metadata_enum_acamera_request_available_dynamic_range_profiles_map { + pub const ACAMERA_REQUEST_AVAILABLE_DYNAMIC_RANGE_PROFILES_MAP_STANDARD: + acamera_metadata_enum_acamera_request_available_dynamic_range_profiles_map = + acamera_metadata_enum_acamera_request_available_dynamic_range_profiles_map(1); +} +impl acamera_metadata_enum_acamera_request_available_dynamic_range_profiles_map { + pub const ACAMERA_REQUEST_AVAILABLE_DYNAMIC_RANGE_PROFILES_MAP_HLG10: + acamera_metadata_enum_acamera_request_available_dynamic_range_profiles_map = + acamera_metadata_enum_acamera_request_available_dynamic_range_profiles_map(2); +} +impl acamera_metadata_enum_acamera_request_available_dynamic_range_profiles_map { + pub const ACAMERA_REQUEST_AVAILABLE_DYNAMIC_RANGE_PROFILES_MAP_HDR10: + acamera_metadata_enum_acamera_request_available_dynamic_range_profiles_map = + acamera_metadata_enum_acamera_request_available_dynamic_range_profiles_map(4); +} +impl acamera_metadata_enum_acamera_request_available_dynamic_range_profiles_map { + pub const ACAMERA_REQUEST_AVAILABLE_DYNAMIC_RANGE_PROFILES_MAP_HDR10_PLUS: + acamera_metadata_enum_acamera_request_available_dynamic_range_profiles_map = + acamera_metadata_enum_acamera_request_available_dynamic_range_profiles_map(8); +} +impl acamera_metadata_enum_acamera_request_available_dynamic_range_profiles_map { + pub const ACAMERA_REQUEST_AVAILABLE_DYNAMIC_RANGE_PROFILES_MAP_DOLBY_VISION_10B_HDR_REF: + acamera_metadata_enum_acamera_request_available_dynamic_range_profiles_map = + acamera_metadata_enum_acamera_request_available_dynamic_range_profiles_map(16); +} +impl acamera_metadata_enum_acamera_request_available_dynamic_range_profiles_map { + pub const ACAMERA_REQUEST_AVAILABLE_DYNAMIC_RANGE_PROFILES_MAP_DOLBY_VISION_10B_HDR_REF_PO: + acamera_metadata_enum_acamera_request_available_dynamic_range_profiles_map = + acamera_metadata_enum_acamera_request_available_dynamic_range_profiles_map(32); +} +impl acamera_metadata_enum_acamera_request_available_dynamic_range_profiles_map { + pub const ACAMERA_REQUEST_AVAILABLE_DYNAMIC_RANGE_PROFILES_MAP_DOLBY_VISION_10B_HDR_OEM: + acamera_metadata_enum_acamera_request_available_dynamic_range_profiles_map = + acamera_metadata_enum_acamera_request_available_dynamic_range_profiles_map(64); +} +impl acamera_metadata_enum_acamera_request_available_dynamic_range_profiles_map { + pub const ACAMERA_REQUEST_AVAILABLE_DYNAMIC_RANGE_PROFILES_MAP_DOLBY_VISION_10B_HDR_OEM_PO: + acamera_metadata_enum_acamera_request_available_dynamic_range_profiles_map = + acamera_metadata_enum_acamera_request_available_dynamic_range_profiles_map(128); +} +impl acamera_metadata_enum_acamera_request_available_dynamic_range_profiles_map { + pub const ACAMERA_REQUEST_AVAILABLE_DYNAMIC_RANGE_PROFILES_MAP_DOLBY_VISION_8B_HDR_REF: + acamera_metadata_enum_acamera_request_available_dynamic_range_profiles_map = + acamera_metadata_enum_acamera_request_available_dynamic_range_profiles_map(256); +} +impl acamera_metadata_enum_acamera_request_available_dynamic_range_profiles_map { + pub const ACAMERA_REQUEST_AVAILABLE_DYNAMIC_RANGE_PROFILES_MAP_DOLBY_VISION_8B_HDR_REF_PO: + acamera_metadata_enum_acamera_request_available_dynamic_range_profiles_map = + acamera_metadata_enum_acamera_request_available_dynamic_range_profiles_map(512); +} +impl acamera_metadata_enum_acamera_request_available_dynamic_range_profiles_map { + pub const ACAMERA_REQUEST_AVAILABLE_DYNAMIC_RANGE_PROFILES_MAP_DOLBY_VISION_8B_HDR_OEM: + acamera_metadata_enum_acamera_request_available_dynamic_range_profiles_map = + acamera_metadata_enum_acamera_request_available_dynamic_range_profiles_map(1024); +} +impl acamera_metadata_enum_acamera_request_available_dynamic_range_profiles_map { + pub const ACAMERA_REQUEST_AVAILABLE_DYNAMIC_RANGE_PROFILES_MAP_DOLBY_VISION_8B_HDR_OEM_PO: + acamera_metadata_enum_acamera_request_available_dynamic_range_profiles_map = + acamera_metadata_enum_acamera_request_available_dynamic_range_profiles_map(2048); +} +impl acamera_metadata_enum_acamera_request_available_dynamic_range_profiles_map { + pub const ACAMERA_REQUEST_AVAILABLE_DYNAMIC_RANGE_PROFILES_MAP_MAX: + acamera_metadata_enum_acamera_request_available_dynamic_range_profiles_map = + acamera_metadata_enum_acamera_request_available_dynamic_range_profiles_map(4096); +} +#[repr(transparent)] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub struct acamera_metadata_enum_acamera_request_available_dynamic_range_profiles_map( + pub ::std::os::raw::c_uint, +); +pub use self::acamera_metadata_enum_acamera_request_available_dynamic_range_profiles_map as acamera_metadata_enum_android_request_available_dynamic_range_profiles_map_t; impl acamera_metadata_enum_acamera_scaler_available_stream_configurations { pub const ACAMERA_SCALER_AVAILABLE_STREAM_CONFIGURATIONS_OUTPUT: acamera_metadata_enum_acamera_scaler_available_stream_configurations = @@ -18857,6 +20223,16 @@ impl acamera_metadata_enum_acamera_scaler_available_recommended_stream_configura acamera_metadata_enum_acamera_scaler_available_recommended_stream_configurations = acamera_metadata_enum_acamera_scaler_available_recommended_stream_configurations(7); } +impl acamera_metadata_enum_acamera_scaler_available_recommended_stream_configurations { + pub const ACAMERA_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS_10BIT_OUTPUT: + acamera_metadata_enum_acamera_scaler_available_recommended_stream_configurations = + acamera_metadata_enum_acamera_scaler_available_recommended_stream_configurations(8); +} +impl acamera_metadata_enum_acamera_scaler_available_recommended_stream_configurations { + pub const ACAMERA_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS_PUBLIC_END_3_8: + acamera_metadata_enum_acamera_scaler_available_recommended_stream_configurations = + acamera_metadata_enum_acamera_scaler_available_recommended_stream_configurations(9); +} impl acamera_metadata_enum_acamera_scaler_available_recommended_stream_configurations { pub const ACAMERA_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS_VENDOR_START: acamera_metadata_enum_acamera_scaler_available_recommended_stream_configurations = @@ -18949,6 +20325,42 @@ pub struct acamera_metadata_enum_acamera_scaler_multi_resolution_stream_supporte pub ::std::os::raw::c_uint, ); pub use self::acamera_metadata_enum_acamera_scaler_multi_resolution_stream_supported as acamera_metadata_enum_android_scaler_multi_resolution_stream_supported_t; +impl acamera_metadata_enum_acamera_scaler_available_stream_use_cases { + pub const ACAMERA_SCALER_AVAILABLE_STREAM_USE_CASES_DEFAULT: + acamera_metadata_enum_acamera_scaler_available_stream_use_cases = + acamera_metadata_enum_acamera_scaler_available_stream_use_cases(0); +} +impl acamera_metadata_enum_acamera_scaler_available_stream_use_cases { + pub const ACAMERA_SCALER_AVAILABLE_STREAM_USE_CASES_PREVIEW: + acamera_metadata_enum_acamera_scaler_available_stream_use_cases = + acamera_metadata_enum_acamera_scaler_available_stream_use_cases(1); +} +impl acamera_metadata_enum_acamera_scaler_available_stream_use_cases { + pub const ACAMERA_SCALER_AVAILABLE_STREAM_USE_CASES_STILL_CAPTURE: + acamera_metadata_enum_acamera_scaler_available_stream_use_cases = + acamera_metadata_enum_acamera_scaler_available_stream_use_cases(2); +} +impl acamera_metadata_enum_acamera_scaler_available_stream_use_cases { + pub const ACAMERA_SCALER_AVAILABLE_STREAM_USE_CASES_VIDEO_RECORD: + acamera_metadata_enum_acamera_scaler_available_stream_use_cases = + acamera_metadata_enum_acamera_scaler_available_stream_use_cases(3); +} +impl acamera_metadata_enum_acamera_scaler_available_stream_use_cases { + pub const ACAMERA_SCALER_AVAILABLE_STREAM_USE_CASES_PREVIEW_VIDEO_STILL: + acamera_metadata_enum_acamera_scaler_available_stream_use_cases = + acamera_metadata_enum_acamera_scaler_available_stream_use_cases(4); +} +impl acamera_metadata_enum_acamera_scaler_available_stream_use_cases { + pub const ACAMERA_SCALER_AVAILABLE_STREAM_USE_CASES_VIDEO_CALL: + acamera_metadata_enum_acamera_scaler_available_stream_use_cases = + acamera_metadata_enum_acamera_scaler_available_stream_use_cases(5); +} +#[repr(transparent)] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub struct acamera_metadata_enum_acamera_scaler_available_stream_use_cases( + pub ::std::os::raw::c_uint, +); +pub use self::acamera_metadata_enum_acamera_scaler_available_stream_use_cases as acamera_metadata_enum_android_scaler_available_stream_use_cases_t; impl acamera_metadata_enum_acamera_sensor_reference_illuminant1 { pub const ACAMERA_SENSOR_REFERENCE_ILLUMINANT1_DAYLIGHT: acamera_metadata_enum_acamera_sensor_reference_illuminant1 = @@ -19515,832 +20927,1386 @@ impl acamera_metadata_enum_acamera_heic_available_heic_stream_configurations_max 0, ); } -impl acamera_metadata_enum_acamera_heic_available_heic_stream_configurations_maximum_resolution { - pub const ACAMERA_HEIC_AVAILABLE_HEIC_STREAM_CONFIGURATIONS_MAXIMUM_RESOLUTION_INPUT: - acamera_metadata_enum_acamera_heic_available_heic_stream_configurations_maximum_resolution = - acamera_metadata_enum_acamera_heic_available_heic_stream_configurations_maximum_resolution( - 1, - ); +impl acamera_metadata_enum_acamera_heic_available_heic_stream_configurations_maximum_resolution { + pub const ACAMERA_HEIC_AVAILABLE_HEIC_STREAM_CONFIGURATIONS_MAXIMUM_RESOLUTION_INPUT: + acamera_metadata_enum_acamera_heic_available_heic_stream_configurations_maximum_resolution = + acamera_metadata_enum_acamera_heic_available_heic_stream_configurations_maximum_resolution( + 1, + ); +} +#[repr(transparent)] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub struct acamera_metadata_enum_acamera_heic_available_heic_stream_configurations_maximum_resolution( + pub ::std::os::raw::c_uint, +); +pub use self::acamera_metadata_enum_acamera_heic_available_heic_stream_configurations_maximum_resolution as acamera_metadata_enum_android_heic_available_heic_stream_configurations_maximum_resolution_t; +impl acamera_metadata_enum_acamera_automotive_location { + pub const ACAMERA_AUTOMOTIVE_LOCATION_INTERIOR: + acamera_metadata_enum_acamera_automotive_location = + acamera_metadata_enum_acamera_automotive_location(0); +} +impl acamera_metadata_enum_acamera_automotive_location { + pub const ACAMERA_AUTOMOTIVE_LOCATION_EXTERIOR_OTHER: + acamera_metadata_enum_acamera_automotive_location = + acamera_metadata_enum_acamera_automotive_location(1); +} +impl acamera_metadata_enum_acamera_automotive_location { + pub const ACAMERA_AUTOMOTIVE_LOCATION_EXTERIOR_FRONT: + acamera_metadata_enum_acamera_automotive_location = + acamera_metadata_enum_acamera_automotive_location(2); +} +impl acamera_metadata_enum_acamera_automotive_location { + pub const ACAMERA_AUTOMOTIVE_LOCATION_EXTERIOR_REAR: + acamera_metadata_enum_acamera_automotive_location = + acamera_metadata_enum_acamera_automotive_location(3); +} +impl acamera_metadata_enum_acamera_automotive_location { + pub const ACAMERA_AUTOMOTIVE_LOCATION_EXTERIOR_LEFT: + acamera_metadata_enum_acamera_automotive_location = + acamera_metadata_enum_acamera_automotive_location(4); +} +impl acamera_metadata_enum_acamera_automotive_location { + pub const ACAMERA_AUTOMOTIVE_LOCATION_EXTERIOR_RIGHT: + acamera_metadata_enum_acamera_automotive_location = + acamera_metadata_enum_acamera_automotive_location(5); +} +impl acamera_metadata_enum_acamera_automotive_location { + pub const ACAMERA_AUTOMOTIVE_LOCATION_EXTRA_OTHER: + acamera_metadata_enum_acamera_automotive_location = + acamera_metadata_enum_acamera_automotive_location(6); +} +impl acamera_metadata_enum_acamera_automotive_location { + pub const ACAMERA_AUTOMOTIVE_LOCATION_EXTRA_FRONT: + acamera_metadata_enum_acamera_automotive_location = + acamera_metadata_enum_acamera_automotive_location(7); +} +impl acamera_metadata_enum_acamera_automotive_location { + pub const ACAMERA_AUTOMOTIVE_LOCATION_EXTRA_REAR: + acamera_metadata_enum_acamera_automotive_location = + acamera_metadata_enum_acamera_automotive_location(8); +} +impl acamera_metadata_enum_acamera_automotive_location { + pub const ACAMERA_AUTOMOTIVE_LOCATION_EXTRA_LEFT: + acamera_metadata_enum_acamera_automotive_location = + acamera_metadata_enum_acamera_automotive_location(9); +} +impl acamera_metadata_enum_acamera_automotive_location { + pub const ACAMERA_AUTOMOTIVE_LOCATION_EXTRA_RIGHT: + acamera_metadata_enum_acamera_automotive_location = + acamera_metadata_enum_acamera_automotive_location(10); +} +#[repr(transparent)] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub struct acamera_metadata_enum_acamera_automotive_location(pub ::std::os::raw::c_uint); +pub use self::acamera_metadata_enum_acamera_automotive_location as acamera_metadata_enum_android_automotive_location_t; +impl acamera_metadata_enum_acamera_automotive_lens_facing { + pub const ACAMERA_AUTOMOTIVE_LENS_FACING_EXTERIOR_OTHER: + acamera_metadata_enum_acamera_automotive_lens_facing = + acamera_metadata_enum_acamera_automotive_lens_facing(0); +} +impl acamera_metadata_enum_acamera_automotive_lens_facing { + pub const ACAMERA_AUTOMOTIVE_LENS_FACING_EXTERIOR_FRONT: + acamera_metadata_enum_acamera_automotive_lens_facing = + acamera_metadata_enum_acamera_automotive_lens_facing(1); +} +impl acamera_metadata_enum_acamera_automotive_lens_facing { + pub const ACAMERA_AUTOMOTIVE_LENS_FACING_EXTERIOR_REAR: + acamera_metadata_enum_acamera_automotive_lens_facing = + acamera_metadata_enum_acamera_automotive_lens_facing(2); +} +impl acamera_metadata_enum_acamera_automotive_lens_facing { + pub const ACAMERA_AUTOMOTIVE_LENS_FACING_EXTERIOR_LEFT: + acamera_metadata_enum_acamera_automotive_lens_facing = + acamera_metadata_enum_acamera_automotive_lens_facing(3); +} +impl acamera_metadata_enum_acamera_automotive_lens_facing { + pub const ACAMERA_AUTOMOTIVE_LENS_FACING_EXTERIOR_RIGHT: + acamera_metadata_enum_acamera_automotive_lens_facing = + acamera_metadata_enum_acamera_automotive_lens_facing(4); +} +impl acamera_metadata_enum_acamera_automotive_lens_facing { + pub const ACAMERA_AUTOMOTIVE_LENS_FACING_INTERIOR_OTHER: + acamera_metadata_enum_acamera_automotive_lens_facing = + acamera_metadata_enum_acamera_automotive_lens_facing(5); +} +impl acamera_metadata_enum_acamera_automotive_lens_facing { + pub const ACAMERA_AUTOMOTIVE_LENS_FACING_INTERIOR_SEAT_ROW_1_LEFT: + acamera_metadata_enum_acamera_automotive_lens_facing = + acamera_metadata_enum_acamera_automotive_lens_facing(6); +} +impl acamera_metadata_enum_acamera_automotive_lens_facing { + pub const ACAMERA_AUTOMOTIVE_LENS_FACING_INTERIOR_SEAT_ROW_1_CENTER: + acamera_metadata_enum_acamera_automotive_lens_facing = + acamera_metadata_enum_acamera_automotive_lens_facing(7); +} +impl acamera_metadata_enum_acamera_automotive_lens_facing { + pub const ACAMERA_AUTOMOTIVE_LENS_FACING_INTERIOR_SEAT_ROW_1_RIGHT: + acamera_metadata_enum_acamera_automotive_lens_facing = + acamera_metadata_enum_acamera_automotive_lens_facing(8); +} +impl acamera_metadata_enum_acamera_automotive_lens_facing { + pub const ACAMERA_AUTOMOTIVE_LENS_FACING_INTERIOR_SEAT_ROW_2_LEFT: + acamera_metadata_enum_acamera_automotive_lens_facing = + acamera_metadata_enum_acamera_automotive_lens_facing(9); +} +impl acamera_metadata_enum_acamera_automotive_lens_facing { + pub const ACAMERA_AUTOMOTIVE_LENS_FACING_INTERIOR_SEAT_ROW_2_CENTER: + acamera_metadata_enum_acamera_automotive_lens_facing = + acamera_metadata_enum_acamera_automotive_lens_facing(10); +} +impl acamera_metadata_enum_acamera_automotive_lens_facing { + pub const ACAMERA_AUTOMOTIVE_LENS_FACING_INTERIOR_SEAT_ROW_2_RIGHT: + acamera_metadata_enum_acamera_automotive_lens_facing = + acamera_metadata_enum_acamera_automotive_lens_facing(11); +} +impl acamera_metadata_enum_acamera_automotive_lens_facing { + pub const ACAMERA_AUTOMOTIVE_LENS_FACING_INTERIOR_SEAT_ROW_3_LEFT: + acamera_metadata_enum_acamera_automotive_lens_facing = + acamera_metadata_enum_acamera_automotive_lens_facing(12); +} +impl acamera_metadata_enum_acamera_automotive_lens_facing { + pub const ACAMERA_AUTOMOTIVE_LENS_FACING_INTERIOR_SEAT_ROW_3_CENTER: + acamera_metadata_enum_acamera_automotive_lens_facing = + acamera_metadata_enum_acamera_automotive_lens_facing(13); +} +impl acamera_metadata_enum_acamera_automotive_lens_facing { + pub const ACAMERA_AUTOMOTIVE_LENS_FACING_INTERIOR_SEAT_ROW_3_RIGHT: + acamera_metadata_enum_acamera_automotive_lens_facing = + acamera_metadata_enum_acamera_automotive_lens_facing(14); +} +#[repr(transparent)] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub struct acamera_metadata_enum_acamera_automotive_lens_facing(pub ::std::os::raw::c_uint); +pub use self::acamera_metadata_enum_acamera_automotive_lens_facing as acamera_metadata_enum_android_automotive_lens_facing_t; +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ACameraMetadata { + _unused: [u8; 0], +} +pub const ACAMERA_TYPE_BYTE: ::std::os::raw::c_uint = 0; +pub const ACAMERA_TYPE_INT32: ::std::os::raw::c_uint = 1; +pub const ACAMERA_TYPE_FLOAT: ::std::os::raw::c_uint = 2; +pub const ACAMERA_TYPE_INT64: ::std::os::raw::c_uint = 3; +pub const ACAMERA_TYPE_DOUBLE: ::std::os::raw::c_uint = 4; +pub const ACAMERA_TYPE_RATIONAL: ::std::os::raw::c_uint = 5; +pub const ACAMERA_NUM_TYPES: ::std::os::raw::c_uint = 6; +pub type _bindgen_ty_63 = ::std::os::raw::c_uint; +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ACameraMetadata_rational { + pub numerator: i32, + pub denominator: i32, +} +#[test] +fn bindgen_test_layout_ACameraMetadata_rational() { + assert_eq!( + ::std::mem::size_of::(), + 8usize, + concat!("Size of: ", stringify!(ACameraMetadata_rational)) + ); + assert_eq!( + ::std::mem::align_of::(), + 4usize, + concat!("Alignment of ", stringify!(ACameraMetadata_rational)) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).numerator as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ACameraMetadata_rational), + "::", + stringify!(numerator) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).denominator as *const _ as usize + }, + 4usize, + concat!( + "Offset of field: ", + stringify!(ACameraMetadata_rational), + "::", + stringify!(denominator) + ) + ); +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct ACameraMetadata_entry { + pub tag: u32, + pub type_: u8, + pub count: u32, + pub data: ACameraMetadata_entry__bindgen_ty_1, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union ACameraMetadata_entry__bindgen_ty_1 { + pub u8_: *mut u8, + pub i32_: *mut i32, + pub f: *mut f32, + pub i64_: *mut i64, + pub d: *mut f64, + pub r: *mut ACameraMetadata_rational, +} +#[test] +fn bindgen_test_layout_ACameraMetadata_entry__bindgen_ty_1() { + assert_eq!( + ::std::mem::size_of::(), + 4usize, + concat!("Size of: ", stringify!(ACameraMetadata_entry__bindgen_ty_1)) + ); + assert_eq!( + ::std::mem::align_of::(), + 4usize, + concat!( + "Alignment of ", + stringify!(ACameraMetadata_entry__bindgen_ty_1) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).u8_ as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ACameraMetadata_entry__bindgen_ty_1), + "::", + stringify!(u8_) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).i32_ as *const _ + as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ACameraMetadata_entry__bindgen_ty_1), + "::", + stringify!(i32_) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).f as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ACameraMetadata_entry__bindgen_ty_1), + "::", + stringify!(f) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).i64_ as *const _ + as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ACameraMetadata_entry__bindgen_ty_1), + "::", + stringify!(i64_) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).d as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ACameraMetadata_entry__bindgen_ty_1), + "::", + stringify!(d) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).r as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ACameraMetadata_entry__bindgen_ty_1), + "::", + stringify!(r) + ) + ); +} +#[test] +fn bindgen_test_layout_ACameraMetadata_entry() { + assert_eq!( + ::std::mem::size_of::(), + 16usize, + concat!("Size of: ", stringify!(ACameraMetadata_entry)) + ); + assert_eq!( + ::std::mem::align_of::(), + 4usize, + concat!("Alignment of ", stringify!(ACameraMetadata_entry)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).tag as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ACameraMetadata_entry), + "::", + stringify!(tag) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).type_ as *const _ as usize }, + 4usize, + concat!( + "Offset of field: ", + stringify!(ACameraMetadata_entry), + "::", + stringify!(type_) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).count as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(ACameraMetadata_entry), + "::", + stringify!(count) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).data as *const _ as usize }, + 12usize, + concat!( + "Offset of field: ", + stringify!(ACameraMetadata_entry), + "::", + stringify!(data) + ) + ); } -#[repr(transparent)] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub struct acamera_metadata_enum_acamera_heic_available_heic_stream_configurations_maximum_resolution( - pub ::std::os::raw::c_uint, -); -pub use self::acamera_metadata_enum_acamera_heic_available_heic_stream_configurations_maximum_resolution as acamera_metadata_enum_android_heic_available_heic_stream_configurations_maximum_resolution_t; #[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ACameraMetadata { - _unused: [u8; 0], +#[derive(Copy, Clone)] +pub struct ACameraMetadata_const_entry { + pub tag: u32, + pub type_: u8, + pub count: u32, + pub data: ACameraMetadata_const_entry__bindgen_ty_1, } -pub const ACAMERA_TYPE_BYTE: ::std::os::raw::c_uint = 0; -pub const ACAMERA_TYPE_INT32: ::std::os::raw::c_uint = 1; -pub const ACAMERA_TYPE_FLOAT: ::std::os::raw::c_uint = 2; -pub const ACAMERA_TYPE_INT64: ::std::os::raw::c_uint = 3; -pub const ACAMERA_TYPE_DOUBLE: ::std::os::raw::c_uint = 4; -pub const ACAMERA_TYPE_RATIONAL: ::std::os::raw::c_uint = 5; -pub const ACAMERA_NUM_TYPES: ::std::os::raw::c_uint = 6; -pub type _bindgen_ty_61 = ::std::os::raw::c_uint; #[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ACameraMetadata_rational { - pub numerator: i32, - pub denominator: i32, +#[derive(Copy, Clone)] +pub union ACameraMetadata_const_entry__bindgen_ty_1 { + pub u8_: *const u8, + pub i32_: *const i32, + pub f: *const f32, + pub i64_: *const i64, + pub d: *const f64, + pub r: *const ACameraMetadata_rational, } #[test] -fn bindgen_test_layout_ACameraMetadata_rational() { +fn bindgen_test_layout_ACameraMetadata_const_entry__bindgen_ty_1() { assert_eq!( - ::std::mem::size_of::(), - 8usize, - concat!("Size of: ", stringify!(ACameraMetadata_rational)) + ::std::mem::size_of::(), + 4usize, + concat!( + "Size of: ", + stringify!(ACameraMetadata_const_entry__bindgen_ty_1) + ) ); assert_eq!( - ::std::mem::align_of::(), + ::std::mem::align_of::(), 4usize, - concat!("Alignment of ", stringify!(ACameraMetadata_rational)) + concat!( + "Alignment of ", + stringify!(ACameraMetadata_const_entry__bindgen_ty_1) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).u8_ as *const _ + as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ACameraMetadata_const_entry__bindgen_ty_1), + "::", + stringify!(u8_) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).i32_ as *const _ + as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ACameraMetadata_const_entry__bindgen_ty_1), + "::", + stringify!(i32_) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).f as *const _ + as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ACameraMetadata_const_entry__bindgen_ty_1), + "::", + stringify!(f) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).i64_ as *const _ + as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ACameraMetadata_const_entry__bindgen_ty_1), + "::", + stringify!(i64_) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).d as *const _ + as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ACameraMetadata_const_entry__bindgen_ty_1), + "::", + stringify!(d) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).r as *const _ + as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ACameraMetadata_const_entry__bindgen_ty_1), + "::", + stringify!(r) + ) + ); +} +#[test] +fn bindgen_test_layout_ACameraMetadata_const_entry() { + assert_eq!( + ::std::mem::size_of::(), + 16usize, + concat!("Size of: ", stringify!(ACameraMetadata_const_entry)) + ); + assert_eq!( + ::std::mem::align_of::(), + 4usize, + concat!("Alignment of ", stringify!(ACameraMetadata_const_entry)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).tag as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ACameraMetadata_const_entry), + "::", + stringify!(tag) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).type_ as *const _ as usize + }, + 4usize, + concat!( + "Offset of field: ", + stringify!(ACameraMetadata_const_entry), + "::", + stringify!(type_) + ) ); assert_eq!( unsafe { - &(*(::std::ptr::null::())).numerator as *const _ as usize + &(*(::std::ptr::null::())).count as *const _ as usize }, - 0usize, + 8usize, concat!( "Offset of field: ", - stringify!(ACameraMetadata_rational), + stringify!(ACameraMetadata_const_entry), "::", - stringify!(numerator) + stringify!(count) ) ); assert_eq!( unsafe { - &(*(::std::ptr::null::())).denominator as *const _ as usize + &(*(::std::ptr::null::())).data as *const _ as usize }, - 4usize, + 12usize, concat!( "Offset of field: ", - stringify!(ACameraMetadata_rational), + stringify!(ACameraMetadata_const_entry), "::", - stringify!(denominator) + stringify!(data) ) ); } +extern "C" { + pub fn ACameraMetadata_getConstEntry( + metadata: *const ACameraMetadata, + tag: u32, + entry: *mut ACameraMetadata_const_entry, + ) -> camera_status_t; +} +extern "C" { + pub fn ACameraMetadata_getAllTags( + metadata: *const ACameraMetadata, + numEntries: *mut i32, + tags: *mut *const u32, + ) -> camera_status_t; +} +extern "C" { + pub fn ACameraMetadata_copy(src: *const ACameraMetadata) -> *mut ACameraMetadata; +} +extern "C" { + pub fn ACameraMetadata_free(metadata: *mut ACameraMetadata); +} +extern "C" { + pub fn ACameraMetadata_isLogicalMultiCamera( + staticMetadata: *const ACameraMetadata, + numPhysicalCameras: *mut size_t, + physicalCameraIds: *mut *const *const ::std::os::raw::c_char, + ) -> bool; +} +extern "C" { + pub fn ACameraMetadata_fromCameraMetadata( + env: *mut JNIEnv, + cameraMetadata: jobject, + ) -> *mut ACameraMetadata; +} +pub type ACameraWindowType = ANativeWindow; #[repr(C)] -#[derive(Copy, Clone)] -pub struct ACameraMetadata_entry { - pub tag: u32, - pub type_: u8, - pub count: u32, - pub data: ACameraMetadata_entry__bindgen_ty_1, +#[derive(Debug, Copy, Clone)] +pub struct ACameraOutputTargets { + _unused: [u8; 0], } #[repr(C)] -#[derive(Copy, Clone)] -pub union ACameraMetadata_entry__bindgen_ty_1 { - pub u8_: *mut u8, - pub i32_: *mut i32, - pub f: *mut f32, - pub i64_: *mut i64, - pub d: *mut f64, - pub r: *mut ACameraMetadata_rational, +#[derive(Debug, Copy, Clone)] +pub struct ACameraOutputTarget { + _unused: [u8; 0], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ACaptureRequest { + _unused: [u8; 0], +} +extern "C" { + pub fn ACameraOutputTarget_create( + window: *mut ACameraWindowType, + output: *mut *mut ACameraOutputTarget, + ) -> camera_status_t; +} +extern "C" { + pub fn ACameraOutputTarget_free(output: *mut ACameraOutputTarget); +} +extern "C" { + pub fn ACaptureRequest_addTarget( + request: *mut ACaptureRequest, + output: *const ACameraOutputTarget, + ) -> camera_status_t; +} +extern "C" { + pub fn ACaptureRequest_removeTarget( + request: *mut ACaptureRequest, + output: *const ACameraOutputTarget, + ) -> camera_status_t; +} +extern "C" { + pub fn ACaptureRequest_getConstEntry( + request: *const ACaptureRequest, + tag: u32, + entry: *mut ACameraMetadata_const_entry, + ) -> camera_status_t; +} +extern "C" { + pub fn ACaptureRequest_getAllTags( + request: *const ACaptureRequest, + numTags: *mut i32, + tags: *mut *const u32, + ) -> camera_status_t; +} +extern "C" { + pub fn ACaptureRequest_setEntry_u8( + request: *mut ACaptureRequest, + tag: u32, + count: u32, + data: *const u8, + ) -> camera_status_t; +} +extern "C" { + pub fn ACaptureRequest_setEntry_i32( + request: *mut ACaptureRequest, + tag: u32, + count: u32, + data: *const i32, + ) -> camera_status_t; +} +extern "C" { + pub fn ACaptureRequest_setEntry_float( + request: *mut ACaptureRequest, + tag: u32, + count: u32, + data: *const f32, + ) -> camera_status_t; +} +extern "C" { + pub fn ACaptureRequest_setEntry_i64( + request: *mut ACaptureRequest, + tag: u32, + count: u32, + data: *const i64, + ) -> camera_status_t; +} +extern "C" { + pub fn ACaptureRequest_setEntry_double( + request: *mut ACaptureRequest, + tag: u32, + count: u32, + data: *const f64, + ) -> camera_status_t; +} +extern "C" { + pub fn ACaptureRequest_setEntry_rational( + request: *mut ACaptureRequest, + tag: u32, + count: u32, + data: *const ACameraMetadata_rational, + ) -> camera_status_t; +} +extern "C" { + pub fn ACaptureRequest_free(request: *mut ACaptureRequest); +} +extern "C" { + pub fn ACaptureRequest_setUserContext( + request: *mut ACaptureRequest, + context: *mut ::std::os::raw::c_void, + ) -> camera_status_t; +} +extern "C" { + pub fn ACaptureRequest_getUserContext( + request: *const ACaptureRequest, + context: *mut *mut ::std::os::raw::c_void, + ) -> camera_status_t; +} +extern "C" { + pub fn ACaptureRequest_copy(src: *const ACaptureRequest) -> *mut ACaptureRequest; +} +extern "C" { + pub fn ACaptureRequest_getConstEntry_physicalCamera( + request: *const ACaptureRequest, + physicalId: *const ::std::os::raw::c_char, + tag: u32, + entry: *mut ACameraMetadata_const_entry, + ) -> camera_status_t; +} +extern "C" { + pub fn ACaptureRequest_setEntry_physicalCamera_u8( + request: *mut ACaptureRequest, + physicalId: *const ::std::os::raw::c_char, + tag: u32, + count: u32, + data: *const u8, + ) -> camera_status_t; +} +extern "C" { + pub fn ACaptureRequest_setEntry_physicalCamera_i32( + request: *mut ACaptureRequest, + physicalId: *const ::std::os::raw::c_char, + tag: u32, + count: u32, + data: *const i32, + ) -> camera_status_t; +} +extern "C" { + pub fn ACaptureRequest_setEntry_physicalCamera_float( + request: *mut ACaptureRequest, + physicalId: *const ::std::os::raw::c_char, + tag: u32, + count: u32, + data: *const f32, + ) -> camera_status_t; +} +extern "C" { + pub fn ACaptureRequest_setEntry_physicalCamera_i64( + request: *mut ACaptureRequest, + physicalId: *const ::std::os::raw::c_char, + tag: u32, + count: u32, + data: *const i64, + ) -> camera_status_t; +} +extern "C" { + pub fn ACaptureRequest_setEntry_physicalCamera_double( + request: *mut ACaptureRequest, + physicalId: *const ::std::os::raw::c_char, + tag: u32, + count: u32, + data: *const f64, + ) -> camera_status_t; +} +extern "C" { + pub fn ACaptureRequest_setEntry_physicalCamera_rational( + request: *mut ACaptureRequest, + physicalId: *const ::std::os::raw::c_char, + tag: u32, + count: u32, + data: *const ACameraMetadata_rational, + ) -> camera_status_t; +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ACameraCaptureSession { + _unused: [u8; 0], +} +pub type ACameraCaptureSession_stateCallback = ::std::option::Option< + unsafe extern "C" fn(context: *mut ::std::os::raw::c_void, session: *mut ACameraCaptureSession), +>; +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ACameraCaptureSession_stateCallbacks { + pub context: *mut ::std::os::raw::c_void, + pub onClosed: ACameraCaptureSession_stateCallback, + pub onReady: ACameraCaptureSession_stateCallback, + pub onActive: ACameraCaptureSession_stateCallback, } #[test] -fn bindgen_test_layout_ACameraMetadata_entry__bindgen_ty_1() { - assert_eq!( - ::std::mem::size_of::(), - 4usize, - concat!("Size of: ", stringify!(ACameraMetadata_entry__bindgen_ty_1)) - ); +fn bindgen_test_layout_ACameraCaptureSession_stateCallbacks() { assert_eq!( - ::std::mem::align_of::(), - 4usize, + ::std::mem::size_of::(), + 16usize, concat!( - "Alignment of ", - stringify!(ACameraMetadata_entry__bindgen_ty_1) + "Size of: ", + stringify!(ACameraCaptureSession_stateCallbacks) ) ); assert_eq!( - unsafe { - &(*(::std::ptr::null::())).u8_ as *const _ as usize - }, - 0usize, + ::std::mem::align_of::(), + 4usize, concat!( - "Offset of field: ", - stringify!(ACameraMetadata_entry__bindgen_ty_1), - "::", - stringify!(u8_) + "Alignment of ", + stringify!(ACameraCaptureSession_stateCallbacks) ) ); assert_eq!( unsafe { - &(*(::std::ptr::null::())).i32_ as *const _ + &(*(::std::ptr::null::())).context as *const _ as usize }, 0usize, concat!( "Offset of field: ", - stringify!(ACameraMetadata_entry__bindgen_ty_1), - "::", - stringify!(i32_) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::())).f as *const _ as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(ACameraMetadata_entry__bindgen_ty_1), + stringify!(ACameraCaptureSession_stateCallbacks), "::", - stringify!(f) + stringify!(context) ) ); assert_eq!( unsafe { - &(*(::std::ptr::null::())).i64_ as *const _ + &(*(::std::ptr::null::())).onClosed as *const _ as usize }, - 0usize, + 4usize, concat!( "Offset of field: ", - stringify!(ACameraMetadata_entry__bindgen_ty_1), + stringify!(ACameraCaptureSession_stateCallbacks), "::", - stringify!(i64_) + stringify!(onClosed) ) ); assert_eq!( unsafe { - &(*(::std::ptr::null::())).d as *const _ as usize + &(*(::std::ptr::null::())).onReady as *const _ + as usize }, - 0usize, + 8usize, concat!( "Offset of field: ", - stringify!(ACameraMetadata_entry__bindgen_ty_1), + stringify!(ACameraCaptureSession_stateCallbacks), "::", - stringify!(d) + stringify!(onReady) ) ); assert_eq!( unsafe { - &(*(::std::ptr::null::())).r as *const _ as usize + &(*(::std::ptr::null::())).onActive as *const _ + as usize }, - 0usize, + 12usize, concat!( "Offset of field: ", - stringify!(ACameraMetadata_entry__bindgen_ty_1), + stringify!(ACameraCaptureSession_stateCallbacks), "::", - stringify!(r) + stringify!(onActive) ) ); } +pub const CAPTURE_FAILURE_REASON_FLUSHED: ::std::os::raw::c_uint = 0; +pub const CAPTURE_FAILURE_REASON_ERROR: ::std::os::raw::c_uint = 1; +pub type _bindgen_ty_64 = ::std::os::raw::c_uint; +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ACameraCaptureFailure { + pub frameNumber: i64, + pub reason: ::std::os::raw::c_int, + pub sequenceId: ::std::os::raw::c_int, + pub wasImageCaptured: bool, +} #[test] -fn bindgen_test_layout_ACameraMetadata_entry() { +fn bindgen_test_layout_ACameraCaptureFailure() { assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(ACameraMetadata_entry)) + ::std::mem::size_of::(), + 20usize, + concat!("Size of: ", stringify!(ACameraCaptureFailure)) ); assert_eq!( - ::std::mem::align_of::(), + ::std::mem::align_of::(), 4usize, - concat!("Alignment of ", stringify!(ACameraMetadata_entry)) + concat!("Alignment of ", stringify!(ACameraCaptureFailure)) ); assert_eq!( - unsafe { &(*(::std::ptr::null::())).tag as *const _ as usize }, + unsafe { + &(*(::std::ptr::null::())).frameNumber as *const _ as usize + }, 0usize, concat!( "Offset of field: ", - stringify!(ACameraMetadata_entry), + stringify!(ACameraCaptureFailure), "::", - stringify!(tag) + stringify!(frameNumber) ) ); assert_eq!( - unsafe { &(*(::std::ptr::null::())).type_ as *const _ as usize }, - 4usize, + unsafe { &(*(::std::ptr::null::())).reason as *const _ as usize }, + 8usize, concat!( "Offset of field: ", - stringify!(ACameraMetadata_entry), + stringify!(ACameraCaptureFailure), "::", - stringify!(type_) + stringify!(reason) ) ); assert_eq!( - unsafe { &(*(::std::ptr::null::())).count as *const _ as usize }, - 8usize, + unsafe { + &(*(::std::ptr::null::())).sequenceId as *const _ as usize + }, + 12usize, concat!( "Offset of field: ", - stringify!(ACameraMetadata_entry), + stringify!(ACameraCaptureFailure), "::", - stringify!(count) + stringify!(sequenceId) ) ); assert_eq!( - unsafe { &(*(::std::ptr::null::())).data as *const _ as usize }, - 12usize, + unsafe { + &(*(::std::ptr::null::())).wasImageCaptured as *const _ as usize + }, + 16usize, concat!( "Offset of field: ", - stringify!(ACameraMetadata_entry), + stringify!(ACameraCaptureFailure), "::", - stringify!(data) + stringify!(wasImageCaptured) ) ); } +pub type ACameraCaptureSession_captureCallback_start = ::std::option::Option< + unsafe extern "C" fn( + context: *mut ::std::os::raw::c_void, + session: *mut ACameraCaptureSession, + request: *const ACaptureRequest, + timestamp: i64, + ), +>; +pub type ACameraCaptureSession_captureCallback_result = ::std::option::Option< + unsafe extern "C" fn( + context: *mut ::std::os::raw::c_void, + session: *mut ACameraCaptureSession, + request: *mut ACaptureRequest, + result: *const ACameraMetadata, + ), +>; +pub type ACameraCaptureSession_captureCallback_failed = ::std::option::Option< + unsafe extern "C" fn( + context: *mut ::std::os::raw::c_void, + session: *mut ACameraCaptureSession, + request: *mut ACaptureRequest, + failure: *mut ACameraCaptureFailure, + ), +>; +pub type ACameraCaptureSession_captureCallback_sequenceEnd = ::std::option::Option< + unsafe extern "C" fn( + context: *mut ::std::os::raw::c_void, + session: *mut ACameraCaptureSession, + sequenceId: ::std::os::raw::c_int, + frameNumber: i64, + ), +>; +pub type ACameraCaptureSession_captureCallback_sequenceAbort = ::std::option::Option< + unsafe extern "C" fn( + context: *mut ::std::os::raw::c_void, + session: *mut ACameraCaptureSession, + sequenceId: ::std::os::raw::c_int, + ), +>; +pub type ACameraCaptureSession_captureCallback_bufferLost = ::std::option::Option< + unsafe extern "C" fn( + context: *mut ::std::os::raw::c_void, + session: *mut ACameraCaptureSession, + request: *mut ACaptureRequest, + window: *mut ACameraWindowType, + frameNumber: i64, + ), +>; #[repr(C)] -#[derive(Copy, Clone)] -pub struct ACameraMetadata_const_entry { - pub tag: u32, - pub type_: u8, - pub count: u32, - pub data: ACameraMetadata_const_entry__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union ACameraMetadata_const_entry__bindgen_ty_1 { - pub u8_: *const u8, - pub i32_: *const i32, - pub f: *const f32, - pub i64_: *const i64, - pub d: *const f64, - pub r: *const ACameraMetadata_rational, +#[derive(Debug, Copy, Clone)] +pub struct ACameraCaptureSession_captureCallbacks { + pub context: *mut ::std::os::raw::c_void, + pub onCaptureStarted: ACameraCaptureSession_captureCallback_start, + pub onCaptureProgressed: ACameraCaptureSession_captureCallback_result, + pub onCaptureCompleted: ACameraCaptureSession_captureCallback_result, + pub onCaptureFailed: ACameraCaptureSession_captureCallback_failed, + pub onCaptureSequenceCompleted: ACameraCaptureSession_captureCallback_sequenceEnd, + pub onCaptureSequenceAborted: ACameraCaptureSession_captureCallback_sequenceAbort, + pub onCaptureBufferLost: ACameraCaptureSession_captureCallback_bufferLost, } #[test] -fn bindgen_test_layout_ACameraMetadata_const_entry__bindgen_ty_1() { +fn bindgen_test_layout_ACameraCaptureSession_captureCallbacks() { assert_eq!( - ::std::mem::size_of::(), - 4usize, + ::std::mem::size_of::(), + 32usize, concat!( "Size of: ", - stringify!(ACameraMetadata_const_entry__bindgen_ty_1) + stringify!(ACameraCaptureSession_captureCallbacks) ) ); assert_eq!( - ::std::mem::align_of::(), + ::std::mem::align_of::(), 4usize, concat!( "Alignment of ", - stringify!(ACameraMetadata_const_entry__bindgen_ty_1) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::())).u8_ as *const _ - as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(ACameraMetadata_const_entry__bindgen_ty_1), - "::", - stringify!(u8_) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::())).i32_ as *const _ - as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(ACameraMetadata_const_entry__bindgen_ty_1), - "::", - stringify!(i32_) + stringify!(ACameraCaptureSession_captureCallbacks) ) ); assert_eq!( unsafe { - &(*(::std::ptr::null::())).f as *const _ + &(*(::std::ptr::null::())).context as *const _ as usize }, 0usize, concat!( "Offset of field: ", - stringify!(ACameraMetadata_const_entry__bindgen_ty_1), + stringify!(ACameraCaptureSession_captureCallbacks), "::", - stringify!(f) + stringify!(context) ) ); assert_eq!( unsafe { - &(*(::std::ptr::null::())).i64_ as *const _ - as usize + &(*(::std::ptr::null::())).onCaptureStarted + as *const _ as usize }, - 0usize, + 4usize, concat!( "Offset of field: ", - stringify!(ACameraMetadata_const_entry__bindgen_ty_1), + stringify!(ACameraCaptureSession_captureCallbacks), "::", - stringify!(i64_) + stringify!(onCaptureStarted) ) ); assert_eq!( unsafe { - &(*(::std::ptr::null::())).d as *const _ - as usize + &(*(::std::ptr::null::())).onCaptureProgressed + as *const _ as usize }, - 0usize, + 8usize, concat!( "Offset of field: ", - stringify!(ACameraMetadata_const_entry__bindgen_ty_1), + stringify!(ACameraCaptureSession_captureCallbacks), "::", - stringify!(d) + stringify!(onCaptureProgressed) ) ); assert_eq!( unsafe { - &(*(::std::ptr::null::())).r as *const _ - as usize + &(*(::std::ptr::null::())).onCaptureCompleted + as *const _ as usize }, - 0usize, + 12usize, concat!( "Offset of field: ", - stringify!(ACameraMetadata_const_entry__bindgen_ty_1), + stringify!(ACameraCaptureSession_captureCallbacks), "::", - stringify!(r) + stringify!(onCaptureCompleted) ) ); -} -#[test] -fn bindgen_test_layout_ACameraMetadata_const_entry() { assert_eq!( - ::std::mem::size_of::(), + unsafe { + &(*(::std::ptr::null::())).onCaptureFailed + as *const _ as usize + }, 16usize, - concat!("Size of: ", stringify!(ACameraMetadata_const_entry)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(ACameraMetadata_const_entry)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).tag as *const _ as usize }, - 0usize, concat!( "Offset of field: ", - stringify!(ACameraMetadata_const_entry), + stringify!(ACameraCaptureSession_captureCallbacks), "::", - stringify!(tag) + stringify!(onCaptureFailed) ) ); assert_eq!( unsafe { - &(*(::std::ptr::null::())).type_ as *const _ as usize + &(*(::std::ptr::null::())) + .onCaptureSequenceCompleted as *const _ as usize }, - 4usize, + 20usize, concat!( "Offset of field: ", - stringify!(ACameraMetadata_const_entry), + stringify!(ACameraCaptureSession_captureCallbacks), "::", - stringify!(type_) + stringify!(onCaptureSequenceCompleted) ) ); assert_eq!( unsafe { - &(*(::std::ptr::null::())).count as *const _ as usize + &(*(::std::ptr::null::())) + .onCaptureSequenceAborted as *const _ as usize }, - 8usize, + 24usize, concat!( "Offset of field: ", - stringify!(ACameraMetadata_const_entry), + stringify!(ACameraCaptureSession_captureCallbacks), "::", - stringify!(count) + stringify!(onCaptureSequenceAborted) ) ); assert_eq!( unsafe { - &(*(::std::ptr::null::())).data as *const _ as usize + &(*(::std::ptr::null::())).onCaptureBufferLost + as *const _ as usize }, - 12usize, + 28usize, concat!( "Offset of field: ", - stringify!(ACameraMetadata_const_entry), + stringify!(ACameraCaptureSession_captureCallbacks), "::", - stringify!(data) + stringify!(onCaptureBufferLost) ) ); } +pub const CAPTURE_SEQUENCE_ID_NONE: ::std::os::raw::c_int = -1; +pub type _bindgen_ty_65 = ::std::os::raw::c_int; extern "C" { - pub fn ACameraMetadata_getConstEntry( - metadata: *const ACameraMetadata, - tag: u32, - entry: *mut ACameraMetadata_const_entry, - ) -> camera_status_t; -} -extern "C" { - pub fn ACameraMetadata_getAllTags( - metadata: *const ACameraMetadata, - numEntries: *mut i32, - tags: *mut *const u32, - ) -> camera_status_t; -} -extern "C" { - pub fn ACameraMetadata_copy(src: *const ACameraMetadata) -> *mut ACameraMetadata; -} -extern "C" { - pub fn ACameraMetadata_free(metadata: *mut ACameraMetadata); -} -extern "C" { - pub fn ACameraMetadata_isLogicalMultiCamera( - staticMetadata: *const ACameraMetadata, - numPhysicalCameras: *mut size_t, - physicalCameraIds: *mut *const *const ::std::os::raw::c_char, - ) -> bool; -} -extern "C" { - pub fn ACameraMetadata_fromCameraMetadata( - env: *mut JNIEnv, - cameraMetadata: jobject, - ) -> *mut ACameraMetadata; -} -pub type ACameraWindowType = ANativeWindow; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ACameraOutputTargets { - _unused: [u8; 0], -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ACameraOutputTarget { - _unused: [u8; 0], + pub fn ACameraCaptureSession_close(session: *mut ACameraCaptureSession); } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct ACaptureRequest { +pub struct ACameraDevice { _unused: [u8; 0], } extern "C" { - pub fn ACameraOutputTarget_create( - window: *mut ACameraWindowType, - output: *mut *mut ACameraOutputTarget, - ) -> camera_status_t; -} -extern "C" { - pub fn ACameraOutputTarget_free(output: *mut ACameraOutputTarget); -} -extern "C" { - pub fn ACaptureRequest_addTarget( - request: *mut ACaptureRequest, - output: *const ACameraOutputTarget, - ) -> camera_status_t; -} -extern "C" { - pub fn ACaptureRequest_removeTarget( - request: *mut ACaptureRequest, - output: *const ACameraOutputTarget, - ) -> camera_status_t; -} -extern "C" { - pub fn ACaptureRequest_getConstEntry( - request: *const ACaptureRequest, - tag: u32, - entry: *mut ACameraMetadata_const_entry, - ) -> camera_status_t; -} -extern "C" { - pub fn ACaptureRequest_getAllTags( - request: *const ACaptureRequest, - numTags: *mut i32, - tags: *mut *const u32, - ) -> camera_status_t; -} -extern "C" { - pub fn ACaptureRequest_setEntry_u8( - request: *mut ACaptureRequest, - tag: u32, - count: u32, - data: *const u8, - ) -> camera_status_t; -} -extern "C" { - pub fn ACaptureRequest_setEntry_i32( - request: *mut ACaptureRequest, - tag: u32, - count: u32, - data: *const i32, - ) -> camera_status_t; -} -extern "C" { - pub fn ACaptureRequest_setEntry_float( - request: *mut ACaptureRequest, - tag: u32, - count: u32, - data: *const f32, - ) -> camera_status_t; -} -extern "C" { - pub fn ACaptureRequest_setEntry_i64( - request: *mut ACaptureRequest, - tag: u32, - count: u32, - data: *const i64, - ) -> camera_status_t; -} -extern "C" { - pub fn ACaptureRequest_setEntry_double( - request: *mut ACaptureRequest, - tag: u32, - count: u32, - data: *const f64, - ) -> camera_status_t; -} -extern "C" { - pub fn ACaptureRequest_setEntry_rational( - request: *mut ACaptureRequest, - tag: u32, - count: u32, - data: *const ACameraMetadata_rational, - ) -> camera_status_t; -} -extern "C" { - pub fn ACaptureRequest_free(request: *mut ACaptureRequest); -} -extern "C" { - pub fn ACaptureRequest_setUserContext( - request: *mut ACaptureRequest, - context: *mut ::std::os::raw::c_void, - ) -> camera_status_t; -} -extern "C" { - pub fn ACaptureRequest_getUserContext( - request: *const ACaptureRequest, - context: *mut *mut ::std::os::raw::c_void, - ) -> camera_status_t; -} -extern "C" { - pub fn ACaptureRequest_copy(src: *const ACaptureRequest) -> *mut ACaptureRequest; -} -extern "C" { - pub fn ACaptureRequest_getConstEntry_physicalCamera( - request: *const ACaptureRequest, - physicalId: *const ::std::os::raw::c_char, - tag: u32, - entry: *mut ACameraMetadata_const_entry, - ) -> camera_status_t; -} -extern "C" { - pub fn ACaptureRequest_setEntry_physicalCamera_u8( - request: *mut ACaptureRequest, - physicalId: *const ::std::os::raw::c_char, - tag: u32, - count: u32, - data: *const u8, - ) -> camera_status_t; -} -extern "C" { - pub fn ACaptureRequest_setEntry_physicalCamera_i32( - request: *mut ACaptureRequest, - physicalId: *const ::std::os::raw::c_char, - tag: u32, - count: u32, - data: *const i32, + pub fn ACameraCaptureSession_getDevice( + session: *mut ACameraCaptureSession, + device: *mut *mut ACameraDevice, ) -> camera_status_t; } extern "C" { - pub fn ACaptureRequest_setEntry_physicalCamera_float( - request: *mut ACaptureRequest, - physicalId: *const ::std::os::raw::c_char, - tag: u32, - count: u32, - data: *const f32, + pub fn ACameraCaptureSession_capture( + session: *mut ACameraCaptureSession, + callbacks: *mut ACameraCaptureSession_captureCallbacks, + numRequests: ::std::os::raw::c_int, + requests: *mut *mut ACaptureRequest, + captureSequenceId: *mut ::std::os::raw::c_int, ) -> camera_status_t; } extern "C" { - pub fn ACaptureRequest_setEntry_physicalCamera_i64( - request: *mut ACaptureRequest, - physicalId: *const ::std::os::raw::c_char, - tag: u32, - count: u32, - data: *const i64, + pub fn ACameraCaptureSession_setRepeatingRequest( + session: *mut ACameraCaptureSession, + callbacks: *mut ACameraCaptureSession_captureCallbacks, + numRequests: ::std::os::raw::c_int, + requests: *mut *mut ACaptureRequest, + captureSequenceId: *mut ::std::os::raw::c_int, ) -> camera_status_t; } extern "C" { - pub fn ACaptureRequest_setEntry_physicalCamera_double( - request: *mut ACaptureRequest, - physicalId: *const ::std::os::raw::c_char, - tag: u32, - count: u32, - data: *const f64, + pub fn ACameraCaptureSession_stopRepeating( + session: *mut ACameraCaptureSession, ) -> camera_status_t; } extern "C" { - pub fn ACaptureRequest_setEntry_physicalCamera_rational( - request: *mut ACaptureRequest, - physicalId: *const ::std::os::raw::c_char, - tag: u32, - count: u32, - data: *const ACameraMetadata_rational, + pub fn ACameraCaptureSession_abortCaptures( + session: *mut ACameraCaptureSession, ) -> camera_status_t; } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct ACameraCaptureSession { +pub struct ACaptureSessionOutput { _unused: [u8; 0], } -pub type ACameraCaptureSession_stateCallback = ::std::option::Option< - unsafe extern "C" fn(context: *mut ::std::os::raw::c_void, session: *mut ACameraCaptureSession), +extern "C" { + pub fn ACameraCaptureSession_updateSharedOutput( + session: *mut ACameraCaptureSession, + output: *mut ACaptureSessionOutput, + ) -> camera_status_t; +} +pub type ACameraCaptureSession_logicalCamera_captureCallback_result = ::std::option::Option< + unsafe extern "C" fn( + context: *mut ::std::os::raw::c_void, + session: *mut ACameraCaptureSession, + request: *mut ACaptureRequest, + result: *const ACameraMetadata, + physicalResultCount: size_t, + physicalCameraIds: *mut *const ::std::os::raw::c_char, + physicalResults: *mut *const ACameraMetadata, + ), >; #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct ACameraCaptureSession_stateCallbacks { +pub struct ALogicalCameraCaptureFailure { + pub captureFailure: ACameraCaptureFailure, + pub physicalCameraId: *const ::std::os::raw::c_char, +} +#[test] +fn bindgen_test_layout_ALogicalCameraCaptureFailure() { + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!("Size of: ", stringify!(ALogicalCameraCaptureFailure)) + ); + assert_eq!( + ::std::mem::align_of::(), + 4usize, + concat!("Alignment of ", stringify!(ALogicalCameraCaptureFailure)) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).captureFailure as *const _ + as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ALogicalCameraCaptureFailure), + "::", + stringify!(captureFailure) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).physicalCameraId as *const _ + as usize + }, + 20usize, + concat!( + "Offset of field: ", + stringify!(ALogicalCameraCaptureFailure), + "::", + stringify!(physicalCameraId) + ) + ); +} +pub type ACameraCaptureSession_logicalCamera_captureCallback_failed = ::std::option::Option< + unsafe extern "C" fn( + context: *mut ::std::os::raw::c_void, + session: *mut ACameraCaptureSession, + request: *mut ACaptureRequest, + failure: *mut ALogicalCameraCaptureFailure, + ), +>; +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ACameraCaptureSession_logicalCamera_captureCallbacks { pub context: *mut ::std::os::raw::c_void, - pub onClosed: ACameraCaptureSession_stateCallback, - pub onReady: ACameraCaptureSession_stateCallback, - pub onActive: ACameraCaptureSession_stateCallback, + pub onCaptureStarted: ACameraCaptureSession_captureCallback_start, + pub onCaptureProgressed: ACameraCaptureSession_captureCallback_result, + pub onLogicalCameraCaptureCompleted: ACameraCaptureSession_logicalCamera_captureCallback_result, + pub onLogicalCameraCaptureFailed: ACameraCaptureSession_logicalCamera_captureCallback_failed, + pub onCaptureSequenceCompleted: ACameraCaptureSession_captureCallback_sequenceEnd, + pub onCaptureSequenceAborted: ACameraCaptureSession_captureCallback_sequenceAbort, + pub onCaptureBufferLost: ACameraCaptureSession_captureCallback_bufferLost, } #[test] -fn bindgen_test_layout_ACameraCaptureSession_stateCallbacks() { +fn bindgen_test_layout_ACameraCaptureSession_logicalCamera_captureCallbacks() { assert_eq!( - ::std::mem::size_of::(), - 16usize, + ::std::mem::size_of::(), + 32usize, concat!( "Size of: ", - stringify!(ACameraCaptureSession_stateCallbacks) + stringify!(ACameraCaptureSession_logicalCamera_captureCallbacks) ) ); assert_eq!( - ::std::mem::align_of::(), + ::std::mem::align_of::(), 4usize, concat!( "Alignment of ", - stringify!(ACameraCaptureSession_stateCallbacks) + stringify!(ACameraCaptureSession_logicalCamera_captureCallbacks) ) ); assert_eq!( unsafe { - &(*(::std::ptr::null::())).context as *const _ - as usize + &(*(::std::ptr::null::())).context + as *const _ as usize }, 0usize, concat!( "Offset of field: ", - stringify!(ACameraCaptureSession_stateCallbacks), + stringify!(ACameraCaptureSession_logicalCamera_captureCallbacks), "::", stringify!(context) ) ); assert_eq!( unsafe { - &(*(::std::ptr::null::())).onClosed as *const _ - as usize + &(*(::std::ptr::null::())) + .onCaptureStarted as *const _ as usize }, 4usize, concat!( "Offset of field: ", - stringify!(ACameraCaptureSession_stateCallbacks), + stringify!(ACameraCaptureSession_logicalCamera_captureCallbacks), "::", - stringify!(onClosed) + stringify!(onCaptureStarted) ) ); assert_eq!( unsafe { - &(*(::std::ptr::null::())).onReady as *const _ - as usize + &(*(::std::ptr::null::())) + .onCaptureProgressed as *const _ as usize }, 8usize, concat!( "Offset of field: ", - stringify!(ACameraCaptureSession_stateCallbacks), + stringify!(ACameraCaptureSession_logicalCamera_captureCallbacks), "::", - stringify!(onReady) + stringify!(onCaptureProgressed) ) ); assert_eq!( unsafe { - &(*(::std::ptr::null::())).onActive as *const _ - as usize + &(*(::std::ptr::null::())) + .onLogicalCameraCaptureCompleted as *const _ as usize }, 12usize, concat!( "Offset of field: ", - stringify!(ACameraCaptureSession_stateCallbacks), + stringify!(ACameraCaptureSession_logicalCamera_captureCallbacks), "::", - stringify!(onActive) + stringify!(onLogicalCameraCaptureCompleted) ) ); -} -pub const CAPTURE_FAILURE_REASON_FLUSHED: ::std::os::raw::c_uint = 0; -pub const CAPTURE_FAILURE_REASON_ERROR: ::std::os::raw::c_uint = 1; -pub type _bindgen_ty_62 = ::std::os::raw::c_uint; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ACameraCaptureFailure { - pub frameNumber: i64, - pub reason: ::std::os::raw::c_int, - pub sequenceId: ::std::os::raw::c_int, - pub wasImageCaptured: bool, -} -#[test] -fn bindgen_test_layout_ACameraCaptureFailure() { - assert_eq!( - ::std::mem::size_of::(), - 20usize, - concat!("Size of: ", stringify!(ACameraCaptureFailure)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(ACameraCaptureFailure)) - ); assert_eq!( unsafe { - &(*(::std::ptr::null::())).frameNumber as *const _ as usize + &(*(::std::ptr::null::())) + .onLogicalCameraCaptureFailed as *const _ as usize }, - 0usize, + 16usize, concat!( "Offset of field: ", - stringify!(ACameraCaptureFailure), + stringify!(ACameraCaptureSession_logicalCamera_captureCallbacks), "::", - stringify!(frameNumber) + stringify!(onLogicalCameraCaptureFailed) ) ); assert_eq!( - unsafe { &(*(::std::ptr::null::())).reason as *const _ as usize }, - 8usize, + unsafe { + &(*(::std::ptr::null::())) + .onCaptureSequenceCompleted as *const _ as usize + }, + 20usize, concat!( "Offset of field: ", - stringify!(ACameraCaptureFailure), + stringify!(ACameraCaptureSession_logicalCamera_captureCallbacks), "::", - stringify!(reason) + stringify!(onCaptureSequenceCompleted) ) ); assert_eq!( unsafe { - &(*(::std::ptr::null::())).sequenceId as *const _ as usize + &(*(::std::ptr::null::())) + .onCaptureSequenceAborted as *const _ as usize }, - 12usize, + 24usize, concat!( "Offset of field: ", - stringify!(ACameraCaptureFailure), + stringify!(ACameraCaptureSession_logicalCamera_captureCallbacks), "::", - stringify!(sequenceId) + stringify!(onCaptureSequenceAborted) ) ); assert_eq!( unsafe { - &(*(::std::ptr::null::())).wasImageCaptured as *const _ as usize + &(*(::std::ptr::null::())) + .onCaptureBufferLost as *const _ as usize }, - 16usize, + 28usize, concat!( "Offset of field: ", - stringify!(ACameraCaptureFailure), + stringify!(ACameraCaptureSession_logicalCamera_captureCallbacks), "::", - stringify!(wasImageCaptured) + stringify!(onCaptureBufferLost) ) - ); -} -pub type ACameraCaptureSession_captureCallback_start = ::std::option::Option< - unsafe extern "C" fn( - context: *mut ::std::os::raw::c_void, - session: *mut ACameraCaptureSession, - request: *const ACaptureRequest, - timestamp: i64, - ), ->; -pub type ACameraCaptureSession_captureCallback_result = ::std::option::Option< - unsafe extern "C" fn( - context: *mut ::std::os::raw::c_void, - session: *mut ACameraCaptureSession, - request: *mut ACaptureRequest, - result: *const ACameraMetadata, - ), ->; -pub type ACameraCaptureSession_captureCallback_failed = ::std::option::Option< - unsafe extern "C" fn( - context: *mut ::std::os::raw::c_void, - session: *mut ACameraCaptureSession, - request: *mut ACaptureRequest, - failure: *mut ACameraCaptureFailure, - ), ->; -pub type ACameraCaptureSession_captureCallback_sequenceEnd = ::std::option::Option< - unsafe extern "C" fn( - context: *mut ::std::os::raw::c_void, - session: *mut ACameraCaptureSession, - sequenceId: ::std::os::raw::c_int, - frameNumber: i64, - ), ->; -pub type ACameraCaptureSession_captureCallback_sequenceAbort = ::std::option::Option< - unsafe extern "C" fn( - context: *mut ::std::os::raw::c_void, + ); +} +extern "C" { + pub fn ACameraCaptureSession_logicalCamera_capture( session: *mut ACameraCaptureSession, - sequenceId: ::std::os::raw::c_int, - ), ->; -pub type ACameraCaptureSession_captureCallback_bufferLost = ::std::option::Option< + callbacks: *mut ACameraCaptureSession_logicalCamera_captureCallbacks, + numRequests: ::std::os::raw::c_int, + requests: *mut *mut ACaptureRequest, + captureSequenceId: *mut ::std::os::raw::c_int, + ) -> camera_status_t; +} +extern "C" { + pub fn ACameraCaptureSession_logicalCamera_setRepeatingRequest( + session: *mut ACameraCaptureSession, + callbacks: *mut ACameraCaptureSession_logicalCamera_captureCallbacks, + numRequests: ::std::os::raw::c_int, + requests: *mut *mut ACaptureRequest, + captureSequenceId: *mut ::std::os::raw::c_int, + ) -> camera_status_t; +} +pub type ACameraCaptureSession_captureCallback_startV2 = ::std::option::Option< unsafe extern "C" fn( context: *mut ::std::os::raw::c_void, session: *mut ACameraCaptureSession, - request: *mut ACaptureRequest, - window: *mut ACameraWindowType, + request: *const ACaptureRequest, + timestamp: i64, frameNumber: i64, ), >; #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct ACameraCaptureSession_captureCallbacks { +pub struct ACameraCaptureSession_captureCallbacksV2 { pub context: *mut ::std::os::raw::c_void, - pub onCaptureStarted: ACameraCaptureSession_captureCallback_start, + pub onCaptureStarted: ACameraCaptureSession_captureCallback_startV2, pub onCaptureProgressed: ACameraCaptureSession_captureCallback_result, pub onCaptureCompleted: ACameraCaptureSession_captureCallback_result, pub onCaptureFailed: ACameraCaptureSession_captureCallback_failed, @@ -20349,252 +22315,133 @@ pub struct ACameraCaptureSession_captureCallbacks { pub onCaptureBufferLost: ACameraCaptureSession_captureCallback_bufferLost, } #[test] -fn bindgen_test_layout_ACameraCaptureSession_captureCallbacks() { +fn bindgen_test_layout_ACameraCaptureSession_captureCallbacksV2() { assert_eq!( - ::std::mem::size_of::(), + ::std::mem::size_of::(), 32usize, concat!( "Size of: ", - stringify!(ACameraCaptureSession_captureCallbacks) + stringify!(ACameraCaptureSession_captureCallbacksV2) ) ); assert_eq!( - ::std::mem::align_of::(), + ::std::mem::align_of::(), 4usize, concat!( "Alignment of ", - stringify!(ACameraCaptureSession_captureCallbacks) + stringify!(ACameraCaptureSession_captureCallbacksV2) ) ); assert_eq!( unsafe { - &(*(::std::ptr::null::())).context as *const _ + &(*(::std::ptr::null::())).context as *const _ as usize }, 0usize, concat!( "Offset of field: ", - stringify!(ACameraCaptureSession_captureCallbacks), + stringify!(ACameraCaptureSession_captureCallbacksV2), "::", stringify!(context) ) ); assert_eq!( unsafe { - &(*(::std::ptr::null::())).onCaptureStarted + &(*(::std::ptr::null::())).onCaptureStarted as *const _ as usize }, 4usize, concat!( "Offset of field: ", - stringify!(ACameraCaptureSession_captureCallbacks), + stringify!(ACameraCaptureSession_captureCallbacksV2), "::", stringify!(onCaptureStarted) ) ); assert_eq!( unsafe { - &(*(::std::ptr::null::())).onCaptureProgressed + &(*(::std::ptr::null::())).onCaptureProgressed as *const _ as usize }, 8usize, concat!( "Offset of field: ", - stringify!(ACameraCaptureSession_captureCallbacks), + stringify!(ACameraCaptureSession_captureCallbacksV2), "::", stringify!(onCaptureProgressed) ) ); assert_eq!( unsafe { - &(*(::std::ptr::null::())).onCaptureCompleted + &(*(::std::ptr::null::())).onCaptureCompleted as *const _ as usize }, 12usize, concat!( "Offset of field: ", - stringify!(ACameraCaptureSession_captureCallbacks), + stringify!(ACameraCaptureSession_captureCallbacksV2), "::", stringify!(onCaptureCompleted) ) ); assert_eq!( unsafe { - &(*(::std::ptr::null::())).onCaptureFailed + &(*(::std::ptr::null::())).onCaptureFailed as *const _ as usize }, 16usize, concat!( "Offset of field: ", - stringify!(ACameraCaptureSession_captureCallbacks), + stringify!(ACameraCaptureSession_captureCallbacksV2), "::", stringify!(onCaptureFailed) ) ); assert_eq!( unsafe { - &(*(::std::ptr::null::())) + &(*(::std::ptr::null::())) .onCaptureSequenceCompleted as *const _ as usize }, 20usize, concat!( "Offset of field: ", - stringify!(ACameraCaptureSession_captureCallbacks), + stringify!(ACameraCaptureSession_captureCallbacksV2), "::", stringify!(onCaptureSequenceCompleted) ) ); assert_eq!( unsafe { - &(*(::std::ptr::null::())) + &(*(::std::ptr::null::())) .onCaptureSequenceAborted as *const _ as usize }, 24usize, concat!( "Offset of field: ", - stringify!(ACameraCaptureSession_captureCallbacks), + stringify!(ACameraCaptureSession_captureCallbacksV2), "::", stringify!(onCaptureSequenceAborted) ) ); assert_eq!( unsafe { - &(*(::std::ptr::null::())).onCaptureBufferLost + &(*(::std::ptr::null::())).onCaptureBufferLost as *const _ as usize }, 28usize, concat!( "Offset of field: ", - stringify!(ACameraCaptureSession_captureCallbacks), + stringify!(ACameraCaptureSession_captureCallbacksV2), "::", stringify!(onCaptureBufferLost) ) ); } -pub const CAPTURE_SEQUENCE_ID_NONE: ::std::os::raw::c_int = -1; -pub type _bindgen_ty_63 = ::std::os::raw::c_int; -extern "C" { - pub fn ACameraCaptureSession_close(session: *mut ACameraCaptureSession); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ACameraDevice { - _unused: [u8; 0], -} -extern "C" { - pub fn ACameraCaptureSession_getDevice( - session: *mut ACameraCaptureSession, - device: *mut *mut ACameraDevice, - ) -> camera_status_t; -} -extern "C" { - pub fn ACameraCaptureSession_capture( - session: *mut ACameraCaptureSession, - callbacks: *mut ACameraCaptureSession_captureCallbacks, - numRequests: ::std::os::raw::c_int, - requests: *mut *mut ACaptureRequest, - captureSequenceId: *mut ::std::os::raw::c_int, - ) -> camera_status_t; -} -extern "C" { - pub fn ACameraCaptureSession_setRepeatingRequest( - session: *mut ACameraCaptureSession, - callbacks: *mut ACameraCaptureSession_captureCallbacks, - numRequests: ::std::os::raw::c_int, - requests: *mut *mut ACaptureRequest, - captureSequenceId: *mut ::std::os::raw::c_int, - ) -> camera_status_t; -} -extern "C" { - pub fn ACameraCaptureSession_stopRepeating( - session: *mut ACameraCaptureSession, - ) -> camera_status_t; -} -extern "C" { - pub fn ACameraCaptureSession_abortCaptures( - session: *mut ACameraCaptureSession, - ) -> camera_status_t; -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ACaptureSessionOutput { - _unused: [u8; 0], -} -extern "C" { - pub fn ACameraCaptureSession_updateSharedOutput( - session: *mut ACameraCaptureSession, - output: *mut ACaptureSessionOutput, - ) -> camera_status_t; -} -pub type ACameraCaptureSession_logicalCamera_captureCallback_result = ::std::option::Option< - unsafe extern "C" fn( - context: *mut ::std::os::raw::c_void, - session: *mut ACameraCaptureSession, - request: *mut ACaptureRequest, - result: *const ACameraMetadata, - physicalResultCount: size_t, - physicalCameraIds: *mut *const ::std::os::raw::c_char, - physicalResults: *mut *const ACameraMetadata, - ), ->; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ALogicalCameraCaptureFailure { - pub captureFailure: ACameraCaptureFailure, - pub physicalCameraId: *const ::std::os::raw::c_char, -} -#[test] -fn bindgen_test_layout_ALogicalCameraCaptureFailure() { - assert_eq!( - ::std::mem::size_of::(), - 24usize, - concat!("Size of: ", stringify!(ALogicalCameraCaptureFailure)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(ALogicalCameraCaptureFailure)) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::())).captureFailure as *const _ - as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(ALogicalCameraCaptureFailure), - "::", - stringify!(captureFailure) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::())).physicalCameraId as *const _ - as usize - }, - 20usize, - concat!( - "Offset of field: ", - stringify!(ALogicalCameraCaptureFailure), - "::", - stringify!(physicalCameraId) - ) - ); -} -pub type ACameraCaptureSession_logicalCamera_captureCallback_failed = ::std::option::Option< - unsafe extern "C" fn( - context: *mut ::std::os::raw::c_void, - session: *mut ACameraCaptureSession, - request: *mut ACaptureRequest, - failure: *mut ALogicalCameraCaptureFailure, - ), ->; #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct ACameraCaptureSession_logicalCamera_captureCallbacks { +pub struct ACameraCaptureSession_logicalCamera_captureCallbacksV2 { pub context: *mut ::std::os::raw::c_void, - pub onCaptureStarted: ACameraCaptureSession_captureCallback_start, + pub onCaptureStarted: ACameraCaptureSession_captureCallback_startV2, pub onCaptureProgressed: ACameraCaptureSession_captureCallback_result, pub onLogicalCameraCaptureCompleted: ACameraCaptureSession_logicalCamera_captureCallback_result, pub onLogicalCameraCaptureFailed: ACameraCaptureSession_logicalCamera_captureCallback_failed, @@ -20603,141 +22450,159 @@ pub struct ACameraCaptureSession_logicalCamera_captureCallbacks { pub onCaptureBufferLost: ACameraCaptureSession_captureCallback_bufferLost, } #[test] -fn bindgen_test_layout_ACameraCaptureSession_logicalCamera_captureCallbacks() { +fn bindgen_test_layout_ACameraCaptureSession_logicalCamera_captureCallbacksV2() { assert_eq!( - ::std::mem::size_of::(), + ::std::mem::size_of::(), 32usize, concat!( "Size of: ", - stringify!(ACameraCaptureSession_logicalCamera_captureCallbacks) + stringify!(ACameraCaptureSession_logicalCamera_captureCallbacksV2) ) ); assert_eq!( - ::std::mem::align_of::(), + ::std::mem::align_of::(), 4usize, concat!( "Alignment of ", - stringify!(ACameraCaptureSession_logicalCamera_captureCallbacks) + stringify!(ACameraCaptureSession_logicalCamera_captureCallbacksV2) ) ); assert_eq!( unsafe { - &(*(::std::ptr::null::())).context - as *const _ as usize + &(*(::std::ptr::null::())) + .context as *const _ as usize }, 0usize, concat!( "Offset of field: ", - stringify!(ACameraCaptureSession_logicalCamera_captureCallbacks), + stringify!(ACameraCaptureSession_logicalCamera_captureCallbacksV2), "::", stringify!(context) ) ); assert_eq!( unsafe { - &(*(::std::ptr::null::())) + &(*(::std::ptr::null::())) .onCaptureStarted as *const _ as usize }, 4usize, concat!( "Offset of field: ", - stringify!(ACameraCaptureSession_logicalCamera_captureCallbacks), + stringify!(ACameraCaptureSession_logicalCamera_captureCallbacksV2), "::", stringify!(onCaptureStarted) ) ); assert_eq!( unsafe { - &(*(::std::ptr::null::())) + &(*(::std::ptr::null::())) .onCaptureProgressed as *const _ as usize }, 8usize, concat!( "Offset of field: ", - stringify!(ACameraCaptureSession_logicalCamera_captureCallbacks), + stringify!(ACameraCaptureSession_logicalCamera_captureCallbacksV2), "::", stringify!(onCaptureProgressed) ) ); assert_eq!( unsafe { - &(*(::std::ptr::null::())) + &(*(::std::ptr::null::())) .onLogicalCameraCaptureCompleted as *const _ as usize }, 12usize, concat!( "Offset of field: ", - stringify!(ACameraCaptureSession_logicalCamera_captureCallbacks), + stringify!(ACameraCaptureSession_logicalCamera_captureCallbacksV2), "::", stringify!(onLogicalCameraCaptureCompleted) ) ); assert_eq!( unsafe { - &(*(::std::ptr::null::())) + &(*(::std::ptr::null::())) .onLogicalCameraCaptureFailed as *const _ as usize }, 16usize, concat!( "Offset of field: ", - stringify!(ACameraCaptureSession_logicalCamera_captureCallbacks), + stringify!(ACameraCaptureSession_logicalCamera_captureCallbacksV2), "::", stringify!(onLogicalCameraCaptureFailed) ) ); assert_eq!( unsafe { - &(*(::std::ptr::null::())) + &(*(::std::ptr::null::())) .onCaptureSequenceCompleted as *const _ as usize }, 20usize, concat!( "Offset of field: ", - stringify!(ACameraCaptureSession_logicalCamera_captureCallbacks), + stringify!(ACameraCaptureSession_logicalCamera_captureCallbacksV2), "::", stringify!(onCaptureSequenceCompleted) ) ); assert_eq!( unsafe { - &(*(::std::ptr::null::())) + &(*(::std::ptr::null::())) .onCaptureSequenceAborted as *const _ as usize }, 24usize, concat!( "Offset of field: ", - stringify!(ACameraCaptureSession_logicalCamera_captureCallbacks), + stringify!(ACameraCaptureSession_logicalCamera_captureCallbacksV2), "::", stringify!(onCaptureSequenceAborted) ) ); assert_eq!( unsafe { - &(*(::std::ptr::null::())) + &(*(::std::ptr::null::())) .onCaptureBufferLost as *const _ as usize }, 28usize, concat!( "Offset of field: ", - stringify!(ACameraCaptureSession_logicalCamera_captureCallbacks), + stringify!(ACameraCaptureSession_logicalCamera_captureCallbacksV2), "::", stringify!(onCaptureBufferLost) ) ); } extern "C" { - pub fn ACameraCaptureSession_logicalCamera_capture( + pub fn ACameraCaptureSession_captureV2( session: *mut ACameraCaptureSession, - callbacks: *mut ACameraCaptureSession_logicalCamera_captureCallbacks, + callbacks: *mut ACameraCaptureSession_captureCallbacksV2, numRequests: ::std::os::raw::c_int, requests: *mut *mut ACaptureRequest, captureSequenceId: *mut ::std::os::raw::c_int, ) -> camera_status_t; } extern "C" { - pub fn ACameraCaptureSession_logicalCamera_setRepeatingRequest( + pub fn ACameraCaptureSession_setRepeatingRequestV2( session: *mut ACameraCaptureSession, - callbacks: *mut ACameraCaptureSession_logicalCamera_captureCallbacks, + callbacks: *mut ACameraCaptureSession_captureCallbacksV2, + numRequests: ::std::os::raw::c_int, + requests: *mut *mut ACaptureRequest, + captureSequenceId: *mut ::std::os::raw::c_int, + ) -> camera_status_t; +} +extern "C" { + pub fn ACameraCaptureSession_logicalCamera_captureV2( + session: *mut ACameraCaptureSession, + callbacks: *mut ACameraCaptureSession_logicalCamera_captureCallbacksV2, + numRequests: ::std::os::raw::c_int, + requests: *mut *mut ACaptureRequest, + captureSequenceId: *mut ::std::os::raw::c_int, + ) -> camera_status_t; +} +extern "C" { + pub fn ACameraCaptureSession_logicalCamera_setRepeatingRequestV2( + session: *mut ACameraCaptureSession, + callbacks: *mut ACameraCaptureSession_logicalCamera_captureCallbacksV2, numRequests: ::std::os::raw::c_int, requests: *mut *mut ACaptureRequest, captureSequenceId: *mut ::std::os::raw::c_int, @@ -20787,7 +22652,7 @@ pub const ERROR_MAX_CAMERAS_IN_USE: ::std::os::raw::c_uint = 2; pub const ERROR_CAMERA_DISABLED: ::std::os::raw::c_uint = 3; pub const ERROR_CAMERA_DEVICE: ::std::os::raw::c_uint = 4; pub const ERROR_CAMERA_SERVICE: ::std::os::raw::c_uint = 5; -pub type _bindgen_ty_64 = ::std::os::raw::c_uint; +pub type _bindgen_ty_66 = ::std::os::raw::c_uint; pub type ACameraDevice_StateCallback = ::std::option::Option< unsafe extern "C" fn(context: *mut ::std::os::raw::c_void, device: *mut ACameraDevice), >; @@ -22137,6 +24002,15 @@ extern "C" { extern "C" { pub static mut AMEDIAFORMAT_KEY_SAMPLE_TIME_BEFORE_APPEND: *const ::std::os::raw::c_char; } +extern "C" { + pub static mut AMEDIAFORMAT_KEY_PICTURE_TYPE: *const ::std::os::raw::c_char; +} +extern "C" { + pub static mut AMEDIAFORMAT_KEY_VIDEO_ENCODING_STATISTICS_LEVEL: *const ::std::os::raw::c_char; +} +extern "C" { + pub static mut AMEDIAFORMAT_KEY_VIDEO_QP_AVERAGE: *const ::std::os::raw::c_char; +} extern "C" { pub static mut AMEDIAFORMAT_VIDEO_QP_B_MAX: *const ::std::os::raw::c_char; } @@ -22161,6 +24035,15 @@ extern "C" { extern "C" { pub static mut AMEDIAFORMAT_VIDEO_QP_P_MIN: *const ::std::os::raw::c_char; } +extern "C" { + pub static mut AMEDIAFORMAT_KEY_MPEGH_COMPATIBLE_SETS: *const ::std::os::raw::c_char; +} +extern "C" { + pub static mut AMEDIAFORMAT_KEY_MPEGH_PROFILE_LEVEL_INDICATION: *const ::std::os::raw::c_char; +} +extern "C" { + pub static mut AMEDIAFORMAT_KEY_MPEGH_REFERENCE_CHANNEL_LAYOUT: *const ::std::os::raw::c_char; +} #[repr(C)] #[derive(Debug, Copy, Clone)] pub struct AMediaCodec { @@ -22242,7 +24125,7 @@ pub const AMEDIACODEC_CONFIGURE_FLAG_ENCODE: ::std::os::raw::c_int = 1; pub const AMEDIACODEC_INFO_OUTPUT_BUFFERS_CHANGED: ::std::os::raw::c_int = -3; pub const AMEDIACODEC_INFO_OUTPUT_FORMAT_CHANGED: ::std::os::raw::c_int = -2; pub const AMEDIACODEC_INFO_TRY_AGAIN_LATER: ::std::os::raw::c_int = -1; -pub type _bindgen_ty_65 = ::std::os::raw::c_int; +pub type _bindgen_ty_67 = ::std::os::raw::c_int; pub type AMediaCodecOnAsyncInputAvailable = ::std::option::Option< unsafe extern "C" fn( codec: *mut AMediaCodec, @@ -22350,6 +24233,14 @@ fn bindgen_test_layout_AMediaCodecOnAsyncNotifyCallback() { ) ); } +pub type AMediaCodecOnFrameRendered = ::std::option::Option< + unsafe extern "C" fn( + codec: *mut AMediaCodec, + userdata: *mut ::std::os::raw::c_void, + mediaTimeUs: i64, + systemNano: i64, + ), +>; extern "C" { pub fn AMediaCodec_createCodecByName(name: *const ::std::os::raw::c_char) -> *mut AMediaCodec; } @@ -22511,6 +24402,13 @@ extern "C" { userdata: *mut ::std::os::raw::c_void, ) -> media_status_t; } +extern "C" { + pub fn AMediaCodec_setOnFrameRenderedCallback( + arg1: *mut AMediaCodec, + callback: AMediaCodecOnFrameRendered, + userdata: *mut ::std::os::raw::c_void, + ) -> media_status_t; +} extern "C" { pub fn AMediaCodec_releaseCrypto(arg1: *mut AMediaCodec) -> media_status_t; } @@ -22785,6 +24683,24 @@ impl AMediaDrmKeyType { #[repr(transparent)] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] pub struct AMediaDrmKeyType(pub ::std::os::raw::c_uint); +impl AMediaDrmKeyRequestType { + pub const KEY_REQUEST_TYPE_INITIAL: AMediaDrmKeyRequestType = AMediaDrmKeyRequestType(0); +} +impl AMediaDrmKeyRequestType { + pub const KEY_REQUEST_TYPE_RENEWAL: AMediaDrmKeyRequestType = AMediaDrmKeyRequestType(1); +} +impl AMediaDrmKeyRequestType { + pub const KEY_REQUEST_TYPE_RELEASE: AMediaDrmKeyRequestType = AMediaDrmKeyRequestType(2); +} +impl AMediaDrmKeyRequestType { + pub const KEY_REQUEST_TYPE_NONE: AMediaDrmKeyRequestType = AMediaDrmKeyRequestType(3); +} +impl AMediaDrmKeyRequestType { + pub const KEY_REQUEST_TYPE_UPDATE: AMediaDrmKeyRequestType = AMediaDrmKeyRequestType(4); +} +#[repr(transparent)] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub struct AMediaDrmKeyRequestType(pub i32); #[repr(C)] #[derive(Debug, Copy, Clone)] pub struct AMediaDrmKeyValuePair { @@ -22965,6 +24881,22 @@ extern "C" { keyRequestSize: *mut size_t, ) -> media_status_t; } +extern "C" { + pub fn AMediaDrm_getKeyRequestWithDefaultUrlAndType( + arg1: *mut AMediaDrm, + scope: *const AMediaDrmScope, + init: *const u8, + initSize: size_t, + mimeType: *const ::std::os::raw::c_char, + keyType: AMediaDrmKeyType, + optionalParameters: *const AMediaDrmKeyValue, + numOptionalParameters: size_t, + keyRequest: *mut *const u8, + keyRequestSize: *mut size_t, + defaultUrl: *mut *const ::std::os::raw::c_char, + keyRequestType: *mut AMediaDrmKeyRequestType, + ) -> media_status_t; +} extern "C" { pub fn AMediaDrm_provideKeyResponse( arg1: *mut AMediaDrm, @@ -23285,7 +25217,7 @@ extern "C" { } pub const AMEDIAEXTRACTOR_SAMPLE_FLAG_SYNC: ::std::os::raw::c_uint = 1; pub const AMEDIAEXTRACTOR_SAMPLE_FLAG_ENCRYPTED: ::std::os::raw::c_uint = 2; -pub type _bindgen_ty_66 = ::std::os::raw::c_uint; +pub type _bindgen_ty_68 = ::std::os::raw::c_uint; extern "C" { pub fn AMediaExtractor_getFileFormat(arg1: *mut AMediaExtractor) -> *mut AMediaFormat; } diff --git a/ndk-sys/src/ffi_x86_64.rs b/ndk-sys/src/ffi_x86_64.rs index 5e912439..6271be29 100644 --- a/ndk-sys/src/ffi_x86_64.rs +++ b/ndk-sys/src/ffi_x86_64.rs @@ -34,10 +34,10 @@ pub const __BIONIC__: u32 = 1; pub const __WORDSIZE: u32 = 64; pub const __bos_level: u32 = 0; pub const __ANDROID_NDK__: u32 = 1; -pub const __NDK_MAJOR__: u32 = 23; -pub const __NDK_MINOR__: u32 = 1; +pub const __NDK_MAJOR__: u32 = 25; +pub const __NDK_MINOR__: u32 = 0; pub const __NDK_BETA__: u32 = 0; -pub const __NDK_BUILD__: u32 = 7779620; +pub const __NDK_BUILD__: u32 = 8775105; pub const __NDK_CANARY__: u32 = 0; pub const __ANDROID_API_FUTURE__: u32 = 10000; pub const __ANDROID_API__: u32 = 10000; @@ -395,6 +395,8 @@ pub const SO_DETACH_REUSEPORT_BPF: u32 = 68; pub const SO_PREFER_BUSY_POLL: u32 = 69; pub const SO_BUSY_POLL_BUDGET: u32 = 70; pub const SO_NETNS_COOKIE: u32 = 71; +pub const SO_BUF_LOCK: u32 = 72; +pub const SO_RESERVE_MEM: u32 = 73; pub const SO_TIMESTAMP: u32 = 29; pub const SO_TIMESTAMPNS: u32 = 35; pub const SO_TIMESTAMPING: u32 = 37; @@ -1883,6 +1885,9 @@ impl AndroidBitmapFormat { impl AndroidBitmapFormat { pub const ANDROID_BITMAP_FORMAT_RGBA_F16: AndroidBitmapFormat = AndroidBitmapFormat(9); } +impl AndroidBitmapFormat { + pub const ANDROID_BITMAP_FORMAT_RGBA_1010102: AndroidBitmapFormat = AndroidBitmapFormat(10); +} #[repr(transparent)] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] pub struct AndroidBitmapFormat(pub ::std::os::raw::c_uint); @@ -2040,12 +2045,24 @@ extern "C" { pub struct AChoreographer { _unused: [u8; 0], } +pub type AVsyncId = i64; +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct AChoreographerFrameCallbackData { + _unused: [u8; 0], +} pub type AChoreographer_frameCallback = ::std::option::Option< unsafe extern "C" fn(frameTimeNanos: ::std::os::raw::c_long, data: *mut ::std::os::raw::c_void), >; pub type AChoreographer_frameCallback64 = ::std::option::Option< unsafe extern "C" fn(frameTimeNanos: i64, data: *mut ::std::os::raw::c_void), >; +pub type AChoreographer_vsyncCallback = ::std::option::Option< + unsafe extern "C" fn( + callbackData: *const AChoreographerFrameCallbackData, + data: *mut ::std::os::raw::c_void, + ), +>; pub type AChoreographer_refreshRateCallback = ::std::option::Option< unsafe extern "C" fn(vsyncPeriodNanos: i64, data: *mut ::std::os::raw::c_void), >; @@ -2082,6 +2099,13 @@ extern "C" { delayMillis: u32, ); } +extern "C" { + pub fn AChoreographer_postVsyncCallback( + choreographer: *mut AChoreographer, + callback: AChoreographer_vsyncCallback, + data: *mut ::std::os::raw::c_void, + ); +} extern "C" { pub fn AChoreographer_registerRefreshRateCallback( choreographer: *mut AChoreographer, @@ -2096,6 +2120,39 @@ extern "C" { data: *mut ::std::os::raw::c_void, ); } +extern "C" { + pub fn AChoreographerFrameCallbackData_getFrameTimeNanos( + data: *const AChoreographerFrameCallbackData, + ) -> i64; +} +extern "C" { + pub fn AChoreographerFrameCallbackData_getFrameTimelinesLength( + data: *const AChoreographerFrameCallbackData, + ) -> size_t; +} +extern "C" { + pub fn AChoreographerFrameCallbackData_getPreferredFrameTimelineIndex( + data: *const AChoreographerFrameCallbackData, + ) -> size_t; +} +extern "C" { + pub fn AChoreographerFrameCallbackData_getFrameTimelineVsyncId( + data: *const AChoreographerFrameCallbackData, + index: size_t, + ) -> AVsyncId; +} +extern "C" { + pub fn AChoreographerFrameCallbackData_getFrameTimelineExpectedPresentationTimeNanos( + data: *const AChoreographerFrameCallbackData, + index: size_t, + ) -> i64; +} +extern "C" { + pub fn AChoreographerFrameCallbackData_getFrameTimelineDeadlineNanos( + data: *const AChoreographerFrameCallbackData, + index: size_t, + ) -> i64; +} #[repr(C)] #[derive(Debug, Copy, Clone)] pub struct AConfiguration { @@ -2427,6 +2484,90 @@ extern "C" { impl ADataSpace { pub const ADATASPACE_UNKNOWN: ADataSpace = ADataSpace(0); } +impl ADataSpace { + pub const STANDARD_MASK: ADataSpace = ADataSpace(4128768); +} +impl ADataSpace { + pub const STANDARD_UNSPECIFIED: ADataSpace = ADataSpace(0); +} +impl ADataSpace { + pub const STANDARD_BT709: ADataSpace = ADataSpace(65536); +} +impl ADataSpace { + pub const STANDARD_BT601_625: ADataSpace = ADataSpace(131072); +} +impl ADataSpace { + pub const STANDARD_BT601_625_UNADJUSTED: ADataSpace = ADataSpace(196608); +} +impl ADataSpace { + pub const STANDARD_BT601_525: ADataSpace = ADataSpace(262144); +} +impl ADataSpace { + pub const STANDARD_BT601_525_UNADJUSTED: ADataSpace = ADataSpace(327680); +} +impl ADataSpace { + pub const STANDARD_BT2020: ADataSpace = ADataSpace(393216); +} +impl ADataSpace { + pub const STANDARD_BT2020_CONSTANT_LUMINANCE: ADataSpace = ADataSpace(458752); +} +impl ADataSpace { + pub const STANDARD_BT470M: ADataSpace = ADataSpace(524288); +} +impl ADataSpace { + pub const STANDARD_FILM: ADataSpace = ADataSpace(589824); +} +impl ADataSpace { + pub const STANDARD_DCI_P3: ADataSpace = ADataSpace(655360); +} +impl ADataSpace { + pub const STANDARD_ADOBE_RGB: ADataSpace = ADataSpace(720896); +} +impl ADataSpace { + pub const TRANSFER_MASK: ADataSpace = ADataSpace(130023424); +} +impl ADataSpace { + pub const TRANSFER_UNSPECIFIED: ADataSpace = ADataSpace(0); +} +impl ADataSpace { + pub const TRANSFER_LINEAR: ADataSpace = ADataSpace(4194304); +} +impl ADataSpace { + pub const TRANSFER_SRGB: ADataSpace = ADataSpace(8388608); +} +impl ADataSpace { + pub const TRANSFER_SMPTE_170M: ADataSpace = ADataSpace(12582912); +} +impl ADataSpace { + pub const TRANSFER_GAMMA2_2: ADataSpace = ADataSpace(16777216); +} +impl ADataSpace { + pub const TRANSFER_GAMMA2_6: ADataSpace = ADataSpace(20971520); +} +impl ADataSpace { + pub const TRANSFER_GAMMA2_8: ADataSpace = ADataSpace(25165824); +} +impl ADataSpace { + pub const TRANSFER_ST2084: ADataSpace = ADataSpace(29360128); +} +impl ADataSpace { + pub const TRANSFER_HLG: ADataSpace = ADataSpace(33554432); +} +impl ADataSpace { + pub const RANGE_MASK: ADataSpace = ADataSpace(939524096); +} +impl ADataSpace { + pub const RANGE_UNSPECIFIED: ADataSpace = ADataSpace(0); +} +impl ADataSpace { + pub const RANGE_FULL: ADataSpace = ADataSpace(134217728); +} +impl ADataSpace { + pub const RANGE_LIMITED: ADataSpace = ADataSpace(268435456); +} +impl ADataSpace { + pub const RANGE_EXTENDED: ADataSpace = ADataSpace(402653184); +} impl ADataSpace { pub const ADATASPACE_SCRGB_LINEAR: ADataSpace = ADataSpace(406913024); } @@ -2442,9 +2583,21 @@ impl ADataSpace { impl ADataSpace { pub const ADATASPACE_BT2020_PQ: ADataSpace = ADataSpace(163971072); } +impl ADataSpace { + pub const ADATASPACE_BT2020_ITU_PQ: ADataSpace = ADataSpace(298188800); +} impl ADataSpace { pub const ADATASPACE_ADOBE_RGB: ADataSpace = ADataSpace(151715840); } +impl ADataSpace { + pub const ADATASPACE_JFIF: ADataSpace = ADataSpace(146931712); +} +impl ADataSpace { + pub const ADATASPACE_BT601_625: ADataSpace = ADataSpace(281149440); +} +impl ADataSpace { + pub const ADATASPACE_BT601_525: ADataSpace = ADataSpace(281280512); +} impl ADataSpace { pub const ADATASPACE_BT2020: ADataSpace = ADataSpace(147193856); } @@ -2457,6 +2610,18 @@ impl ADataSpace { impl ADataSpace { pub const ADATASPACE_SRGB_LINEAR: ADataSpace = ADataSpace(138477568); } +impl ADataSpace { + pub const ADATASPACE_BT2020_HLG: ADataSpace = ADataSpace(168165376); +} +impl ADataSpace { + pub const ADATASPACE_BT2020_ITU_HLG: ADataSpace = ADataSpace(302383104); +} +impl ADataSpace { + pub const DEPTH: ADataSpace = ADataSpace(4096); +} +impl ADataSpace { + pub const DYNAMIC_DEPTH: ADataSpace = ADataSpace(4098); +} #[repr(transparent)] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] pub struct ADataSpace(pub ::std::os::raw::c_uint); @@ -2823,6 +2988,13 @@ impl AHardwareBuffer_Format { pub const AHARDWAREBUFFER_FORMAT_Y8Cb8Cr8_420: AHardwareBuffer_Format = AHardwareBuffer_Format(35); } +impl AHardwareBuffer_Format { + pub const AHARDWAREBUFFER_FORMAT_YCbCr_P010: AHardwareBuffer_Format = + AHardwareBuffer_Format(54); +} +impl AHardwareBuffer_Format { + pub const AHARDWAREBUFFER_FORMAT_R8_UNORM: AHardwareBuffer_Format = AHardwareBuffer_Format(56); +} #[repr(transparent)] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] pub struct AHardwareBuffer_Format(pub ::std::os::raw::c_uint); @@ -4042,6 +4214,7 @@ pub const AINPUT_EVENT_TYPE_MOTION: ::std::os::raw::c_uint = 2; pub const AINPUT_EVENT_TYPE_FOCUS: ::std::os::raw::c_uint = 3; pub const AINPUT_EVENT_TYPE_CAPTURE: ::std::os::raw::c_uint = 4; pub const AINPUT_EVENT_TYPE_DRAG: ::std::os::raw::c_uint = 5; +pub const AINPUT_EVENT_TYPE_TOUCH_MODE: ::std::os::raw::c_uint = 6; pub type _bindgen_ty_17 = ::std::os::raw::c_uint; pub const AKEY_EVENT_ACTION_DOWN: ::std::os::raw::c_uint = 0; pub const AKEY_EVENT_ACTION_UP: ::std::os::raw::c_uint = 1; @@ -4144,6 +4317,20 @@ pub const AMOTION_EVENT_TOOL_TYPE_MOUSE: ::std::os::raw::c_uint = 3; pub const AMOTION_EVENT_TOOL_TYPE_ERASER: ::std::os::raw::c_uint = 4; pub const AMOTION_EVENT_TOOL_TYPE_PALM: ::std::os::raw::c_uint = 5; pub type _bindgen_ty_25 = ::std::os::raw::c_uint; +impl AMotionClassification { + pub const AMOTION_EVENT_CLASSIFICATION_NONE: AMotionClassification = AMotionClassification(0); +} +impl AMotionClassification { + pub const AMOTION_EVENT_CLASSIFICATION_AMBIGUOUS_GESTURE: AMotionClassification = + AMotionClassification(1); +} +impl AMotionClassification { + pub const AMOTION_EVENT_CLASSIFICATION_DEEP_PRESS: AMotionClassification = + AMotionClassification(2); +} +#[repr(transparent)] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub struct AMotionClassification(pub u32); pub const AINPUT_SOURCE_CLASS_MASK: ::std::os::raw::c_uint = 255; pub const AINPUT_SOURCE_CLASS_NONE: ::std::os::raw::c_uint = 0; pub const AINPUT_SOURCE_CLASS_BUTTON: ::std::os::raw::c_uint = 1; @@ -4419,6 +4606,12 @@ extern "C" { history_index: size_t, ) -> f32; } +extern "C" { + pub fn AMotionEvent_getActionButton(motion_event: *const AInputEvent) -> i32; +} +extern "C" { + pub fn AMotionEvent_getClassification(motion_event: *const AInputEvent) -> i32; +} extern "C" { pub fn AMotionEvent_fromJava(env: *mut JNIEnv, motionEvent: jobject) -> *const AInputEvent; } @@ -4455,6 +4648,9 @@ extern "C" { handled: ::std::os::raw::c_int, ); } +extern "C" { + pub fn AInputQueue_fromJava(env: *mut JNIEnv, inputQueue: jobject) -> *mut AInputQueue; +} impl android_LogPriority { pub const ANDROID_LOG_UNKNOWN: android_LogPriority = android_LogPriority(0); } @@ -6579,6 +6775,133 @@ fn bindgen_test_layout_mallinfo() { extern "C" { pub fn mallinfo() -> mallinfo; } +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct mallinfo2 { + pub arena: size_t, + pub ordblks: size_t, + pub smblks: size_t, + pub hblks: size_t, + pub hblkhd: size_t, + pub usmblks: size_t, + pub fsmblks: size_t, + pub uordblks: size_t, + pub fordblks: size_t, + pub keepcost: size_t, +} +#[test] +fn bindgen_test_layout_mallinfo2() { + assert_eq!( + ::std::mem::size_of::(), + 80usize, + concat!("Size of: ", stringify!(mallinfo2)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(mallinfo2)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).arena as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(mallinfo2), + "::", + stringify!(arena) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).ordblks as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(mallinfo2), + "::", + stringify!(ordblks) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).smblks as *const _ as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(mallinfo2), + "::", + stringify!(smblks) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).hblks as *const _ as usize }, + 24usize, + concat!( + "Offset of field: ", + stringify!(mallinfo2), + "::", + stringify!(hblks) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).hblkhd as *const _ as usize }, + 32usize, + concat!( + "Offset of field: ", + stringify!(mallinfo2), + "::", + stringify!(hblkhd) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).usmblks as *const _ as usize }, + 40usize, + concat!( + "Offset of field: ", + stringify!(mallinfo2), + "::", + stringify!(usmblks) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).fsmblks as *const _ as usize }, + 48usize, + concat!( + "Offset of field: ", + stringify!(mallinfo2), + "::", + stringify!(fsmblks) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).uordblks as *const _ as usize }, + 56usize, + concat!( + "Offset of field: ", + stringify!(mallinfo2), + "::", + stringify!(uordblks) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).fordblks as *const _ as usize }, + 64usize, + concat!( + "Offset of field: ", + stringify!(mallinfo2), + "::", + stringify!(fordblks) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).keepcost as *const _ as usize }, + 72usize, + concat!( + "Offset of field: ", + stringify!(mallinfo2), + "::", + stringify!(keepcost) + ) + ); +} extern "C" { pub fn malloc_info( __must_be_zero: ::std::os::raw::c_int, @@ -7230,6 +7553,19 @@ extern "C" { extern "C" { pub fn android_res_cancel(nsend_fd: ::std::os::raw::c_int); } +extern "C" { + pub fn android_tag_socket_with_uid( + sockfd: ::std::os::raw::c_int, + tag: u32, + uid: uid_t, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn android_tag_socket(sockfd: ::std::os::raw::c_int, tag: u32) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn android_untag_socket(sockfd: ::std::os::raw::c_int) -> ::std::os::raw::c_int; +} impl ANativeWindow_LegacyFormat { pub const WINDOW_FORMAT_RGBA_8888: ANativeWindow_LegacyFormat = ANativeWindow_LegacyFormat(1); } @@ -8224,6 +8560,18 @@ impl OperationCode { impl OperationCode { pub const ANEURALNETWORKS_RANK: OperationCode = OperationCode(101); } +impl OperationCode { + pub const ANEURALNETWORKS_BATCH_MATMUL: OperationCode = OperationCode(102); +} +impl OperationCode { + pub const ANEURALNETWORKS_PACK: OperationCode = OperationCode(103); +} +impl OperationCode { + pub const ANEURALNETWORKS_MIRROR_PAD: OperationCode = OperationCode(104); +} +impl OperationCode { + pub const ANEURALNETWORKS_REVERSE: OperationCode = OperationCode(105); +} #[repr(transparent)] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] pub struct OperationCode(pub ::std::os::raw::c_uint); @@ -8296,6 +8644,15 @@ impl FeatureLevelCode { impl FeatureLevelCode { pub const ANEURALNETWORKS_FEATURE_LEVEL_5: FeatureLevelCode = FeatureLevelCode(31); } +impl FeatureLevelCode { + pub const ANEURALNETWORKS_FEATURE_LEVEL_6: FeatureLevelCode = FeatureLevelCode(1000006); +} +impl FeatureLevelCode { + pub const ANEURALNETWORKS_FEATURE_LEVEL_7: FeatureLevelCode = FeatureLevelCode(1000007); +} +impl FeatureLevelCode { + pub const ANEURALNETWORKS_FEATURE_LEVEL_8: FeatureLevelCode = FeatureLevelCode(1000008); +} #[repr(transparent)] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] pub struct FeatureLevelCode(pub ::std::os::raw::c_uint); @@ -9586,10 +9943,17 @@ pub const ASENSOR_TYPE_POSE_6DOF: ::std::os::raw::c_int = 28; pub const ASENSOR_TYPE_STATIONARY_DETECT: ::std::os::raw::c_int = 29; pub const ASENSOR_TYPE_MOTION_DETECT: ::std::os::raw::c_int = 30; pub const ASENSOR_TYPE_HEART_BEAT: ::std::os::raw::c_int = 31; +pub const ASENSOR_TYPE_DYNAMIC_SENSOR_META: ::std::os::raw::c_int = 32; pub const ASENSOR_TYPE_ADDITIONAL_INFO: ::std::os::raw::c_int = 33; pub const ASENSOR_TYPE_LOW_LATENCY_OFFBODY_DETECT: ::std::os::raw::c_int = 34; pub const ASENSOR_TYPE_ACCELEROMETER_UNCALIBRATED: ::std::os::raw::c_int = 35; pub const ASENSOR_TYPE_HINGE_ANGLE: ::std::os::raw::c_int = 36; +pub const ASENSOR_TYPE_HEAD_TRACKER: ::std::os::raw::c_int = 37; +pub const ASENSOR_TYPE_ACCELEROMETER_LIMITED_AXES: ::std::os::raw::c_int = 38; +pub const ASENSOR_TYPE_GYROSCOPE_LIMITED_AXES: ::std::os::raw::c_int = 39; +pub const ASENSOR_TYPE_ACCELEROMETER_LIMITED_AXES_UNCALIBRATED: ::std::os::raw::c_int = 40; +pub const ASENSOR_TYPE_GYROSCOPE_LIMITED_AXES_UNCALIBRATED: ::std::os::raw::c_int = 41; +pub const ASENSOR_TYPE_HEADING: ::std::os::raw::c_int = 42; pub type _bindgen_ty_38 = ::std::os::raw::c_int; pub const ASENSOR_STATUS_NO_CONTACT: ::std::os::raw::c_int = -1; pub const ASENSOR_STATUS_UNRELIABLE: ::std::os::raw::c_int = 0; @@ -10243,480 +10607,1228 @@ fn bindgen_test_layout_AAdditionalInfoEvent() { ); } #[repr(C)] -#[derive(Copy, Clone)] -pub struct ASensorEvent { - pub version: i32, - pub sensor: i32, - pub type_: i32, - pub reserved0: i32, - pub timestamp: i64, - pub __bindgen_anon_1: ASensorEvent__bindgen_ty_1, - pub flags: u32, - pub reserved1: [i32; 3usize], -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union ASensorEvent__bindgen_ty_1 { - pub __bindgen_anon_1: ASensorEvent__bindgen_ty_1__bindgen_ty_1, - pub u64_: ASensorEvent__bindgen_ty_1__bindgen_ty_2, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union ASensorEvent__bindgen_ty_1__bindgen_ty_1 { - pub data: [f32; 16usize], - pub vector: ASensorVector, - pub acceleration: ASensorVector, - pub gyro: ASensorVector, - pub magnetic: ASensorVector, - pub temperature: f32, - pub distance: f32, - pub light: f32, - pub pressure: f32, - pub relative_humidity: f32, - pub uncalibrated_acceleration: AUncalibratedEvent, - pub uncalibrated_gyro: AUncalibratedEvent, - pub uncalibrated_magnetic: AUncalibratedEvent, - pub meta_data: AMetaDataEvent, - pub heart_rate: AHeartRateEvent, - pub dynamic_sensor_meta: ADynamicSensorEvent, - pub additional_info: AAdditionalInfoEvent, +#[derive(Debug, Copy, Clone)] +pub struct AHeadTrackerEvent { + pub rx: f32, + pub ry: f32, + pub rz: f32, + pub vx: f32, + pub vy: f32, + pub vz: f32, + pub discontinuity_count: i32, } #[test] -fn bindgen_test_layout_ASensorEvent__bindgen_ty_1__bindgen_ty_1() { +fn bindgen_test_layout_AHeadTrackerEvent() { assert_eq!( - ::std::mem::size_of::(), - 64usize, - concat!( - "Size of: ", - stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_1) - ) + ::std::mem::size_of::(), + 28usize, + concat!("Size of: ", stringify!(AHeadTrackerEvent)) ); assert_eq!( - ::std::mem::align_of::(), + ::std::mem::align_of::(), 4usize, - concat!( - "Alignment of ", - stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_1) - ) + concat!("Alignment of ", stringify!(AHeadTrackerEvent)) ); assert_eq!( - unsafe { - &(*(::std::ptr::null::())).data as *const _ - as usize - }, + unsafe { &(*(::std::ptr::null::())).rx as *const _ as usize }, 0usize, concat!( "Offset of field: ", - stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_1), + stringify!(AHeadTrackerEvent), "::", - stringify!(data) + stringify!(rx) ) ); assert_eq!( - unsafe { - &(*(::std::ptr::null::())).vector as *const _ - as usize - }, - 0usize, + unsafe { &(*(::std::ptr::null::())).ry as *const _ as usize }, + 4usize, concat!( "Offset of field: ", - stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_1), + stringify!(AHeadTrackerEvent), "::", - stringify!(vector) + stringify!(ry) ) ); assert_eq!( - unsafe { - &(*(::std::ptr::null::())).acceleration - as *const _ as usize - }, - 0usize, + unsafe { &(*(::std::ptr::null::())).rz as *const _ as usize }, + 8usize, concat!( "Offset of field: ", - stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_1), + stringify!(AHeadTrackerEvent), "::", - stringify!(acceleration) + stringify!(rz) ) ); assert_eq!( - unsafe { - &(*(::std::ptr::null::())).gyro as *const _ - as usize - }, - 0usize, + unsafe { &(*(::std::ptr::null::())).vx as *const _ as usize }, + 12usize, concat!( "Offset of field: ", - stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_1), + stringify!(AHeadTrackerEvent), "::", - stringify!(gyro) + stringify!(vx) ) ); assert_eq!( - unsafe { - &(*(::std::ptr::null::())).magnetic - as *const _ as usize - }, - 0usize, + unsafe { &(*(::std::ptr::null::())).vy as *const _ as usize }, + 16usize, concat!( "Offset of field: ", - stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_1), + stringify!(AHeadTrackerEvent), "::", - stringify!(magnetic) + stringify!(vy) ) ); assert_eq!( - unsafe { - &(*(::std::ptr::null::())).temperature - as *const _ as usize - }, - 0usize, + unsafe { &(*(::std::ptr::null::())).vz as *const _ as usize }, + 20usize, concat!( "Offset of field: ", - stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_1), + stringify!(AHeadTrackerEvent), "::", - stringify!(temperature) + stringify!(vz) ) ); assert_eq!( unsafe { - &(*(::std::ptr::null::())).distance - as *const _ as usize + &(*(::std::ptr::null::())).discontinuity_count as *const _ as usize }, - 0usize, + 24usize, concat!( "Offset of field: ", - stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_1), + stringify!(AHeadTrackerEvent), "::", - stringify!(distance) + stringify!(discontinuity_count) ) ); +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct ALimitedAxesImuEvent { + pub __bindgen_anon_1: ALimitedAxesImuEvent__bindgen_ty_1, + pub __bindgen_anon_2: ALimitedAxesImuEvent__bindgen_ty_2, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union ALimitedAxesImuEvent__bindgen_ty_1 { + pub calib: [f32; 3usize], + pub __bindgen_anon_1: ALimitedAxesImuEvent__bindgen_ty_1__bindgen_ty_1, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ALimitedAxesImuEvent__bindgen_ty_1__bindgen_ty_1 { + pub x: f32, + pub y: f32, + pub z: f32, +} +#[test] +fn bindgen_test_layout_ALimitedAxesImuEvent__bindgen_ty_1__bindgen_ty_1() { assert_eq!( - unsafe { - &(*(::std::ptr::null::())).light as *const _ - as usize - }, - 0usize, + ::std::mem::size_of::(), + 12usize, concat!( - "Offset of field: ", - stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_1), - "::", - stringify!(light) + "Size of: ", + stringify!(ALimitedAxesImuEvent__bindgen_ty_1__bindgen_ty_1) ) ); assert_eq!( - unsafe { - &(*(::std::ptr::null::())).pressure - as *const _ as usize - }, - 0usize, + ::std::mem::align_of::(), + 4usize, concat!( - "Offset of field: ", - stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_1), - "::", - stringify!(pressure) + "Alignment of ", + stringify!(ALimitedAxesImuEvent__bindgen_ty_1__bindgen_ty_1) ) ); assert_eq!( unsafe { - &(*(::std::ptr::null::())).relative_humidity + &(*(::std::ptr::null::())).x as *const _ as usize }, 0usize, concat!( "Offset of field: ", - stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_1), + stringify!(ALimitedAxesImuEvent__bindgen_ty_1__bindgen_ty_1), "::", - stringify!(relative_humidity) + stringify!(x) ) ); assert_eq!( unsafe { - &(*(::std::ptr::null::())) - .uncalibrated_acceleration as *const _ as usize + &(*(::std::ptr::null::())).y + as *const _ as usize }, - 0usize, + 4usize, concat!( "Offset of field: ", - stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_1), + stringify!(ALimitedAxesImuEvent__bindgen_ty_1__bindgen_ty_1), "::", - stringify!(uncalibrated_acceleration) + stringify!(y) ) ); assert_eq!( unsafe { - &(*(::std::ptr::null::())).uncalibrated_gyro + &(*(::std::ptr::null::())).z as *const _ as usize }, - 0usize, + 8usize, concat!( "Offset of field: ", - stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_1), + stringify!(ALimitedAxesImuEvent__bindgen_ty_1__bindgen_ty_1), "::", - stringify!(uncalibrated_gyro) + stringify!(z) + ) + ); +} +#[test] +fn bindgen_test_layout_ALimitedAxesImuEvent__bindgen_ty_1() { + assert_eq!( + ::std::mem::size_of::(), + 12usize, + concat!("Size of: ", stringify!(ALimitedAxesImuEvent__bindgen_ty_1)) + ); + assert_eq!( + ::std::mem::align_of::(), + 4usize, + concat!( + "Alignment of ", + stringify!(ALimitedAxesImuEvent__bindgen_ty_1) ) ); assert_eq!( unsafe { - &(*(::std::ptr::null::())) - .uncalibrated_magnetic as *const _ as usize + &(*(::std::ptr::null::())).calib as *const _ + as usize }, 0usize, concat!( "Offset of field: ", - stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_1), + stringify!(ALimitedAxesImuEvent__bindgen_ty_1), "::", - stringify!(uncalibrated_magnetic) + stringify!(calib) + ) + ); +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union ALimitedAxesImuEvent__bindgen_ty_2 { + pub supported: [f32; 3usize], + pub __bindgen_anon_1: ALimitedAxesImuEvent__bindgen_ty_2__bindgen_ty_1, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ALimitedAxesImuEvent__bindgen_ty_2__bindgen_ty_1 { + pub x_supported: f32, + pub y_supported: f32, + pub z_supported: f32, +} +#[test] +fn bindgen_test_layout_ALimitedAxesImuEvent__bindgen_ty_2__bindgen_ty_1() { + assert_eq!( + ::std::mem::size_of::(), + 12usize, + concat!( + "Size of: ", + stringify!(ALimitedAxesImuEvent__bindgen_ty_2__bindgen_ty_1) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 4usize, + concat!( + "Alignment of ", + stringify!(ALimitedAxesImuEvent__bindgen_ty_2__bindgen_ty_1) ) ); assert_eq!( unsafe { - &(*(::std::ptr::null::())).meta_data + &(*(::std::ptr::null::())).x_supported as *const _ as usize }, 0usize, concat!( "Offset of field: ", - stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_1), + stringify!(ALimitedAxesImuEvent__bindgen_ty_2__bindgen_ty_1), "::", - stringify!(meta_data) + stringify!(x_supported) ) ); assert_eq!( unsafe { - &(*(::std::ptr::null::())).heart_rate + &(*(::std::ptr::null::())).y_supported as *const _ as usize }, - 0usize, + 4usize, concat!( "Offset of field: ", - stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_1), + stringify!(ALimitedAxesImuEvent__bindgen_ty_2__bindgen_ty_1), "::", - stringify!(heart_rate) + stringify!(y_supported) ) ); assert_eq!( unsafe { - &(*(::std::ptr::null::())).dynamic_sensor_meta + &(*(::std::ptr::null::())).z_supported as *const _ as usize }, - 0usize, + 8usize, concat!( "Offset of field: ", - stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_1), + stringify!(ALimitedAxesImuEvent__bindgen_ty_2__bindgen_ty_1), "::", - stringify!(dynamic_sensor_meta) + stringify!(z_supported) + ) + ); +} +#[test] +fn bindgen_test_layout_ALimitedAxesImuEvent__bindgen_ty_2() { + assert_eq!( + ::std::mem::size_of::(), + 12usize, + concat!("Size of: ", stringify!(ALimitedAxesImuEvent__bindgen_ty_2)) + ); + assert_eq!( + ::std::mem::align_of::(), + 4usize, + concat!( + "Alignment of ", + stringify!(ALimitedAxesImuEvent__bindgen_ty_2) ) ); assert_eq!( unsafe { - &(*(::std::ptr::null::())).additional_info - as *const _ as usize + &(*(::std::ptr::null::())).supported as *const _ + as usize }, 0usize, concat!( "Offset of field: ", - stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_1), + stringify!(ALimitedAxesImuEvent__bindgen_ty_2), "::", - stringify!(additional_info) + stringify!(supported) ) ); } +#[test] +fn bindgen_test_layout_ALimitedAxesImuEvent() { + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!("Size of: ", stringify!(ALimitedAxesImuEvent)) + ); + assert_eq!( + ::std::mem::align_of::(), + 4usize, + concat!("Alignment of ", stringify!(ALimitedAxesImuEvent)) + ); +} #[repr(C)] #[derive(Copy, Clone)] -pub union ASensorEvent__bindgen_ty_1__bindgen_ty_2 { - pub data: [u64; 8usize], - pub step_counter: u64, +pub struct ALimitedAxesImuUncalibratedEvent { + pub __bindgen_anon_1: ALimitedAxesImuUncalibratedEvent__bindgen_ty_1, + pub __bindgen_anon_2: ALimitedAxesImuUncalibratedEvent__bindgen_ty_2, + pub __bindgen_anon_3: ALimitedAxesImuUncalibratedEvent__bindgen_ty_3, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union ALimitedAxesImuUncalibratedEvent__bindgen_ty_1 { + pub uncalib: [f32; 3usize], + pub __bindgen_anon_1: ALimitedAxesImuUncalibratedEvent__bindgen_ty_1__bindgen_ty_1, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ALimitedAxesImuUncalibratedEvent__bindgen_ty_1__bindgen_ty_1 { + pub x_uncalib: f32, + pub y_uncalib: f32, + pub z_uncalib: f32, } #[test] -fn bindgen_test_layout_ASensorEvent__bindgen_ty_1__bindgen_ty_2() { +fn bindgen_test_layout_ALimitedAxesImuUncalibratedEvent__bindgen_ty_1__bindgen_ty_1() { assert_eq!( - ::std::mem::size_of::(), - 64usize, + ::std::mem::size_of::(), + 12usize, concat!( "Size of: ", - stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_2) + stringify!(ALimitedAxesImuUncalibratedEvent__bindgen_ty_1__bindgen_ty_1) ) ); assert_eq!( - ::std::mem::align_of::(), - 8usize, + ::std::mem::align_of::(), + 4usize, concat!( "Alignment of ", - stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_2) + stringify!(ALimitedAxesImuUncalibratedEvent__bindgen_ty_1__bindgen_ty_1) ) ); assert_eq!( unsafe { - &(*(::std::ptr::null::())).data as *const _ - as usize + &(*(::std::ptr::null::())) + .x_uncalib as *const _ as usize }, 0usize, concat!( "Offset of field: ", - stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_2), + stringify!(ALimitedAxesImuUncalibratedEvent__bindgen_ty_1__bindgen_ty_1), "::", - stringify!(data) + stringify!(x_uncalib) ) ); assert_eq!( unsafe { - &(*(::std::ptr::null::())).step_counter - as *const _ as usize + &(*(::std::ptr::null::())) + .y_uncalib as *const _ as usize }, - 0usize, + 4usize, concat!( "Offset of field: ", - stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_2), + stringify!(ALimitedAxesImuUncalibratedEvent__bindgen_ty_1__bindgen_ty_1), "::", - stringify!(step_counter) + stringify!(y_uncalib) ) ); -} -#[test] -fn bindgen_test_layout_ASensorEvent__bindgen_ty_1() { assert_eq!( - ::std::mem::size_of::(), - 64usize, - concat!("Size of: ", stringify!(ASensorEvent__bindgen_ty_1)) + unsafe { + &(*(::std::ptr::null::())) + .z_uncalib as *const _ as usize + }, + 8usize, + concat!( + "Offset of field: ", + stringify!(ALimitedAxesImuUncalibratedEvent__bindgen_ty_1__bindgen_ty_1), + "::", + stringify!(z_uncalib) + ) ); +} +#[test] +fn bindgen_test_layout_ALimitedAxesImuUncalibratedEvent__bindgen_ty_1() { assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(ASensorEvent__bindgen_ty_1)) + ::std::mem::size_of::(), + 12usize, + concat!( + "Size of: ", + stringify!(ALimitedAxesImuUncalibratedEvent__bindgen_ty_1) + ) ); assert_eq!( - unsafe { &(*(::std::ptr::null::())).u64_ as *const _ as usize }, + ::std::mem::align_of::(), + 4usize, + concat!( + "Alignment of ", + stringify!(ALimitedAxesImuUncalibratedEvent__bindgen_ty_1) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).uncalib + as *const _ as usize + }, 0usize, concat!( "Offset of field: ", - stringify!(ASensorEvent__bindgen_ty_1), + stringify!(ALimitedAxesImuUncalibratedEvent__bindgen_ty_1), "::", - stringify!(u64_) + stringify!(uncalib) ) ); } +#[repr(C)] +#[derive(Copy, Clone)] +pub union ALimitedAxesImuUncalibratedEvent__bindgen_ty_2 { + pub bias: [f32; 3usize], + pub __bindgen_anon_1: ALimitedAxesImuUncalibratedEvent__bindgen_ty_2__bindgen_ty_1, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ALimitedAxesImuUncalibratedEvent__bindgen_ty_2__bindgen_ty_1 { + pub x_bias: f32, + pub y_bias: f32, + pub z_bias: f32, +} #[test] -fn bindgen_test_layout_ASensorEvent() { +fn bindgen_test_layout_ALimitedAxesImuUncalibratedEvent__bindgen_ty_2__bindgen_ty_1() { assert_eq!( - ::std::mem::size_of::(), - 104usize, - concat!("Size of: ", stringify!(ASensorEvent)) + ::std::mem::size_of::(), + 12usize, + concat!( + "Size of: ", + stringify!(ALimitedAxesImuUncalibratedEvent__bindgen_ty_2__bindgen_ty_1) + ) ); assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(ASensorEvent)) + ::std::mem::align_of::(), + 4usize, + concat!( + "Alignment of ", + stringify!(ALimitedAxesImuUncalibratedEvent__bindgen_ty_2__bindgen_ty_1) + ) ); assert_eq!( - unsafe { &(*(::std::ptr::null::())).version as *const _ as usize }, + unsafe { + &(*(::std::ptr::null::())) + .x_bias as *const _ as usize + }, 0usize, concat!( "Offset of field: ", - stringify!(ASensorEvent), + stringify!(ALimitedAxesImuUncalibratedEvent__bindgen_ty_2__bindgen_ty_1), "::", - stringify!(version) + stringify!(x_bias) ) ); assert_eq!( - unsafe { &(*(::std::ptr::null::())).sensor as *const _ as usize }, + unsafe { + &(*(::std::ptr::null::())) + .y_bias as *const _ as usize + }, 4usize, concat!( "Offset of field: ", - stringify!(ASensorEvent), + stringify!(ALimitedAxesImuUncalibratedEvent__bindgen_ty_2__bindgen_ty_1), "::", - stringify!(sensor) + stringify!(y_bias) ) ); assert_eq!( - unsafe { &(*(::std::ptr::null::())).type_ as *const _ as usize }, + unsafe { + &(*(::std::ptr::null::())) + .z_bias as *const _ as usize + }, 8usize, concat!( "Offset of field: ", - stringify!(ASensorEvent), + stringify!(ALimitedAxesImuUncalibratedEvent__bindgen_ty_2__bindgen_ty_1), "::", - stringify!(type_) + stringify!(z_bias) ) ); +} +#[test] +fn bindgen_test_layout_ALimitedAxesImuUncalibratedEvent__bindgen_ty_2() { assert_eq!( - unsafe { &(*(::std::ptr::null::())).reserved0 as *const _ as usize }, + ::std::mem::size_of::(), 12usize, + concat!( + "Size of: ", + stringify!(ALimitedAxesImuUncalibratedEvent__bindgen_ty_2) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 4usize, + concat!( + "Alignment of ", + stringify!(ALimitedAxesImuUncalibratedEvent__bindgen_ty_2) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).bias + as *const _ as usize + }, + 0usize, concat!( "Offset of field: ", - stringify!(ASensorEvent), + stringify!(ALimitedAxesImuUncalibratedEvent__bindgen_ty_2), "::", - stringify!(reserved0) + stringify!(bias) + ) + ); +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union ALimitedAxesImuUncalibratedEvent__bindgen_ty_3 { + pub supported: [f32; 3usize], + pub __bindgen_anon_1: ALimitedAxesImuUncalibratedEvent__bindgen_ty_3__bindgen_ty_1, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ALimitedAxesImuUncalibratedEvent__bindgen_ty_3__bindgen_ty_1 { + pub x_supported: f32, + pub y_supported: f32, + pub z_supported: f32, +} +#[test] +fn bindgen_test_layout_ALimitedAxesImuUncalibratedEvent__bindgen_ty_3__bindgen_ty_1() { + assert_eq!( + ::std::mem::size_of::(), + 12usize, + concat!( + "Size of: ", + stringify!(ALimitedAxesImuUncalibratedEvent__bindgen_ty_3__bindgen_ty_1) ) ); assert_eq!( - unsafe { &(*(::std::ptr::null::())).timestamp as *const _ as usize }, - 16usize, + ::std::mem::align_of::(), + 4usize, + concat!( + "Alignment of ", + stringify!(ALimitedAxesImuUncalibratedEvent__bindgen_ty_3__bindgen_ty_1) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())) + .x_supported as *const _ as usize + }, + 0usize, concat!( "Offset of field: ", - stringify!(ASensorEvent), + stringify!(ALimitedAxesImuUncalibratedEvent__bindgen_ty_3__bindgen_ty_1), "::", - stringify!(timestamp) + stringify!(x_supported) ) ); assert_eq!( - unsafe { &(*(::std::ptr::null::())).flags as *const _ as usize }, - 88usize, + unsafe { + &(*(::std::ptr::null::())) + .y_supported as *const _ as usize + }, + 4usize, concat!( "Offset of field: ", - stringify!(ASensorEvent), + stringify!(ALimitedAxesImuUncalibratedEvent__bindgen_ty_3__bindgen_ty_1), "::", - stringify!(flags) + stringify!(y_supported) ) ); assert_eq!( - unsafe { &(*(::std::ptr::null::())).reserved1 as *const _ as usize }, - 92usize, + unsafe { + &(*(::std::ptr::null::())) + .z_supported as *const _ as usize + }, + 8usize, concat!( "Offset of field: ", - stringify!(ASensorEvent), + stringify!(ALimitedAxesImuUncalibratedEvent__bindgen_ty_3__bindgen_ty_1), "::", - stringify!(reserved1) + stringify!(z_supported) ) ); } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ASensorManager { - _unused: [u8; 0], +#[test] +fn bindgen_test_layout_ALimitedAxesImuUncalibratedEvent__bindgen_ty_3() { + assert_eq!( + ::std::mem::size_of::(), + 12usize, + concat!( + "Size of: ", + stringify!(ALimitedAxesImuUncalibratedEvent__bindgen_ty_3) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 4usize, + concat!( + "Alignment of ", + stringify!(ALimitedAxesImuUncalibratedEvent__bindgen_ty_3) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).supported + as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ALimitedAxesImuUncalibratedEvent__bindgen_ty_3), + "::", + stringify!(supported) + ) + ); } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ASensorEventQueue { - _unused: [u8; 0], +#[test] +fn bindgen_test_layout_ALimitedAxesImuUncalibratedEvent() { + assert_eq!( + ::std::mem::size_of::(), + 36usize, + concat!("Size of: ", stringify!(ALimitedAxesImuUncalibratedEvent)) + ); + assert_eq!( + ::std::mem::align_of::(), + 4usize, + concat!( + "Alignment of ", + stringify!(ALimitedAxesImuUncalibratedEvent) + ) + ); } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct ASensor { - _unused: [u8; 0], +pub struct AHeadingEvent { + pub heading: f32, + pub accuracy: f32, } -pub type ASensorRef = *const ASensor; -pub type ASensorList = *const ASensorRef; -extern "C" { - pub fn ASensorManager_getInstance() -> *mut ASensorManager; +#[test] +fn bindgen_test_layout_AHeadingEvent() { + assert_eq!( + ::std::mem::size_of::(), + 8usize, + concat!("Size of: ", stringify!(AHeadingEvent)) + ); + assert_eq!( + ::std::mem::align_of::(), + 4usize, + concat!("Alignment of ", stringify!(AHeadingEvent)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).heading as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(AHeadingEvent), + "::", + stringify!(heading) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).accuracy as *const _ as usize }, + 4usize, + concat!( + "Offset of field: ", + stringify!(AHeadingEvent), + "::", + stringify!(accuracy) + ) + ); } -extern "C" { - pub fn ASensorManager_getInstanceForPackage( - packageName: *const ::std::os::raw::c_char, - ) -> *mut ASensorManager; +#[repr(C)] +#[derive(Copy, Clone)] +pub struct ASensorEvent { + pub version: i32, + pub sensor: i32, + pub type_: i32, + pub reserved0: i32, + pub timestamp: i64, + pub __bindgen_anon_1: ASensorEvent__bindgen_ty_1, + pub flags: u32, + pub reserved1: [i32; 3usize], } -extern "C" { - pub fn ASensorManager_getSensorList( - manager: *mut ASensorManager, - list: *mut ASensorList, - ) -> ::std::os::raw::c_int; +#[repr(C)] +#[derive(Copy, Clone)] +pub union ASensorEvent__bindgen_ty_1 { + pub __bindgen_anon_1: ASensorEvent__bindgen_ty_1__bindgen_ty_1, + pub u64_: ASensorEvent__bindgen_ty_1__bindgen_ty_2, } -extern "C" { - pub fn ASensorManager_getDefaultSensor( - manager: *mut ASensorManager, - type_: ::std::os::raw::c_int, - ) -> *const ASensor; +#[repr(C)] +#[derive(Copy, Clone)] +pub union ASensorEvent__bindgen_ty_1__bindgen_ty_1 { + pub data: [f32; 16usize], + pub vector: ASensorVector, + pub acceleration: ASensorVector, + pub gyro: ASensorVector, + pub magnetic: ASensorVector, + pub temperature: f32, + pub distance: f32, + pub light: f32, + pub pressure: f32, + pub relative_humidity: f32, + pub uncalibrated_acceleration: AUncalibratedEvent, + pub uncalibrated_gyro: AUncalibratedEvent, + pub uncalibrated_magnetic: AUncalibratedEvent, + pub meta_data: AMetaDataEvent, + pub heart_rate: AHeartRateEvent, + pub dynamic_sensor_meta: ADynamicSensorEvent, + pub additional_info: AAdditionalInfoEvent, + pub head_tracker: AHeadTrackerEvent, + pub limited_axes_imu: ALimitedAxesImuEvent, + pub limited_axes_imu_uncalibrated: ALimitedAxesImuUncalibratedEvent, + pub heading: AHeadingEvent, } -extern "C" { - pub fn ASensorManager_getDefaultSensorEx( +#[test] +fn bindgen_test_layout_ASensorEvent__bindgen_ty_1__bindgen_ty_1() { + assert_eq!( + ::std::mem::size_of::(), + 64usize, + concat!( + "Size of: ", + stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_1) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 4usize, + concat!( + "Alignment of ", + stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_1) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).data as *const _ + as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_1), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).vector as *const _ + as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_1), + "::", + stringify!(vector) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).acceleration + as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_1), + "::", + stringify!(acceleration) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).gyro as *const _ + as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_1), + "::", + stringify!(gyro) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).magnetic + as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_1), + "::", + stringify!(magnetic) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).temperature + as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_1), + "::", + stringify!(temperature) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).distance + as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_1), + "::", + stringify!(distance) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).light as *const _ + as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_1), + "::", + stringify!(light) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).pressure + as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_1), + "::", + stringify!(pressure) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).relative_humidity + as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_1), + "::", + stringify!(relative_humidity) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())) + .uncalibrated_acceleration as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_1), + "::", + stringify!(uncalibrated_acceleration) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).uncalibrated_gyro + as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_1), + "::", + stringify!(uncalibrated_gyro) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())) + .uncalibrated_magnetic as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_1), + "::", + stringify!(uncalibrated_magnetic) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).meta_data + as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_1), + "::", + stringify!(meta_data) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).heart_rate + as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_1), + "::", + stringify!(heart_rate) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).dynamic_sensor_meta + as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_1), + "::", + stringify!(dynamic_sensor_meta) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).additional_info + as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_1), + "::", + stringify!(additional_info) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).head_tracker + as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_1), + "::", + stringify!(head_tracker) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).limited_axes_imu + as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_1), + "::", + stringify!(limited_axes_imu) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())) + .limited_axes_imu_uncalibrated as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_1), + "::", + stringify!(limited_axes_imu_uncalibrated) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).heading as *const _ + as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_1), + "::", + stringify!(heading) + ) + ); +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union ASensorEvent__bindgen_ty_1__bindgen_ty_2 { + pub data: [u64; 8usize], + pub step_counter: u64, +} +#[test] +fn bindgen_test_layout_ASensorEvent__bindgen_ty_1__bindgen_ty_2() { + assert_eq!( + ::std::mem::size_of::(), + 64usize, + concat!( + "Size of: ", + stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_2) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_2) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).data as *const _ + as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_2), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).step_counter + as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ASensorEvent__bindgen_ty_1__bindgen_ty_2), + "::", + stringify!(step_counter) + ) + ); +} +#[test] +fn bindgen_test_layout_ASensorEvent__bindgen_ty_1() { + assert_eq!( + ::std::mem::size_of::(), + 64usize, + concat!("Size of: ", stringify!(ASensorEvent__bindgen_ty_1)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(ASensorEvent__bindgen_ty_1)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).u64_ as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ASensorEvent__bindgen_ty_1), + "::", + stringify!(u64_) + ) + ); +} +#[test] +fn bindgen_test_layout_ASensorEvent() { + assert_eq!( + ::std::mem::size_of::(), + 104usize, + concat!("Size of: ", stringify!(ASensorEvent)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(ASensorEvent)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).version as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ASensorEvent), + "::", + stringify!(version) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).sensor as *const _ as usize }, + 4usize, + concat!( + "Offset of field: ", + stringify!(ASensorEvent), + "::", + stringify!(sensor) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).type_ as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(ASensorEvent), + "::", + stringify!(type_) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).reserved0 as *const _ as usize }, + 12usize, + concat!( + "Offset of field: ", + stringify!(ASensorEvent), + "::", + stringify!(reserved0) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).timestamp as *const _ as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(ASensorEvent), + "::", + stringify!(timestamp) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).flags as *const _ as usize }, + 88usize, + concat!( + "Offset of field: ", + stringify!(ASensorEvent), + "::", + stringify!(flags) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).reserved1 as *const _ as usize }, + 92usize, + concat!( + "Offset of field: ", + stringify!(ASensorEvent), + "::", + stringify!(reserved1) + ) + ); +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ASensorManager { + _unused: [u8; 0], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ASensorEventQueue { + _unused: [u8; 0], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ASensor { + _unused: [u8; 0], +} +pub type ASensorRef = *const ASensor; +pub type ASensorList = *const ASensorRef; +extern "C" { + pub fn ASensorManager_getInstance() -> *mut ASensorManager; +} +extern "C" { + pub fn ASensorManager_getInstanceForPackage( + packageName: *const ::std::os::raw::c_char, + ) -> *mut ASensorManager; +} +extern "C" { + pub fn ASensorManager_getSensorList( + manager: *mut ASensorManager, + list: *mut ASensorList, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn ASensorManager_getDynamicSensorList( + manager: *mut ASensorManager, + list: *mut ASensorList, + ) -> ssize_t; +} +extern "C" { + pub fn ASensorManager_getDefaultSensor( + manager: *mut ASensorManager, + type_: ::std::os::raw::c_int, + ) -> *const ASensor; +} +extern "C" { + pub fn ASensorManager_getDefaultSensorEx( manager: *mut ASensorManager, type_: ::std::os::raw::c_int, wakeUp: bool, @@ -16494,23 +17606,81 @@ pub const AAUDIO_CONTENT_TYPE_MOVIE: ::std::os::raw::c_uint = 3; pub const AAUDIO_CONTENT_TYPE_SONIFICATION: ::std::os::raw::c_uint = 4; pub type _bindgen_ty_54 = ::std::os::raw::c_uint; pub type aaudio_content_type_t = i32; +pub const AAUDIO_SPATIALIZATION_BEHAVIOR_AUTO: ::std::os::raw::c_uint = 1; +pub const AAUDIO_SPATIALIZATION_BEHAVIOR_NEVER: ::std::os::raw::c_uint = 2; +pub type _bindgen_ty_55 = ::std::os::raw::c_uint; +pub type aaudio_spatialization_behavior_t = i32; pub const AAUDIO_INPUT_PRESET_GENERIC: ::std::os::raw::c_uint = 1; pub const AAUDIO_INPUT_PRESET_CAMCORDER: ::std::os::raw::c_uint = 5; pub const AAUDIO_INPUT_PRESET_VOICE_RECOGNITION: ::std::os::raw::c_uint = 6; pub const AAUDIO_INPUT_PRESET_VOICE_COMMUNICATION: ::std::os::raw::c_uint = 7; pub const AAUDIO_INPUT_PRESET_UNPROCESSED: ::std::os::raw::c_uint = 9; pub const AAUDIO_INPUT_PRESET_VOICE_PERFORMANCE: ::std::os::raw::c_uint = 10; -pub type _bindgen_ty_55 = ::std::os::raw::c_uint; +pub type _bindgen_ty_56 = ::std::os::raw::c_uint; pub type aaudio_input_preset_t = i32; pub const AAUDIO_ALLOW_CAPTURE_BY_ALL: ::std::os::raw::c_uint = 1; pub const AAUDIO_ALLOW_CAPTURE_BY_SYSTEM: ::std::os::raw::c_uint = 2; pub const AAUDIO_ALLOW_CAPTURE_BY_NONE: ::std::os::raw::c_uint = 3; -pub type _bindgen_ty_56 = ::std::os::raw::c_uint; +pub type _bindgen_ty_57 = ::std::os::raw::c_uint; pub type aaudio_allowed_capture_policy_t = i32; pub const AAUDIO_SESSION_ID_NONE: ::std::os::raw::c_int = -1; pub const AAUDIO_SESSION_ID_ALLOCATE: ::std::os::raw::c_int = 0; -pub type _bindgen_ty_57 = ::std::os::raw::c_int; +pub type _bindgen_ty_58 = ::std::os::raw::c_int; pub type aaudio_session_id_t = i32; +pub const AAUDIO_CHANNEL_INVALID: ::std::os::raw::c_int = -1; +pub const AAUDIO_CHANNEL_FRONT_LEFT: ::std::os::raw::c_int = 1; +pub const AAUDIO_CHANNEL_FRONT_RIGHT: ::std::os::raw::c_int = 2; +pub const AAUDIO_CHANNEL_FRONT_CENTER: ::std::os::raw::c_int = 4; +pub const AAUDIO_CHANNEL_LOW_FREQUENCY: ::std::os::raw::c_int = 8; +pub const AAUDIO_CHANNEL_BACK_LEFT: ::std::os::raw::c_int = 16; +pub const AAUDIO_CHANNEL_BACK_RIGHT: ::std::os::raw::c_int = 32; +pub const AAUDIO_CHANNEL_FRONT_LEFT_OF_CENTER: ::std::os::raw::c_int = 64; +pub const AAUDIO_CHANNEL_FRONT_RIGHT_OF_CENTER: ::std::os::raw::c_int = 128; +pub const AAUDIO_CHANNEL_BACK_CENTER: ::std::os::raw::c_int = 256; +pub const AAUDIO_CHANNEL_SIDE_LEFT: ::std::os::raw::c_int = 512; +pub const AAUDIO_CHANNEL_SIDE_RIGHT: ::std::os::raw::c_int = 1024; +pub const AAUDIO_CHANNEL_TOP_CENTER: ::std::os::raw::c_int = 2048; +pub const AAUDIO_CHANNEL_TOP_FRONT_LEFT: ::std::os::raw::c_int = 4096; +pub const AAUDIO_CHANNEL_TOP_FRONT_CENTER: ::std::os::raw::c_int = 8192; +pub const AAUDIO_CHANNEL_TOP_FRONT_RIGHT: ::std::os::raw::c_int = 16384; +pub const AAUDIO_CHANNEL_TOP_BACK_LEFT: ::std::os::raw::c_int = 32768; +pub const AAUDIO_CHANNEL_TOP_BACK_CENTER: ::std::os::raw::c_int = 65536; +pub const AAUDIO_CHANNEL_TOP_BACK_RIGHT: ::std::os::raw::c_int = 131072; +pub const AAUDIO_CHANNEL_TOP_SIDE_LEFT: ::std::os::raw::c_int = 262144; +pub const AAUDIO_CHANNEL_TOP_SIDE_RIGHT: ::std::os::raw::c_int = 524288; +pub const AAUDIO_CHANNEL_BOTTOM_FRONT_LEFT: ::std::os::raw::c_int = 1048576; +pub const AAUDIO_CHANNEL_BOTTOM_FRONT_CENTER: ::std::os::raw::c_int = 2097152; +pub const AAUDIO_CHANNEL_BOTTOM_FRONT_RIGHT: ::std::os::raw::c_int = 4194304; +pub const AAUDIO_CHANNEL_LOW_FREQUENCY_2: ::std::os::raw::c_int = 8388608; +pub const AAUDIO_CHANNEL_FRONT_WIDE_LEFT: ::std::os::raw::c_int = 16777216; +pub const AAUDIO_CHANNEL_FRONT_WIDE_RIGHT: ::std::os::raw::c_int = 33554432; +pub const AAUDIO_CHANNEL_MONO: ::std::os::raw::c_int = 1; +pub const AAUDIO_CHANNEL_STEREO: ::std::os::raw::c_int = 3; +pub const AAUDIO_CHANNEL_2POINT1: ::std::os::raw::c_int = 11; +pub const AAUDIO_CHANNEL_TRI: ::std::os::raw::c_int = 7; +pub const AAUDIO_CHANNEL_TRI_BACK: ::std::os::raw::c_int = 259; +pub const AAUDIO_CHANNEL_3POINT1: ::std::os::raw::c_int = 15; +pub const AAUDIO_CHANNEL_2POINT0POINT2: ::std::os::raw::c_int = 786435; +pub const AAUDIO_CHANNEL_2POINT1POINT2: ::std::os::raw::c_int = 786443; +pub const AAUDIO_CHANNEL_3POINT0POINT2: ::std::os::raw::c_int = 786439; +pub const AAUDIO_CHANNEL_3POINT1POINT2: ::std::os::raw::c_int = 786447; +pub const AAUDIO_CHANNEL_QUAD: ::std::os::raw::c_int = 51; +pub const AAUDIO_CHANNEL_QUAD_SIDE: ::std::os::raw::c_int = 1539; +pub const AAUDIO_CHANNEL_SURROUND: ::std::os::raw::c_int = 263; +pub const AAUDIO_CHANNEL_PENTA: ::std::os::raw::c_int = 55; +pub const AAUDIO_CHANNEL_5POINT1: ::std::os::raw::c_int = 63; +pub const AAUDIO_CHANNEL_5POINT1_SIDE: ::std::os::raw::c_int = 1551; +pub const AAUDIO_CHANNEL_6POINT1: ::std::os::raw::c_int = 319; +pub const AAUDIO_CHANNEL_7POINT1: ::std::os::raw::c_int = 1599; +pub const AAUDIO_CHANNEL_5POINT1POINT2: ::std::os::raw::c_int = 786495; +pub const AAUDIO_CHANNEL_5POINT1POINT4: ::std::os::raw::c_int = 184383; +pub const AAUDIO_CHANNEL_7POINT1POINT2: ::std::os::raw::c_int = 788031; +pub const AAUDIO_CHANNEL_7POINT1POINT4: ::std::os::raw::c_int = 185919; +pub const AAUDIO_CHANNEL_9POINT1POINT4: ::std::os::raw::c_int = 50517567; +pub const AAUDIO_CHANNEL_9POINT1POINT6: ::std::os::raw::c_int = 51303999; +pub const AAUDIO_CHANNEL_FRONT_BACK: ::std::os::raw::c_int = 260; +pub type _bindgen_ty_59 = ::std::os::raw::c_int; +pub type aaudio_channel_mask_t = u32; #[repr(C)] #[derive(Debug, Copy, Clone)] pub struct AAudioStreamStruct { @@ -16604,6 +17774,18 @@ extern "C" { contentType: aaudio_content_type_t, ); } +extern "C" { + pub fn AAudioStreamBuilder_setSpatializationBehavior( + builder: *mut AAudioStreamBuilder, + spatializationBehavior: aaudio_spatialization_behavior_t, + ); +} +extern "C" { + pub fn AAudioStreamBuilder_setIsContentSpatialized( + builder: *mut AAudioStreamBuilder, + isSpatialized: bool, + ); +} extern "C" { pub fn AAudioStreamBuilder_setInputPreset( builder: *mut AAudioStreamBuilder, @@ -16630,7 +17812,7 @@ extern "C" { } pub const AAUDIO_CALLBACK_RESULT_CONTINUE: ::std::os::raw::c_uint = 0; pub const AAUDIO_CALLBACK_RESULT_STOP: ::std::os::raw::c_uint = 1; -pub type _bindgen_ty_58 = ::std::os::raw::c_uint; +pub type _bindgen_ty_60 = ::std::os::raw::c_uint; pub type aaudio_data_callback_result_t = i32; pub type AAudioStream_dataCallback = ::std::option::Option< unsafe extern "C" fn( @@ -16676,6 +17858,12 @@ extern "C" { extern "C" { pub fn AAudioStreamBuilder_delete(builder: *mut AAudioStreamBuilder) -> aaudio_result_t; } +extern "C" { + pub fn AAudioStreamBuilder_setChannelMask( + builder: *mut AAudioStreamBuilder, + channelMask: aaudio_channel_mask_t, + ); +} extern "C" { pub fn AAudioStream_release(stream: *mut AAudioStream) -> aaudio_result_t; } @@ -16789,6 +17977,14 @@ extern "C" { extern "C" { pub fn AAudioStream_getContentType(stream: *mut AAudioStream) -> aaudio_content_type_t; } +extern "C" { + pub fn AAudioStream_getSpatializationBehavior( + stream: *mut AAudioStream, + ) -> aaudio_spatialization_behavior_t; +} +extern "C" { + pub fn AAudioStream_isContentSpatialized(stream: *mut AAudioStream) -> bool; +} extern "C" { pub fn AAudioStream_getInputPreset(stream: *mut AAudioStream) -> aaudio_input_preset_t; } @@ -16800,6 +17996,9 @@ extern "C" { extern "C" { pub fn AAudioStream_isPrivacySensitive(stream: *mut AAudioStream) -> bool; } +extern "C" { + pub fn AAudioStream_getChannelMask(stream: *mut AAudioStream) -> aaudio_channel_mask_t; +} impl media_status_t { pub const AMEDIA_OK: media_status_t = media_status_t(0); } @@ -16907,11 +18106,43 @@ pub struct AMidiOutputPort { } pub const AMIDI_OPCODE_DATA: ::std::os::raw::c_uint = 1; pub const AMIDI_OPCODE_FLUSH: ::std::os::raw::c_uint = 2; -pub type _bindgen_ty_59 = ::std::os::raw::c_uint; +pub type _bindgen_ty_61 = ::std::os::raw::c_uint; pub const AMIDI_DEVICE_TYPE_USB: ::std::os::raw::c_uint = 1; pub const AMIDI_DEVICE_TYPE_VIRTUAL: ::std::os::raw::c_uint = 2; pub const AMIDI_DEVICE_TYPE_BLUETOOTH: ::std::os::raw::c_uint = 3; -pub type _bindgen_ty_60 = ::std::os::raw::c_uint; +pub type _bindgen_ty_62 = ::std::os::raw::c_uint; +impl AMidiDevice_Protocol { + pub const AMIDI_DEVICE_PROTOCOL_UMP_USE_MIDI_CI: AMidiDevice_Protocol = AMidiDevice_Protocol(0); +} +impl AMidiDevice_Protocol { + pub const AMIDI_DEVICE_PROTOCOL_UMP_MIDI_1_0_UP_TO_64_BITS: AMidiDevice_Protocol = + AMidiDevice_Protocol(1); +} +impl AMidiDevice_Protocol { + pub const AMIDI_DEVICE_PROTOCOL_UMP_MIDI_1_0_UP_TO_64_BITS_AND_JRTS: AMidiDevice_Protocol = + AMidiDevice_Protocol(2); +} +impl AMidiDevice_Protocol { + pub const AMIDI_DEVICE_PROTOCOL_UMP_MIDI_1_0_UP_TO_128_BITS: AMidiDevice_Protocol = + AMidiDevice_Protocol(3); +} +impl AMidiDevice_Protocol { + pub const AMIDI_DEVICE_PROTOCOL_UMP_MIDI_1_0_UP_TO_128_BITS_AND_JRTS: AMidiDevice_Protocol = + AMidiDevice_Protocol(4); +} +impl AMidiDevice_Protocol { + pub const AMIDI_DEVICE_PROTOCOL_UMP_MIDI_2_0: AMidiDevice_Protocol = AMidiDevice_Protocol(17); +} +impl AMidiDevice_Protocol { + pub const AMIDI_DEVICE_PROTOCOL_UMP_MIDI_2_0_AND_JRTS: AMidiDevice_Protocol = + AMidiDevice_Protocol(18); +} +impl AMidiDevice_Protocol { + pub const AMIDI_DEVICE_PROTOCOL_UNKNOWN: AMidiDevice_Protocol = AMidiDevice_Protocol(-1); +} +#[repr(transparent)] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub struct AMidiDevice_Protocol(pub i32); extern "C" { pub fn AMidiDevice_fromJava( env: *mut JNIEnv, @@ -16931,6 +18162,9 @@ extern "C" { extern "C" { pub fn AMidiDevice_getNumOutputPorts(device: *const AMidiDevice) -> ssize_t; } +extern "C" { + pub fn AMidiDevice_getDefaultProtocol(device: *const AMidiDevice) -> AMidiDevice_Protocol; +} extern "C" { pub fn AMidiOutputPort_open( device: *const AMidiDevice, @@ -17125,7 +18359,13 @@ impl acamera_metadata_section { pub const ACAMERA_HEIC_INFO: acamera_metadata_section = acamera_metadata_section(29); } impl acamera_metadata_section { - pub const ACAMERA_SECTION_COUNT: acamera_metadata_section = acamera_metadata_section(30); + pub const ACAMERA_AUTOMOTIVE: acamera_metadata_section = acamera_metadata_section(30); +} +impl acamera_metadata_section { + pub const ACAMERA_AUTOMOTIVE_LENS: acamera_metadata_section = acamera_metadata_section(31); +} +impl acamera_metadata_section { + pub const ACAMERA_SECTION_COUNT: acamera_metadata_section = acamera_metadata_section(32); } impl acamera_metadata_section { pub const ACAMERA_VENDOR: acamera_metadata_section = acamera_metadata_section(32768); @@ -17254,6 +18494,14 @@ impl acamera_metadata_section_start { pub const ACAMERA_HEIC_INFO_START: acamera_metadata_section_start = acamera_metadata_section_start(1900544); } +impl acamera_metadata_section_start { + pub const ACAMERA_AUTOMOTIVE_START: acamera_metadata_section_start = + acamera_metadata_section_start(1966080); +} +impl acamera_metadata_section_start { + pub const ACAMERA_AUTOMOTIVE_LENS_START: acamera_metadata_section_start = + acamera_metadata_section_start(2031616); +} impl acamera_metadata_section_start { pub const ACAMERA_VENDOR_START: acamera_metadata_section_start = acamera_metadata_section_start(-2147483648); @@ -17460,7 +18708,15 @@ impl acamera_metadata_tag { pub const ACAMERA_FLASH_INFO_AVAILABLE: acamera_metadata_tag = acamera_metadata_tag(327680); } impl acamera_metadata_tag { - pub const ACAMERA_FLASH_INFO_END: acamera_metadata_tag = acamera_metadata_tag(327681); + pub const ACAMERA_FLASH_INFO_STRENGTH_MAXIMUM_LEVEL: acamera_metadata_tag = + acamera_metadata_tag(327682); +} +impl acamera_metadata_tag { + pub const ACAMERA_FLASH_INFO_STRENGTH_DEFAULT_LEVEL: acamera_metadata_tag = + acamera_metadata_tag(327683); +} +impl acamera_metadata_tag { + pub const ACAMERA_FLASH_INFO_END: acamera_metadata_tag = acamera_metadata_tag(327684); } impl acamera_metadata_tag { pub const ACAMERA_HOT_PIXEL_MODE: acamera_metadata_tag = acamera_metadata_tag(393216); @@ -17641,7 +18897,11 @@ impl acamera_metadata_tag { acamera_metadata_tag(786449); } impl acamera_metadata_tag { - pub const ACAMERA_REQUEST_END: acamera_metadata_tag = acamera_metadata_tag(786450); + pub const ACAMERA_REQUEST_AVAILABLE_DYNAMIC_RANGE_PROFILES_MAP: acamera_metadata_tag = + acamera_metadata_tag(786451); +} +impl acamera_metadata_tag { + pub const ACAMERA_REQUEST_END: acamera_metadata_tag = acamera_metadata_tag(786452); } impl acamera_metadata_tag { pub const ACAMERA_SCALER_CROP_REGION: acamera_metadata_tag = acamera_metadata_tag(851968); @@ -17705,7 +18965,11 @@ impl acamera_metadata_tag { acamera_metadata_tag(851992); } impl acamera_metadata_tag { - pub const ACAMERA_SCALER_END: acamera_metadata_tag = acamera_metadata_tag(851993); + pub const ACAMERA_SCALER_AVAILABLE_STREAM_USE_CASES: acamera_metadata_tag = + acamera_metadata_tag(851993); +} +impl acamera_metadata_tag { + pub const ACAMERA_SCALER_END: acamera_metadata_tag = acamera_metadata_tag(851994); } impl acamera_metadata_tag { pub const ACAMERA_SENSOR_EXPOSURE_TIME: acamera_metadata_tag = acamera_metadata_tag(917504); @@ -17990,7 +19254,11 @@ impl acamera_metadata_tag { pub const ACAMERA_INFO_VERSION: acamera_metadata_tag = acamera_metadata_tag(1376257); } impl acamera_metadata_tag { - pub const ACAMERA_INFO_END: acamera_metadata_tag = acamera_metadata_tag(1376258); + pub const ACAMERA_INFO_DEVICE_STATE_ORIENTATIONS: acamera_metadata_tag = + acamera_metadata_tag(1376259); +} +impl acamera_metadata_tag { + pub const ACAMERA_INFO_END: acamera_metadata_tag = acamera_metadata_tag(1376260); } impl acamera_metadata_tag { pub const ACAMERA_BLACK_LEVEL_LOCK: acamera_metadata_tag = acamera_metadata_tag(1441792); @@ -18121,6 +19389,18 @@ impl acamera_metadata_tag { impl acamera_metadata_tag { pub const ACAMERA_HEIC_END: acamera_metadata_tag = acamera_metadata_tag(1835014); } +impl acamera_metadata_tag { + pub const ACAMERA_AUTOMOTIVE_LOCATION: acamera_metadata_tag = acamera_metadata_tag(1966080); +} +impl acamera_metadata_tag { + pub const ACAMERA_AUTOMOTIVE_END: acamera_metadata_tag = acamera_metadata_tag(1966081); +} +impl acamera_metadata_tag { + pub const ACAMERA_AUTOMOTIVE_LENS_FACING: acamera_metadata_tag = acamera_metadata_tag(2031616); +} +impl acamera_metadata_tag { + pub const ACAMERA_AUTOMOTIVE_LENS_END: acamera_metadata_tag = acamera_metadata_tag(2031617); +} #[repr(transparent)] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] pub struct acamera_metadata_tag(pub ::std::os::raw::c_uint); @@ -18559,6 +19839,11 @@ impl acamera_metadata_enum_acamera_control_video_stabilization_mode { acamera_metadata_enum_acamera_control_video_stabilization_mode = acamera_metadata_enum_acamera_control_video_stabilization_mode(1); } +impl acamera_metadata_enum_acamera_control_video_stabilization_mode { + pub const ACAMERA_CONTROL_VIDEO_STABILIZATION_MODE_PREVIEW_STABILIZATION: + acamera_metadata_enum_acamera_control_video_stabilization_mode = + acamera_metadata_enum_acamera_control_video_stabilization_mode(2); +} #[repr(transparent)] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] pub struct acamera_metadata_enum_acamera_control_video_stabilization_mode( @@ -18873,6 +20158,11 @@ impl acamera_metadata_enum_acamera_lens_pose_reference { acamera_metadata_enum_acamera_lens_pose_reference = acamera_metadata_enum_acamera_lens_pose_reference(2); } +impl acamera_metadata_enum_acamera_lens_pose_reference { + pub const ACAMERA_LENS_POSE_REFERENCE_AUTOMOTIVE: + acamera_metadata_enum_acamera_lens_pose_reference = + acamera_metadata_enum_acamera_lens_pose_reference(3); +} #[repr(transparent)] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] pub struct acamera_metadata_enum_acamera_lens_pose_reference(pub ::std::os::raw::c_uint); @@ -18991,10 +20281,86 @@ impl acamera_metadata_enum_acamera_request_available_capabilities { acamera_metadata_enum_acamera_request_available_capabilities = acamera_metadata_enum_acamera_request_available_capabilities(16); } +impl acamera_metadata_enum_acamera_request_available_capabilities { + pub const ACAMERA_REQUEST_AVAILABLE_CAPABILITIES_STREAM_USE_CASE: + acamera_metadata_enum_acamera_request_available_capabilities = + acamera_metadata_enum_acamera_request_available_capabilities(19); +} #[repr(transparent)] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] pub struct acamera_metadata_enum_acamera_request_available_capabilities(pub ::std::os::raw::c_uint); pub use self::acamera_metadata_enum_acamera_request_available_capabilities as acamera_metadata_enum_android_request_available_capabilities_t; +impl acamera_metadata_enum_acamera_request_available_dynamic_range_profiles_map { + pub const ACAMERA_REQUEST_AVAILABLE_DYNAMIC_RANGE_PROFILES_MAP_STANDARD: + acamera_metadata_enum_acamera_request_available_dynamic_range_profiles_map = + acamera_metadata_enum_acamera_request_available_dynamic_range_profiles_map(1); +} +impl acamera_metadata_enum_acamera_request_available_dynamic_range_profiles_map { + pub const ACAMERA_REQUEST_AVAILABLE_DYNAMIC_RANGE_PROFILES_MAP_HLG10: + acamera_metadata_enum_acamera_request_available_dynamic_range_profiles_map = + acamera_metadata_enum_acamera_request_available_dynamic_range_profiles_map(2); +} +impl acamera_metadata_enum_acamera_request_available_dynamic_range_profiles_map { + pub const ACAMERA_REQUEST_AVAILABLE_DYNAMIC_RANGE_PROFILES_MAP_HDR10: + acamera_metadata_enum_acamera_request_available_dynamic_range_profiles_map = + acamera_metadata_enum_acamera_request_available_dynamic_range_profiles_map(4); +} +impl acamera_metadata_enum_acamera_request_available_dynamic_range_profiles_map { + pub const ACAMERA_REQUEST_AVAILABLE_DYNAMIC_RANGE_PROFILES_MAP_HDR10_PLUS: + acamera_metadata_enum_acamera_request_available_dynamic_range_profiles_map = + acamera_metadata_enum_acamera_request_available_dynamic_range_profiles_map(8); +} +impl acamera_metadata_enum_acamera_request_available_dynamic_range_profiles_map { + pub const ACAMERA_REQUEST_AVAILABLE_DYNAMIC_RANGE_PROFILES_MAP_DOLBY_VISION_10B_HDR_REF: + acamera_metadata_enum_acamera_request_available_dynamic_range_profiles_map = + acamera_metadata_enum_acamera_request_available_dynamic_range_profiles_map(16); +} +impl acamera_metadata_enum_acamera_request_available_dynamic_range_profiles_map { + pub const ACAMERA_REQUEST_AVAILABLE_DYNAMIC_RANGE_PROFILES_MAP_DOLBY_VISION_10B_HDR_REF_PO: + acamera_metadata_enum_acamera_request_available_dynamic_range_profiles_map = + acamera_metadata_enum_acamera_request_available_dynamic_range_profiles_map(32); +} +impl acamera_metadata_enum_acamera_request_available_dynamic_range_profiles_map { + pub const ACAMERA_REQUEST_AVAILABLE_DYNAMIC_RANGE_PROFILES_MAP_DOLBY_VISION_10B_HDR_OEM: + acamera_metadata_enum_acamera_request_available_dynamic_range_profiles_map = + acamera_metadata_enum_acamera_request_available_dynamic_range_profiles_map(64); +} +impl acamera_metadata_enum_acamera_request_available_dynamic_range_profiles_map { + pub const ACAMERA_REQUEST_AVAILABLE_DYNAMIC_RANGE_PROFILES_MAP_DOLBY_VISION_10B_HDR_OEM_PO: + acamera_metadata_enum_acamera_request_available_dynamic_range_profiles_map = + acamera_metadata_enum_acamera_request_available_dynamic_range_profiles_map(128); +} +impl acamera_metadata_enum_acamera_request_available_dynamic_range_profiles_map { + pub const ACAMERA_REQUEST_AVAILABLE_DYNAMIC_RANGE_PROFILES_MAP_DOLBY_VISION_8B_HDR_REF: + acamera_metadata_enum_acamera_request_available_dynamic_range_profiles_map = + acamera_metadata_enum_acamera_request_available_dynamic_range_profiles_map(256); +} +impl acamera_metadata_enum_acamera_request_available_dynamic_range_profiles_map { + pub const ACAMERA_REQUEST_AVAILABLE_DYNAMIC_RANGE_PROFILES_MAP_DOLBY_VISION_8B_HDR_REF_PO: + acamera_metadata_enum_acamera_request_available_dynamic_range_profiles_map = + acamera_metadata_enum_acamera_request_available_dynamic_range_profiles_map(512); +} +impl acamera_metadata_enum_acamera_request_available_dynamic_range_profiles_map { + pub const ACAMERA_REQUEST_AVAILABLE_DYNAMIC_RANGE_PROFILES_MAP_DOLBY_VISION_8B_HDR_OEM: + acamera_metadata_enum_acamera_request_available_dynamic_range_profiles_map = + acamera_metadata_enum_acamera_request_available_dynamic_range_profiles_map(1024); +} +impl acamera_metadata_enum_acamera_request_available_dynamic_range_profiles_map { + pub const ACAMERA_REQUEST_AVAILABLE_DYNAMIC_RANGE_PROFILES_MAP_DOLBY_VISION_8B_HDR_OEM_PO: + acamera_metadata_enum_acamera_request_available_dynamic_range_profiles_map = + acamera_metadata_enum_acamera_request_available_dynamic_range_profiles_map(2048); +} +impl acamera_metadata_enum_acamera_request_available_dynamic_range_profiles_map { + pub const ACAMERA_REQUEST_AVAILABLE_DYNAMIC_RANGE_PROFILES_MAP_MAX: + acamera_metadata_enum_acamera_request_available_dynamic_range_profiles_map = + acamera_metadata_enum_acamera_request_available_dynamic_range_profiles_map(4096); +} +#[repr(transparent)] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub struct acamera_metadata_enum_acamera_request_available_dynamic_range_profiles_map( + pub ::std::os::raw::c_uint, +); +pub use self::acamera_metadata_enum_acamera_request_available_dynamic_range_profiles_map as acamera_metadata_enum_android_request_available_dynamic_range_profiles_map_t; impl acamera_metadata_enum_acamera_scaler_available_stream_configurations { pub const ACAMERA_SCALER_AVAILABLE_STREAM_CONFIGURATIONS_OUTPUT: acamera_metadata_enum_acamera_scaler_available_stream_configurations = @@ -19065,6 +20431,16 @@ impl acamera_metadata_enum_acamera_scaler_available_recommended_stream_configura acamera_metadata_enum_acamera_scaler_available_recommended_stream_configurations = acamera_metadata_enum_acamera_scaler_available_recommended_stream_configurations(7); } +impl acamera_metadata_enum_acamera_scaler_available_recommended_stream_configurations { + pub const ACAMERA_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS_10BIT_OUTPUT: + acamera_metadata_enum_acamera_scaler_available_recommended_stream_configurations = + acamera_metadata_enum_acamera_scaler_available_recommended_stream_configurations(8); +} +impl acamera_metadata_enum_acamera_scaler_available_recommended_stream_configurations { + pub const ACAMERA_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS_PUBLIC_END_3_8: + acamera_metadata_enum_acamera_scaler_available_recommended_stream_configurations = + acamera_metadata_enum_acamera_scaler_available_recommended_stream_configurations(9); +} impl acamera_metadata_enum_acamera_scaler_available_recommended_stream_configurations { pub const ACAMERA_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS_VENDOR_START: acamera_metadata_enum_acamera_scaler_available_recommended_stream_configurations = @@ -19157,6 +20533,42 @@ pub struct acamera_metadata_enum_acamera_scaler_multi_resolution_stream_supporte pub ::std::os::raw::c_uint, ); pub use self::acamera_metadata_enum_acamera_scaler_multi_resolution_stream_supported as acamera_metadata_enum_android_scaler_multi_resolution_stream_supported_t; +impl acamera_metadata_enum_acamera_scaler_available_stream_use_cases { + pub const ACAMERA_SCALER_AVAILABLE_STREAM_USE_CASES_DEFAULT: + acamera_metadata_enum_acamera_scaler_available_stream_use_cases = + acamera_metadata_enum_acamera_scaler_available_stream_use_cases(0); +} +impl acamera_metadata_enum_acamera_scaler_available_stream_use_cases { + pub const ACAMERA_SCALER_AVAILABLE_STREAM_USE_CASES_PREVIEW: + acamera_metadata_enum_acamera_scaler_available_stream_use_cases = + acamera_metadata_enum_acamera_scaler_available_stream_use_cases(1); +} +impl acamera_metadata_enum_acamera_scaler_available_stream_use_cases { + pub const ACAMERA_SCALER_AVAILABLE_STREAM_USE_CASES_STILL_CAPTURE: + acamera_metadata_enum_acamera_scaler_available_stream_use_cases = + acamera_metadata_enum_acamera_scaler_available_stream_use_cases(2); +} +impl acamera_metadata_enum_acamera_scaler_available_stream_use_cases { + pub const ACAMERA_SCALER_AVAILABLE_STREAM_USE_CASES_VIDEO_RECORD: + acamera_metadata_enum_acamera_scaler_available_stream_use_cases = + acamera_metadata_enum_acamera_scaler_available_stream_use_cases(3); +} +impl acamera_metadata_enum_acamera_scaler_available_stream_use_cases { + pub const ACAMERA_SCALER_AVAILABLE_STREAM_USE_CASES_PREVIEW_VIDEO_STILL: + acamera_metadata_enum_acamera_scaler_available_stream_use_cases = + acamera_metadata_enum_acamera_scaler_available_stream_use_cases(4); +} +impl acamera_metadata_enum_acamera_scaler_available_stream_use_cases { + pub const ACAMERA_SCALER_AVAILABLE_STREAM_USE_CASES_VIDEO_CALL: + acamera_metadata_enum_acamera_scaler_available_stream_use_cases = + acamera_metadata_enum_acamera_scaler_available_stream_use_cases(5); +} +#[repr(transparent)] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub struct acamera_metadata_enum_acamera_scaler_available_stream_use_cases( + pub ::std::os::raw::c_uint, +); +pub use self::acamera_metadata_enum_acamera_scaler_available_stream_use_cases as acamera_metadata_enum_android_scaler_available_stream_use_cases_t; impl acamera_metadata_enum_acamera_sensor_reference_illuminant1 { pub const ACAMERA_SENSOR_REFERENCE_ILLUMINANT1_DAYLIGHT: acamera_metadata_enum_acamera_sensor_reference_illuminant1 = @@ -19723,832 +21135,1386 @@ impl acamera_metadata_enum_acamera_heic_available_heic_stream_configurations_max 0, ); } -impl acamera_metadata_enum_acamera_heic_available_heic_stream_configurations_maximum_resolution { - pub const ACAMERA_HEIC_AVAILABLE_HEIC_STREAM_CONFIGURATIONS_MAXIMUM_RESOLUTION_INPUT: - acamera_metadata_enum_acamera_heic_available_heic_stream_configurations_maximum_resolution = - acamera_metadata_enum_acamera_heic_available_heic_stream_configurations_maximum_resolution( - 1, - ); +impl acamera_metadata_enum_acamera_heic_available_heic_stream_configurations_maximum_resolution { + pub const ACAMERA_HEIC_AVAILABLE_HEIC_STREAM_CONFIGURATIONS_MAXIMUM_RESOLUTION_INPUT: + acamera_metadata_enum_acamera_heic_available_heic_stream_configurations_maximum_resolution = + acamera_metadata_enum_acamera_heic_available_heic_stream_configurations_maximum_resolution( + 1, + ); +} +#[repr(transparent)] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub struct acamera_metadata_enum_acamera_heic_available_heic_stream_configurations_maximum_resolution( + pub ::std::os::raw::c_uint, +); +pub use self::acamera_metadata_enum_acamera_heic_available_heic_stream_configurations_maximum_resolution as acamera_metadata_enum_android_heic_available_heic_stream_configurations_maximum_resolution_t; +impl acamera_metadata_enum_acamera_automotive_location { + pub const ACAMERA_AUTOMOTIVE_LOCATION_INTERIOR: + acamera_metadata_enum_acamera_automotive_location = + acamera_metadata_enum_acamera_automotive_location(0); +} +impl acamera_metadata_enum_acamera_automotive_location { + pub const ACAMERA_AUTOMOTIVE_LOCATION_EXTERIOR_OTHER: + acamera_metadata_enum_acamera_automotive_location = + acamera_metadata_enum_acamera_automotive_location(1); +} +impl acamera_metadata_enum_acamera_automotive_location { + pub const ACAMERA_AUTOMOTIVE_LOCATION_EXTERIOR_FRONT: + acamera_metadata_enum_acamera_automotive_location = + acamera_metadata_enum_acamera_automotive_location(2); +} +impl acamera_metadata_enum_acamera_automotive_location { + pub const ACAMERA_AUTOMOTIVE_LOCATION_EXTERIOR_REAR: + acamera_metadata_enum_acamera_automotive_location = + acamera_metadata_enum_acamera_automotive_location(3); +} +impl acamera_metadata_enum_acamera_automotive_location { + pub const ACAMERA_AUTOMOTIVE_LOCATION_EXTERIOR_LEFT: + acamera_metadata_enum_acamera_automotive_location = + acamera_metadata_enum_acamera_automotive_location(4); +} +impl acamera_metadata_enum_acamera_automotive_location { + pub const ACAMERA_AUTOMOTIVE_LOCATION_EXTERIOR_RIGHT: + acamera_metadata_enum_acamera_automotive_location = + acamera_metadata_enum_acamera_automotive_location(5); +} +impl acamera_metadata_enum_acamera_automotive_location { + pub const ACAMERA_AUTOMOTIVE_LOCATION_EXTRA_OTHER: + acamera_metadata_enum_acamera_automotive_location = + acamera_metadata_enum_acamera_automotive_location(6); +} +impl acamera_metadata_enum_acamera_automotive_location { + pub const ACAMERA_AUTOMOTIVE_LOCATION_EXTRA_FRONT: + acamera_metadata_enum_acamera_automotive_location = + acamera_metadata_enum_acamera_automotive_location(7); +} +impl acamera_metadata_enum_acamera_automotive_location { + pub const ACAMERA_AUTOMOTIVE_LOCATION_EXTRA_REAR: + acamera_metadata_enum_acamera_automotive_location = + acamera_metadata_enum_acamera_automotive_location(8); +} +impl acamera_metadata_enum_acamera_automotive_location { + pub const ACAMERA_AUTOMOTIVE_LOCATION_EXTRA_LEFT: + acamera_metadata_enum_acamera_automotive_location = + acamera_metadata_enum_acamera_automotive_location(9); +} +impl acamera_metadata_enum_acamera_automotive_location { + pub const ACAMERA_AUTOMOTIVE_LOCATION_EXTRA_RIGHT: + acamera_metadata_enum_acamera_automotive_location = + acamera_metadata_enum_acamera_automotive_location(10); +} +#[repr(transparent)] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub struct acamera_metadata_enum_acamera_automotive_location(pub ::std::os::raw::c_uint); +pub use self::acamera_metadata_enum_acamera_automotive_location as acamera_metadata_enum_android_automotive_location_t; +impl acamera_metadata_enum_acamera_automotive_lens_facing { + pub const ACAMERA_AUTOMOTIVE_LENS_FACING_EXTERIOR_OTHER: + acamera_metadata_enum_acamera_automotive_lens_facing = + acamera_metadata_enum_acamera_automotive_lens_facing(0); +} +impl acamera_metadata_enum_acamera_automotive_lens_facing { + pub const ACAMERA_AUTOMOTIVE_LENS_FACING_EXTERIOR_FRONT: + acamera_metadata_enum_acamera_automotive_lens_facing = + acamera_metadata_enum_acamera_automotive_lens_facing(1); +} +impl acamera_metadata_enum_acamera_automotive_lens_facing { + pub const ACAMERA_AUTOMOTIVE_LENS_FACING_EXTERIOR_REAR: + acamera_metadata_enum_acamera_automotive_lens_facing = + acamera_metadata_enum_acamera_automotive_lens_facing(2); +} +impl acamera_metadata_enum_acamera_automotive_lens_facing { + pub const ACAMERA_AUTOMOTIVE_LENS_FACING_EXTERIOR_LEFT: + acamera_metadata_enum_acamera_automotive_lens_facing = + acamera_metadata_enum_acamera_automotive_lens_facing(3); +} +impl acamera_metadata_enum_acamera_automotive_lens_facing { + pub const ACAMERA_AUTOMOTIVE_LENS_FACING_EXTERIOR_RIGHT: + acamera_metadata_enum_acamera_automotive_lens_facing = + acamera_metadata_enum_acamera_automotive_lens_facing(4); +} +impl acamera_metadata_enum_acamera_automotive_lens_facing { + pub const ACAMERA_AUTOMOTIVE_LENS_FACING_INTERIOR_OTHER: + acamera_metadata_enum_acamera_automotive_lens_facing = + acamera_metadata_enum_acamera_automotive_lens_facing(5); +} +impl acamera_metadata_enum_acamera_automotive_lens_facing { + pub const ACAMERA_AUTOMOTIVE_LENS_FACING_INTERIOR_SEAT_ROW_1_LEFT: + acamera_metadata_enum_acamera_automotive_lens_facing = + acamera_metadata_enum_acamera_automotive_lens_facing(6); +} +impl acamera_metadata_enum_acamera_automotive_lens_facing { + pub const ACAMERA_AUTOMOTIVE_LENS_FACING_INTERIOR_SEAT_ROW_1_CENTER: + acamera_metadata_enum_acamera_automotive_lens_facing = + acamera_metadata_enum_acamera_automotive_lens_facing(7); +} +impl acamera_metadata_enum_acamera_automotive_lens_facing { + pub const ACAMERA_AUTOMOTIVE_LENS_FACING_INTERIOR_SEAT_ROW_1_RIGHT: + acamera_metadata_enum_acamera_automotive_lens_facing = + acamera_metadata_enum_acamera_automotive_lens_facing(8); +} +impl acamera_metadata_enum_acamera_automotive_lens_facing { + pub const ACAMERA_AUTOMOTIVE_LENS_FACING_INTERIOR_SEAT_ROW_2_LEFT: + acamera_metadata_enum_acamera_automotive_lens_facing = + acamera_metadata_enum_acamera_automotive_lens_facing(9); +} +impl acamera_metadata_enum_acamera_automotive_lens_facing { + pub const ACAMERA_AUTOMOTIVE_LENS_FACING_INTERIOR_SEAT_ROW_2_CENTER: + acamera_metadata_enum_acamera_automotive_lens_facing = + acamera_metadata_enum_acamera_automotive_lens_facing(10); +} +impl acamera_metadata_enum_acamera_automotive_lens_facing { + pub const ACAMERA_AUTOMOTIVE_LENS_FACING_INTERIOR_SEAT_ROW_2_RIGHT: + acamera_metadata_enum_acamera_automotive_lens_facing = + acamera_metadata_enum_acamera_automotive_lens_facing(11); +} +impl acamera_metadata_enum_acamera_automotive_lens_facing { + pub const ACAMERA_AUTOMOTIVE_LENS_FACING_INTERIOR_SEAT_ROW_3_LEFT: + acamera_metadata_enum_acamera_automotive_lens_facing = + acamera_metadata_enum_acamera_automotive_lens_facing(12); +} +impl acamera_metadata_enum_acamera_automotive_lens_facing { + pub const ACAMERA_AUTOMOTIVE_LENS_FACING_INTERIOR_SEAT_ROW_3_CENTER: + acamera_metadata_enum_acamera_automotive_lens_facing = + acamera_metadata_enum_acamera_automotive_lens_facing(13); +} +impl acamera_metadata_enum_acamera_automotive_lens_facing { + pub const ACAMERA_AUTOMOTIVE_LENS_FACING_INTERIOR_SEAT_ROW_3_RIGHT: + acamera_metadata_enum_acamera_automotive_lens_facing = + acamera_metadata_enum_acamera_automotive_lens_facing(14); +} +#[repr(transparent)] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub struct acamera_metadata_enum_acamera_automotive_lens_facing(pub ::std::os::raw::c_uint); +pub use self::acamera_metadata_enum_acamera_automotive_lens_facing as acamera_metadata_enum_android_automotive_lens_facing_t; +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ACameraMetadata { + _unused: [u8; 0], +} +pub const ACAMERA_TYPE_BYTE: ::std::os::raw::c_uint = 0; +pub const ACAMERA_TYPE_INT32: ::std::os::raw::c_uint = 1; +pub const ACAMERA_TYPE_FLOAT: ::std::os::raw::c_uint = 2; +pub const ACAMERA_TYPE_INT64: ::std::os::raw::c_uint = 3; +pub const ACAMERA_TYPE_DOUBLE: ::std::os::raw::c_uint = 4; +pub const ACAMERA_TYPE_RATIONAL: ::std::os::raw::c_uint = 5; +pub const ACAMERA_NUM_TYPES: ::std::os::raw::c_uint = 6; +pub type _bindgen_ty_63 = ::std::os::raw::c_uint; +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ACameraMetadata_rational { + pub numerator: i32, + pub denominator: i32, +} +#[test] +fn bindgen_test_layout_ACameraMetadata_rational() { + assert_eq!( + ::std::mem::size_of::(), + 8usize, + concat!("Size of: ", stringify!(ACameraMetadata_rational)) + ); + assert_eq!( + ::std::mem::align_of::(), + 4usize, + concat!("Alignment of ", stringify!(ACameraMetadata_rational)) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).numerator as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ACameraMetadata_rational), + "::", + stringify!(numerator) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).denominator as *const _ as usize + }, + 4usize, + concat!( + "Offset of field: ", + stringify!(ACameraMetadata_rational), + "::", + stringify!(denominator) + ) + ); +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct ACameraMetadata_entry { + pub tag: u32, + pub type_: u8, + pub count: u32, + pub data: ACameraMetadata_entry__bindgen_ty_1, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union ACameraMetadata_entry__bindgen_ty_1 { + pub u8_: *mut u8, + pub i32_: *mut i32, + pub f: *mut f32, + pub i64_: *mut i64, + pub d: *mut f64, + pub r: *mut ACameraMetadata_rational, +} +#[test] +fn bindgen_test_layout_ACameraMetadata_entry__bindgen_ty_1() { + assert_eq!( + ::std::mem::size_of::(), + 8usize, + concat!("Size of: ", stringify!(ACameraMetadata_entry__bindgen_ty_1)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(ACameraMetadata_entry__bindgen_ty_1) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).u8_ as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ACameraMetadata_entry__bindgen_ty_1), + "::", + stringify!(u8_) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).i32_ as *const _ + as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ACameraMetadata_entry__bindgen_ty_1), + "::", + stringify!(i32_) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).f as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ACameraMetadata_entry__bindgen_ty_1), + "::", + stringify!(f) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).i64_ as *const _ + as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ACameraMetadata_entry__bindgen_ty_1), + "::", + stringify!(i64_) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).d as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ACameraMetadata_entry__bindgen_ty_1), + "::", + stringify!(d) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).r as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ACameraMetadata_entry__bindgen_ty_1), + "::", + stringify!(r) + ) + ); +} +#[test] +fn bindgen_test_layout_ACameraMetadata_entry() { + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!("Size of: ", stringify!(ACameraMetadata_entry)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(ACameraMetadata_entry)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).tag as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ACameraMetadata_entry), + "::", + stringify!(tag) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).type_ as *const _ as usize }, + 4usize, + concat!( + "Offset of field: ", + stringify!(ACameraMetadata_entry), + "::", + stringify!(type_) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).count as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(ACameraMetadata_entry), + "::", + stringify!(count) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).data as *const _ as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(ACameraMetadata_entry), + "::", + stringify!(data) + ) + ); } -#[repr(transparent)] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub struct acamera_metadata_enum_acamera_heic_available_heic_stream_configurations_maximum_resolution( - pub ::std::os::raw::c_uint, -); -pub use self::acamera_metadata_enum_acamera_heic_available_heic_stream_configurations_maximum_resolution as acamera_metadata_enum_android_heic_available_heic_stream_configurations_maximum_resolution_t; #[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ACameraMetadata { - _unused: [u8; 0], +#[derive(Copy, Clone)] +pub struct ACameraMetadata_const_entry { + pub tag: u32, + pub type_: u8, + pub count: u32, + pub data: ACameraMetadata_const_entry__bindgen_ty_1, } -pub const ACAMERA_TYPE_BYTE: ::std::os::raw::c_uint = 0; -pub const ACAMERA_TYPE_INT32: ::std::os::raw::c_uint = 1; -pub const ACAMERA_TYPE_FLOAT: ::std::os::raw::c_uint = 2; -pub const ACAMERA_TYPE_INT64: ::std::os::raw::c_uint = 3; -pub const ACAMERA_TYPE_DOUBLE: ::std::os::raw::c_uint = 4; -pub const ACAMERA_TYPE_RATIONAL: ::std::os::raw::c_uint = 5; -pub const ACAMERA_NUM_TYPES: ::std::os::raw::c_uint = 6; -pub type _bindgen_ty_61 = ::std::os::raw::c_uint; #[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ACameraMetadata_rational { - pub numerator: i32, - pub denominator: i32, +#[derive(Copy, Clone)] +pub union ACameraMetadata_const_entry__bindgen_ty_1 { + pub u8_: *const u8, + pub i32_: *const i32, + pub f: *const f32, + pub i64_: *const i64, + pub d: *const f64, + pub r: *const ACameraMetadata_rational, } #[test] -fn bindgen_test_layout_ACameraMetadata_rational() { +fn bindgen_test_layout_ACameraMetadata_const_entry__bindgen_ty_1() { assert_eq!( - ::std::mem::size_of::(), + ::std::mem::size_of::(), 8usize, - concat!("Size of: ", stringify!(ACameraMetadata_rational)) + concat!( + "Size of: ", + stringify!(ACameraMetadata_const_entry__bindgen_ty_1) + ) ); assert_eq!( - ::std::mem::align_of::(), + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(ACameraMetadata_const_entry__bindgen_ty_1) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).u8_ as *const _ + as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ACameraMetadata_const_entry__bindgen_ty_1), + "::", + stringify!(u8_) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).i32_ as *const _ + as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ACameraMetadata_const_entry__bindgen_ty_1), + "::", + stringify!(i32_) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).f as *const _ + as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ACameraMetadata_const_entry__bindgen_ty_1), + "::", + stringify!(f) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).i64_ as *const _ + as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ACameraMetadata_const_entry__bindgen_ty_1), + "::", + stringify!(i64_) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).d as *const _ + as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ACameraMetadata_const_entry__bindgen_ty_1), + "::", + stringify!(d) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).r as *const _ + as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ACameraMetadata_const_entry__bindgen_ty_1), + "::", + stringify!(r) + ) + ); +} +#[test] +fn bindgen_test_layout_ACameraMetadata_const_entry() { + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!("Size of: ", stringify!(ACameraMetadata_const_entry)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(ACameraMetadata_const_entry)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).tag as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ACameraMetadata_const_entry), + "::", + stringify!(tag) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).type_ as *const _ as usize + }, 4usize, - concat!("Alignment of ", stringify!(ACameraMetadata_rational)) + concat!( + "Offset of field: ", + stringify!(ACameraMetadata_const_entry), + "::", + stringify!(type_) + ) ); assert_eq!( unsafe { - &(*(::std::ptr::null::())).numerator as *const _ as usize + &(*(::std::ptr::null::())).count as *const _ as usize }, - 0usize, + 8usize, concat!( "Offset of field: ", - stringify!(ACameraMetadata_rational), + stringify!(ACameraMetadata_const_entry), "::", - stringify!(numerator) + stringify!(count) ) ); assert_eq!( unsafe { - &(*(::std::ptr::null::())).denominator as *const _ as usize + &(*(::std::ptr::null::())).data as *const _ as usize }, - 4usize, + 16usize, concat!( "Offset of field: ", - stringify!(ACameraMetadata_rational), + stringify!(ACameraMetadata_const_entry), "::", - stringify!(denominator) + stringify!(data) ) ); } +extern "C" { + pub fn ACameraMetadata_getConstEntry( + metadata: *const ACameraMetadata, + tag: u32, + entry: *mut ACameraMetadata_const_entry, + ) -> camera_status_t; +} +extern "C" { + pub fn ACameraMetadata_getAllTags( + metadata: *const ACameraMetadata, + numEntries: *mut i32, + tags: *mut *const u32, + ) -> camera_status_t; +} +extern "C" { + pub fn ACameraMetadata_copy(src: *const ACameraMetadata) -> *mut ACameraMetadata; +} +extern "C" { + pub fn ACameraMetadata_free(metadata: *mut ACameraMetadata); +} +extern "C" { + pub fn ACameraMetadata_isLogicalMultiCamera( + staticMetadata: *const ACameraMetadata, + numPhysicalCameras: *mut size_t, + physicalCameraIds: *mut *const *const ::std::os::raw::c_char, + ) -> bool; +} +extern "C" { + pub fn ACameraMetadata_fromCameraMetadata( + env: *mut JNIEnv, + cameraMetadata: jobject, + ) -> *mut ACameraMetadata; +} +pub type ACameraWindowType = ANativeWindow; #[repr(C)] -#[derive(Copy, Clone)] -pub struct ACameraMetadata_entry { - pub tag: u32, - pub type_: u8, - pub count: u32, - pub data: ACameraMetadata_entry__bindgen_ty_1, +#[derive(Debug, Copy, Clone)] +pub struct ACameraOutputTargets { + _unused: [u8; 0], } #[repr(C)] -#[derive(Copy, Clone)] -pub union ACameraMetadata_entry__bindgen_ty_1 { - pub u8_: *mut u8, - pub i32_: *mut i32, - pub f: *mut f32, - pub i64_: *mut i64, - pub d: *mut f64, - pub r: *mut ACameraMetadata_rational, +#[derive(Debug, Copy, Clone)] +pub struct ACameraOutputTarget { + _unused: [u8; 0], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ACaptureRequest { + _unused: [u8; 0], +} +extern "C" { + pub fn ACameraOutputTarget_create( + window: *mut ACameraWindowType, + output: *mut *mut ACameraOutputTarget, + ) -> camera_status_t; +} +extern "C" { + pub fn ACameraOutputTarget_free(output: *mut ACameraOutputTarget); +} +extern "C" { + pub fn ACaptureRequest_addTarget( + request: *mut ACaptureRequest, + output: *const ACameraOutputTarget, + ) -> camera_status_t; +} +extern "C" { + pub fn ACaptureRequest_removeTarget( + request: *mut ACaptureRequest, + output: *const ACameraOutputTarget, + ) -> camera_status_t; +} +extern "C" { + pub fn ACaptureRequest_getConstEntry( + request: *const ACaptureRequest, + tag: u32, + entry: *mut ACameraMetadata_const_entry, + ) -> camera_status_t; +} +extern "C" { + pub fn ACaptureRequest_getAllTags( + request: *const ACaptureRequest, + numTags: *mut i32, + tags: *mut *const u32, + ) -> camera_status_t; +} +extern "C" { + pub fn ACaptureRequest_setEntry_u8( + request: *mut ACaptureRequest, + tag: u32, + count: u32, + data: *const u8, + ) -> camera_status_t; +} +extern "C" { + pub fn ACaptureRequest_setEntry_i32( + request: *mut ACaptureRequest, + tag: u32, + count: u32, + data: *const i32, + ) -> camera_status_t; +} +extern "C" { + pub fn ACaptureRequest_setEntry_float( + request: *mut ACaptureRequest, + tag: u32, + count: u32, + data: *const f32, + ) -> camera_status_t; +} +extern "C" { + pub fn ACaptureRequest_setEntry_i64( + request: *mut ACaptureRequest, + tag: u32, + count: u32, + data: *const i64, + ) -> camera_status_t; +} +extern "C" { + pub fn ACaptureRequest_setEntry_double( + request: *mut ACaptureRequest, + tag: u32, + count: u32, + data: *const f64, + ) -> camera_status_t; +} +extern "C" { + pub fn ACaptureRequest_setEntry_rational( + request: *mut ACaptureRequest, + tag: u32, + count: u32, + data: *const ACameraMetadata_rational, + ) -> camera_status_t; +} +extern "C" { + pub fn ACaptureRequest_free(request: *mut ACaptureRequest); +} +extern "C" { + pub fn ACaptureRequest_setUserContext( + request: *mut ACaptureRequest, + context: *mut ::std::os::raw::c_void, + ) -> camera_status_t; +} +extern "C" { + pub fn ACaptureRequest_getUserContext( + request: *const ACaptureRequest, + context: *mut *mut ::std::os::raw::c_void, + ) -> camera_status_t; +} +extern "C" { + pub fn ACaptureRequest_copy(src: *const ACaptureRequest) -> *mut ACaptureRequest; +} +extern "C" { + pub fn ACaptureRequest_getConstEntry_physicalCamera( + request: *const ACaptureRequest, + physicalId: *const ::std::os::raw::c_char, + tag: u32, + entry: *mut ACameraMetadata_const_entry, + ) -> camera_status_t; +} +extern "C" { + pub fn ACaptureRequest_setEntry_physicalCamera_u8( + request: *mut ACaptureRequest, + physicalId: *const ::std::os::raw::c_char, + tag: u32, + count: u32, + data: *const u8, + ) -> camera_status_t; +} +extern "C" { + pub fn ACaptureRequest_setEntry_physicalCamera_i32( + request: *mut ACaptureRequest, + physicalId: *const ::std::os::raw::c_char, + tag: u32, + count: u32, + data: *const i32, + ) -> camera_status_t; +} +extern "C" { + pub fn ACaptureRequest_setEntry_physicalCamera_float( + request: *mut ACaptureRequest, + physicalId: *const ::std::os::raw::c_char, + tag: u32, + count: u32, + data: *const f32, + ) -> camera_status_t; +} +extern "C" { + pub fn ACaptureRequest_setEntry_physicalCamera_i64( + request: *mut ACaptureRequest, + physicalId: *const ::std::os::raw::c_char, + tag: u32, + count: u32, + data: *const i64, + ) -> camera_status_t; +} +extern "C" { + pub fn ACaptureRequest_setEntry_physicalCamera_double( + request: *mut ACaptureRequest, + physicalId: *const ::std::os::raw::c_char, + tag: u32, + count: u32, + data: *const f64, + ) -> camera_status_t; +} +extern "C" { + pub fn ACaptureRequest_setEntry_physicalCamera_rational( + request: *mut ACaptureRequest, + physicalId: *const ::std::os::raw::c_char, + tag: u32, + count: u32, + data: *const ACameraMetadata_rational, + ) -> camera_status_t; +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ACameraCaptureSession { + _unused: [u8; 0], +} +pub type ACameraCaptureSession_stateCallback = ::std::option::Option< + unsafe extern "C" fn(context: *mut ::std::os::raw::c_void, session: *mut ACameraCaptureSession), +>; +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ACameraCaptureSession_stateCallbacks { + pub context: *mut ::std::os::raw::c_void, + pub onClosed: ACameraCaptureSession_stateCallback, + pub onReady: ACameraCaptureSession_stateCallback, + pub onActive: ACameraCaptureSession_stateCallback, } #[test] -fn bindgen_test_layout_ACameraMetadata_entry__bindgen_ty_1() { - assert_eq!( - ::std::mem::size_of::(), - 8usize, - concat!("Size of: ", stringify!(ACameraMetadata_entry__bindgen_ty_1)) - ); +fn bindgen_test_layout_ACameraCaptureSession_stateCallbacks() { assert_eq!( - ::std::mem::align_of::(), - 8usize, + ::std::mem::size_of::(), + 32usize, concat!( - "Alignment of ", - stringify!(ACameraMetadata_entry__bindgen_ty_1) + "Size of: ", + stringify!(ACameraCaptureSession_stateCallbacks) ) ); assert_eq!( - unsafe { - &(*(::std::ptr::null::())).u8_ as *const _ as usize - }, - 0usize, + ::std::mem::align_of::(), + 8usize, concat!( - "Offset of field: ", - stringify!(ACameraMetadata_entry__bindgen_ty_1), - "::", - stringify!(u8_) + "Alignment of ", + stringify!(ACameraCaptureSession_stateCallbacks) ) ); assert_eq!( unsafe { - &(*(::std::ptr::null::())).i32_ as *const _ + &(*(::std::ptr::null::())).context as *const _ as usize }, 0usize, concat!( "Offset of field: ", - stringify!(ACameraMetadata_entry__bindgen_ty_1), - "::", - stringify!(i32_) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::())).f as *const _ as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(ACameraMetadata_entry__bindgen_ty_1), + stringify!(ACameraCaptureSession_stateCallbacks), "::", - stringify!(f) + stringify!(context) ) ); assert_eq!( unsafe { - &(*(::std::ptr::null::())).i64_ as *const _ + &(*(::std::ptr::null::())).onClosed as *const _ as usize }, - 0usize, + 8usize, concat!( "Offset of field: ", - stringify!(ACameraMetadata_entry__bindgen_ty_1), + stringify!(ACameraCaptureSession_stateCallbacks), "::", - stringify!(i64_) + stringify!(onClosed) ) ); assert_eq!( unsafe { - &(*(::std::ptr::null::())).d as *const _ as usize + &(*(::std::ptr::null::())).onReady as *const _ + as usize }, - 0usize, + 16usize, concat!( "Offset of field: ", - stringify!(ACameraMetadata_entry__bindgen_ty_1), + stringify!(ACameraCaptureSession_stateCallbacks), "::", - stringify!(d) + stringify!(onReady) ) ); assert_eq!( unsafe { - &(*(::std::ptr::null::())).r as *const _ as usize + &(*(::std::ptr::null::())).onActive as *const _ + as usize }, - 0usize, + 24usize, concat!( "Offset of field: ", - stringify!(ACameraMetadata_entry__bindgen_ty_1), + stringify!(ACameraCaptureSession_stateCallbacks), "::", - stringify!(r) + stringify!(onActive) ) ); } +pub const CAPTURE_FAILURE_REASON_FLUSHED: ::std::os::raw::c_uint = 0; +pub const CAPTURE_FAILURE_REASON_ERROR: ::std::os::raw::c_uint = 1; +pub type _bindgen_ty_64 = ::std::os::raw::c_uint; +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ACameraCaptureFailure { + pub frameNumber: i64, + pub reason: ::std::os::raw::c_int, + pub sequenceId: ::std::os::raw::c_int, + pub wasImageCaptured: bool, +} #[test] -fn bindgen_test_layout_ACameraMetadata_entry() { +fn bindgen_test_layout_ACameraCaptureFailure() { assert_eq!( - ::std::mem::size_of::(), + ::std::mem::size_of::(), 24usize, - concat!("Size of: ", stringify!(ACameraMetadata_entry)) + concat!("Size of: ", stringify!(ACameraCaptureFailure)) ); assert_eq!( - ::std::mem::align_of::(), + ::std::mem::align_of::(), 8usize, - concat!("Alignment of ", stringify!(ACameraMetadata_entry)) + concat!("Alignment of ", stringify!(ACameraCaptureFailure)) ); assert_eq!( - unsafe { &(*(::std::ptr::null::())).tag as *const _ as usize }, + unsafe { + &(*(::std::ptr::null::())).frameNumber as *const _ as usize + }, 0usize, concat!( "Offset of field: ", - stringify!(ACameraMetadata_entry), + stringify!(ACameraCaptureFailure), "::", - stringify!(tag) + stringify!(frameNumber) ) ); assert_eq!( - unsafe { &(*(::std::ptr::null::())).type_ as *const _ as usize }, - 4usize, + unsafe { &(*(::std::ptr::null::())).reason as *const _ as usize }, + 8usize, concat!( "Offset of field: ", - stringify!(ACameraMetadata_entry), + stringify!(ACameraCaptureFailure), "::", - stringify!(type_) + stringify!(reason) ) ); assert_eq!( - unsafe { &(*(::std::ptr::null::())).count as *const _ as usize }, - 8usize, + unsafe { + &(*(::std::ptr::null::())).sequenceId as *const _ as usize + }, + 12usize, concat!( "Offset of field: ", - stringify!(ACameraMetadata_entry), + stringify!(ACameraCaptureFailure), "::", - stringify!(count) + stringify!(sequenceId) ) ); assert_eq!( - unsafe { &(*(::std::ptr::null::())).data as *const _ as usize }, + unsafe { + &(*(::std::ptr::null::())).wasImageCaptured as *const _ as usize + }, 16usize, concat!( "Offset of field: ", - stringify!(ACameraMetadata_entry), + stringify!(ACameraCaptureFailure), "::", - stringify!(data) + stringify!(wasImageCaptured) ) ); } +pub type ACameraCaptureSession_captureCallback_start = ::std::option::Option< + unsafe extern "C" fn( + context: *mut ::std::os::raw::c_void, + session: *mut ACameraCaptureSession, + request: *const ACaptureRequest, + timestamp: i64, + ), +>; +pub type ACameraCaptureSession_captureCallback_result = ::std::option::Option< + unsafe extern "C" fn( + context: *mut ::std::os::raw::c_void, + session: *mut ACameraCaptureSession, + request: *mut ACaptureRequest, + result: *const ACameraMetadata, + ), +>; +pub type ACameraCaptureSession_captureCallback_failed = ::std::option::Option< + unsafe extern "C" fn( + context: *mut ::std::os::raw::c_void, + session: *mut ACameraCaptureSession, + request: *mut ACaptureRequest, + failure: *mut ACameraCaptureFailure, + ), +>; +pub type ACameraCaptureSession_captureCallback_sequenceEnd = ::std::option::Option< + unsafe extern "C" fn( + context: *mut ::std::os::raw::c_void, + session: *mut ACameraCaptureSession, + sequenceId: ::std::os::raw::c_int, + frameNumber: i64, + ), +>; +pub type ACameraCaptureSession_captureCallback_sequenceAbort = ::std::option::Option< + unsafe extern "C" fn( + context: *mut ::std::os::raw::c_void, + session: *mut ACameraCaptureSession, + sequenceId: ::std::os::raw::c_int, + ), +>; +pub type ACameraCaptureSession_captureCallback_bufferLost = ::std::option::Option< + unsafe extern "C" fn( + context: *mut ::std::os::raw::c_void, + session: *mut ACameraCaptureSession, + request: *mut ACaptureRequest, + window: *mut ACameraWindowType, + frameNumber: i64, + ), +>; #[repr(C)] -#[derive(Copy, Clone)] -pub struct ACameraMetadata_const_entry { - pub tag: u32, - pub type_: u8, - pub count: u32, - pub data: ACameraMetadata_const_entry__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union ACameraMetadata_const_entry__bindgen_ty_1 { - pub u8_: *const u8, - pub i32_: *const i32, - pub f: *const f32, - pub i64_: *const i64, - pub d: *const f64, - pub r: *const ACameraMetadata_rational, +#[derive(Debug, Copy, Clone)] +pub struct ACameraCaptureSession_captureCallbacks { + pub context: *mut ::std::os::raw::c_void, + pub onCaptureStarted: ACameraCaptureSession_captureCallback_start, + pub onCaptureProgressed: ACameraCaptureSession_captureCallback_result, + pub onCaptureCompleted: ACameraCaptureSession_captureCallback_result, + pub onCaptureFailed: ACameraCaptureSession_captureCallback_failed, + pub onCaptureSequenceCompleted: ACameraCaptureSession_captureCallback_sequenceEnd, + pub onCaptureSequenceAborted: ACameraCaptureSession_captureCallback_sequenceAbort, + pub onCaptureBufferLost: ACameraCaptureSession_captureCallback_bufferLost, } #[test] -fn bindgen_test_layout_ACameraMetadata_const_entry__bindgen_ty_1() { +fn bindgen_test_layout_ACameraCaptureSession_captureCallbacks() { assert_eq!( - ::std::mem::size_of::(), - 8usize, + ::std::mem::size_of::(), + 64usize, concat!( "Size of: ", - stringify!(ACameraMetadata_const_entry__bindgen_ty_1) + stringify!(ACameraCaptureSession_captureCallbacks) ) ); assert_eq!( - ::std::mem::align_of::(), + ::std::mem::align_of::(), 8usize, concat!( "Alignment of ", - stringify!(ACameraMetadata_const_entry__bindgen_ty_1) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::())).u8_ as *const _ - as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(ACameraMetadata_const_entry__bindgen_ty_1), - "::", - stringify!(u8_) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::())).i32_ as *const _ - as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(ACameraMetadata_const_entry__bindgen_ty_1), - "::", - stringify!(i32_) + stringify!(ACameraCaptureSession_captureCallbacks) ) ); assert_eq!( unsafe { - &(*(::std::ptr::null::())).f as *const _ + &(*(::std::ptr::null::())).context as *const _ as usize }, 0usize, concat!( "Offset of field: ", - stringify!(ACameraMetadata_const_entry__bindgen_ty_1), + stringify!(ACameraCaptureSession_captureCallbacks), "::", - stringify!(f) + stringify!(context) ) ); assert_eq!( unsafe { - &(*(::std::ptr::null::())).i64_ as *const _ - as usize + &(*(::std::ptr::null::())).onCaptureStarted + as *const _ as usize }, - 0usize, + 8usize, concat!( "Offset of field: ", - stringify!(ACameraMetadata_const_entry__bindgen_ty_1), + stringify!(ACameraCaptureSession_captureCallbacks), "::", - stringify!(i64_) + stringify!(onCaptureStarted) ) ); assert_eq!( unsafe { - &(*(::std::ptr::null::())).d as *const _ - as usize + &(*(::std::ptr::null::())).onCaptureProgressed + as *const _ as usize }, - 0usize, + 16usize, concat!( "Offset of field: ", - stringify!(ACameraMetadata_const_entry__bindgen_ty_1), + stringify!(ACameraCaptureSession_captureCallbacks), "::", - stringify!(d) + stringify!(onCaptureProgressed) ) ); assert_eq!( unsafe { - &(*(::std::ptr::null::())).r as *const _ - as usize + &(*(::std::ptr::null::())).onCaptureCompleted + as *const _ as usize }, - 0usize, + 24usize, concat!( "Offset of field: ", - stringify!(ACameraMetadata_const_entry__bindgen_ty_1), + stringify!(ACameraCaptureSession_captureCallbacks), "::", - stringify!(r) + stringify!(onCaptureCompleted) ) ); -} -#[test] -fn bindgen_test_layout_ACameraMetadata_const_entry() { - assert_eq!( - ::std::mem::size_of::(), - 24usize, - concat!("Size of: ", stringify!(ACameraMetadata_const_entry)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(ACameraMetadata_const_entry)) - ); assert_eq!( - unsafe { &(*(::std::ptr::null::())).tag as *const _ as usize }, - 0usize, + unsafe { + &(*(::std::ptr::null::())).onCaptureFailed + as *const _ as usize + }, + 32usize, concat!( "Offset of field: ", - stringify!(ACameraMetadata_const_entry), + stringify!(ACameraCaptureSession_captureCallbacks), "::", - stringify!(tag) + stringify!(onCaptureFailed) ) ); assert_eq!( unsafe { - &(*(::std::ptr::null::())).type_ as *const _ as usize + &(*(::std::ptr::null::())) + .onCaptureSequenceCompleted as *const _ as usize }, - 4usize, + 40usize, concat!( "Offset of field: ", - stringify!(ACameraMetadata_const_entry), + stringify!(ACameraCaptureSession_captureCallbacks), "::", - stringify!(type_) + stringify!(onCaptureSequenceCompleted) ) ); assert_eq!( unsafe { - &(*(::std::ptr::null::())).count as *const _ as usize + &(*(::std::ptr::null::())) + .onCaptureSequenceAborted as *const _ as usize }, - 8usize, + 48usize, concat!( "Offset of field: ", - stringify!(ACameraMetadata_const_entry), + stringify!(ACameraCaptureSession_captureCallbacks), "::", - stringify!(count) + stringify!(onCaptureSequenceAborted) ) ); assert_eq!( unsafe { - &(*(::std::ptr::null::())).data as *const _ as usize + &(*(::std::ptr::null::())).onCaptureBufferLost + as *const _ as usize }, - 16usize, + 56usize, concat!( "Offset of field: ", - stringify!(ACameraMetadata_const_entry), + stringify!(ACameraCaptureSession_captureCallbacks), "::", - stringify!(data) + stringify!(onCaptureBufferLost) ) ); } +pub const CAPTURE_SEQUENCE_ID_NONE: ::std::os::raw::c_int = -1; +pub type _bindgen_ty_65 = ::std::os::raw::c_int; extern "C" { - pub fn ACameraMetadata_getConstEntry( - metadata: *const ACameraMetadata, - tag: u32, - entry: *mut ACameraMetadata_const_entry, - ) -> camera_status_t; -} -extern "C" { - pub fn ACameraMetadata_getAllTags( - metadata: *const ACameraMetadata, - numEntries: *mut i32, - tags: *mut *const u32, - ) -> camera_status_t; -} -extern "C" { - pub fn ACameraMetadata_copy(src: *const ACameraMetadata) -> *mut ACameraMetadata; -} -extern "C" { - pub fn ACameraMetadata_free(metadata: *mut ACameraMetadata); -} -extern "C" { - pub fn ACameraMetadata_isLogicalMultiCamera( - staticMetadata: *const ACameraMetadata, - numPhysicalCameras: *mut size_t, - physicalCameraIds: *mut *const *const ::std::os::raw::c_char, - ) -> bool; -} -extern "C" { - pub fn ACameraMetadata_fromCameraMetadata( - env: *mut JNIEnv, - cameraMetadata: jobject, - ) -> *mut ACameraMetadata; -} -pub type ACameraWindowType = ANativeWindow; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ACameraOutputTargets { - _unused: [u8; 0], -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ACameraOutputTarget { - _unused: [u8; 0], + pub fn ACameraCaptureSession_close(session: *mut ACameraCaptureSession); } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct ACaptureRequest { +pub struct ACameraDevice { _unused: [u8; 0], } extern "C" { - pub fn ACameraOutputTarget_create( - window: *mut ACameraWindowType, - output: *mut *mut ACameraOutputTarget, - ) -> camera_status_t; -} -extern "C" { - pub fn ACameraOutputTarget_free(output: *mut ACameraOutputTarget); -} -extern "C" { - pub fn ACaptureRequest_addTarget( - request: *mut ACaptureRequest, - output: *const ACameraOutputTarget, - ) -> camera_status_t; -} -extern "C" { - pub fn ACaptureRequest_removeTarget( - request: *mut ACaptureRequest, - output: *const ACameraOutputTarget, - ) -> camera_status_t; -} -extern "C" { - pub fn ACaptureRequest_getConstEntry( - request: *const ACaptureRequest, - tag: u32, - entry: *mut ACameraMetadata_const_entry, - ) -> camera_status_t; -} -extern "C" { - pub fn ACaptureRequest_getAllTags( - request: *const ACaptureRequest, - numTags: *mut i32, - tags: *mut *const u32, - ) -> camera_status_t; -} -extern "C" { - pub fn ACaptureRequest_setEntry_u8( - request: *mut ACaptureRequest, - tag: u32, - count: u32, - data: *const u8, - ) -> camera_status_t; -} -extern "C" { - pub fn ACaptureRequest_setEntry_i32( - request: *mut ACaptureRequest, - tag: u32, - count: u32, - data: *const i32, - ) -> camera_status_t; -} -extern "C" { - pub fn ACaptureRequest_setEntry_float( - request: *mut ACaptureRequest, - tag: u32, - count: u32, - data: *const f32, - ) -> camera_status_t; -} -extern "C" { - pub fn ACaptureRequest_setEntry_i64( - request: *mut ACaptureRequest, - tag: u32, - count: u32, - data: *const i64, - ) -> camera_status_t; -} -extern "C" { - pub fn ACaptureRequest_setEntry_double( - request: *mut ACaptureRequest, - tag: u32, - count: u32, - data: *const f64, - ) -> camera_status_t; -} -extern "C" { - pub fn ACaptureRequest_setEntry_rational( - request: *mut ACaptureRequest, - tag: u32, - count: u32, - data: *const ACameraMetadata_rational, - ) -> camera_status_t; -} -extern "C" { - pub fn ACaptureRequest_free(request: *mut ACaptureRequest); -} -extern "C" { - pub fn ACaptureRequest_setUserContext( - request: *mut ACaptureRequest, - context: *mut ::std::os::raw::c_void, - ) -> camera_status_t; -} -extern "C" { - pub fn ACaptureRequest_getUserContext( - request: *const ACaptureRequest, - context: *mut *mut ::std::os::raw::c_void, - ) -> camera_status_t; -} -extern "C" { - pub fn ACaptureRequest_copy(src: *const ACaptureRequest) -> *mut ACaptureRequest; -} -extern "C" { - pub fn ACaptureRequest_getConstEntry_physicalCamera( - request: *const ACaptureRequest, - physicalId: *const ::std::os::raw::c_char, - tag: u32, - entry: *mut ACameraMetadata_const_entry, - ) -> camera_status_t; -} -extern "C" { - pub fn ACaptureRequest_setEntry_physicalCamera_u8( - request: *mut ACaptureRequest, - physicalId: *const ::std::os::raw::c_char, - tag: u32, - count: u32, - data: *const u8, - ) -> camera_status_t; -} -extern "C" { - pub fn ACaptureRequest_setEntry_physicalCamera_i32( - request: *mut ACaptureRequest, - physicalId: *const ::std::os::raw::c_char, - tag: u32, - count: u32, - data: *const i32, + pub fn ACameraCaptureSession_getDevice( + session: *mut ACameraCaptureSession, + device: *mut *mut ACameraDevice, ) -> camera_status_t; } extern "C" { - pub fn ACaptureRequest_setEntry_physicalCamera_float( - request: *mut ACaptureRequest, - physicalId: *const ::std::os::raw::c_char, - tag: u32, - count: u32, - data: *const f32, + pub fn ACameraCaptureSession_capture( + session: *mut ACameraCaptureSession, + callbacks: *mut ACameraCaptureSession_captureCallbacks, + numRequests: ::std::os::raw::c_int, + requests: *mut *mut ACaptureRequest, + captureSequenceId: *mut ::std::os::raw::c_int, ) -> camera_status_t; } extern "C" { - pub fn ACaptureRequest_setEntry_physicalCamera_i64( - request: *mut ACaptureRequest, - physicalId: *const ::std::os::raw::c_char, - tag: u32, - count: u32, - data: *const i64, + pub fn ACameraCaptureSession_setRepeatingRequest( + session: *mut ACameraCaptureSession, + callbacks: *mut ACameraCaptureSession_captureCallbacks, + numRequests: ::std::os::raw::c_int, + requests: *mut *mut ACaptureRequest, + captureSequenceId: *mut ::std::os::raw::c_int, ) -> camera_status_t; } extern "C" { - pub fn ACaptureRequest_setEntry_physicalCamera_double( - request: *mut ACaptureRequest, - physicalId: *const ::std::os::raw::c_char, - tag: u32, - count: u32, - data: *const f64, + pub fn ACameraCaptureSession_stopRepeating( + session: *mut ACameraCaptureSession, ) -> camera_status_t; } extern "C" { - pub fn ACaptureRequest_setEntry_physicalCamera_rational( - request: *mut ACaptureRequest, - physicalId: *const ::std::os::raw::c_char, - tag: u32, - count: u32, - data: *const ACameraMetadata_rational, + pub fn ACameraCaptureSession_abortCaptures( + session: *mut ACameraCaptureSession, ) -> camera_status_t; } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct ACameraCaptureSession { +pub struct ACaptureSessionOutput { _unused: [u8; 0], } -pub type ACameraCaptureSession_stateCallback = ::std::option::Option< - unsafe extern "C" fn(context: *mut ::std::os::raw::c_void, session: *mut ACameraCaptureSession), +extern "C" { + pub fn ACameraCaptureSession_updateSharedOutput( + session: *mut ACameraCaptureSession, + output: *mut ACaptureSessionOutput, + ) -> camera_status_t; +} +pub type ACameraCaptureSession_logicalCamera_captureCallback_result = ::std::option::Option< + unsafe extern "C" fn( + context: *mut ::std::os::raw::c_void, + session: *mut ACameraCaptureSession, + request: *mut ACaptureRequest, + result: *const ACameraMetadata, + physicalResultCount: size_t, + physicalCameraIds: *mut *const ::std::os::raw::c_char, + physicalResults: *mut *const ACameraMetadata, + ), >; #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct ACameraCaptureSession_stateCallbacks { - pub context: *mut ::std::os::raw::c_void, - pub onClosed: ACameraCaptureSession_stateCallback, - pub onReady: ACameraCaptureSession_stateCallback, - pub onActive: ACameraCaptureSession_stateCallback, +pub struct ALogicalCameraCaptureFailure { + pub captureFailure: ACameraCaptureFailure, + pub physicalCameraId: *const ::std::os::raw::c_char, } #[test] -fn bindgen_test_layout_ACameraCaptureSession_stateCallbacks() { +fn bindgen_test_layout_ALogicalCameraCaptureFailure() { assert_eq!( - ::std::mem::size_of::(), + ::std::mem::size_of::(), 32usize, + concat!("Size of: ", stringify!(ALogicalCameraCaptureFailure)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(ALogicalCameraCaptureFailure)) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).captureFailure as *const _ + as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ALogicalCameraCaptureFailure), + "::", + stringify!(captureFailure) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).physicalCameraId as *const _ + as usize + }, + 24usize, + concat!( + "Offset of field: ", + stringify!(ALogicalCameraCaptureFailure), + "::", + stringify!(physicalCameraId) + ) + ); +} +pub type ACameraCaptureSession_logicalCamera_captureCallback_failed = ::std::option::Option< + unsafe extern "C" fn( + context: *mut ::std::os::raw::c_void, + session: *mut ACameraCaptureSession, + request: *mut ACaptureRequest, + failure: *mut ALogicalCameraCaptureFailure, + ), +>; +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ACameraCaptureSession_logicalCamera_captureCallbacks { + pub context: *mut ::std::os::raw::c_void, + pub onCaptureStarted: ACameraCaptureSession_captureCallback_start, + pub onCaptureProgressed: ACameraCaptureSession_captureCallback_result, + pub onLogicalCameraCaptureCompleted: ACameraCaptureSession_logicalCamera_captureCallback_result, + pub onLogicalCameraCaptureFailed: ACameraCaptureSession_logicalCamera_captureCallback_failed, + pub onCaptureSequenceCompleted: ACameraCaptureSession_captureCallback_sequenceEnd, + pub onCaptureSequenceAborted: ACameraCaptureSession_captureCallback_sequenceAbort, + pub onCaptureBufferLost: ACameraCaptureSession_captureCallback_bufferLost, +} +#[test] +fn bindgen_test_layout_ACameraCaptureSession_logicalCamera_captureCallbacks() { + assert_eq!( + ::std::mem::size_of::(), + 64usize, concat!( "Size of: ", - stringify!(ACameraCaptureSession_stateCallbacks) + stringify!(ACameraCaptureSession_logicalCamera_captureCallbacks) ) ); assert_eq!( - ::std::mem::align_of::(), + ::std::mem::align_of::(), 8usize, concat!( "Alignment of ", - stringify!(ACameraCaptureSession_stateCallbacks) + stringify!(ACameraCaptureSession_logicalCamera_captureCallbacks) ) ); assert_eq!( unsafe { - &(*(::std::ptr::null::())).context as *const _ - as usize + &(*(::std::ptr::null::())).context + as *const _ as usize }, 0usize, concat!( "Offset of field: ", - stringify!(ACameraCaptureSession_stateCallbacks), + stringify!(ACameraCaptureSession_logicalCamera_captureCallbacks), "::", stringify!(context) ) ); assert_eq!( unsafe { - &(*(::std::ptr::null::())).onClosed as *const _ - as usize + &(*(::std::ptr::null::())) + .onCaptureStarted as *const _ as usize }, 8usize, concat!( "Offset of field: ", - stringify!(ACameraCaptureSession_stateCallbacks), + stringify!(ACameraCaptureSession_logicalCamera_captureCallbacks), "::", - stringify!(onClosed) + stringify!(onCaptureStarted) ) ); assert_eq!( unsafe { - &(*(::std::ptr::null::())).onReady as *const _ - as usize + &(*(::std::ptr::null::())) + .onCaptureProgressed as *const _ as usize }, 16usize, concat!( "Offset of field: ", - stringify!(ACameraCaptureSession_stateCallbacks), + stringify!(ACameraCaptureSession_logicalCamera_captureCallbacks), "::", - stringify!(onReady) + stringify!(onCaptureProgressed) ) ); assert_eq!( unsafe { - &(*(::std::ptr::null::())).onActive as *const _ - as usize + &(*(::std::ptr::null::())) + .onLogicalCameraCaptureCompleted as *const _ as usize }, 24usize, concat!( "Offset of field: ", - stringify!(ACameraCaptureSession_stateCallbacks), + stringify!(ACameraCaptureSession_logicalCamera_captureCallbacks), "::", - stringify!(onActive) + stringify!(onLogicalCameraCaptureCompleted) ) ); -} -pub const CAPTURE_FAILURE_REASON_FLUSHED: ::std::os::raw::c_uint = 0; -pub const CAPTURE_FAILURE_REASON_ERROR: ::std::os::raw::c_uint = 1; -pub type _bindgen_ty_62 = ::std::os::raw::c_uint; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ACameraCaptureFailure { - pub frameNumber: i64, - pub reason: ::std::os::raw::c_int, - pub sequenceId: ::std::os::raw::c_int, - pub wasImageCaptured: bool, -} -#[test] -fn bindgen_test_layout_ACameraCaptureFailure() { - assert_eq!( - ::std::mem::size_of::(), - 24usize, - concat!("Size of: ", stringify!(ACameraCaptureFailure)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(ACameraCaptureFailure)) - ); assert_eq!( unsafe { - &(*(::std::ptr::null::())).frameNumber as *const _ as usize + &(*(::std::ptr::null::())) + .onLogicalCameraCaptureFailed as *const _ as usize }, - 0usize, + 32usize, concat!( "Offset of field: ", - stringify!(ACameraCaptureFailure), + stringify!(ACameraCaptureSession_logicalCamera_captureCallbacks), "::", - stringify!(frameNumber) + stringify!(onLogicalCameraCaptureFailed) ) ); assert_eq!( - unsafe { &(*(::std::ptr::null::())).reason as *const _ as usize }, - 8usize, + unsafe { + &(*(::std::ptr::null::())) + .onCaptureSequenceCompleted as *const _ as usize + }, + 40usize, concat!( "Offset of field: ", - stringify!(ACameraCaptureFailure), + stringify!(ACameraCaptureSession_logicalCamera_captureCallbacks), "::", - stringify!(reason) + stringify!(onCaptureSequenceCompleted) ) ); assert_eq!( unsafe { - &(*(::std::ptr::null::())).sequenceId as *const _ as usize + &(*(::std::ptr::null::())) + .onCaptureSequenceAborted as *const _ as usize }, - 12usize, + 48usize, concat!( "Offset of field: ", - stringify!(ACameraCaptureFailure), + stringify!(ACameraCaptureSession_logicalCamera_captureCallbacks), "::", - stringify!(sequenceId) + stringify!(onCaptureSequenceAborted) ) ); assert_eq!( unsafe { - &(*(::std::ptr::null::())).wasImageCaptured as *const _ as usize + &(*(::std::ptr::null::())) + .onCaptureBufferLost as *const _ as usize }, - 16usize, + 56usize, concat!( "Offset of field: ", - stringify!(ACameraCaptureFailure), + stringify!(ACameraCaptureSession_logicalCamera_captureCallbacks), "::", - stringify!(wasImageCaptured) + stringify!(onCaptureBufferLost) ) - ); -} -pub type ACameraCaptureSession_captureCallback_start = ::std::option::Option< - unsafe extern "C" fn( - context: *mut ::std::os::raw::c_void, - session: *mut ACameraCaptureSession, - request: *const ACaptureRequest, - timestamp: i64, - ), ->; -pub type ACameraCaptureSession_captureCallback_result = ::std::option::Option< - unsafe extern "C" fn( - context: *mut ::std::os::raw::c_void, - session: *mut ACameraCaptureSession, - request: *mut ACaptureRequest, - result: *const ACameraMetadata, - ), ->; -pub type ACameraCaptureSession_captureCallback_failed = ::std::option::Option< - unsafe extern "C" fn( - context: *mut ::std::os::raw::c_void, - session: *mut ACameraCaptureSession, - request: *mut ACaptureRequest, - failure: *mut ACameraCaptureFailure, - ), ->; -pub type ACameraCaptureSession_captureCallback_sequenceEnd = ::std::option::Option< - unsafe extern "C" fn( - context: *mut ::std::os::raw::c_void, - session: *mut ACameraCaptureSession, - sequenceId: ::std::os::raw::c_int, - frameNumber: i64, - ), ->; -pub type ACameraCaptureSession_captureCallback_sequenceAbort = ::std::option::Option< - unsafe extern "C" fn( - context: *mut ::std::os::raw::c_void, + ); +} +extern "C" { + pub fn ACameraCaptureSession_logicalCamera_capture( session: *mut ACameraCaptureSession, - sequenceId: ::std::os::raw::c_int, - ), ->; -pub type ACameraCaptureSession_captureCallback_bufferLost = ::std::option::Option< + callbacks: *mut ACameraCaptureSession_logicalCamera_captureCallbacks, + numRequests: ::std::os::raw::c_int, + requests: *mut *mut ACaptureRequest, + captureSequenceId: *mut ::std::os::raw::c_int, + ) -> camera_status_t; +} +extern "C" { + pub fn ACameraCaptureSession_logicalCamera_setRepeatingRequest( + session: *mut ACameraCaptureSession, + callbacks: *mut ACameraCaptureSession_logicalCamera_captureCallbacks, + numRequests: ::std::os::raw::c_int, + requests: *mut *mut ACaptureRequest, + captureSequenceId: *mut ::std::os::raw::c_int, + ) -> camera_status_t; +} +pub type ACameraCaptureSession_captureCallback_startV2 = ::std::option::Option< unsafe extern "C" fn( context: *mut ::std::os::raw::c_void, session: *mut ACameraCaptureSession, - request: *mut ACaptureRequest, - window: *mut ACameraWindowType, + request: *const ACaptureRequest, + timestamp: i64, frameNumber: i64, ), >; #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct ACameraCaptureSession_captureCallbacks { +pub struct ACameraCaptureSession_captureCallbacksV2 { pub context: *mut ::std::os::raw::c_void, - pub onCaptureStarted: ACameraCaptureSession_captureCallback_start, + pub onCaptureStarted: ACameraCaptureSession_captureCallback_startV2, pub onCaptureProgressed: ACameraCaptureSession_captureCallback_result, pub onCaptureCompleted: ACameraCaptureSession_captureCallback_result, pub onCaptureFailed: ACameraCaptureSession_captureCallback_failed, @@ -20557,252 +22523,133 @@ pub struct ACameraCaptureSession_captureCallbacks { pub onCaptureBufferLost: ACameraCaptureSession_captureCallback_bufferLost, } #[test] -fn bindgen_test_layout_ACameraCaptureSession_captureCallbacks() { +fn bindgen_test_layout_ACameraCaptureSession_captureCallbacksV2() { assert_eq!( - ::std::mem::size_of::(), + ::std::mem::size_of::(), 64usize, concat!( "Size of: ", - stringify!(ACameraCaptureSession_captureCallbacks) + stringify!(ACameraCaptureSession_captureCallbacksV2) ) ); assert_eq!( - ::std::mem::align_of::(), + ::std::mem::align_of::(), 8usize, concat!( "Alignment of ", - stringify!(ACameraCaptureSession_captureCallbacks) + stringify!(ACameraCaptureSession_captureCallbacksV2) ) ); assert_eq!( unsafe { - &(*(::std::ptr::null::())).context as *const _ + &(*(::std::ptr::null::())).context as *const _ as usize }, 0usize, concat!( "Offset of field: ", - stringify!(ACameraCaptureSession_captureCallbacks), + stringify!(ACameraCaptureSession_captureCallbacksV2), "::", stringify!(context) ) ); assert_eq!( unsafe { - &(*(::std::ptr::null::())).onCaptureStarted + &(*(::std::ptr::null::())).onCaptureStarted as *const _ as usize }, 8usize, concat!( "Offset of field: ", - stringify!(ACameraCaptureSession_captureCallbacks), + stringify!(ACameraCaptureSession_captureCallbacksV2), "::", stringify!(onCaptureStarted) ) ); assert_eq!( unsafe { - &(*(::std::ptr::null::())).onCaptureProgressed + &(*(::std::ptr::null::())).onCaptureProgressed as *const _ as usize }, 16usize, concat!( "Offset of field: ", - stringify!(ACameraCaptureSession_captureCallbacks), + stringify!(ACameraCaptureSession_captureCallbacksV2), "::", stringify!(onCaptureProgressed) ) ); assert_eq!( unsafe { - &(*(::std::ptr::null::())).onCaptureCompleted + &(*(::std::ptr::null::())).onCaptureCompleted as *const _ as usize }, 24usize, concat!( "Offset of field: ", - stringify!(ACameraCaptureSession_captureCallbacks), + stringify!(ACameraCaptureSession_captureCallbacksV2), "::", stringify!(onCaptureCompleted) ) ); assert_eq!( unsafe { - &(*(::std::ptr::null::())).onCaptureFailed + &(*(::std::ptr::null::())).onCaptureFailed as *const _ as usize }, 32usize, concat!( "Offset of field: ", - stringify!(ACameraCaptureSession_captureCallbacks), + stringify!(ACameraCaptureSession_captureCallbacksV2), "::", stringify!(onCaptureFailed) ) ); assert_eq!( unsafe { - &(*(::std::ptr::null::())) + &(*(::std::ptr::null::())) .onCaptureSequenceCompleted as *const _ as usize }, 40usize, concat!( "Offset of field: ", - stringify!(ACameraCaptureSession_captureCallbacks), + stringify!(ACameraCaptureSession_captureCallbacksV2), "::", stringify!(onCaptureSequenceCompleted) ) ); assert_eq!( unsafe { - &(*(::std::ptr::null::())) + &(*(::std::ptr::null::())) .onCaptureSequenceAborted as *const _ as usize }, 48usize, concat!( "Offset of field: ", - stringify!(ACameraCaptureSession_captureCallbacks), + stringify!(ACameraCaptureSession_captureCallbacksV2), "::", stringify!(onCaptureSequenceAborted) ) ); assert_eq!( unsafe { - &(*(::std::ptr::null::())).onCaptureBufferLost + &(*(::std::ptr::null::())).onCaptureBufferLost as *const _ as usize }, 56usize, concat!( "Offset of field: ", - stringify!(ACameraCaptureSession_captureCallbacks), + stringify!(ACameraCaptureSession_captureCallbacksV2), "::", stringify!(onCaptureBufferLost) ) ); } -pub const CAPTURE_SEQUENCE_ID_NONE: ::std::os::raw::c_int = -1; -pub type _bindgen_ty_63 = ::std::os::raw::c_int; -extern "C" { - pub fn ACameraCaptureSession_close(session: *mut ACameraCaptureSession); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ACameraDevice { - _unused: [u8; 0], -} -extern "C" { - pub fn ACameraCaptureSession_getDevice( - session: *mut ACameraCaptureSession, - device: *mut *mut ACameraDevice, - ) -> camera_status_t; -} -extern "C" { - pub fn ACameraCaptureSession_capture( - session: *mut ACameraCaptureSession, - callbacks: *mut ACameraCaptureSession_captureCallbacks, - numRequests: ::std::os::raw::c_int, - requests: *mut *mut ACaptureRequest, - captureSequenceId: *mut ::std::os::raw::c_int, - ) -> camera_status_t; -} -extern "C" { - pub fn ACameraCaptureSession_setRepeatingRequest( - session: *mut ACameraCaptureSession, - callbacks: *mut ACameraCaptureSession_captureCallbacks, - numRequests: ::std::os::raw::c_int, - requests: *mut *mut ACaptureRequest, - captureSequenceId: *mut ::std::os::raw::c_int, - ) -> camera_status_t; -} -extern "C" { - pub fn ACameraCaptureSession_stopRepeating( - session: *mut ACameraCaptureSession, - ) -> camera_status_t; -} -extern "C" { - pub fn ACameraCaptureSession_abortCaptures( - session: *mut ACameraCaptureSession, - ) -> camera_status_t; -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ACaptureSessionOutput { - _unused: [u8; 0], -} -extern "C" { - pub fn ACameraCaptureSession_updateSharedOutput( - session: *mut ACameraCaptureSession, - output: *mut ACaptureSessionOutput, - ) -> camera_status_t; -} -pub type ACameraCaptureSession_logicalCamera_captureCallback_result = ::std::option::Option< - unsafe extern "C" fn( - context: *mut ::std::os::raw::c_void, - session: *mut ACameraCaptureSession, - request: *mut ACaptureRequest, - result: *const ACameraMetadata, - physicalResultCount: size_t, - physicalCameraIds: *mut *const ::std::os::raw::c_char, - physicalResults: *mut *const ACameraMetadata, - ), ->; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ALogicalCameraCaptureFailure { - pub captureFailure: ACameraCaptureFailure, - pub physicalCameraId: *const ::std::os::raw::c_char, -} -#[test] -fn bindgen_test_layout_ALogicalCameraCaptureFailure() { - assert_eq!( - ::std::mem::size_of::(), - 32usize, - concat!("Size of: ", stringify!(ALogicalCameraCaptureFailure)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(ALogicalCameraCaptureFailure)) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::())).captureFailure as *const _ - as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(ALogicalCameraCaptureFailure), - "::", - stringify!(captureFailure) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::())).physicalCameraId as *const _ - as usize - }, - 24usize, - concat!( - "Offset of field: ", - stringify!(ALogicalCameraCaptureFailure), - "::", - stringify!(physicalCameraId) - ) - ); -} -pub type ACameraCaptureSession_logicalCamera_captureCallback_failed = ::std::option::Option< - unsafe extern "C" fn( - context: *mut ::std::os::raw::c_void, - session: *mut ACameraCaptureSession, - request: *mut ACaptureRequest, - failure: *mut ALogicalCameraCaptureFailure, - ), ->; #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct ACameraCaptureSession_logicalCamera_captureCallbacks { +pub struct ACameraCaptureSession_logicalCamera_captureCallbacksV2 { pub context: *mut ::std::os::raw::c_void, - pub onCaptureStarted: ACameraCaptureSession_captureCallback_start, + pub onCaptureStarted: ACameraCaptureSession_captureCallback_startV2, pub onCaptureProgressed: ACameraCaptureSession_captureCallback_result, pub onLogicalCameraCaptureCompleted: ACameraCaptureSession_logicalCamera_captureCallback_result, pub onLogicalCameraCaptureFailed: ACameraCaptureSession_logicalCamera_captureCallback_failed, @@ -20811,141 +22658,159 @@ pub struct ACameraCaptureSession_logicalCamera_captureCallbacks { pub onCaptureBufferLost: ACameraCaptureSession_captureCallback_bufferLost, } #[test] -fn bindgen_test_layout_ACameraCaptureSession_logicalCamera_captureCallbacks() { +fn bindgen_test_layout_ACameraCaptureSession_logicalCamera_captureCallbacksV2() { assert_eq!( - ::std::mem::size_of::(), + ::std::mem::size_of::(), 64usize, concat!( "Size of: ", - stringify!(ACameraCaptureSession_logicalCamera_captureCallbacks) + stringify!(ACameraCaptureSession_logicalCamera_captureCallbacksV2) ) ); assert_eq!( - ::std::mem::align_of::(), + ::std::mem::align_of::(), 8usize, concat!( "Alignment of ", - stringify!(ACameraCaptureSession_logicalCamera_captureCallbacks) + stringify!(ACameraCaptureSession_logicalCamera_captureCallbacksV2) ) ); assert_eq!( unsafe { - &(*(::std::ptr::null::())).context - as *const _ as usize + &(*(::std::ptr::null::())) + .context as *const _ as usize }, 0usize, concat!( "Offset of field: ", - stringify!(ACameraCaptureSession_logicalCamera_captureCallbacks), + stringify!(ACameraCaptureSession_logicalCamera_captureCallbacksV2), "::", stringify!(context) ) ); assert_eq!( unsafe { - &(*(::std::ptr::null::())) + &(*(::std::ptr::null::())) .onCaptureStarted as *const _ as usize }, 8usize, concat!( "Offset of field: ", - stringify!(ACameraCaptureSession_logicalCamera_captureCallbacks), + stringify!(ACameraCaptureSession_logicalCamera_captureCallbacksV2), "::", stringify!(onCaptureStarted) ) ); assert_eq!( unsafe { - &(*(::std::ptr::null::())) + &(*(::std::ptr::null::())) .onCaptureProgressed as *const _ as usize }, 16usize, concat!( "Offset of field: ", - stringify!(ACameraCaptureSession_logicalCamera_captureCallbacks), + stringify!(ACameraCaptureSession_logicalCamera_captureCallbacksV2), "::", stringify!(onCaptureProgressed) ) ); assert_eq!( unsafe { - &(*(::std::ptr::null::())) + &(*(::std::ptr::null::())) .onLogicalCameraCaptureCompleted as *const _ as usize }, 24usize, concat!( "Offset of field: ", - stringify!(ACameraCaptureSession_logicalCamera_captureCallbacks), + stringify!(ACameraCaptureSession_logicalCamera_captureCallbacksV2), "::", stringify!(onLogicalCameraCaptureCompleted) ) ); assert_eq!( unsafe { - &(*(::std::ptr::null::())) + &(*(::std::ptr::null::())) .onLogicalCameraCaptureFailed as *const _ as usize }, 32usize, concat!( "Offset of field: ", - stringify!(ACameraCaptureSession_logicalCamera_captureCallbacks), + stringify!(ACameraCaptureSession_logicalCamera_captureCallbacksV2), "::", stringify!(onLogicalCameraCaptureFailed) ) ); assert_eq!( unsafe { - &(*(::std::ptr::null::())) + &(*(::std::ptr::null::())) .onCaptureSequenceCompleted as *const _ as usize }, 40usize, concat!( "Offset of field: ", - stringify!(ACameraCaptureSession_logicalCamera_captureCallbacks), + stringify!(ACameraCaptureSession_logicalCamera_captureCallbacksV2), "::", stringify!(onCaptureSequenceCompleted) ) ); assert_eq!( unsafe { - &(*(::std::ptr::null::())) + &(*(::std::ptr::null::())) .onCaptureSequenceAborted as *const _ as usize }, 48usize, concat!( "Offset of field: ", - stringify!(ACameraCaptureSession_logicalCamera_captureCallbacks), + stringify!(ACameraCaptureSession_logicalCamera_captureCallbacksV2), "::", stringify!(onCaptureSequenceAborted) ) ); assert_eq!( unsafe { - &(*(::std::ptr::null::())) + &(*(::std::ptr::null::())) .onCaptureBufferLost as *const _ as usize }, 56usize, concat!( "Offset of field: ", - stringify!(ACameraCaptureSession_logicalCamera_captureCallbacks), + stringify!(ACameraCaptureSession_logicalCamera_captureCallbacksV2), "::", stringify!(onCaptureBufferLost) ) ); } extern "C" { - pub fn ACameraCaptureSession_logicalCamera_capture( + pub fn ACameraCaptureSession_captureV2( session: *mut ACameraCaptureSession, - callbacks: *mut ACameraCaptureSession_logicalCamera_captureCallbacks, + callbacks: *mut ACameraCaptureSession_captureCallbacksV2, numRequests: ::std::os::raw::c_int, requests: *mut *mut ACaptureRequest, captureSequenceId: *mut ::std::os::raw::c_int, ) -> camera_status_t; } extern "C" { - pub fn ACameraCaptureSession_logicalCamera_setRepeatingRequest( + pub fn ACameraCaptureSession_setRepeatingRequestV2( session: *mut ACameraCaptureSession, - callbacks: *mut ACameraCaptureSession_logicalCamera_captureCallbacks, + callbacks: *mut ACameraCaptureSession_captureCallbacksV2, + numRequests: ::std::os::raw::c_int, + requests: *mut *mut ACaptureRequest, + captureSequenceId: *mut ::std::os::raw::c_int, + ) -> camera_status_t; +} +extern "C" { + pub fn ACameraCaptureSession_logicalCamera_captureV2( + session: *mut ACameraCaptureSession, + callbacks: *mut ACameraCaptureSession_logicalCamera_captureCallbacksV2, + numRequests: ::std::os::raw::c_int, + requests: *mut *mut ACaptureRequest, + captureSequenceId: *mut ::std::os::raw::c_int, + ) -> camera_status_t; +} +extern "C" { + pub fn ACameraCaptureSession_logicalCamera_setRepeatingRequestV2( + session: *mut ACameraCaptureSession, + callbacks: *mut ACameraCaptureSession_logicalCamera_captureCallbacksV2, numRequests: ::std::os::raw::c_int, requests: *mut *mut ACaptureRequest, captureSequenceId: *mut ::std::os::raw::c_int, @@ -20995,7 +22860,7 @@ pub const ERROR_MAX_CAMERAS_IN_USE: ::std::os::raw::c_uint = 2; pub const ERROR_CAMERA_DISABLED: ::std::os::raw::c_uint = 3; pub const ERROR_CAMERA_DEVICE: ::std::os::raw::c_uint = 4; pub const ERROR_CAMERA_SERVICE: ::std::os::raw::c_uint = 5; -pub type _bindgen_ty_64 = ::std::os::raw::c_uint; +pub type _bindgen_ty_66 = ::std::os::raw::c_uint; pub type ACameraDevice_StateCallback = ::std::option::Option< unsafe extern "C" fn(context: *mut ::std::os::raw::c_void, device: *mut ACameraDevice), >; @@ -22345,6 +24210,15 @@ extern "C" { extern "C" { pub static mut AMEDIAFORMAT_KEY_SAMPLE_TIME_BEFORE_APPEND: *const ::std::os::raw::c_char; } +extern "C" { + pub static mut AMEDIAFORMAT_KEY_PICTURE_TYPE: *const ::std::os::raw::c_char; +} +extern "C" { + pub static mut AMEDIAFORMAT_KEY_VIDEO_ENCODING_STATISTICS_LEVEL: *const ::std::os::raw::c_char; +} +extern "C" { + pub static mut AMEDIAFORMAT_KEY_VIDEO_QP_AVERAGE: *const ::std::os::raw::c_char; +} extern "C" { pub static mut AMEDIAFORMAT_VIDEO_QP_B_MAX: *const ::std::os::raw::c_char; } @@ -22369,6 +24243,15 @@ extern "C" { extern "C" { pub static mut AMEDIAFORMAT_VIDEO_QP_P_MIN: *const ::std::os::raw::c_char; } +extern "C" { + pub static mut AMEDIAFORMAT_KEY_MPEGH_COMPATIBLE_SETS: *const ::std::os::raw::c_char; +} +extern "C" { + pub static mut AMEDIAFORMAT_KEY_MPEGH_PROFILE_LEVEL_INDICATION: *const ::std::os::raw::c_char; +} +extern "C" { + pub static mut AMEDIAFORMAT_KEY_MPEGH_REFERENCE_CHANNEL_LAYOUT: *const ::std::os::raw::c_char; +} #[repr(C)] #[derive(Debug, Copy, Clone)] pub struct AMediaCodec { @@ -22450,7 +24333,7 @@ pub const AMEDIACODEC_CONFIGURE_FLAG_ENCODE: ::std::os::raw::c_int = 1; pub const AMEDIACODEC_INFO_OUTPUT_BUFFERS_CHANGED: ::std::os::raw::c_int = -3; pub const AMEDIACODEC_INFO_OUTPUT_FORMAT_CHANGED: ::std::os::raw::c_int = -2; pub const AMEDIACODEC_INFO_TRY_AGAIN_LATER: ::std::os::raw::c_int = -1; -pub type _bindgen_ty_65 = ::std::os::raw::c_int; +pub type _bindgen_ty_67 = ::std::os::raw::c_int; pub type AMediaCodecOnAsyncInputAvailable = ::std::option::Option< unsafe extern "C" fn( codec: *mut AMediaCodec, @@ -22558,6 +24441,14 @@ fn bindgen_test_layout_AMediaCodecOnAsyncNotifyCallback() { ) ); } +pub type AMediaCodecOnFrameRendered = ::std::option::Option< + unsafe extern "C" fn( + codec: *mut AMediaCodec, + userdata: *mut ::std::os::raw::c_void, + mediaTimeUs: i64, + systemNano: i64, + ), +>; extern "C" { pub fn AMediaCodec_createCodecByName(name: *const ::std::os::raw::c_char) -> *mut AMediaCodec; } @@ -22719,6 +24610,13 @@ extern "C" { userdata: *mut ::std::os::raw::c_void, ) -> media_status_t; } +extern "C" { + pub fn AMediaCodec_setOnFrameRenderedCallback( + arg1: *mut AMediaCodec, + callback: AMediaCodecOnFrameRendered, + userdata: *mut ::std::os::raw::c_void, + ) -> media_status_t; +} extern "C" { pub fn AMediaCodec_releaseCrypto(arg1: *mut AMediaCodec) -> media_status_t; } @@ -22993,6 +24891,24 @@ impl AMediaDrmKeyType { #[repr(transparent)] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] pub struct AMediaDrmKeyType(pub ::std::os::raw::c_uint); +impl AMediaDrmKeyRequestType { + pub const KEY_REQUEST_TYPE_INITIAL: AMediaDrmKeyRequestType = AMediaDrmKeyRequestType(0); +} +impl AMediaDrmKeyRequestType { + pub const KEY_REQUEST_TYPE_RENEWAL: AMediaDrmKeyRequestType = AMediaDrmKeyRequestType(1); +} +impl AMediaDrmKeyRequestType { + pub const KEY_REQUEST_TYPE_RELEASE: AMediaDrmKeyRequestType = AMediaDrmKeyRequestType(2); +} +impl AMediaDrmKeyRequestType { + pub const KEY_REQUEST_TYPE_NONE: AMediaDrmKeyRequestType = AMediaDrmKeyRequestType(3); +} +impl AMediaDrmKeyRequestType { + pub const KEY_REQUEST_TYPE_UPDATE: AMediaDrmKeyRequestType = AMediaDrmKeyRequestType(4); +} +#[repr(transparent)] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub struct AMediaDrmKeyRequestType(pub i32); #[repr(C)] #[derive(Debug, Copy, Clone)] pub struct AMediaDrmKeyValuePair { @@ -23173,6 +25089,22 @@ extern "C" { keyRequestSize: *mut size_t, ) -> media_status_t; } +extern "C" { + pub fn AMediaDrm_getKeyRequestWithDefaultUrlAndType( + arg1: *mut AMediaDrm, + scope: *const AMediaDrmScope, + init: *const u8, + initSize: size_t, + mimeType: *const ::std::os::raw::c_char, + keyType: AMediaDrmKeyType, + optionalParameters: *const AMediaDrmKeyValue, + numOptionalParameters: size_t, + keyRequest: *mut *const u8, + keyRequestSize: *mut size_t, + defaultUrl: *mut *const ::std::os::raw::c_char, + keyRequestType: *mut AMediaDrmKeyRequestType, + ) -> media_status_t; +} extern "C" { pub fn AMediaDrm_provideKeyResponse( arg1: *mut AMediaDrm, @@ -23493,7 +25425,7 @@ extern "C" { } pub const AMEDIAEXTRACTOR_SAMPLE_FLAG_SYNC: ::std::os::raw::c_uint = 1; pub const AMEDIAEXTRACTOR_SAMPLE_FLAG_ENCRYPTED: ::std::os::raw::c_uint = 2; -pub type _bindgen_ty_66 = ::std::os::raw::c_uint; +pub type _bindgen_ty_68 = ::std::os::raw::c_uint; extern "C" { pub fn AMediaExtractor_getFileFormat(arg1: *mut AMediaExtractor) -> *mut AMediaFormat; } diff --git a/ndk/CHANGELOG.md b/ndk/CHANGELOG.md index 11bc1f0d..293e3438 100644 --- a/ndk/CHANGELOG.md +++ b/ndk/CHANGELOG.md @@ -1,6 +1,7 @@ # Unreleased - event: Add `tool_type` getter for `Pointer`. (#323) +- input_queue: Allow any non-zero return code from `pre_dispatch()` again, as per documentation. (#325) - media_codec: Fix `dequeue_input_buffer` and `dequeue_output_buffer` misinterpreting some errors as buffer indices. (#316) # 0.7.0 (2022-07-24) @@ -8,7 +9,7 @@ - hardware_buffer: Make `HardwareBuffer::as_ptr()` public for interop with Vulkan. (#213) - **Breaking:** `Configuration::country()` now returns `None` when the country is unset (akin to `Configuration::language()`). (#220) - Add `MediaCodec` and `MediaFormat` bindings. (#216) -- **Breaking:** Upgrade to [`ndk-sys 0.4.0`](../ndk-sys/CHANGELOG.md#040-2022-07-XXXX) and use new `enum` newtype wrappers. (#245) +- **Breaking:** Upgrade to [`ndk-sys 0.4.0`](../ndk-sys/CHANGELOG.md#040-2022-07-24) and use new `enum` newtype wrappers. (#245) - native_window: Use `release`/`acquire` for `Drop` and `Clone` respectively. (#207) - **Breaking:** audio: Rename from `aaudio` to `audio` and drop `A` prefix. (#273) - Implement `HasRawWindowHandle` directly on `NativeWindow`. (#274, #319) diff --git a/ndk/Cargo.toml b/ndk/Cargo.toml index 76af756d..1a232fbd 100644 --- a/ndk/Cargo.toml +++ b/ndk/Cargo.toml @@ -10,6 +10,7 @@ readme = "../README.md" documentation = "https://docs.rs/android-ndk" homepage = "https://github.com/rust-windowing/android-ndk-rs" repository = "https://github.com/rust-windowing/android-ndk-rs" +rust-version = "1.60" [features] all = ["audio", "bitmap","media", "api-level-30"] diff --git a/ndk/src/bitmap.rs b/ndk/src/bitmap.rs index b8c52b3d..410d6a06 100644 --- a/ndk/src/bitmap.rs +++ b/ndk/src/bitmap.rs @@ -42,27 +42,19 @@ fn construct(with_ptr: impl FnOnce(*mut T) -> i32) -> BitmapResult { BitmapError::from_status(status).map(|()| unsafe { result.assume_init() }) } -// IntoPrimitive, TryFromPrimitive use the deprecated `RGBA_4444` member below, -// resulting in deprecation warnings in generated code beyond the `enum`. These -// can only be disabled at the module level, and such warnings seem to be gone on -// at least the Rust 1.56 nightlies. -#[allow(deprecated)] -mod temp_allow_deprecated { - use super::*; - #[repr(u32)] - #[derive(Copy, Clone, Debug, PartialEq, Eq, IntoPrimitive, TryFromPrimitive)] - #[allow(non_camel_case_types)] - pub enum BitmapFormat { - NONE = ffi::AndroidBitmapFormat::ANDROID_BITMAP_FORMAT_NONE.0, - RGBA_8888 = ffi::AndroidBitmapFormat::ANDROID_BITMAP_FORMAT_RGBA_8888.0, - RGB_565 = ffi::AndroidBitmapFormat::ANDROID_BITMAP_FORMAT_RGB_565.0, - #[deprecated = "Deprecated in API level 13. Because of the poor quality of this configuration, it is advised to use ARGB_8888 instead."] - RGBA_4444 = ffi::AndroidBitmapFormat::ANDROID_BITMAP_FORMAT_RGBA_4444.0, - A_8 = ffi::AndroidBitmapFormat::ANDROID_BITMAP_FORMAT_A_8.0, - RGBA_F16 = ffi::AndroidBitmapFormat::ANDROID_BITMAP_FORMAT_RGBA_F16.0, - } +#[repr(u32)] +#[derive(Copy, Clone, Debug, PartialEq, Eq, IntoPrimitive, TryFromPrimitive)] +#[allow(non_camel_case_types)] +pub enum BitmapFormat { + NONE = ffi::AndroidBitmapFormat::ANDROID_BITMAP_FORMAT_NONE.0, + RGBA_8888 = ffi::AndroidBitmapFormat::ANDROID_BITMAP_FORMAT_RGBA_8888.0, + RGB_565 = ffi::AndroidBitmapFormat::ANDROID_BITMAP_FORMAT_RGB_565.0, + #[deprecated = "Deprecated in API level 13. Because of the poor quality of this configuration, it is advised to use ARGB_8888 instead."] + RGBA_4444 = ffi::AndroidBitmapFormat::ANDROID_BITMAP_FORMAT_RGBA_4444.0, + A_8 = ffi::AndroidBitmapFormat::ANDROID_BITMAP_FORMAT_A_8.0, + RGBA_F16 = ffi::AndroidBitmapFormat::ANDROID_BITMAP_FORMAT_RGBA_F16.0, + RGBA_1010102 = ffi::AndroidBitmapFormat::ANDROID_BITMAP_FORMAT_RGBA_1010102.0, } -pub use temp_allow_deprecated::*; /// An immediate wrapper over [`android.graphics.Bitmap`] /// diff --git a/ndk/src/event.rs b/ndk/src/event.rs index 843e1114..4273e0fa 100644 --- a/ndk/src/event.rs +++ b/ndk/src/event.rs @@ -42,6 +42,8 @@ pub enum Source { Touchpad = ffi::AINPUT_SOURCE_TOUCHPAD, TouchNavigation = ffi::AINPUT_SOURCE_TOUCH_NAVIGATION, Joystick = ffi::AINPUT_SOURCE_JOYSTICK, + Hdmi = ffi::AINPUT_SOURCE_HDMI, + Sensor = ffi::AINPUT_SOURCE_SENSOR, RotaryEncoder = ffi::AINPUT_SOURCE_ROTARY_ENCODER, Any = ffi::AINPUT_SOURCE_ANY, } diff --git a/ndk/src/input_queue.rs b/ndk/src/input_queue.rs index ecd8c006..1ca5a0eb 100644 --- a/ndk/src/input_queue.rs +++ b/ndk/src/input_queue.rs @@ -78,8 +78,7 @@ impl InputQueue { match unsafe { ffi::AInputQueue_preDispatchEvent(self.ptr.as_ptr(), event.ptr().as_ptr()) } { 0 => Some(event), - 1 => None, - r => unreachable!("AInputQueue_preDispatchEvent returned non-boolean {}", r), + _ => None, } } diff --git a/ndk/src/media/media_codec.rs b/ndk/src/media/media_codec.rs index f9f0646e..db923aa4 100644 --- a/ndk/src/media/media_codec.rs +++ b/ndk/src/media/media_codec.rs @@ -71,26 +71,41 @@ impl MediaFormat { pub fn i32(&self, key: &str) -> Option { let name = CString::new(key).unwrap(); let mut out = 0; - unsafe { ffi::AMediaFormat_getInt32(self.as_ptr(), name.as_ptr(), &mut out) }.then(|| out) + if unsafe { ffi::AMediaFormat_getInt32(self.as_ptr(), name.as_ptr(), &mut out) } { + Some(out) + } else { + None + } } pub fn i64(&self, key: &str) -> Option { let name = CString::new(key).unwrap(); let mut out = 0; - unsafe { ffi::AMediaFormat_getInt64(self.as_ptr(), name.as_ptr(), &mut out) }.then(|| out) + if unsafe { ffi::AMediaFormat_getInt64(self.as_ptr(), name.as_ptr(), &mut out) } { + Some(out) + } else { + None + } } pub fn f32(&self, key: &str) -> Option { let name = CString::new(key).unwrap(); let mut out = 0.0; - unsafe { ffi::AMediaFormat_getFloat(self.as_ptr(), name.as_ptr(), &mut out) }.then(|| out) + if unsafe { ffi::AMediaFormat_getFloat(self.as_ptr(), name.as_ptr(), &mut out) } { + Some(out) + } else { + None + } } pub fn usize(&self, key: &str) -> Option { let name = CString::new(key).unwrap(); let mut out = 0; - unsafe { ffi::AMediaFormat_getSize(self.as_ptr(), name.as_ptr(), &mut out) } - .then(|| out as usize) + if unsafe { ffi::AMediaFormat_getSize(self.as_ptr(), name.as_ptr(), &mut out) } { + Some(out as usize) + } else { + None + } } pub fn buffer(&self, key: &str) -> Option<&[u8]> { @@ -152,7 +167,11 @@ impl MediaFormat { pub fn f64(&self, key: &str) -> Option { let name = CString::new(key).unwrap(); let mut out = 0.0; - unsafe { ffi::AMediaFormat_getDouble(self.as_ptr(), name.as_ptr(), &mut out) }.then(|| out) + if unsafe { ffi::AMediaFormat_getDouble(self.as_ptr(), name.as_ptr(), &mut out) } { + Some(out) + } else { + None + } } /// Returns (left, top, right, bottom) @@ -163,7 +182,7 @@ impl MediaFormat { let mut top = 0; let mut right = 0; let mut bottom = 0; - unsafe { + if unsafe { ffi::AMediaFormat_getRect( self.as_ptr(), name.as_ptr(), @@ -172,8 +191,11 @@ impl MediaFormat { &mut right, &mut bottom, ) + } { + Some((left, top, right, bottom)) + } else { + None } - .then(|| (left, top, right, bottom)) } #[cfg(feature = "api-level-28")]