Release 2.5.0
2.5.0 (2021-08-06)
After 14 beta versions it's finally here! 🥳🥳🥳🥳 2.5.0 includes A LOT of features and improvements. The highlights of this release are:
- 💪 Frame Processors are now stable on iOS and Android
- 🎉 VisionCamera now runs in Expo (EAS) apps!
Note: The android/ codebase now contains C++ code, which uses JNI. If you haven't already, you need to install the NDK plugin in Android Studio to build your app. (I think that's installed by default anyways, but double check if you have build issues)
✨ Features
- Frame Processors for Android (#196) (87e6bb7)
- Expo support (#260) (d3a8b49)
- Support rotation (#301) (ef455df)
- Add
consolelogging support for Frame Processors (#297) (0f7ee51) - Add support for calling other functions using
runOnJSinside Frame Processors (#297) (0f7ee51) - Automatically fall back to snapshot capture when the Camera cannot attach the photo-use-case (#196) (87e6bb7)
- Add flash for snapshot capture (#196) (87e6bb7)
- Print Frame Processor errors to Metro console (4bacee7)
- Implement
Frame.close()(#229) (fa5f5c0) - Make
videoWidthandvideoHeightavailable on all devices (5126dd6) - Correctly get
videoDimensionson devices below iOS 13 (c078cdf) - Add
device/parallel-video-processing-not-supportederror (#196) (87e6bb7) - Add the
supportsParallelVideoProcessingprop toCameraDevice(See ThesupportsParallelVideoProcessingprop) (#196) (87e6bb7)
💨 Performance Improvements
- Avoid error message copying (da84a0f)
- clean up delay code (f1a9366)
- Remove a few unnecessary log statements (26d19d5)
- Avoid expensive CMSampleBuffer copy (#235) (7d3b352)
🐛 Bug Fixes
- Fix
formatPreview and Video Capture resolution setting (#325) (37db643) - Throw JS errors if JSI <-> JNI conversion failed (#324) (1c32726)
- Host Object error (e13bef7)
- patch-package install error (4a1fc1d)
- Rename incorrect error type name
parallel-video-processing-not-supported(0ea633d) - Fix autolinking for android (#231) (9dad027)
- Remove patch-package (d54358a)
- Frame Processor not setting on first render (b10b2c1)
- Delay frame processor setting on Android by 300ms (2f95ecc)
- React Native 0.65 compatibility (#230) (0f0f1fb)
- Run
setFrameProcessorafter interactions have completed (4baf584) - Fix unset Frame Processor not being called (9b645a8)
- Correctly propagate Errors in
configureSession()(f07f4a8) - Log errors in
updateandconfigureSession(f1a5ee7) - Report all errors to JS in
configureSession(f80e606) - Add more logs (45fad5a)
- print stacktrace on error (359fd00)
- Add
@Keepannotation to prevent minifier from deleting java funcs (3007cd9) - Distribute Android code as source (#234) (b2f3c08)
- Fix hot-reload crash caused by Frame Processor Runtime being initialized twice (#258) (2f889f5)
- Fix lint error for missing JNI func (1730ce8)
- Fix lint error for missing JNI func (2) (91e81d7)
- Fix lint error for missing JNI func (3) (7a5e879)
- Fix wrong HDR error being thrown on LowLight mode (339b470)
- Only extract either JSC or Hermes REA .aar (66f22d7)
- TS error (0691149)
- Fix
app.plugin.jsnot being included in npm package (e8a9a43) - Fix "
REACT_NATIVE_UTILS_LIBnot found" build error (#295) (5eaed05) - Fix expo plugin import path (61cef75)
- Fix UI Thread race condition in
setFrameProcessor(...)(#265) (4b4ea0f) - Remove
RCTTurboModuleBlockCopyEnabled()(d923320) - Fix
java.lang.NoSuchMethodErrorerror for.toArrayList()(#322) (b493576) - Fix dead link in
parallel-video-processing-not-supportederror (aaecb90) - Fix hard-crashing the app if any errors are thrown while configuring the Android session (throw in JS instead) (#196) (87e6bb7)
📚 Documentation
- Update documentation titles (08d04d1)
- Add link to Frame Processors to README (03cd0bb)
- Emphasize "video processing" (ff892c2)
- Fix confusing wording (949c44a)
- Link to Worklets docs (1646bb5)
- Re-order Frame Processor docs (18e0d3e)
- Remove outdated "use-cases" docs (0bb9ba1)
- Shorten code sample (9491490)
- Update "The Frame object" docs (b39b380)
- Update expo getting started docs (b40d3dd)
- Update expo install docs (a4397e1)
- Update Frame Processor Technical docs (0f6d097)
- Use Hotdog/Not Hotdog as sample (db0baae)
- Explain Frame Processor benefits more (cf68a4c)
- Update Android TROUBLESHOOTING (63cc806)
- Use Java in FPP "Overview" for simplicity (#266) (6f10188)
- Make Feature Request an issue template (f840ce2)
- Add examples for
supportsParallelVideoProcessing(070d007) - Improve
CameraDevicesdocumentation (b8b1a5c) - Add documentation for Creating Frame Processors for Android (#196) (87e6bb7)
- Add documentation for the new
supportsParallelVideoProcessingprop (#196) (87e6bb7) - Update the Java types for Frame Processor Plugins (#196) (87e6bb7)
- Create an Example FP Plugin instead of the empty-promise QR code scanner (#196) (87e6bb7)
🔨 Other Changes
- Automatically enable
videoon iOS if aframeProcessoris set instead of throwing an Error (#196) (87e6bb7)
🔨 Breaking Changes
- Remove
supportsPhotoAndVideoCapturein favor ofsupportsParallelVideoProcessingprop (See ThesupportsParallelVideoProcessingprop) (#196) (87e6bb7) - Express
zoomfactor always in actual factor value (1, 2, 128, ...) instead of 0.0-1.0 scale (#306) (445af94)