from UniTAP.libs.lib_dscl.dscl_utils import encode_vf, decode_vf, dscl_image_calculate_crc, dscl_data_processing, calculate_slice_size from UniTAP.common import VideoFrame, VideoFrameDSC, CompressionInfo def encode_video_frame(src_video_frame: VideoFrame, info: CompressionInfo) -> VideoFrameDSC: """ Encode custom video frame `VideoFrame` with transferred DSC parameters to video frame with DSC data. Args: src_video_frame (`VideoFrame`) info (`CompressionInfo`) """ return encode_vf(src_video_frame, info) def decode_video_frame(src_video_frame: VideoFrameDSC) -> VideoFrame: """ Decode custom video frame `VideoFrameDSC` with DSC data. Args: src_video_frame (`VideoFrame`) """ return decode_vf(src_video_frame) def dsc_video_frame_from_data(data: bytearray) -> VideoFrameDSC: """ Read PPS from DSC video frame data `VideoFrameDSC`. Args: data (`bytearray`) """ return dscl_data_processing(data) def calculate_dsc_crc(video_frame: VideoFrameDSC) -> tuple: """ Calculate DSC CRC by DSC Video Frame. Args: video_frame ('VideoFrameDSC') """ if not isinstance(video_frame, VideoFrameDSC): raise TypeError("Calculate DSC crc accept only VideoFrameDSC object!") return dscl_image_calculate_crc(video_frame) def calculate_dsc_slice_size(value: int, slice_number: int): """ Calculate DSC slice size by value and slice number. Args: value ('int') slice_number ('int') """ return int(calculate_slice_size(value, slice_number))