Commit Graph

1587 Commits

Author SHA1 Message Date
Marc Rousavy
2d96381b3e
feat: New array-based useCameraFormats API (#1841)
* feat: New array-based `useCameraFormats` API

* Use triple-camera in Example app

* fix: Remove invalid export

* fix: Use constant-time lookup Filter map and only run sort once
2023-09-23 11:24:15 +02:00
Marc Rousavy
3169444697
feat: Implement resizeMode prop for iOS (#1838)
* feat: Implement `resizeMode` prop for iOS

- `"cover"`: Keep aspect ratio, but fill entire parent view (centered).
- `"contain"`: Keep aspect ratio, but make sure the entire content is visible even if it introduces additional blank areas (centered).

* chore: Update prop docs

* Update CameraProps.ts

* Lint & Format
2023-09-23 10:14:27 +02:00
Maxime
c0b80b342b
feat: Respect format's aspect ratio in Preview and add resizeMode prop (#1817)
* feat(preview): respect format's aspect ratio

* fix: code guidelines and previewSize in PreviewView

* feat: add resizeMode 'cover' and 'contain' on Android
2023-09-22 17:32:34 +02:00
Marc Rousavy
9add0eb571
feat: Use C++ OpenGL GPU VideoPipeline again (#1836)
1. Reverts 4e96eb77e0 (PR #1789) to bring the C++ OpenGL GPU Pipeline back.
2. Fixes the "initHybrid JNI not found" error by loading the native JNI/C++ library in `VideoPipeline.kt`.

This PR has two downsides:

1. `pixelFormat="yuv"` does not work on Android. OpenGL only works in RGB
2. OpenGL rendering is fast, but it has an overhead. I think for Camera -> Video Recording we shouldn't be using an entire OpenGL rendering pipeline.

The original plan was to use something similar to how it works on iOS by just passing GPU buffers around, but the android.media APIs just aren't as advanced yet. `ImageReader`/`ImageWriter` is way too buggy and doesn't really work with `MediaRecorder`/`MediaCodec`.

This sucks, I hope in the future we can use something like `AHardwareBuffer`s.
2023-09-22 17:22:31 +02:00
Marc Rousavy
db5120e163
ci: Remove Gradle Lint (#1830) 2023-09-21 19:16:13 +02:00
Marc Rousavy
86e1c5ff02 ci: Upgrade buildcache@v1 to buildcache@v2 2023-09-21 19:13:18 +02:00
Marc Rousavy
96fba0b925 ci: Upgrade cache@v2 to cache@v3 2023-09-21 19:10:22 +02:00
Marc Rousavy
cb4d64c671 ci: Also upload Gradle Lint report to the CI 2023-09-21 19:09:41 +02:00
Marc Rousavy
115140d01c
ci: Run KTLint (#1825)
* ci: Run ktlint

* Update validate-android.yml

* Update validate-android.yml

* Update validate-android.yml

* Use correct path

* test: Use wrong Kotlin formatting

* Use checkout@v4

* Revert "test: Use wrong Kotlin formatting"

This reverts commit 282c23be9c40506f20f99f56f7166ea2fc8d45aa.
2023-09-21 19:06:33 +02:00
Marc Rousavy
a417be6292
ci: Upgrade checkout@v2 to checkout@v4 (#1826) 2023-09-21 19:02:10 +02:00
Marc Rousavy
fffefa9d12
feat: Add support for Buffer Compression for a more efficient Video Pipeline (enableBufferCompression) (#1828)
feat: Add support for Buffer Compression for more efficient Video Pipeline (`enableBufferCompression`)
2023-09-21 17:18:54 +02:00
Marc Rousavy
aafffa60f6 fix: Fix exposing userPreferredCameraDevice on Android 2023-09-21 17:02:15 +02:00
Marc Rousavy
9809075507
feat: Support 10-bit Video HDR (#1827)
* feat: Select 10-bit YUV HDR format if HDR is enabled

* fix: Remove video EDR setting in favor of new 10-bit video HDR

* Format Swift
2023-09-21 16:30:05 +02:00
Marc Rousavy
cf4882b152
feat: Add support for LiDAR, TrueDepth, External (USB) and Continuity Camera Devices (iOS 17) (#1824)
* feat: Add support for LiDAR, TrueDepth, External (USB) and Continuity Camera Devices (iOS 17)

* Rename `devices` -> `physicalDevices`

* fix: Comment out iOS 17 cameras for now

* fix: Move `supportsDepthCapture` to `format`

* fix: Fall back to `wide-angle-camera` for any unknown types

* Update CameraPage.tsx

* `descriptor` -> `physicalDeviceDescriptor`

* Update CameraDevice.ts

* Format

* feat: Expose `userPreferredCameraDevice`

Uses the new iOS 17 API where the user can prefer a default device, otherwise fall back to the first device of the available ones

* fix: Expose as property

* Add TODO comments

* fix: Format code

* fix: Compile below Swift 5.9
2023-09-21 16:29:46 +02:00
Marc Rousavy
8864866f80 fix: Fix incorrect RGB pixelFormat check 2023-09-21 15:58:28 +02:00
Marc Rousavy
327aade4d8
feat: New useCameraPermission() and useMicrophonePermission() hooks (#1823)
* Create `useCameraPermission()` and `useMicrophonePermission()` hooks

* Fix exports

* Await `requestPermission()`
2023-09-21 11:40:04 +02:00
Marc Rousavy
977b859e46
feat: New JS API for useCameraDevice and useCameraFormat and much faster getAvailableCameraDevices() (#1784)
* Update podfile

* Update useCameraFormat.ts

* Update API

* Delete FormatFilter.md

* Format CameraViewManager.m ObjC style

* Make `getAvailableCameraDevices` synchronous/blocking

* Create some docs

* fix: Fix HardwareLevel types

* fix: Use new device/format API

* Use 60 FPS format as an example

* Replace `Camera.getAvailableCameraDevices` with new `CameraDevices` API/Module

* Fix Lint

* KTLint options

* Use continuation indent of 8

* Use 2 spaces for indent

* Update .editorconfig

* Format code

* Update .editorconfig

* Format more

* Update VideoStabilizationMode.kt

* fix: Expose `CameraDevicesManager` to ObjC

* Update CameraPage.tsx

* fix: `requiresMainQueueSetup() -> false`

* Always prefer higher resolution

* Update CameraDevicesManager.swift

* Update CameraPage.tsx

* Also filter pixelFormat

* fix: Add AVFoundation import
2023-09-21 11:20:33 +02:00
Marc Rousavy
9eed89aac6 chore: Upgrade version in Pods 2023-09-19 13:26:26 +02:00
Marc Rousavy
4c2921c0ba Fix spacing in issue templates 2023-09-19 13:25:08 +02:00
Marc Rousavy
3d840d6a2a docs: Add placeholders to issue templates 2023-09-19 13:23:27 +02:00
Marc Rousavy
ed55c34ca1
Update BUILD_ERROR.yml 2023-09-19 13:17:21 +02:00
Marc Rousavy
d95592e315
Update BUG_REPORT.yml 2023-09-19 13:17:07 +02:00
Marc Rousavy
d35932ff8a
Update BUG_REPORT.yml 2023-09-19 13:16:16 +02:00
Marc Rousavy
b44faacf5a docs: Update issue templates 2023-09-19 13:14:42 +02:00
Marc Rousavy
b574c8657e Update BUG_REPORT.yml 2023-09-19 13:14:04 +02:00
ike
18c7034b50
fix: Fix h264 videoCodec type for RecordVideoOptions (#1808) 2023-09-17 19:26:25 +02:00
Johannes Klein
3cf42a0271
docs: Fix link in ZOOMING (#1803)
Fix a link in ZOOMING.mdx
2023-09-17 15:23:00 +02:00
Marc Rousavy
82f56d223b
Update BUILD_ERROR.yml 2023-09-14 14:21:35 +02:00
Marc Rousavy
e958c3acf0
Update BUILD_ERROR.yml 2023-09-14 14:20:42 +02:00
Marc Rousavy
296e97c54d
Update BUILD_ERROR.yml 2023-09-14 14:20:23 +02:00
Marc Rousavy
3691f1f8d7
Update BUILD_ERROR.yml 2023-09-14 14:19:52 +02:00
Marc Rousavy
0d39b88b23
Update BUILD_ERROR.yml 2023-09-14 14:19:18 +02:00
Marc Rousavy
9561ac1d08
Update BUILD_ERROR.yml 2023-09-14 14:18:54 +02:00
Marc Rousavy
0d0329060d
Update BUILD_ERROR.yml 2023-09-14 14:18:04 +02:00
Marc Rousavy
50eb07b53e
Update BUILD_ERROR.yml 2023-09-14 14:17:30 +02:00
Marc Rousavy
b2171d6783
Update BUILD_ERROR.yml 2023-09-14 14:16:53 +02:00
Marc Rousavy
577d298f02
Update BUILD_ERROR.yml 2023-09-14 14:16:06 +02:00
Marc Rousavy
ef0d3cb279
Update BUILD_ERROR.yml 2023-09-14 14:15:32 +02:00
Marc Rousavy
8f7683f98f
Update BUG_REPORT.yml 2023-09-14 14:13:16 +02:00
Marc Rousavy
eb7792f343
Update BUG_REPORT.yml 2023-09-14 14:12:58 +02:00
Marc Rousavy
e9f0aecfba
Update BUG_REPORT.yml 2023-09-14 14:12:01 +02:00
Marc Rousavy
6247a2394f
Update BUG_REPORT.yml 2023-09-14 14:11:33 +02:00
Marc Rousavy
c1a286e09c
Update BUG_REPORT.yml 2023-09-14 14:11:21 +02:00
Marc Rousavy
907e7936d5
Update BUG_REPORT.yml 2023-09-14 14:10:52 +02:00
Marc Rousavy
b8fc32db34
Update BUG_REPORT.yml 2023-09-14 14:10:41 +02:00
Marc Rousavy
e4c6e5d11f
Update BUG_REPORT.yml 2023-09-14 14:09:47 +02:00
Marc Rousavy
d8ac0b54fa
Update BUG_REPORT.yml 2023-09-14 14:06:09 +02:00
Marc Rousavy
62ae7cc887
Update BUG_REPORT.yml 2023-09-14 14:02:26 +02:00
Marc Rousavy
d251394eb2
Update BUG_REPORT.yml 2023-09-14 14:02:18 +02:00
Marc Rousavy
87af5dd761
Update BUG_REPORT.yml 2023-09-14 14:02:02 +02:00