in python/vmaf/core/quality_runner.py [0:0]
def _generate_result(self, asset):
# routine to call the command-line executable and generate quality
# scores in the log file.
log_file_path = self._get_log_file_path(asset)
if self.optional_dict is not None \
and 'models' in self.optional_dict \
and self.optional_dict['models'] is not None:
assert isinstance(self.optional_dict['models'], list)
models = self.optional_dict['models']
elif self.optional_dict is not None and 'use_default_built_in_model' in self.optional_dict:
use_default_built_in_model = self.optional_dict['use_default_built_in_model']
assert isinstance(use_default_built_in_model, bool)
if use_default_built_in_model:
models = []
else:
model0 = ['name=vmaf']
if self.optional_dict is not None and 'model_filepath' in self.optional_dict:
model_filepath = self.optional_dict['model_filepath']
else:
model_filepath = self.DEFAULT_MODEL_FILEPATH
assert isinstance(model_filepath, str)
model0.append(f'path={model_filepath}')
if self.optional_dict is not None and 'disable_clip_score' in self.optional_dict:
disable_clip_score = self.optional_dict['disable_clip_score']
else:
disable_clip_score = False
assert isinstance(disable_clip_score, bool)
if disable_clip_score:
model0.append('disable_clip')
models = [':'.join(model0)]
if self.optional_dict is not None and 'float_psnr' in self.optional_dict:
float_psnr = self.optional_dict['float_psnr']
else:
float_psnr = False
assert isinstance(float_psnr, bool)
if self.optional_dict is not None and 'float_ssim' in self.optional_dict:
float_ssim = self.optional_dict['float_ssim']
else:
float_ssim = False
assert isinstance(float_ssim, bool)
if self.optional_dict is not None and 'float_ms_ssim' in self.optional_dict:
float_ms_ssim = self.optional_dict['float_ms_ssim']
else:
float_ms_ssim = False
assert isinstance(float_ms_ssim, bool)
if self.optional_dict is not None and 'float_moment' in self.optional_dict:
float_moment = self.optional_dict['float_moment']
else:
float_moment = False
assert isinstance(float_ssim, bool)
if self.optional_dict is not None and 'psnr' in self.optional_dict:
psnr = self.optional_dict['psnr']
else:
psnr = False
assert isinstance(psnr, bool)
if self.optional_dict is not None and 'ssim' in self.optional_dict:
ssim = self.optional_dict['ssim']
else:
ssim = False
assert isinstance(ssim, bool)
if self.optional_dict is not None and 'ms_ssim' in self.optional_dict:
ms_ssim = self.optional_dict['ms_ssim']
else:
ms_ssim = False
assert isinstance(ms_ssim, bool)
if self.optional_dict is not None and 'no_prediction' in self.optional_dict:
no_prediction = self.optional_dict['no_prediction']
else:
no_prediction = False
assert isinstance(no_prediction, bool)
if self.optional_dict is not None and 'subsample' in self.optional_dict:
subsample = self.optional_dict['subsample']
else:
subsample = 1
assert isinstance(subsample, int) and subsample >= 1
if self.optional_dict is not None and 'n_threads' in self.optional_dict:
n_threads = self.optional_dict['n_threads']
else:
n_threads = 1
assert isinstance(n_threads, int) and n_threads >= 1
if self.optional_dict is not None and 'disable_avx' in self.optional_dict:
disable_avx = self.optional_dict['disable_avx']
else:
disable_avx = False
assert isinstance(disable_avx, bool)
disable_enhn_gain = self.optional_dict['disable_enhn_gain'] \
if self.optional_dict is not None and 'disable_enhn_gain' in self.optional_dict else None
assert disable_enhn_gain is None or isinstance(disable_enhn_gain, bool)
vif_enhn_gain_limit = self.optional_dict['vif_enhn_gain_limit'] \
if self.optional_dict is not None and 'vif_enhn_gain_limit' in self.optional_dict else None
assert vif_enhn_gain_limit is None or isinstance(vif_enhn_gain_limit, int) or isinstance(vif_enhn_gain_limit,
float)
adm_enhn_gain_limit = self.optional_dict['adm_enhn_gain_limit'] \
if self.optional_dict is not None and 'adm_enhn_gain_limit' in self.optional_dict else None
assert adm_enhn_gain_limit is None or isinstance(adm_enhn_gain_limit, int) or isinstance(adm_enhn_gain_limit,
float)
assert (disable_enhn_gain is None) or \
(disable_enhn_gain is not None and vif_enhn_gain_limit is None and adm_enhn_gain_limit is None)
if self.optional_dict is not None and 'motion_force_zero' in self.optional_dict:
motion_force_zero = self.optional_dict['motion_force_zero']
else:
motion_force_zero = False
assert isinstance(motion_force_zero, bool)
# ==== translate disable_enhn_gain into vif_enhn_gain_limit and adm_enhn_gain_limit: ====
if disable_enhn_gain is None:
pass
elif disable_enhn_gain is not None and vif_enhn_gain_limit is None and adm_enhn_gain_limit is None:
if disable_enhn_gain is True:
vif_enhn_gain_limit = 1.0
adm_enhn_gain_limit = 1.0
else:
pass
else:
assert False
quality_width, quality_height = asset.quality_width_height
fmt = self._get_workfile_yuv_type(asset)
ref_path = asset.ref_procfile_path
dis_path = asset.dis_procfile_path
reference = ref_path
distorted = dis_path
width = quality_width
height = quality_height
pixel_format, bitdepth = convert_pixel_format_ffmpeg2vmafexec(fmt)
output = log_file_path
exe = self._get_exec()
logger = self.logger
ExternalProgramCaller.call_vmafexec(reference, distorted, width, height, pixel_format, bitdepth,
float_psnr, psnr, float_ssim, ssim, float_ms_ssim, ms_ssim, float_moment,
no_prediction, models, subsample, n_threads, disable_avx, output, exe, logger,
vif_enhn_gain_limit, adm_enhn_gain_limit, motion_force_zero)