add plugin camera desktop
This commit is contained in:
146
plugins/camera_desktop/CHANGELOG.md
Normal file
146
plugins/camera_desktop/CHANGELOG.md
Normal file
@@ -0,0 +1,146 @@
|
||||
## 1.2.1
|
||||
|
||||
* Fix Linux preview `Internal data stream error` (`not-negotiated`) on cameras that do not expose MJPEG, such as NV12/YUYV-only USB webcams. The MJPEG fast-path added in 1.1.7 was selected whenever its pipeline merely *parsed*, but `gst_parse_launch` succeeds even when the camera cannot produce MJPEG, so the intended raw-capture fallback never ran and initialization failed at `PLAYING`. The plugin now probes the V4L2 device (both `MJPEG` and `JPEG` pixel formats) for the target resolution before choosing the MJPEG path, and otherwise uses the always-safe raw capture path. The MJPEG pipeline pins only the resolution and lets the camera's native frame rate float, with `videorate` adapting it to the requested fps, so requesting a frame rate the camera does not expose natively in MJPEG no longer breaks negotiation.
|
||||
|
||||
## 1.2.0
|
||||
|
||||
* Speed up Windows camera initialization by completing `initialize()` as soon as the preview starts instead of blocking until the first camera frame arrives. On a typical webcam this returns control to the app in roughly 250 ms rather than about 2 seconds. The preview fills in as frames arrive, and a watchdog reports a `cameraError` if no frames are received within 8 seconds.
|
||||
* Make Windows diagnostic logging opt-in and off by default so the plugin stays quiet in your app. Set the `CAMERA_DESKTOP_LOG` environment variable to any value other than `0` to capture a trace when reporting an issue. This also removes the logging overhead that slowed camera initialization, most noticeably with a debugger or IDE attached.
|
||||
|
||||
## 1.1.8
|
||||
|
||||
* Fix Windows use-after-free crashes on camera dispose: guard the preview texture against in-flight preview samples, and defer destroying the texture until Flutter's asynchronous `UnregisterTexture` completes (its raster-thread pixel-buffer callback could otherwise run after the texture was freed) (#4)
|
||||
|
||||
## 1.1.7
|
||||
|
||||
* Fix Windows crash after camera dispose by marshalling platform channel messages to the platform thread (#4)
|
||||
* Fix Linux preview `not-negotiated` error on common USB webcams (#5, thanks @jvnonce)
|
||||
* Fix Linux recording on systems without `x264enc` (#5, thanks @jvnonce)
|
||||
* Report max frame rate across all pixel formats during Linux device enumeration (#5, thanks @jvnonce)
|
||||
|
||||
## 1.1.6
|
||||
|
||||
* Fix Swift compiler warnings: remove unused variables in DeviceEnumerator, PhotoHandler, RecordHandler, and CameraSession
|
||||
|
||||
## 1.1.5
|
||||
|
||||
* Fix SPM integration by adding missing FlutterFramework dependency to iOS and macOS Package.swift
|
||||
|
||||
## 1.1.4
|
||||
|
||||
* Update documentation
|
||||
* Remove debug logging from image stream pause/resume and video recording completion
|
||||
|
||||
## 1.1.3
|
||||
|
||||
* Fix Windows build failure (C4819 / C2220) on hosts with a non-UTF-8 system code page (e.g. CP936 on Simplified Chinese Windows) by compiling the plugin with `/utf-8` under MSVC (#2)
|
||||
|
||||
## 1.1.2
|
||||
|
||||
* Fix macOS build failure on Xcode 26+ by removing unavailable `AVCaptureSessionInterruptionReasonKey` (re-introduced in 1.1.1)
|
||||
* Fix Windows build failure caused by implicit `wchar_t` to `char` conversion in debug logging
|
||||
|
||||
## 1.1.1
|
||||
|
||||
* Add comprehensive diagnostic logging across all platforms (Linux, macOS, Windows)
|
||||
* Log device enumeration, backend selection, pipeline construction, resolution selection, recording lifecycle, and error paths
|
||||
|
||||
## 1.1.0
|
||||
|
||||
* Add PipeWire camera portal support for Flatpak sandbox compatibility on Linux
|
||||
* Automatically detect Flatpak environment and use `pipewiresrc` instead of `v4l2src`
|
||||
* Request camera access via `org.freedesktop.portal.Camera` D-Bus interface
|
||||
* Enumerate PipeWire camera nodes via `GstDeviceMonitor`
|
||||
* Fall back to V4L2 if portal is unavailable or user denies permission
|
||||
* No new build dependencies: uses GIO (D-Bus) and GStreamer APIs already linked
|
||||
|
||||
## 1.0.8
|
||||
|
||||
* Fix macOS build failure on Xcode 26+ by removing unavailable `AVCaptureSessionInterruptionReasonKey` (iOS-only API)
|
||||
|
||||
## 1.0.7
|
||||
|
||||
* Fix camera initialization failure on Intel Macs by selecting session preset after device discovery using `device.supportsSessionPreset()` with automatic fallback (1080p → 720p → high → medium)
|
||||
* Make `canAddInput`/`canAddOutput` failures return a `FlutterError` instead of silently skipping, preventing blank-screen timeouts
|
||||
* Increase initialization timeout from 8s to 15s for slower USB cameras
|
||||
* Subscribe to `AVCaptureSessionRuntimeError`, `WasInterrupted`, and `InterruptionEnded` notifications and forward to Dart via `cameraError`
|
||||
* Fix MethodChannel image stream fallback sending hardcoded `bytesPerRow` instead of actual value from `CVPixelBuffer`
|
||||
* Add diagnostic logging at all critical points in macOS session setup
|
||||
|
||||
## 1.0.6
|
||||
|
||||
* Fix Xcode build warnings by declaring PrivacyInfo.xcprivacy as a resource bundle in iOS and macOS podspecs
|
||||
|
||||
## 1.0.5
|
||||
|
||||
* Fixes #1: conflict with camera_android and camera_avfoundation dependencies
|
||||
|
||||
## 1.0.4
|
||||
|
||||
* Fix macOS Swift Package Manager compatibility
|
||||
|
||||
## 1.0.3
|
||||
|
||||
* Fix hot restart FFI crash by replacing NativeCallable with polling
|
||||
|
||||
## 1.0.2
|
||||
|
||||
* Fix macOS use-after-free crash during engine teardown by making dispose synchronous/idempotent and guarding FFI callbacks
|
||||
|
||||
## 1.0.1
|
||||
|
||||
* Fix xcprivacy build warnings by declaring resource_bundles in iOS and macOS podspecs
|
||||
|
||||
## 1.0.0
|
||||
|
||||
First stable release of `camera_desktop`
|
||||
|
||||
### Platform implementations
|
||||
|
||||
* **macOS**, AVFoundation (`AVCaptureSession`, `AVAssetWriter`). Preview via `CVPixelBuffer` textures, H.264/AAC recording, native mirror support.
|
||||
* **Windows**, Media Foundation (`IMFCaptureEngine`) with Direct3D 11 texture rendering. H.264/AAC recording via `IMFSinkWriter`.
|
||||
* **Linux**, GStreamer + V4L2 (`v4l2src → videoconvert → appsink` pipeline). H.264/AAC recording with automatic encoder selection, native mirror via `videoflip`.
|
||||
|
||||
### Features
|
||||
|
||||
* Live camera preview with hardware-accelerated texture rendering on all platforms
|
||||
* Photo capture, video recording, and real-time image streaming
|
||||
* FFI-based zero-copy frame delivery (MethodChannel fallback for compatibility)
|
||||
* Configurable resolution presets, FPS (5-60), and video bitrate
|
||||
* Mirror/flip control (macOS and Linux)
|
||||
* Pause/resume preview
|
||||
* Runtime capability querying via `getPlatformCapabilities()`
|
||||
|
||||
## 0.0.8
|
||||
|
||||
* Migrate Windows implementation to IMFCaptureEngine
|
||||
|
||||
## 0.0.7
|
||||
|
||||
* Update example app to show settings panel
|
||||
|
||||
## 0.0.5
|
||||
|
||||
* Fix C linkage on Linux
|
||||
|
||||
## 0.0.4
|
||||
|
||||
* FFI-based image stream for reduced memory copies (3→2 per frame)
|
||||
* Fix macOS Swift/ObjC interop for FFI bridge
|
||||
* Fix image format reporting (Linux/Windows RGBA vs macOS BGRA)
|
||||
|
||||
## 0.0.3
|
||||
|
||||
* Performance improvements
|
||||
|
||||
## 0.0.2
|
||||
|
||||
* Add setMirror API and built-in camera sorting for DeviceEnumerator
|
||||
|
||||
## 0.0.1
|
||||
|
||||
* Linux camera support via GStreamer + V4L2.
|
||||
* macOS camera support via AVFoundation.
|
||||
* Windows camera support via Media Foundation.
|
||||
* Full `camera_platform_interface` compliance.
|
||||
* Photo capture, video recording, image streaming, and live preview.
|
||||
Reference in New Issue
Block a user