Files
pqAutomationApp/UniTAP/common/video_mode.py
xinzhu.yin c157e774e5 1.1.0版本
2026-04-16 16:51:05 +08:00

53 lines
1.6 KiB
Python

from .timing import Timing
from .color_info import ColorInfo
class VideoMode:
"""
Class `VideoMode` combines information about `Timing` and `ColorInfo`.
"""
def __init__(self, timing: Timing = Timing(), color_info: ColorInfo = ColorInfo()):
self.timing = timing
self.color_info = color_info
def __str__(self):
return f"{self.timing.frame_rate / 1000:03} " \
f"{self.timing.htotal} {self.timing.hstart} " \
f"{self.timing.hactive} {self.timing.hswidth:+} " \
f"{self.timing.vtotal} {self.timing.vstart} " \
f"{self.timing.vactive} {self.timing.vswidth:+} " \
f"{self.color_info.color_format.name}/" \
f"{self.color_info.colorimetry.name}/" \
f"{self.color_info.dynamic_range.name} {self.color_info.bpc}"
def __eq__(self, other):
return self.timing == other.timing and self.color_info == other.color_info
def is_valid(self) -> bool:
"""
Check that `Timing` and `ColorInfo` of Video mode is valid.
Returns:
object of bool type - Video mode valid or not
"""
return self.timing.is_valid() and self.color_info.is_valid()
@property
def bit_rate(self) -> float:
"""
Returns calculated bit rate required for this video mode in Gbps. 0 if video mode is not valid
Returns:
object of float type
"""
if self.is_valid():
return round(self.timing.pixel_clock * self.color_info.bpp / 1000.0, 3)
else:
return 0.0