1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- part of 'data_host.dart';
- class _VidDataHostShell implements VidDataHostInterface {
- _VidDataHostShell(this.url);
- static PlatformService get _platform => VidDataHostEnv.platformGetter!.call();
- VidUsProbe? _probe;
- int? _frameCount;
- @override
- final String url;
- @override
- int get frameCount => _frameCount!;
- @override
- VidUsProbe get probe => _probe!;
- @override
- Future<VidUsImageData?> getData() async => null;
- @override
- Future<VidDataHostLoadInfo?> load() async {
- final rst = await _platform.loadVid(url);
- if (!rst.isSuccess) return null;
- final buffer = const Base64Decoder().convert(rst.probeBase64!);
- final probe = VidUsProbe.fromBytes(buffer);
- _probe = probe;
- _frameCount = rst.frameCount;
- final info = VidDataHostLoadInfo(probe);
- return info;
- }
- @override
- Future<VidUsImage?> getFrame<TProcessor extends VidFrameProcessor>(
- int index, {
- List<TProcessor>? processors,
- }) async {
- final rpcProcessors = _convert2RpcProcessors(processors);
- final rst = await _platform.getVidFrame(GetVidFrameRequest(
- index: index,
- processors: rpcProcessors,
- ));
- if (!rst.isSuccess) return null;
- final buffer = const Base64Decoder().convert(rst.frameBase64!);
- final frame = VidUsImage.fromBytes(buffer);
- return frame;
- }
- @override
- Future<void> release() async {
- _platform.releaseVid();
- }
- List<TOut>? _convert2RpcProcessors<TIn extends VidFrameProcessor,
- TOut extends VidFrameProcessorBase>(List<TIn>? processors) {
- if (processors == null || processors.isEmpty) return null;
- final result = <TOut>[];
- for (final processor in processors) {
- final converted = _convert2RpcProcessor<TIn, TOut>(processor);
- if (converted != null) {
- result.add(converted);
- }
- }
- return result;
- }
- TOut? _convert2RpcProcessor<TIn extends VidFrameProcessor,
- TOut extends VidFrameProcessorBase>(TIn processor) {
- if (processor is VidBrightnessProcessor) {
- return VidFrameBrightnessProcessor(processor.brightness) as TOut;
- }
- if (processor is VidContrastProcessor) {
- return VidFrameContrastProcessor(processor.contrast) as TOut;
- }
- return null;
- }
- }
|