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 load() async { final vidFileBuffer = fileContent; _data = VidUsImageData(vidFileBuffer); return VidDataHostLoadInfo(probe); } @override Future getData() async => _data; @override Future 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 release() async { _data = null; } @override int get frameCount => _data == null ? -1 : _data!.imageCount; }