media_track_constraints_delegate.dart
1.18 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
import 'dart:js_interop';
import 'package:mobile_scanner/src/web/media_track_extension.dart';
import 'package:web/web.dart';
/// This class represents a delegate that manages the constraints for a [MediaStreamTrack].
final class MediaTrackConstraintsDelegate {
/// Constructs a [MediaTrackConstraintsDelegate] instance.
const MediaTrackConstraintsDelegate();
/// Get the settings for the given [mediaStream].
MediaTrackSettings? getSettings(MediaStream? mediaStream) {
final List<MediaStreamTrack>? tracks = mediaStream?.getVideoTracks().toDart;
if (tracks == null || tracks.isEmpty) {
return null;
}
final MediaStreamTrack track = tracks.first;
final MediaTrackCapabilities capabilities = track.getCapabilities();
final MediaTrackSettings settings = track.getSettings();
final JSArray<JSString>? facingModes = capabilities.facingModeNullable;
if (facingModes == null || facingModes.toDart.isEmpty) {
return MediaTrackSettings(
width: settings.width,
height: settings.height,
);
}
return MediaTrackSettings(
width: settings.width,
height: settings.height,
facingMode: settings.facingMode,
);
}
}