broswer.dart 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. part of 'data_host.dart';
  2. class _VidDataHostBroswer implements VidDataHostInterface {
  3. _VidDataHostBroswer(this.url);
  4. @override
  5. final String url;
  6. VidUsImageData? _data;
  7. VidFileDownloadCancelToken? _downloadCancelToken;
  8. @override
  9. int get frameCount => _data!.imageCount;
  10. @override
  11. VidUsProbe get probe => _data!.probe;
  12. @override
  13. Future<VidUsImageData?> getData() async => _data;
  14. @override
  15. Future<VidUsImage> getFrame<TProcessor extends VidFrameProcessor>(
  16. int index, {
  17. List<TProcessor>? processors,
  18. }) async {
  19. if (_data == null) {
  20. throw Exception(
  21. "[VidDataHost] getFrame: must call load first and data is not null.");
  22. }
  23. return _data!.getImage(index);
  24. }
  25. @override
  26. Future<VidDataHostLoadInfo?> load() async {
  27. _downloadCancelToken = VidFileDownloadCancelToken();
  28. final bytes = await VidFileDownloader.download(
  29. url,
  30. cancelToken: _downloadCancelToken,
  31. );
  32. if (bytes != null && bytes.isNotEmpty) {
  33. _data = VidUsImageData(bytes);
  34. final info = VidDataHostLoadInfo(_data!.probe);
  35. return info;
  36. }
  37. return null;
  38. }
  39. @override
  40. Future<void> release() async {
  41. try {
  42. _downloadCancelToken?.cancel();
  43. } catch (e) {}
  44. _data = null;
  45. }
  46. }