diff --git a/packages/camera/camera/CHANGELOG.md b/packages/camera/camera/CHANGELOG.md index 1a783b16391..b6dc896276e 100644 --- a/packages/camera/camera/CHANGELOG.md +++ b/packages/camera/camera/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.10.5 + +* Adds NV21 as an image streaming option for Android. + ## 0.10.4 * Allows camera to be switched while video recording. diff --git a/packages/camera/camera/lib/src/camera_image.dart b/packages/camera/camera/lib/src/camera_image.dart index bfcad6626dd..e1303f6d16e 100644 --- a/packages/camera/camera/lib/src/camera_image.dart +++ b/packages/camera/camera/lib/src/camera_image.dart @@ -90,6 +90,9 @@ ImageFormatGroup _asImageFormatGroup(dynamic rawFormat) { // android.graphics.ImageFormat.JPEG case 256: return ImageFormatGroup.jpeg; + // android.graphics.ImageFormat.NV21 + case 17: + return ImageFormatGroup.nv21; } } diff --git a/packages/camera/camera/pubspec.yaml b/packages/camera/camera/pubspec.yaml index 839f064bba1..28648adbe69 100644 --- a/packages/camera/camera/pubspec.yaml +++ b/packages/camera/camera/pubspec.yaml @@ -4,7 +4,7 @@ description: A Flutter plugin for controlling the camera. Supports previewing Dart. repository: https://github.com/flutter/packages/tree/main/packages/camera/camera issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+camera%22 -version: 0.10.4 +version: 0.10.5 environment: sdk: ">=2.18.0 <4.0.0" @@ -21,9 +21,9 @@ flutter: default_package: camera_web dependencies: - camera_android: ^0.10.5 + camera_android: ^0.10.7 camera_avfoundation: ^0.9.13 - camera_platform_interface: ^2.4.0 + camera_platform_interface: ^2.5.0 camera_web: ^0.3.1 flutter: sdk: flutter diff --git a/packages/camera/camera/test/camera_image_test.dart b/packages/camera/camera/test/camera_image_test.dart index ecf4b509e2e..5a046518a51 100644 --- a/packages/camera/camera/test/camera_image_test.dart +++ b/packages/camera/camera/test/camera_image_test.dart @@ -139,6 +139,30 @@ void main() { expect(cameraImage.format.group, ImageFormatGroup.yuv420); }); + test('$CameraImage has ImageFormatGroup.nv21 for android', () { + debugDefaultTargetPlatformOverride = TargetPlatform.android; + + final CameraImage cameraImage = + CameraImage.fromPlatformData({ + 'format': 17, + 'height': 1, + 'width': 4, + 'lensAperture': 1.8, + 'sensorExposureTime': 9991324, + 'sensorSensitivity': 92.0, + 'planes': [ + { + 'bytes': Uint8List.fromList([1, 2, 3, 4]), + 'bytesPerPixel': 1, + 'bytesPerRow': 4, + 'height': 1, + 'width': 4 + } + ] + }); + expect(cameraImage.format.group, ImageFormatGroup.nv21); + }); + test('$CameraImage has ImageFormatGroup.bgra8888 for iOS', () { debugDefaultTargetPlatformOverride = TargetPlatform.iOS; @@ -162,6 +186,7 @@ void main() { }); expect(cameraImage.format.group, ImageFormatGroup.bgra8888); }); + test('$CameraImage has ImageFormatGroup.unknown', () { final CameraImage cameraImage = CameraImage.fromPlatformData({