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/>.