// Offline diagnostic only. It uses Apple's public Vision API, never a host UI // or the reference plug-in. User media and generated observations stay local. #import #import #import #import #include static NSArray *PGProbePoint(CGPoint p) { return @[@(p.x), @(p.y)]; } static NSArray *RegionIndices(VNFaceLandmarkRegion2D *region, VNFaceLandmarkRegion2D *all) { NSMutableArray *indices = [NSMutableArray array]; for (NSUInteger i=0; i ...\n"); return 2; } NSURL *source=[NSURL fileURLWithPath:@(argv[1])]; NSURL *output=[NSURL fileURLWithPath:@(argv[2])]; if (![NSFileManager.defaultManager fileExistsAtPath:source.path]) return 2; NSError *error=nil; if (![NSFileManager.defaultManager createDirectoryAtURL:[output URLByDeletingLastPathComponent] withIntermediateDirectories:YES attributes:nil error:&error]) { fprintf(stderr,"%s\n",error.description.UTF8String); return 1; } AVURLAsset *asset=[AVURLAsset URLAssetWithURL:source options:nil]; AVAssetImageGenerator *generator=[[AVAssetImageGenerator alloc] initWithAsset:asset]; generator.appliesPreferredTrackTransform=YES; generator.maximumSize=CGSizeMake(1280,1280); generator.requestedTimeToleranceBefore=kCMTimeZero; generator.requestedTimeToleranceAfter=kCMTimeZero; NSMutableArray *frames=[NSMutableArray array]; for (int a=3; a