jVQA: VIDEO QUALITY ASSESSMENT IN JAVA ====================================== Version: 1.0-beta4 24-sept-2015. Based on the Fast Structural Similarity index proposed by Chen and Bovik: http://live.ece.utexas.edu/publications/2011/chen_rtip_2011.pdf Implements the original, variance-based SSIM, Multi-Scale SSIM, Fast SSIM, 2, 3 and 4-Component Weighted SSIM, Gradient Magnitude Similarity Deviation, and our original Shifted Gradient Similarity (SG-Sim) index. Indexes may be customized by selecting image structure statistic (variance, gradient, shifted gradient, 2/3/4-component gradient of variance), structure scale (full, downsampled to 256, 5-scaled or 4-scaled), pooling window type (global/ unfiltered, 3-standard-deviations Gaussian, 2-standard-deviations (optimized) Gaussian, Box or downsampling Box) and size, index stabilization (logical or by constants) and luminance index (global/unfiltered, 3-standard-deviations Gaussian, 2-standard- deviations (optimized) Gaussian, Box, downsampling Box or no luminance index). Ultra High Definition content supported, requiring sufficient memory to be allocated to the Java Virtual Machine instance running jVQA. Built upon JavaCPP (http://github.com/bytedeco/javacpp), FFmpeg (http://www.ffmpeg.org) and Java Native Access for Avisynth - jnavi (https//sourceforge.net/projects/jnavi). "JavaCPP provides efficient access to native C++ inside Java. Under the hood, it uses JNI, so it works with all implementations of Java SE." - http://github.com/bytedeco/javacpp "FFmpeg is the leading multimedia framework, able to decode, encode, transcode, mux, demux, stream, filter and play pretty much anything that humans and machines have created. It supports the most obscure ancient formats up to the cutting edge. No matter if they were designed by some standards committee, the community or a corporation." - http://www.ffmpeg.org "AviSynth is a powerful tool for video post-production. It provides ways of editing and processing videos. AviSynth works as a frameserver, providing instant editing without the need for temporary files." - http://avisynth.org "JNA provides Java programs easy access to native shared libraries without writing anything but Java code - no JNI or native code is required. This functionality is comparable to Windows' Platform/Invoke and Python's ctypes." - https://github.com/twall/jna Source code organized with Apache Maven (http://maven.apache.org). USER GUIDE ========== Operating system: While jVQA itself is multi-platform through Java Virtual Machine, it depends on native builds of FFmpeg. Use the appropriate build for your system or build it yourself with Maven. 32-bit vs. 64 bit: The included FFmpeg build must also be appropriate for the Java Runtime Environment upon which jVQA is to run. A 32-bit FFmpeg compilation will not run on a 64-bit JRE, and vice-versa. AviSynth support: The AviSynth frameserver must be installed separately. The standard distribution is 32-bit, which will require the 32-bit versions of JRE and FFmpeg. 64-bit forks of the AviSynth project do exist, however. Frame accuracy: Currently, FFmpeg decoding in jVQA is not frame accurate. To avoid frame synchronization errors, provide AviSynth scripts as input instead of video files. Content support: jVQA is designed for video content in Y'V12 colorspace, as the standard for MPEG-based video. Only the Y plane is processed, which is expected to provide 8-bit pixels. Currently, no resolution limitations for jVQA are known besides memory requirements: 720p HD content requires 384 MB to be allocated to the JVM (provide the parameter "-Xmx384m"); 1080p Full HD content requires 640 MB allocated; and 4K content requires 1024 MB allocated. Operations based on an integral image, such as down-sampling and Box filtering, are currently limited to 8-bit 4K UHD content due to the basic 32-bit integer type employed. LEGAL STATEMENTS ================ Copyright (C) 2014-2015 Estêvão Chaves Monteiro This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.