|
@@ -0,0 +1,47 @@
|
|
|
|
+import 'dart:typed_data';
|
|
|
|
+import 'package:fis_vid/data_host/base/data_host.dart';
|
|
|
|
+import 'package:vid/us/vid_us_image_data.dart';
|
|
|
|
+import 'package:fis_vid/data_host/interface/data_host.dart';
|
|
|
|
+import 'package:vid/us/vid_us_image.dart';
|
|
|
|
+import 'package:vid/us/vid_us_probe.dart';
|
|
|
|
+
|
|
|
|
+class VidDataHostLocal extends VidDataHostBase {
|
|
|
|
+ VidDataHostLocal(this.fileContent) : super("empty_url");
|
|
|
|
+
|
|
|
|
+ VidUsImageData? _data;
|
|
|
|
+
|
|
|
|
+ final Uint8List fileContent;
|
|
|
|
+
|
|
|
|
+ @override
|
|
|
|
+ VidUsProbe get probe => _data!.probe;
|
|
|
|
+
|
|
|
|
+ @override
|
|
|
|
+ Future<VidDataHostLoadInfo?> load() async {
|
|
|
|
+ final vidFileBuffer = fileContent;
|
|
|
|
+ _data = VidUsImageData(vidFileBuffer);
|
|
|
|
+ return VidDataHostLoadInfo(probe);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @override
|
|
|
|
+ Future<VidUsImageData?> getData() async => _data;
|
|
|
|
+
|
|
|
|
+ @override
|
|
|
|
+ Future<VidUsImage> getFrame(int index) async {
|
|
|
|
+ if (_data == null) {
|
|
|
|
+ throw Exception(
|
|
|
|
+ "[VidDataHost] getFrame: must call load first and data is not null.");
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ final frame = _data!.getImage(index);
|
|
|
|
+ frameLoaded.emit(this, frame);
|
|
|
|
+ return frame;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @override
|
|
|
|
+ Future<void> release() async {
|
|
|
|
+ _data = null;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @override
|
|
|
|
+ int get frameCount => _data == null ? -1 : _data!.imageCount;
|
|
|
|
+}
|