Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
16 commits
Select commit Hold shift + click to select a range
f8f59f0
feat: Update iOS project configuration and dependencies
JenteJan Feb 25, 2026
d71a049
feat: Improve camera device discovery and error handling in NativeCam…
JenteJan Feb 25, 2026
96136a6
chore: honest packaging, CI, podspec/privacy metadata, README/CHANGELOG
JenteJan Jun 27, 2026
1d097e9
fix(ffi): drop no-op relay isolate; expose all YUV planes + strides
JenteJan Jun 27, 2026
8412a07
fix(android): recording audio gating, mic permission, orientation, fo…
JenteJan Jun 27, 2026
0ebaba4
feat(ios): AVAssetWriter recording + correctness/orientation/mirror
JenteJan Jun 27, 2026
bf80d87
feat: structural preview rotation + mirror; reactive CameraPreview
JenteJan Jun 27, 2026
db88aab
test: cover preview rotation, mirror, displayPreviewSize, throttler, …
JenteJan Jun 27, 2026
4b2a0ec
chore(example): contain preview + mirror setting; lint fixes; flutter…
JenteJan Jun 27, 2026
ff20744
fix: frame-lifetime safety, session reset, focus mapping (review)
JenteJan Jun 27, 2026
5fa7b99
fix(ios): recorder/photo thread-safety + recording robustness (review)
JenteJan Jun 27, 2026
30a216c
fix(android): recording-finalize cleanup + mic-permission guard (review)
JenteJan Jun 27, 2026
2241b63
fix: confine iOS pendingPhotoResult to the session queue; honor mirro…
JenteJan Jun 27, 2026
b3e64db
feat(api): expose per-plane strides + getCameraFormat helper
JenteJan Jun 27, 2026
ebe526a
docs: comprehensive README + correct API docs (adoption review)
JenteJan Jun 27, 2026
79af249
chore(example): demonstrate the FFI frame read; fix C++ stride; relab…
JenteJan Jun 27, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
63 changes: 63 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
name: CI

on:
push:
branches: [ main, ios_support ]
pull_request:

jobs:
analyze-and-test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: subosito/flutter-action@v2
with:
channel: stable
- name: Install dependencies
run: flutter pub get
- name: Verify formatting
run: dart format --output=none --set-exit-if-changed .
- name: Analyze
run: flutter analyze
- name: Run tests
run: flutter test
- name: Publish dry-run
run: flutter pub publish --dry-run
- name: pana score
run: |
dart pub global activate pana
dart pub global run pana --no-warning --exit-code-threshold 20 .

build-android:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-java@v4
with:
java-version: '17'
distribution: 'temurin'
- uses: subosito/flutter-action@v2
with:
channel: stable
- name: Build example APK (compiles Kotlin + native C)
run: |
cd example
flutter pub get
flutter build apk --debug

build-ios:
runs-on: macos-latest
steps:
- uses: actions/checkout@v4
- uses: subosito/flutter-action@v2
with:
channel: stable
- name: Build example iOS (compiles Swift + native C)
run: |
cd example
flutter pub get
flutter build ios --no-codesign --debug
- name: Lint podspec
run: |
cd ios
pod lib lint --allow-warnings || true
33 changes: 0 additions & 33 deletions .github/workflows/native-build.yml

This file was deleted.

57 changes: 48 additions & 9 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,15 +1,54 @@
## 0.0.1
# Changelog

* Initial release of `flutter_native_vision_camera`.
* Integrated FFI for high-performance frame processing.
* Support for zero-copy preview textures on Android and iOS.
* Basic camera controls (zoom, focus, flash).
* Vision API for real-time frame access.
## 0.0.4

Correctness, honesty, and packaging pass.

* **Fixed:** removed the deprecated `package` attribute from the Android manifest (broke builds under AGP 8.x;
the namespace is set in `build.gradle`).
* **Fixed:** Android video recording no longer crashes — `RECORD_AUDIO` is now declared and audio is gated behind a
runtime permission check, falling back to video-only when the mic is unavailable.
* **Fixed:** `requestMicrophonePermission` now actually awaits the permission dialog result.
* **Fixed:** frame processor no longer routes frames through a no-op relay isolate. The Dart callback is now
delivered directly via `NativeCallable.listener`; documentation corrected to state it runs on the main isolate
event loop (not a background isolate).
* **Fixed:** `CameraPreview` now rebuilds when the controller updates (e.g. after async init or device switch).
* **Fixed:** Android tap-to-focus now targets the correct metering point.
* **Improved:** Android frames now expose all YUV planes with correct row strides (previously only the Y plane).
* **Improved:** iOS reports the real frame pixel format and retains preview buffers safely.
* **Packaging:** real podspec metadata, version lockstep, honest README/feature matrix, `topics`/`issue_tracker`,
CI (format/analyze/test/dry-run/pana + per-platform native builds), dropped the unused
`plugin_platform_interface` dependency.
* **iOS:** implemented video recording (AVAssetWriter, keeps the frame stream live), `setFocusDistance`,
barcode symbology filtering, teardown-on-reinit, `CVPixelBuffer` retain/lock balance, honest pixel format,
main-thread results. Device-verified on iOS 18 (preview, photo, video, scanning).
* **Orientation (structural):** preview rotation is now read from the camera framework
(Android `SurfaceRequest.TransformationInfo`, iOS sensor-relative) and applied once in `CameraPreview` —
fixing the recurring 90° tilt. Added `controller.previewRotation` / `displayPreviewSize`; scanner overlay
and camera page no longer compensate for rotation themselves. iOS Vision boxes now use the buffer orientation.
* **Mirroring:** a single `mirror` flag on `initialize` drives both the front-camera preview and the saved
photo/video; the preview no longer double-mirrors on Android. `CameraPreview` gains `ResizeMode.contain`.
* **Android:** dynamic capture orientation, correct tap-to-focus metering, real photo orientation.
* **API:** exposed per-plane strides (`Frame.planeBytesPerRow`/`planePixelStride`) so chroma planes can be
walked correctly; added `CameraDevices.getCameraFormat(...)` to pick a format by resolution/fps.
* **Docs:** comprehensive README (compile-correct quickstart with permissions, photo/video/scan/lifecycle
snippets, a correct native C/C++ plugin guide, requirements, expanded platform matrix, Limitations & Roadmap);
rewrote the example README; corrected the "background isolate" claim in the API docs to match reality
(main isolate); documented `takeSnapshot` (iOS-only), `setExposure` units, and `initialize`'s
`pixelFormat`/`mirror`.
* **Example:** the Native Vision Camera page now reads the raw frame buffer over FFI and shows a live average
brightness, demonstrating the headline feature; fixed the C++ sample's row-stride indexing.

### 0.0.2
## 0.0.3

* Migrated the Android embedding to AndroidX for better compatibility.

## 0.0.2

* Fixed pubspec metadata (homepage, repository).

### 0.0.3
## 0.0.1

* Replaced Android2 with AndroidX for better compatibility.
* Initial release of `flutter_native_vision_camera`.
* FFI pipeline for frame access, zero-copy preview textures, basic camera controls (zoom, focus, flash),
and real-time barcode scanning.
Loading
Loading