Surfmeter Video Analyzer SDK Changelog¶
This is the changelog for the Surfmeter Video Analyzer SDK.
Note
The Video Analyzer SDK is currently in beta. The API and the metric values may change between releases.
0.12.0¶
Breaking changes
This release changes how you create the analyzer and how you pass frames. You need to update your code when you upgrade from 0.11.0 or earlier.
The SDK no longer uses OpenCV. It takes video frames as YUV 4:2:0 planes, which is the format that CameraX and most MediaCodec decoders deliver, so you no longer need to convert frames or include the OpenCV Android SDK in your app.
API changes:
analyzeFrame()takes the Y, U and V planes as directByteBuffers, with their row strides, the chroma pixel stride and a flag for full or limited range, instead of the address of an OpenCVMat. See Analysis.- The new method
analyzeImage(image, fullRange, frameIndex)analyzes anandroid.media.ImageinImageFormat.YUV_420_888directly. - The constructor
new VideoAnalyzerManager(context, fps)replaces the constructor with display width and height. Frames are analyzed at the size they are passed in. - The metric
getSaturation()is replaced bygetChroma(), and the featureSaturationFeaturebyChromaFeature.
Metric changes:
- Chroma replaces saturation. It is the mean distance from grey in the U/V plane. Unlike saturation, it does not give high values to dark scenes. See Metrics.
- Freezing is now based on the normalized SAD instead of the scene score, so frames with steady motion are no longer flagged as frozen.
- The temporal metrics (freezing, scene change, scene score, normalized SAD and jerkiness) and noise are computed on the luma plane. Their values change.
- All metrics except chroma are computed on the exact full-range luma plane. The values change slightly compared with 0.11.0: brightness is about 1 level higher, blockiness and white level differ by up to about 20-30 %, contrast and Michelson contrast by up to a few percent, and the other metrics by up to about 3 %.