data_host.dart 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. import 'dart:typed_data';
  2. import 'package:fis_vid/data_host/base/data_host.dart';
  3. import 'package:vid/us/vid_us_image_data.dart';
  4. import 'package:fis_vid/data_host/interface/data_host.dart';
  5. import 'package:vid/us/vid_us_image.dart';
  6. import 'package:vid/us/vid_us_probe.dart';
  7. class VidDataHostLocal extends VidDataHostBase {
  8. VidDataHostLocal(this.fileContent) : super("empty_url");
  9. VidUsImageData? _data;
  10. final Uint8List fileContent;
  11. @override
  12. VidUsProbe get probe => _data!.probe;
  13. @override
  14. Future<VidDataHostLoadInfo?> load() async {
  15. final vidFileBuffer = fileContent;
  16. _data = VidUsImageData(vidFileBuffer);
  17. return VidDataHostLoadInfo(probe);
  18. }
  19. @override
  20. Future<VidUsImageData?> getData() async => _data;
  21. @override
  22. Future<VidUsImage> getFrame(int index) async {
  23. if (_data == null) {
  24. throw Exception(
  25. "[VidDataHost] getFrame: must call load first and data is not null.");
  26. }
  27. final frame = _data!.getImage(index);
  28. frameLoaded.emit(this, frame);
  29. return frame;
  30. }
  31. @override
  32. Future<void> release() async {
  33. _data = null;
  34. }
  35. @override
  36. int get frameCount => _data == null ? -1 : _data!.imageCount;
  37. }