from .port import TSIPort, MemoryManager, Capturer, PortIO
from .modules.capturer.video.video_capturer import VideoCapturerDP, VideoCapturerHDMI
from .modules.capturer.audio.audio_capturer import AudioCapturer


class RX(TSIPort):
    """
    Class describe base capabilities of Sink (RX - receiver).
    This functionality is used by child classes `DPRX` and `HDRX`.
    You cannot use a class `RX` object directly.
    """
    def __init__(self, port_io: PortIO, memory_manager: MemoryManager, capturer: Capturer):
        super().__init__(port_io, memory_manager, capturer)
        self.__audio_capturer = AudioCapturer(capturer)

    @property
    def audio_capturer(self) -> AudioCapturer:
        """

        Should be used to control `AudioCapturer` on Sink (RX - receiver) role.

        Returns:
            object of `AudioCapturer` type.
        """
        return self.__audio_capturer
