From 9db0d3795996b0a4181f03fcf4f3e95a9502e739 Mon Sep 17 00:00:00 2001 From: zuvola Date: Wed, 17 Nov 2021 14:47:30 +0900 Subject: [PATCH 1/9] Fix [camera] ImageStream ImageFormatGroup is Ignored in iOS --- .../camera/camera/ios/Classes/CameraPlugin.m | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/packages/camera/camera/ios/Classes/CameraPlugin.m b/packages/camera/camera/ios/Classes/CameraPlugin.m index 2c12081da807..fe2e2a2a8705 100644 --- a/packages/camera/camera/ios/Classes/CameraPlugin.m +++ b/packages/camera/camera/ios/Classes/CameraPlugin.m @@ -337,6 +337,7 @@ @interface FLTCam : NSObject Date: Wed, 17 Nov 2021 15:10:12 +0900 Subject: [PATCH 2/9] Fix property value --- packages/camera/camera/ios/Classes/CameraPlugin.m | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/camera/camera/ios/Classes/CameraPlugin.m b/packages/camera/camera/ios/Classes/CameraPlugin.m index fe2e2a2a8705..e2ed4e6142ff 100644 --- a/packages/camera/camera/ios/Classes/CameraPlugin.m +++ b/packages/camera/camera/ios/Classes/CameraPlugin.m @@ -423,6 +423,7 @@ - (void)stop { } - (void)setVideoFormat:(OSType)videoFormat { + _videoFormat = videoFormat; _captureVideoOutput.videoSettings = @{(NSString *)kCVPixelBufferPixelFormatTypeKey : @(videoFormat)}; } From 49ec68bb4b93d17106b807d33451db357f5a9ad3 Mon Sep 17 00:00:00 2001 From: zuvola Date: Thu, 18 Nov 2021 12:19:00 +0900 Subject: [PATCH 3/9] format --- packages/camera/camera/ios/Classes/CameraPlugin.m | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/camera/camera/ios/Classes/CameraPlugin.m b/packages/camera/camera/ios/Classes/CameraPlugin.m index e2ed4e6142ff..66f4f56dbe8b 100644 --- a/packages/camera/camera/ios/Classes/CameraPlugin.m +++ b/packages/camera/camera/ios/Classes/CameraPlugin.m @@ -384,7 +384,7 @@ - (instancetype)initWithCameraName:(NSString *)cameraName _captureVideoOutput = [AVCaptureVideoDataOutput new]; _captureVideoOutput.videoSettings = - @{(NSString *)kCVPixelBufferPixelFormatTypeKey : @(_videoFormat)}; + @{(NSString *)kCVPixelBufferPixelFormatTypeKey : @(_videoFormat)}; [_captureVideoOutput setAlwaysDiscardsLateVideoFrames:YES]; [_captureVideoOutput setSampleBufferDelegate:self queue:dispatch_get_main_queue()]; @@ -423,9 +423,9 @@ - (void)stop { } - (void)setVideoFormat:(OSType)videoFormat { - _videoFormat = videoFormat; - _captureVideoOutput.videoSettings = - @{(NSString *)kCVPixelBufferPixelFormatTypeKey : @(videoFormat)}; + _videoFormat = videoFormat; + _captureVideoOutput.videoSettings = + @{(NSString *)kCVPixelBufferPixelFormatTypeKey : @(videoFormat)}; } - (void)setDeviceOrientation:(UIDeviceOrientation)orientation { @@ -1441,7 +1441,7 @@ - (void)handleMethodCallAsync:(FlutterMethodCall *)call NSUInteger cameraId = ((NSNumber *)argsMap[@"cameraId"]).unsignedIntegerValue; if ([@"initialize" isEqualToString:call.method]) { NSString *videoFormatValue = ((NSString *)argsMap[@"imageFormatGroup"]); - [_camera setVideoFormat: getVideoFormatFromString(videoFormatValue)]; + [_camera setVideoFormat:getVideoFormatFromString(videoFormatValue)]; __weak CameraPlugin *weakSelf = self; _camera.onFrameAvailable = ^{ From 249f85dc64cdce332c2c198b7fe5180d79cf9fb7 Mon Sep 17 00:00:00 2001 From: zuvola Date: Wed, 24 Nov 2021 10:07:58 +0900 Subject: [PATCH 4/9] Add test --- .../example/integration_test/camera_test.dart | 52 +++++++++++++++++++ 1 file changed, 52 insertions(+) diff --git a/packages/camera/camera/example/integration_test/camera_test.dart b/packages/camera/camera/example/integration_test/camera_test.dart index d09300a3f906..3af291afe63b 100644 --- a/packages/camera/camera/example/integration_test/camera_test.dart +++ b/packages/camera/camera/example/integration_test/camera_test.dart @@ -240,4 +240,56 @@ void main() { }, skip: !Platform.isAndroid, ); + + /// Start streaming with specifying the ImageFormatGroup. + Future startStreaming(List cameras, + ImageFormatGroup? imageFormatGroup) async { + final CameraController controller = CameraController( + cameras.first, + ResolutionPreset.low, + enableAudio: false, + imageFormatGroup: imageFormatGroup, + ); + + await controller.initialize(); + final _completer = Completer(); + + await controller.startImageStream((CameraImage image) { + if (!_completer.isCompleted) { + Future(() async { + await controller.stopImageStream(); + await controller.dispose(); + }).then((value) { + _completer.complete(image); + }); + } + }); + return _completer.future; + } + + testWidgets( + 'iOS image streaming with imageFormatGroup', + (WidgetTester tester) async { + final List cameras = await availableCameras(); + if (cameras.isEmpty) { + return; + } + + var _image = await startStreaming(cameras, null); + expect(_image, isNotNull); + expect(_image.format.group, ImageFormatGroup.bgra8888); + expect(_image.planes.length, 1); + + _image = await startStreaming(cameras, ImageFormatGroup.yuv420); + expect(_image, isNotNull); + expect(_image.format.group, ImageFormatGroup.yuv420); + expect(_image.planes.length, 2); + + _image = await startStreaming(cameras, ImageFormatGroup.bgra8888); + expect(_image, isNotNull); + expect(_image.format.group, ImageFormatGroup.bgra8888); + expect(_image.planes.length, 1); + }, + skip: !Platform.isIOS, + ); } From efcb6ee8d1cef52f8bfe32bebb2862aa40bc5169 Mon Sep 17 00:00:00 2001 From: zuvola Date: Wed, 24 Nov 2021 10:15:43 +0900 Subject: [PATCH 5/9] Update CHANGELOG.md --- packages/camera/camera/CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/camera/camera/CHANGELOG.md b/packages/camera/camera/CHANGELOG.md index 1a6eceb957b1..7cab2df5b099 100644 --- a/packages/camera/camera/CHANGELOG.md +++ b/packages/camera/camera/CHANGELOG.md @@ -2,6 +2,7 @@ * Fixes bug where calling a method after the camera was closed resulted in a Java `IllegalStateException` exception. * Fixes integration tests. +* Fixes ImageStream ImageFormatGroup is Ignored on iOS. ## 0.9.4+4 From 547f4b89fea7d6ca7fe93a513fac5bd1fd901744 Mon Sep 17 00:00:00 2001 From: zuvola Date: Wed, 24 Nov 2021 11:45:12 +0900 Subject: [PATCH 6/9] Bump version to 0.9.4+6 --- packages/camera/camera/CHANGELOG.md | 5 ++++- packages/camera/camera/pubspec.yaml | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/packages/camera/camera/CHANGELOG.md b/packages/camera/camera/CHANGELOG.md index 7cab2df5b099..f3090e0ef63f 100644 --- a/packages/camera/camera/CHANGELOG.md +++ b/packages/camera/camera/CHANGELOG.md @@ -1,8 +1,11 @@ +## 0.9.4+6 + +* Fixed an bug where ImageFormatGroup was ignored in startImageStream on iOS. + ## 0.9.4+5 * Fixes bug where calling a method after the camera was closed resulted in a Java `IllegalStateException` exception. * Fixes integration tests. -* Fixes ImageStream ImageFormatGroup is Ignored on iOS. ## 0.9.4+4 diff --git a/packages/camera/camera/pubspec.yaml b/packages/camera/camera/pubspec.yaml index 58e1ca3ca98c..4c6c7e7e52d1 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/plugins/tree/master/packages/camera/camera issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+camera%22 -version: 0.9.4+5 +version: 0.9.4+6 environment: sdk: ">=2.14.0 <3.0.0" From 1aa042945b0d228e6455391934528baef5b288fb Mon Sep 17 00:00:00 2001 From: zuvola Date: Wed, 1 Dec 2021 14:54:30 +0900 Subject: [PATCH 7/9] Fixed comment --- packages/camera/camera/ios/Classes/CameraPlugin.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/camera/camera/ios/Classes/CameraPlugin.m b/packages/camera/camera/ios/Classes/CameraPlugin.m index 66f4f56dbe8b..627cbc16da84 100644 --- a/packages/camera/camera/ios/Classes/CameraPlugin.m +++ b/packages/camera/camera/ios/Classes/CameraPlugin.m @@ -337,6 +337,7 @@ @interface FLTCam : NSObject Date: Tue, 25 Jan 2022 20:45:57 -0500 Subject: [PATCH 8/9] Update packages/camera/camera/CHANGELOG.md Co-authored-by: Maurice Parrish --- packages/camera/camera/CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/camera/camera/CHANGELOG.md b/packages/camera/camera/CHANGELOG.md index 0eaf526f4a72..55ab2ff6aaba 100644 --- a/packages/camera/camera/CHANGELOG.md +++ b/packages/camera/camera/CHANGELOG.md @@ -1,6 +1,6 @@ ## 0.9.4+8 -* Fixed an bug where ImageFormatGroup was ignored in startImageStream on iOS. +* Fixed a bug where ImageFormatGroup was ignored in `startImageStream` on iOS. ## 0.9.4+7 From 72fccfa0384b21494c0ca9479eff87b575923dd4 Mon Sep 17 00:00:00 2001 From: stuartmorgan Date: Tue, 25 Jan 2022 17:46:23 -0800 Subject: [PATCH 9/9] Style nit --- packages/camera/camera/CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/camera/camera/CHANGELOG.md b/packages/camera/camera/CHANGELOG.md index 55ab2ff6aaba..1ec29577175a 100644 --- a/packages/camera/camera/CHANGELOG.md +++ b/packages/camera/camera/CHANGELOG.md @@ -1,6 +1,6 @@ ## 0.9.4+8 -* Fixed a bug where ImageFormatGroup was ignored in `startImageStream` on iOS. +* Fixes a bug where ImageFormatGroup was ignored in `startImageStream` on iOS. ## 0.9.4+7