data_host.dart 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. import 'dart:convert';
  2. import 'dart:typed_data';
  3. import 'package:fis_common/env/env.dart';
  4. import 'package:fis_vid/data_host/interface/data_host.dart';
  5. import 'package:fis_vid/data_host/vid_download.dart';
  6. import 'package:fis_vid/data_host/env.dart';
  7. import 'package:fis_vid/processors/base.dart';
  8. import 'package:fis_jsonrpc/rpc.dart';
  9. import 'package:fis_vid/processors/brightness.dart';
  10. import 'package:fis_vid/processors/contrast.dart';
  11. import 'package:flutter/painting.dart';
  12. import 'package:vid/us/vid_us_image.dart';
  13. import 'package:vid/us/vid_us_image_data.dart';
  14. import 'package:vid/us/vid_us_probe.dart';
  15. part 'broswer.dart';
  16. part 'shell.dart';
  17. class VidDataHost implements VidDataHostInterface {
  18. VidDataHost(this.url);
  19. VidDataHostInterface? _hostInstance;
  20. @override
  21. final String url;
  22. @override
  23. int get frameCount => _hostInstance!.frameCount;
  24. @override
  25. VidUsProbe get probe => _hostInstance!.probe;
  26. @override
  27. Future<VidUsImageData?> getData() async => await _hostInstance?.getData();
  28. @override
  29. Future<VidUsImage?> getFrame<TProcessor extends VidFrameProcessor>(
  30. int index, {
  31. List<TProcessor>? processors,
  32. }) {
  33. if (_hostInstance == null) {
  34. throw Exception(
  35. "[VidDataHost] getFrame: must call load first and data is not null.");
  36. }
  37. return _hostInstance!.getFrame(index, processors: processors);
  38. }
  39. @override
  40. Future<VidDataHostLoadInfo?> load() async {
  41. if (_hostInstance != null) {
  42. await _hostInstance!.release();
  43. _hostInstance = null;
  44. }
  45. _hostInstance = VidDataHostEnv.isShell
  46. ? _VidDataHostShell(url)
  47. : _VidDataHostBroswer(url);
  48. return await _hostInstance!.load();
  49. }
  50. @override
  51. Future<void> release() async {
  52. await _hostInstance?.release();
  53. _hostInstance = null;
  54. }
  55. }