Commit Graph

1482 Commits

Author SHA1 Message Date
Marc Rousavy
b92960a837 chore: Use max zoom of 10 in example 2023-09-30 13:23:17 +02:00
Marc Rousavy
6882ce9ef4 Update FEATURE_REQUEST.yml 2023-09-30 13:18:36 +02:00
Marc Rousavy
be3d802267 chore: Remove unused ImageWriter 2023-09-30 13:01:56 +02:00
Marc Rousavy
ce07750dea docs: Fix runAsync example 2023-09-30 12:12:43 +02:00
Marc Rousavy
af2ef57951 chore: release 3.2.2 2023-09-30 11:23:05 +02:00
Marc Rousavy
edd73619c3 fix: Fix useCameraDevices ignoring position 2023-09-30 11:20:11 +02:00
Marc Rousavy
844759e5b1 Update Podfile.lock 2023-09-30 11:17:27 +02:00
Marc Rousavy
56f3dcf1c8 chore: release 3.2.1 2023-09-30 10:52:05 +02:00
Marc Rousavy
2430058cae fix: Fix redeclaration build error on Android 2023-09-30 10:51:32 +02:00
Marc Rousavy
34f4038e05 chore: release 3.2.0 2023-09-29 21:59:26 +02:00
Marc Rousavy
b397315360 chore: Include README.md in npm package 2023-09-29 21:59:02 +02:00
Marc Rousavy
f78f05a32c chore: Add README to npm package 2023-09-29 21:56:34 +02:00
Marc Rousavy
85564d6d02
fix: Remove unused Error codes (#1887)
* fix: Remove unused Errors

* Errors.kt -> CameraError.kt

* fix: remove .system
2023-09-29 21:54:35 +02:00
Marc Rousavy
cf1952d8f7
feat: Use AHardwareBuffer* for frame.toArrayBuffer() (#1888)
* feat: Route images through `ImageWriter` into OpenGL pipeline

* fix: Use RGB format

* fix: Every device supports YUV, RGB and NATIVE

* Update VideoPipeline.kt

* log format

* Plug ImageReader between OpenGL pipeline

* Call Frame Processor

* Format

* Remove logs

* feat: Use `HardwareBuffer` for `toArrayBuffer()`

* Format
2023-09-29 21:54:04 +02:00
Marc Rousavy
954b44810b
feat: Route images through ImageWriter into OpenGL pipeline (#1874)
* feat: Route images through `ImageWriter` into OpenGL pipeline

* fix: Use RGB format

* fix: Every device supports YUV, RGB and NATIVE

* Update VideoPipeline.kt

* log format

* Plug ImageReader between OpenGL pipeline

* Call Frame Processor

* Format

* Remove logs
2023-09-29 21:52:19 +02:00
Marc Rousavy
a1fbba8d66 chore: Fix formatting 2023-09-29 19:42:28 +02:00
Touch Marine
fb812a6618
fix: Incorrect zoom on Android < 11 (#1878)
* fix: Incorrect zoom on Android < 11

Fixes #1865

* Clamp zoom on Android

Some unclamped zoom values crash. For example, zoom={0.5} crashes
(tested on Android 9).

* Extract zoom into an extension (Android)

* Update package/android/src/main/java/com/mrousavy/camera/extensions/CaptureRequest+setZoom.kt

---------

Co-authored-by: Marc Rousavy <marcrousavy@hotmail.com>
2023-09-29 19:41:37 +02:00
Marc Rousavy
5a98716f31 docs: Update link colors 2023-09-29 19:28:38 +02:00
Marc Rousavy
fd6d52f1de docs: Fix search by disabling contextual search 2023-09-29 19:18:00 +02:00
Marc Rousavy
9bad0bb99e
Update RECORDING_VIDEOS.mdx 2023-09-29 16:53:24 +02:00
Marc Rousavy
046bf2d18e
Update README.md 2023-09-29 16:15:02 +02:00
Marc Rousavy
016dfa725d Update Podfile.lock 2023-09-29 15:31:35 +02:00
Marc Rousavy
9d02f5141d
fix: Use compressed buffer format as default format as well (#1884)
* fix: Use compressed buffer format as default format as well

* chore: Format Swift
2023-09-29 15:27:17 +02:00
Marc Rousavy
902dc634a4
feat: Add customizable Video Bit Rate (videoBitRate) (#1882)
* feat: Add `videoBitRate` option to `RecordVideoOptions`

* feat: Implement `videoBitRate` on iOS

* feat: Implement `videoBitRate` on Android

* chore: Format

* docs: Separate recording and photo docs

* docs: Fix links

* docs: Add docs about bitrate and quality

* docs: Add blob

* fix: Don't use inline style for CI

* fix: Correctly log default bitRate

* fix: Fix typo

* fix: Calculate default bit-rate on Android depending on resolution

* Update RecordingSession.kt
2023-09-29 15:27:09 +02:00
Marc Rousavy
1c8c081e11 docs: Use updated Search index 2023-09-29 14:16:36 +02:00
Marc Rousavy
ad48823553 docs: Fix Algolia not working 2023-09-29 14:11:45 +02:00
Marc Rousavy
3d8d05302d docs: Add Community Discord 2023-09-27 17:40:15 +02:00
Marc Rousavy
fb6ebd9ee1 fix: Allow nil preferredDevice
Fixes #1870
2023-09-27 12:51:38 +02:00
Marc Rousavy
eec9a3eb6e docs: Make images responsive 2023-09-27 12:21:34 +02:00
Marc Rousavy
bb7549bc01 docs: Fix highlight 2023-09-27 12:15:42 +02:00
Marc Rousavy
4830ba8bf6 docs: Fix hightlight line 2023-09-27 12:10:06 +02:00
Marc Rousavy
42d9948e8a docs: Fix codeblocks alignment 2023-09-26 14:48:10 +02:00
Marc Rousavy
2c5c7d63b1
docs: Don't use bold links (#1860) 2023-09-26 14:42:22 +02:00
Ben Schlegel
04fd597866
docs: Fix docusaurus code block styling (#1859) 2023-09-26 14:20:24 +02:00
Marc Rousavy
8a7e45d6c6
docs: New default color (#1857)
* docs: New default color

* fix: Adjust codeblocks

* highlight color
2023-09-26 14:20:05 +02:00
Marc Rousavy
b75abd591a Add border radius to images 2023-09-26 13:16:35 +02:00
Marc Rousavy
688963954a
docs: Align Images perfectly on mobile (#1856)
* docs: Use Light codeblocks theme

* docs: Fix image align

* fix pixels

* fix: Adjust all images
2023-09-26 13:09:44 +02:00
Marc Rousavy
cc88de3926
docs: Use Light codeblocks theme (#1853) 2023-09-26 13:09:11 +02:00
Marc Rousavy
14721d314f
chore: Remove semicolons (#1846)
* chore: Disable `semi` in Prettier

* chore: Format w/o semi

* Remove more `;`

* Lint example

* More ;
2023-09-26 11:39:17 +02:00
Marc Rousavy
f7428f26a4
fix: Allow getCameraDevice to return undefined when no Devices are available (e.g. iOS Simulator) (#1848)
fix: Allow `getCameraDevice` to return `undefined` when no Devices are available
2023-09-26 11:24:24 +02:00
Marc Rousavy
bdc3fd0341 chore: release 3.1.0 2023-09-25 13:05:43 +02:00
Marc Rousavy
979656d379 chore: Update install links 2023-09-25 13:04:22 +02:00
Marc Rousavy
706341fbdb
feat: Add Templates API for choosing Camera Formats (#1844)
* docs: New V3 docs for new API

* fix: Prefer Wide-Angle unless explicitly opted-out

* docs: Update DEVICES

* Finish Devices docs

* Switch links

* Revert "Switch links"

This reverts commit 06f196ae0e67787cbd5768e125be6d0a3cb5bbc9.

* docs: New LIFECYCLE

* docs: New CAPTURING docs

* Update Worklets links

* docs: Update TROUBLESHOOTING and ZOOMING

* fix: Update `getAvailableCameraDevices()` usages

* docs: Update FORMATS

* Update Errors.kt

* docs: Fix broken links

* docs: Update references to old hooks

* docs: Create Frame Processor Tips

* docs: Auto-dark mode

* fix: Fix FPS filter

* feat: Add `'max'` flag to format filter

* fix: Use loop

* fix: Fix bug in `getCameraFormat`

* fix: Find best aspect ratio as well

* fix: Switch between formats on FPS change

* Update FRAME_PROCESSOR_PLUGIN_LIST.mdx

* Add FPS graph explanation

* feat: Add `Templates` API for choosing Camera Formats
2023-09-25 13:00:25 +02:00
Marc Rousavy
2d66d5893c
docs: New V3 docs for new API (#1842)
* docs: New V3 docs for new API

* fix: Prefer Wide-Angle unless explicitly opted-out

* docs: Update DEVICES

* Finish Devices docs

* Switch links

* Revert "Switch links"

This reverts commit 06f196ae0e67787cbd5768e125be6d0a3cb5bbc9.

* docs: New LIFECYCLE

* docs: New CAPTURING docs

* Update Worklets links

* docs: Update TROUBLESHOOTING and ZOOMING

* fix: Update `getAvailableCameraDevices()` usages

* docs: Update FORMATS

* Update Errors.kt

* docs: Fix broken links

* docs: Update references to old hooks

* docs: Create Frame Processor Tips

* docs: Auto-dark mode

* fix: Fix FPS filter

* feat: Add `'max'` flag to format filter

* fix: Use loop

* fix: Fix bug in `getCameraFormat`

* fix: Find best aspect ratio as well

* fix: Switch between formats on FPS change

* Update FRAME_PROCESSOR_PLUGIN_LIST.mdx

* Add FPS graph explanation

* feat: Support HDR filter

* docs: Add HDR docs

* docs: Add Video Stabilization

* docs: Update Skia docs

* Skia links

* Add Skia labels

* Update SKIA_FRAME_PROCESSORS.mdx

* docs: Add Performance

* Update some wording

* Update headers / and zoom

* Add examples for devices

* fix highlights

* fix: Expose `Frame`

* docs: Update FP docs

* Update links

* Update FRAME_PROCESSOR_CREATE_PLUGIN_IOS.mdx
2023-09-25 12:57:03 +02:00
Marc Rousavy
9dd91a4001
ci: Upgrade setup-java@v1 to setup-java@v2 (#1829) 2023-09-23 15:38:49 +02:00
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