95 lines
2.9 KiB
Python
95 lines
2.9 KiB
Python
#
|
|
# Import UniTAP module.
|
|
#
|
|
|
|
import UniTAP
|
|
from UniTAP.utils import encode_video_frame, calculate_dsc_slice_size
|
|
from UniTAP.common import get_vf_from_image, CompressionInfo
|
|
|
|
#
|
|
# To initialize UniTAP library wrapper user should create UniTAP.TsiLib() object.
|
|
#
|
|
lUniTAP = UniTAP.TsiLib()
|
|
|
|
#
|
|
# For opening device, please, put serial number of the device as 8 symbol str or put index of device.
|
|
#
|
|
# dev = lUniTAP.open("NNNNNNNN")
|
|
dev = lUniTAP.open(0)
|
|
|
|
# After opening device as in UCD Console device role should be selected.
|
|
role = dev.select_role(UniTAP.dev.UCD400.DPSourceDPSink)
|
|
# role = dev.select_role(UniTAP.dev.UCD500.DPSourceDPSink)
|
|
|
|
#
|
|
# For using our predefined device specific timings, you can use 'timing manager' with which you can get them.
|
|
#
|
|
timing_manager = role.dptx.pg.timing_manager
|
|
|
|
color_mode = UniTAP.ColorInfo()
|
|
color_mode.color_format = UniTAP.ColorInfo.ColorFormat.CF_RGB
|
|
color_mode.bpc = 8
|
|
color_mode.colorimetry = UniTAP.ColorInfo.Colorimetry.CM_sRGB
|
|
|
|
target_width = 1920
|
|
target_height = 1080
|
|
path_custom_image = "Your_Path_To_Image.jpg"
|
|
|
|
vf = get_vf_from_image(path_custom_image, target_width, target_height)
|
|
|
|
params = CompressionInfo()
|
|
params.color_format = CompressionInfo.DscColorFormat.CF_RGB
|
|
params.bpp = 128
|
|
params.version = (1, 2)
|
|
params.v_slice_size = calculate_dsc_slice_size(target_width, 4)
|
|
params.h_slice_size = calculate_dsc_slice_size(target_height, 4)
|
|
params.buffer_bit_depth = vf.color_info.bpc + 1
|
|
|
|
dsc_vf = encode_video_frame(vf, params)
|
|
|
|
video_mode = UniTAP.VideoMode(timing=timing_manager.get_cta(76), color_info=color_mode)
|
|
|
|
caps = role.dprx.link.capabilities.link_caps_status()
|
|
caps.dsc = True
|
|
caps.fec = True
|
|
role.dprx.link.capabilities.set(caps)
|
|
|
|
role.dptx.link.start_link_training()
|
|
|
|
role.dptx.pg.set_vm(video_mode)
|
|
|
|
# Also you can put image path (dsc image path also) to function 'set_pattern' as argument.
|
|
# path_custom_image = "Your_Path_To_Image.jpg"
|
|
# role.dptx.pg.set_pattern(path_custom_image)
|
|
role.dptx.pg.set_pattern(dsc_vf)
|
|
role.dptx.pg.apply()
|
|
res_app = role.dptx.pg.status().error
|
|
print(f"Stream {0} - Apply {res_app.__str__()}")
|
|
|
|
role.dprx.video_capturer.start()
|
|
dsc_captured_frame = role.dprx.video_capturer.pop_element()
|
|
role.dprx.video_capturer.stop()
|
|
|
|
print(dsc_captured_frame.is_compressed())
|
|
print(dsc_captured_frame)
|
|
|
|
role.dptx.pg.set_pattern(UniTAP.VideoPattern.ColorSquares)
|
|
role.dptx.pg.apply()
|
|
res_app = role.dptx.pg.status().error
|
|
print(f"Stream {0} - Apply {res_app.__str__()}")
|
|
|
|
role.dprx.video_capturer.start()
|
|
captured_frame = role.dprx.video_capturer.pop_element()
|
|
role.dprx.video_capturer.stop()
|
|
print(captured_frame.is_compressed())
|
|
print(captured_frame)
|
|
|
|
#
|
|
# Since the 3.5 version, TsiLib and TSIDevice objects have the option to be closed earlier.
|
|
# TSIDevice can be closed with the TsiLib method close(). TsiLib can be closed with cleanup().
|
|
# Clean up will close all opened devices and block ability to open any devices
|
|
# with same TsiLib object.
|
|
#
|
|
lUniTAP.close(dev)
|
|
|
|
lUniTAP.cleanup() |