Isn’t there an App for this?   (spoiler, no, not really)

Q. I’m sure there must be an App for this?

A. Indeed there are apps available.  They all suffer from a number of fundamental limitations; the use of a video camera for the ‘flash’ detection, reliance on an underlying operating system, and manual snapshot detection.  

Lets talk about each of these areas;

“Flash” detection

In terms of the video camera, by definition cameras operate on whole frames.  So the minimum time period between any two readings is based on the physical frame rate that the camera can sustain during the measurement period.  This is varies between 30fps to 240fps depending on the hardware.  This can mean the potential error windows, based on frame rate alone, is around 64ms to 4ms.  

Underlying Operation System

As the Apps do not directly talk the hardware, the underlying OS has to process the audio and video and pass it to the app.  The OS is also doing all the other things it needs to do, such as updating your e-mail or handshaking with cell tower.  All of these things can introduce non-deterministic errors to account for.  These delays could change with an OS update, what other Apps are running on the device, or potentially a minor change to the hardware itself.  Generally some kind of average correction factor (read fudge factor) needs to be worked out for each device model and OS version combination for you to enter into the App.  This also introduces inaccuracies, as this is an average correction, not a deterministic correction but one worked out at a single point in time and published by the authors.  (You did remember to check if this has changed since the last time you set it too, especially if there has been an OS or App update?)

For example, for the Apple devices, you have 1 types of phone (4, 4S, 5C, 5S, SE, 6, 6 Plus, 6S,  6S Plus, 7, and 7 Plus), then throw in iPads and iPods too.  Each will have their own specific inaccuracies to be accounted for.  Add in the OS version into the mix too and things get a bit more complex.  Since iOS 7 was released 39 versions of iOS have published (iOS 7 had 10 versions, iOS 8 had 11 versions, and iOS 9 had 12, iOS 10 is on its 6th).  Any of these updates have the potential to cause an inaccuracy needing an approximate correction to be determined and entered, which could also be device independent.  An iOS update from 7 to 8 on an iPhone 5S has been seen to alter readings by ~20ms, or around 0.5 frames, for newer Apple hardware there are warning over problems too, causing variances or ~30 ms (thats over 1 frame!) depending on which version of iPhone you have.

One reason why the supported hardware lists are restricted is because the requirement to test all these combinations, which is an ever increasing task as updates and devices come along.

Manually assisted snapshot detection

Lastly there is the issue that you have to do some work to get your measurement, you cannot just read it off the screen like you can on a Sync-One2.  To use the Apps you need to film a few seconds of video, then stop and manually line up the audio to video frame showing the flash, to give the approximate error.  If the system under test isn’t perfectly stable then the error provided will not be a fair representation of the system under test, just the error of the single frame of video when the film was taken.  To really measure a system a number of readings are needed to average out the fluctuations in the system under test, also using a test with a variable gap between the beep/flash tests.  That simply isn’t possible with an App.  

Sync-One2 uses an analogue light sensor, so has no minimum measurement interval. Well, that isn’t entirely accurate, the internal timing resolution is 0.05 ms, which is somewhat more accurate than the error window an App could give you.  The microprocessor in a Sync-One2 is doing nothing else but trying to do the job in hand, so nothing else can get in the way of making an accurate measurement.  

Sync-One2 also shows you the error in real time in milliseconds and frames if required.  A running average can also be shown in real time (in frames or milliseconds) so it’s easy to watch for drift over long periods (around six hours was the longest we know about, by a company testing an international Video Conference link).  Statistics of the most recent 60 readings show you how stable a system is and help with see what is really going on.  

To sum up, you can use an App if you want.  However, if you want to be accurate, have a real indication of how any system is actually performing, not spend the time doing the measurements manually, forgetting to looking up and enter correction factors and so doing it all again, simply do what the professionals do and use a Sync-One2.