-
Notifications
You must be signed in to change notification settings - Fork 29.7k
Closed
Labels
in triagePresently being triaged by the triage teamPresently being triaged by the triage teamwaiting for customer responseThe Flutter team cannot make further progress on this issue until the original reporter respondsThe Flutter team cannot make further progress on this issue until the original reporter responds
Description
Is there an existing issue for this?
- I have searched the existing issues
- I have read the guide to filing a bug
Steps to reproduce
When using camera_android_camerax the ResolutionPreset values are no longer correct - and in my test case was much lower (and unusable - my barcode recognition was no longer able to recognise any barcodes). It additionally seems to use a lot more resources, when I used a higher setting to try and match the original resolution the app was more laggy.
For reference I was testing using a Xiaomi Pad 5 tablet. On other devices it was still usable at least.
Expected results
Resolution of Camera output should match the values for ResolutionPreset
enum ResolutionPreset {
/// 352x288 on iOS, 240p (320x240) on Android and Web
low,
/// 480p (640x480 on iOS, 720x480 on Android and Web)
medium,
/// 720p (1280x720)
high,
/// 1080p (1920x1080)
veryHigh,
/// 2160p (3840x2160 on Android and iOS, 4096x2160 on Web)
ultraHigh,
/// The highest resolution available.
max,
}
When using ResolutionPreset.High WITHOUT cameraX, resolution is 1280x720.

Actual results
When using ResolutionPreset.High WITH cameraX resolution is much lower!

Code sample
Pubspec.yaml:
camera: ^0.10.5+5
camera_android_camerax: ^0.5.0+22
Main.dart
import 'package:camera/camera.dart';
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
late List<CameraDescription> _cameras;
Future<void> main() async {
WidgetsFlutterBinding.ensureInitialized();
_cameras = await availableCameras();
runApp(const CameraApp());
}
/// CameraApp is the Main Application.
class CameraApp extends StatefulWidget {
/// Default Constructor
const CameraApp({super.key});
@override
State<CameraApp> createState() => _CameraAppState();
}
class _CameraAppState extends State<CameraApp> {
late CameraController controller;
@override
void initState() {
super.initState();
controller = CameraController(_cameras[0], ResolutionPreset.high);
controller.initialize().then((_) {
controller.startImageStream(_processCameraImage);
if (!mounted) {
return;
}
setState(() {});
}).catchError((Object e) {
if (e is CameraException) {
switch (e.code) {
case 'CameraAccessDenied':
// Handle access errors here.
break;
default:
// Handle other errors here.
break;
}
}
});
}
Future _processCameraImage(CameraImage image) async {
final WriteBuffer allBytes = WriteBuffer();
for (final Plane plane in image.planes) {
allBytes.putUint8List(plane.bytes);
}
final bytes = allBytes.done().buffer.asUint8List();
final Size imageSize = Size(image.width.toDouble(), image.height.toDouble());
print("size: ${imageSize.width} / ${imageSize.height}");
}
@override
void dispose() {
controller.dispose();
super.dispose();
}
@override
Widget build(BuildContext context) {
if (!controller.value.isInitialized) {
return Container();
}
return MaterialApp(
home: CameraPreview(controller),
);
}
}
Screenshots or Video
No response
Logs
No response
Flutter Doctor output
Doctor output
Doctor summary (to see all details, run flutter doctor -v):
[✓] Flutter (Channel stable, 3.16.0, on macOS 14.1.1 23B81 darwin-arm64, locale en-GB)
[✓] Android toolchain - develop for Android devices (Android SDK version 33.0.1)
[✓] Xcode - develop for iOS and macOS (Xcode 15.0.1)
[✓] Chrome - develop for the web
[✓] Android Studio (version 2022.3)
[✓] Connected device (4 available)
[✓] Network resources
• No issues found!
Metadata
Metadata
Assignees
Labels
in triagePresently being triaged by the triage teamPresently being triaged by the triage teamwaiting for customer responseThe Flutter team cannot make further progress on this issue until the original reporter respondsThe Flutter team cannot make further progress on this issue until the original reporter responds