from lib.farancia import IImage


def convert_range(video, output_range, input_range=None):
    if input_range is None:
        if video.min() < 0:
            input_range = [-1, 1]
        elif video.max() > 1:
            input_range = [0, 255]
        else:
            input_range = [0, 1]
    video = (video-input_range[0])/(input_range[1]-input_range[0])  # [0,1]
    video = video * (output_range[1]-output_range[0]) + output_range[0]
    return video


def concat_chunks(result_chunks):
    if not isinstance(result_chunks, list):
        result_chunks = [result_chunks]
    concatenated_result = None

    for chunk in result_chunks:
        assert chunk.min() >= 0
        chunk = IImage(chunk, vmin=0, vmax=255)
        if concatenated_result is None:
            concatenated_result = chunk
        else:
            concatenated_result &= chunk
    return concatenated_result