public CapturePipelineManager([NotNull] CodecSettingsLoader codecSettingsLoader, [NotNull] RoomChannels roomChannels, [NotNull] PlayerChannels playerChannels, [NotNull] ReadOnlyCollection <VoicePlayerState> players, int startupDelay = 0)
        {
            if (codecSettingsLoader == null)
            {
                throw new ArgumentNullException("codecSettingsLoader");
            }
            if (roomChannels == null)
            {
                throw new ArgumentNullException("roomChannels");
            }
            if (playerChannels == null)
            {
                throw new ArgumentNullException("playerChannels");
            }
            if (players == null)
            {
                throw new ArgumentNullException("players");
            }

            _codecSettingsLoader        = codecSettingsLoader;
            _roomChannels               = roomChannels;
            _playerChannels             = playerChannels;
            _receivingPacketLossMonitor = new PacketLossMonitor(players);
            _startupDelay               = startupDelay;
        }