添加信号格式修改
This commit is contained in:
@@ -40,56 +40,72 @@ class PatternService:
|
||||
"info",
|
||||
)
|
||||
self.app.ucd.set_ucd_params(active_config)
|
||||
|
||||
elif test_type == "sdr_movie":
|
||||
active_config = self._prepare_video_session(
|
||||
mode=mode,
|
||||
test_type=test_type,
|
||||
source_params=source_params,
|
||||
data_range=self.app.sdr_data_range_var.get(),
|
||||
log_title="设置 SDR 信号格式:",
|
||||
setup_message=f"设置 SDR 测试图案({mode} 模式)..."
|
||||
if mode != "accuracy"
|
||||
else "设置 SDR 29色色准测试图案...",
|
||||
setup_format=lambda: self.app.ucd.set_sdr_format(
|
||||
color_space=self.app.sdr_color_space_var.get(),
|
||||
gamma=self.app.sdr_gamma_type_var.get(),
|
||||
data_range=self.app.sdr_data_range_var.get(),
|
||||
bit_depth=self.app.sdr_bit_depth_var.get(),
|
||||
),
|
||||
log_items=[
|
||||
data_range = self.app.sdr_data_range_var.get()
|
||||
if log_details:
|
||||
self._log("=" * 50, "separator")
|
||||
self._log("设置 SDR 信号格式:", "info")
|
||||
self._log("=" * 50, "separator")
|
||||
for label, value in [
|
||||
("色彩空间", self.app.sdr_color_space_var.get()),
|
||||
("Gamma", self.app.sdr_gamma_type_var.get()),
|
||||
("数据范围", self.app.sdr_data_range_var.get()),
|
||||
("色彩格式", self.app.sdr_output_format_var.get()),
|
||||
("Gamma", self.app.sdr_gamma_type_var.get()),
|
||||
("数据范围", data_range),
|
||||
("编码位深", self.app.sdr_bit_depth_var.get()),
|
||||
],
|
||||
log_details=log_details,
|
||||
]:
|
||||
self._log(f" {label}: {value}", "info")
|
||||
converted_params = convert_pattern_params(
|
||||
source_params, data_range=data_range, verbose=False
|
||||
)
|
||||
active_config = self.app.config.get_temp_config_with_converted_params(
|
||||
mode=mode, converted_params=converted_params
|
||||
)
|
||||
self.app.ucd.set_ucd_params(active_config)
|
||||
success = self.app.ucd.apply_signal_format(
|
||||
color_space=self.app.sdr_color_space_var.get(),
|
||||
data_range=data_range,
|
||||
bit_depth=self.app.sdr_bit_depth_var.get(),
|
||||
color_format=self.app.sdr_output_format_var.get(),
|
||||
)
|
||||
if log_details:
|
||||
self._log(f"SDR 信号格式设置{'成功' if success else '失败'}", "success" if success else "error")
|
||||
self._log(f"图案参数已设置,共 {len(converted_params)} 个图案", "success")
|
||||
|
||||
elif test_type == "hdr_movie":
|
||||
active_config = self._prepare_video_session(
|
||||
mode=mode,
|
||||
test_type=test_type,
|
||||
source_params=source_params,
|
||||
data_range=self.app.hdr_data_range_var.get(),
|
||||
log_title="设置 HDR 信号格式:",
|
||||
setup_message=f"设置 HDR 测试图案({mode} 模式)..."
|
||||
if mode != "accuracy"
|
||||
else "设置 HDR 29色色准测试图案...",
|
||||
setup_format=lambda: self.app.ucd.set_hdr_format(
|
||||
color_space=self.app.hdr_color_space_var.get(),
|
||||
data_range=self.app.hdr_data_range_var.get(),
|
||||
bit_depth=self.app.hdr_bit_depth_var.get(),
|
||||
max_cll=self.app.hdr_maxcll_var.get(),
|
||||
max_fall=self.app.hdr_maxfall_var.get(),
|
||||
),
|
||||
log_items=[
|
||||
data_range = self.app.hdr_data_range_var.get()
|
||||
if log_details:
|
||||
self._log("=" * 50, "separator")
|
||||
self._log("设置 HDR 信号格式:", "info")
|
||||
self._log("=" * 50, "separator")
|
||||
for label, value in [
|
||||
("色彩空间", self.app.hdr_color_space_var.get()),
|
||||
("数据范围", self.app.hdr_data_range_var.get()),
|
||||
("色彩格式", self.app.hdr_output_format_var.get()),
|
||||
("数据范围", data_range),
|
||||
("编码位深", self.app.hdr_bit_depth_var.get()),
|
||||
("MaxCLL", self.app.hdr_maxcll_var.get()),
|
||||
("MaxCLL", self.app.hdr_maxcll_var.get()),
|
||||
("MaxFALL", self.app.hdr_maxfall_var.get()),
|
||||
],
|
||||
log_details=log_details,
|
||||
]:
|
||||
self._log(f" {label}: {value}", "info")
|
||||
converted_params = convert_pattern_params(
|
||||
source_params, data_range=data_range, verbose=False
|
||||
)
|
||||
active_config = self.app.config.get_temp_config_with_converted_params(
|
||||
mode=mode, converted_params=converted_params
|
||||
)
|
||||
self.app.ucd.set_ucd_params(active_config)
|
||||
success = self.app.ucd.apply_signal_format(
|
||||
color_space=self.app.hdr_color_space_var.get(),
|
||||
data_range=data_range,
|
||||
bit_depth=self.app.hdr_bit_depth_var.get(),
|
||||
color_format=self.app.hdr_output_format_var.get(),
|
||||
max_cll=self.app.hdr_maxcll_var.get(),
|
||||
max_fall=self.app.hdr_maxfall_var.get(),
|
||||
)
|
||||
if log_details:
|
||||
self._log(f"HDR 信号格式设置{'成功' if success else '失败'}", "success" if success else "error")
|
||||
self._log(f"图案参数已设置,共 {len(converted_params)} 个图案", "success")
|
||||
|
||||
else:
|
||||
raise ValueError(f"不支持的测试类型: {test_type}")
|
||||
|
||||
@@ -122,50 +138,6 @@ class PatternService:
|
||||
send_solid_rgb_pattern(self.app.ucd, converted_rgb, raise_on_error=True)
|
||||
return True
|
||||
|
||||
def _prepare_video_session(
|
||||
self,
|
||||
*,
|
||||
mode,
|
||||
test_type,
|
||||
source_params,
|
||||
data_range,
|
||||
log_title,
|
||||
setup_message,
|
||||
setup_format,
|
||||
log_items,
|
||||
log_details,
|
||||
):
|
||||
if log_details:
|
||||
self._log("=" * 50, "separator")
|
||||
self._log(log_title, "info")
|
||||
self._log("=" * 50, "separator")
|
||||
for label, value in log_items:
|
||||
self._log(f" {label}: {value}", "info")
|
||||
|
||||
success = setup_format()
|
||||
if log_details:
|
||||
self._log(
|
||||
f"{test_type.split('_')[0].upper()} 信号格式设置{'成功' if success else '失败'}",
|
||||
"success" if success else "error",
|
||||
)
|
||||
self._log(setup_message, "info")
|
||||
|
||||
converted_params = convert_pattern_params(
|
||||
pattern_params=source_params,
|
||||
data_range=data_range,
|
||||
verbose=False,
|
||||
)
|
||||
active_config = self.app.config.get_temp_config_with_converted_params(
|
||||
mode=mode,
|
||||
converted_params=converted_params,
|
||||
)
|
||||
self.app.ucd.set_ucd_params(active_config)
|
||||
|
||||
if log_details:
|
||||
self._log(f"图案参数已设置,共 {len(converted_params)} 个图案", "success")
|
||||
|
||||
return active_config
|
||||
|
||||
def _get_source_pattern_params(self, mode):
|
||||
return copy.deepcopy(get_pattern(mode)["pattern_params"])
|
||||
|
||||
|
||||
Reference in New Issue
Block a user